summaryrefslogtreecommitdiff
path: root/sbin
diff options
context:
space:
mode:
authorFlorian Obser <florian@cvs.openbsd.org>2024-06-14 07:45:45 +0000
committerFlorian Obser <florian@cvs.openbsd.org>2024-06-14 07:45:45 +0000
commitda0b67d4f13111b8dc5bd7031b0da9025f93d598 (patch)
tree9b52caf375af82f7c0034d0c8b4dce6d5c3fce22 /sbin
parentf1c5fd6ae94a4f75de5b814afafb3cbf9d423e07 (diff)
sync to unbound 1.20.0
heavy lifting by sthen
Diffstat (limited to 'sbin')
-rw-r--r--sbin/unwind/libunbound/config.h113
-rw-r--r--sbin/unwind/libunbound/iterator/iter_fwd.c119
-rw-r--r--sbin/unwind/libunbound/iterator/iter_fwd.h60
-rw-r--r--sbin/unwind/libunbound/iterator/iter_hints.c95
-rw-r--r--sbin/unwind/libunbound/iterator/iter_hints.h54
-rw-r--r--sbin/unwind/libunbound/iterator/iter_utils.c62
-rw-r--r--sbin/unwind/libunbound/iterator/iter_utils.h6
-rw-r--r--sbin/unwind/libunbound/iterator/iterator.c295
-rw-r--r--sbin/unwind/libunbound/libunbound/context.c8
-rw-r--r--sbin/unwind/libunbound/libunbound/libunbound.c5
-rw-r--r--sbin/unwind/libunbound/libunbound/libworker.c21
-rw-r--r--sbin/unwind/libunbound/services/authzone.c10
-rw-r--r--sbin/unwind/libunbound/services/cache/dns.c52
-rw-r--r--sbin/unwind/libunbound/services/cache/infra.c170
-rw-r--r--sbin/unwind/libunbound/services/cache/infra.h28
-rw-r--r--sbin/unwind/libunbound/services/cache/rrset.c87
-rw-r--r--sbin/unwind/libunbound/services/cache/rrset.h31
-rw-r--r--sbin/unwind/libunbound/services/listen_dnsport.c51
-rw-r--r--sbin/unwind/libunbound/services/listen_dnsport.h8
-rw-r--r--sbin/unwind/libunbound/services/localzone.c6
-rw-r--r--sbin/unwind/libunbound/services/mesh.c106
-rw-r--r--sbin/unwind/libunbound/services/mesh.h6
-rw-r--r--sbin/unwind/libunbound/services/rpz.c342
-rw-r--r--sbin/unwind/libunbound/services/rpz.h8
-rw-r--r--sbin/unwind/libunbound/services/view.h3
-rw-r--r--sbin/unwind/libunbound/util/config_file.c39
-rw-r--r--sbin/unwind/libunbound/util/config_file.h19
-rw-r--r--sbin/unwind/libunbound/util/configlexer.c6667
-rw-r--r--sbin/unwind/libunbound/util/configlexer.lex7
-rw-r--r--sbin/unwind/libunbound/util/configparser.h253
-rw-r--r--sbin/unwind/libunbound/util/configparser.y83
-rw-r--r--sbin/unwind/libunbound/util/data/msgparse.h2
-rw-r--r--sbin/unwind/libunbound/util/data/msgreply.c33
-rw-r--r--sbin/unwind/libunbound/util/module.c11
-rw-r--r--sbin/unwind/libunbound/util/module.h18
-rw-r--r--sbin/unwind/libunbound/util/net_help.c36
-rw-r--r--sbin/unwind/libunbound/util/netevent.c8
-rw-r--r--sbin/unwind/libunbound/util/netevent.h2
-rw-r--r--sbin/unwind/libunbound/util/storage/lookup3.c2
-rw-r--r--sbin/unwind/libunbound/util/storage/lruhash.c34
-rw-r--r--sbin/unwind/libunbound/util/storage/lruhash.h11
-rw-r--r--sbin/unwind/libunbound/util/storage/slabhash.c7
-rw-r--r--sbin/unwind/libunbound/util/storage/slabhash.h12
-rw-r--r--sbin/unwind/libunbound/validator/val_utils.c40
-rw-r--r--sbin/unwind/libunbound/validator/validator.c36
45 files changed, 5208 insertions, 3858 deletions
diff --git a/sbin/unwind/libunbound/config.h b/sbin/unwind/libunbound/config.h
index 2c2843e9f05..807d3a1e78b 100644
--- a/sbin/unwind/libunbound/config.h
+++ b/sbin/unwind/libunbound/config.h
@@ -380,8 +380,8 @@
/* Define to 1 if you have the `memmove' function. */
#define HAVE_MEMMOVE 1
-/* Define to 1 if you have the <memory.h> header file. */
-#define HAVE_MEMORY_H 1
+/* Define to 1 if you have the <minix/config.h> header file. */
+/* #undef HAVE_MINIX_CONFIG_H */
/* Define to 1 if you have the <netdb.h> header file. */
#define HAVE_NETDB_H 1
@@ -588,6 +588,9 @@
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
+/* Define to 1 if you have the <stdio.h> header file. */
+#define HAVE_STDIO_H 1
+
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
@@ -690,6 +693,9 @@
/* Define to 1 if you have the <vfork.h> header file. */
/* #undef HAVE_VFORK_H */
+/* Define to 1 if you have the <wchar.h> header file. */
+#define HAVE_WCHAR_H 1
+
/* Define to 1 if you have the <windows.h> header file. */
/* #undef HAVE_WINDOWS_H */
@@ -773,7 +779,7 @@
#define PACKAGE_NAME "unbound"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING "unbound 1.19.3"
+#define PACKAGE_STRING "unbound 1.20.0"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "unbound"
@@ -782,7 +788,7 @@
#define PACKAGE_URL ""
/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.19.3"
+#define PACKAGE_VERSION "1.20.0"
/* default pidfile location */
#define PIDFILE ""
@@ -805,7 +811,7 @@
#define ROOT_CERT_FILE "/var/unbound/etc/icannbundle.pem"
/* version number for resource files */
-#define RSRC_PACKAGE_VERSION 1,19,3,0
+#define RSRC_PACKAGE_VERSION 1,20,0,0
/* Directory to chdir to */
#define RUN_DIR "/var/unbound/etc"
@@ -831,7 +837,9 @@
/* Define to 1 if libsodium supports sodium_set_misuse_handler */
/* #undef SODIUM_MISUSE_HANDLER */
-/* Define to 1 if you have the ANSI C header files. */
+/* Define to 1 if all of the C90 standard headers exist (not just the ones
+ required in a freestanding environment). This macro is provided for
+ backward compatibility; new code need not use it. */
#define STDC_HEADERS 1
/* use default strptime. */
@@ -927,21 +935,87 @@
#ifndef _ALL_SOURCE
# define _ALL_SOURCE 1
#endif
+/* Enable general extensions on macOS. */
+#ifndef _DARWIN_C_SOURCE
+# define _DARWIN_C_SOURCE 1
+#endif
+/* Enable general extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# define __EXTENSIONS__ 1
+#endif
/* Enable GNU extensions on systems that have them. */
#ifndef _GNU_SOURCE
# define _GNU_SOURCE 1
#endif
-/* Enable threading extensions on Solaris. */
+/* Enable X/Open compliant socket functions that do not require linking
+ with -lxnet on HP-UX 11.11. */
+#ifndef _HPUX_ALT_XOPEN_SOCKET_API
+# define _HPUX_ALT_XOPEN_SOCKET_API 1
+#endif
+/* Identify the host operating system as Minix.
+ This macro does not affect the system headers' behavior.
+ A future release of Autoconf may stop defining this macro. */
+#ifndef _MINIX
+/* # undef _MINIX */
+#endif
+/* Enable general extensions on NetBSD.
+ Enable NetBSD compatibility extensions on Minix. */
+#ifndef _NETBSD_SOURCE
+# define _NETBSD_SOURCE 1
+#endif
+/* Enable OpenBSD compatibility extensions on NetBSD.
+ Oddly enough, this does nothing on OpenBSD. */
+#ifndef _OPENBSD_SOURCE
+# define _OPENBSD_SOURCE 1
+#endif
+/* Define to 1 if needed for POSIX-compatible behavior. */
+#ifndef _POSIX_SOURCE
+/* # undef _POSIX_SOURCE */
+#endif
+/* Define to 2 if needed for POSIX-compatible behavior. */
+#ifndef _POSIX_1_SOURCE
+/* # undef _POSIX_1_SOURCE */
+#endif
+/* Enable POSIX-compatible threading on Solaris. */
#ifndef _POSIX_PTHREAD_SEMANTICS
# define _POSIX_PTHREAD_SEMANTICS 1
#endif
+/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */
+#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
+# define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */
+#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
+# define __STDC_WANT_IEC_60559_BFP_EXT__ 1
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */
+#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
+# define __STDC_WANT_IEC_60559_DFP_EXT__ 1
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */
+#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
+# define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
+#endif
+/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */
+#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
+# define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
+#endif
+/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */
+#ifndef __STDC_WANT_LIB_EXT2__
+# define __STDC_WANT_LIB_EXT2__ 1
+#endif
+/* Enable extensions specified by ISO/IEC 24747:2009. */
+#ifndef __STDC_WANT_MATH_SPEC_FUNCS__
+# define __STDC_WANT_MATH_SPEC_FUNCS__ 1
+#endif
/* Enable extensions on HP NonStop. */
#ifndef _TANDEM_SOURCE
# define _TANDEM_SOURCE 1
#endif
-/* Enable general extensions on Solaris. */
-#ifndef __EXTENSIONS__
-# define __EXTENSIONS__ 1
+/* Enable X/Open extensions. Define to 500 only if necessary
+ to make mbstate_t available. */
+#ifndef _XOPEN_SOURCE
+/* # undef _XOPEN_SOURCE */
#endif
@@ -967,11 +1041,6 @@
`char[]'. */
#define YYTEXT_POINTER 1
-/* Enable large inode numbers on Mac OS X 10.5. */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif
-
/* Number of bits in a file offset, on hosts where this is settable. */
/* #undef _FILE_OFFSET_BITS */
@@ -981,18 +1050,8 @@
/* Define for large files, on AIX-style hosts. */
/* #undef _LARGE_FILES */
-/* Define to 1 if on MINIX. */
-/* #undef _MINIX */
-
/* Enable for compile on Minix */
-/* #undef _NETBSD_SOURCE */
-
-/* Define to 2 if the system does not provide POSIX.1 features except with
- this defined. */
-/* #undef _POSIX_1_SOURCE */
-
-/* Define to 1 if you need to in order for `stat' and other things to work. */
-/* #undef _POSIX_SOURCE */
+#define _NETBSD_SOURCE 1
/* defined to use gcc ansi snprintf and sscanf that understands %lld when
compiled for windows. */
@@ -1034,7 +1093,7 @@
/* Define to `long int' if <sys/types.h> does not define. */
/* #undef off_t */
-/* Define to `int' if <sys/types.h> does not define. */
+/* Define as a signed integer type capable of holding a process identifier. */
/* #undef pid_t */
/* Define to 'int' if not defined */
diff --git a/sbin/unwind/libunbound/iterator/iter_fwd.c b/sbin/unwind/libunbound/iterator/iter_fwd.c
index c4b2411297e..b9d42553a8b 100644
--- a/sbin/unwind/libunbound/iterator/iter_fwd.c
+++ b/sbin/unwind/libunbound/iterator/iter_fwd.c
@@ -71,6 +71,7 @@ forwards_create(void)
sizeof(struct iter_forwards));
if(!fwd)
return NULL;
+ lock_rw_init(&fwd->lock);
return fwd;
}
@@ -100,6 +101,7 @@ forwards_delete(struct iter_forwards* fwd)
{
if(!fwd)
return;
+ lock_rw_destroy(&fwd->lock);
fwd_del_tree(fwd);
free(fwd);
}
@@ -332,45 +334,64 @@ make_stub_holes(struct iter_forwards* fwd, struct config_file* cfg)
int
forwards_apply_cfg(struct iter_forwards* fwd, struct config_file* cfg)
{
+ if(fwd->tree) {
+ lock_unprotect(&fwd->lock, fwd->tree);
+ }
fwd_del_tree(fwd);
fwd->tree = rbtree_create(fwd_cmp);
if(!fwd->tree)
return 0;
+ lock_protect(&fwd->lock, fwd->tree, sizeof(*fwd->tree));
+ lock_rw_wrlock(&fwd->lock);
/* read forward zones */
- if(!read_forwards(fwd, cfg))
+ if(!read_forwards(fwd, cfg)) {
+ lock_rw_unlock(&fwd->lock);
return 0;
- if(!make_stub_holes(fwd, cfg))
+ }
+ if(!make_stub_holes(fwd, cfg)) {
+ lock_rw_unlock(&fwd->lock);
return 0;
+ }
fwd_init_parents(fwd);
+ lock_rw_unlock(&fwd->lock);
return 1;
}
struct delegpt*
-forwards_find(struct iter_forwards* fwd, uint8_t* qname, uint16_t qclass)
+forwards_find(struct iter_forwards* fwd, uint8_t* qname, uint16_t qclass,
+ int nolock)
{
- rbnode_type* res = NULL;
+ struct iter_forward_zone* res;
struct iter_forward_zone key;
+ int has_dp;
key.node.key = &key;
key.dclass = qclass;
key.name = qname;
key.namelabs = dname_count_size_labels(qname, &key.namelen);
- res = rbtree_search(fwd->tree, &key);
- if(res) return ((struct iter_forward_zone*)res)->dp;
- return NULL;
+ /* lock_() calls are macros that could be nothing, surround in {} */
+ if(!nolock) { lock_rw_rdlock(&fwd->lock); }
+ res = (struct iter_forward_zone*)rbtree_search(fwd->tree, &key);
+ has_dp = res && res->dp;
+ if(!has_dp && !nolock) { lock_rw_unlock(&fwd->lock); }
+ return has_dp?res->dp:NULL;
}
struct delegpt*
-forwards_lookup(struct iter_forwards* fwd, uint8_t* qname, uint16_t qclass)
+forwards_lookup(struct iter_forwards* fwd, uint8_t* qname, uint16_t qclass,
+ int nolock)
{
/* lookup the forward zone in the tree */
rbnode_type* res = NULL;
struct iter_forward_zone *result;
struct iter_forward_zone key;
+ int has_dp;
key.node.key = &key;
key.dclass = qclass;
key.name = qname;
key.namelabs = dname_count_size_labels(qname, &key.namelen);
+ /* lock_() calls are macros that could be nothing, surround in {} */
+ if(!nolock) { lock_rw_rdlock(&fwd->lock); }
if(rbtree_find_less_equal(fwd->tree, &key, &res)) {
/* exact */
result = (struct iter_forward_zone*)res;
@@ -378,8 +399,10 @@ forwards_lookup(struct iter_forwards* fwd, uint8_t* qname, uint16_t qclass)
/* smaller element (or no element) */
int m;
result = (struct iter_forward_zone*)res;
- if(!result || result->dclass != qclass)
+ if(!result || result->dclass != qclass) {
+ if(!nolock) { lock_rw_unlock(&fwd->lock); }
return NULL;
+ }
/* count number of labels matched */
(void)dname_lab_cmp(result->name, result->namelabs, key.name,
key.namelabs, &m);
@@ -389,20 +412,22 @@ forwards_lookup(struct iter_forwards* fwd, uint8_t* qname, uint16_t qclass)
result = result->parent;
}
}
- if(result)
- return result->dp;
- return NULL;
+ has_dp = result && result->dp;
+ if(!has_dp && !nolock) { lock_rw_unlock(&fwd->lock); }
+ return has_dp?result->dp:NULL;
}
struct delegpt*
-forwards_lookup_root(struct iter_forwards* fwd, uint16_t qclass)
+forwards_lookup_root(struct iter_forwards* fwd, uint16_t qclass, int nolock)
{
uint8_t root = 0;
- return forwards_lookup(fwd, &root, qclass);
+ return forwards_lookup(fwd, &root, qclass, nolock);
}
-int
-forwards_next_root(struct iter_forwards* fwd, uint16_t* dclass)
+/* Finds next root item in forwards lookup tree.
+ * Caller needs to handle locking of the forwards structure. */
+static int
+next_root_locked(struct iter_forwards* fwd, uint16_t* dclass)
{
struct iter_forward_zone key;
rbnode_type* n;
@@ -419,7 +444,7 @@ forwards_next_root(struct iter_forwards* fwd, uint16_t* dclass)
}
/* root not first item? search for higher items */
*dclass = p->dclass + 1;
- return forwards_next_root(fwd, dclass);
+ return next_root_locked(fwd, dclass);
}
/* find class n in tree, we may get a direct hit, or if we don't
* this is the last item of the previous class so rbtree_next() takes
@@ -447,10 +472,21 @@ forwards_next_root(struct iter_forwards* fwd, uint16_t* dclass)
}
/* not a root node, return next higher item */
*dclass = p->dclass+1;
- return forwards_next_root(fwd, dclass);
+ return next_root_locked(fwd, dclass);
}
}
+int
+forwards_next_root(struct iter_forwards* fwd, uint16_t* dclass, int nolock)
+{
+ int ret;
+ /* lock_() calls are macros that could be nothing, surround in {} */
+ if(!nolock) { lock_rw_rdlock(&fwd->lock); }
+ ret = next_root_locked(fwd, dclass);
+ if(!nolock) { lock_rw_unlock(&fwd->lock); }
+ return ret;
+}
+
size_t
forwards_get_mem(struct iter_forwards* fwd)
{
@@ -458,10 +494,12 @@ forwards_get_mem(struct iter_forwards* fwd)
size_t s;
if(!fwd)
return 0;
+ lock_rw_rdlock(&fwd->lock);
s = sizeof(*fwd) + sizeof(*fwd->tree);
RBTREE_FOR(p, struct iter_forward_zone*, fwd->tree) {
s += sizeof(*p) + p->namelen + delegpt_get_mem(p->dp);
}
+ lock_rw_unlock(&fwd->lock);
return s;
}
@@ -477,49 +515,78 @@ fwd_zone_find(struct iter_forwards* fwd, uint16_t c, uint8_t* nm)
}
int
-forwards_add_zone(struct iter_forwards* fwd, uint16_t c, struct delegpt* dp)
+forwards_add_zone(struct iter_forwards* fwd, uint16_t c, struct delegpt* dp,
+ int nolock)
{
struct iter_forward_zone *z;
+ /* lock_() calls are macros that could be nothing, surround in {} */
+ if(!nolock) { lock_rw_wrlock(&fwd->lock); }
if((z=fwd_zone_find(fwd, c, dp->name)) != NULL) {
(void)rbtree_delete(fwd->tree, &z->node);
fwd_zone_free(z);
}
- if(!forwards_insert(fwd, c, dp))
+ if(!forwards_insert(fwd, c, dp)) {
+ if(!nolock) { lock_rw_unlock(&fwd->lock); }
return 0;
+ }
fwd_init_parents(fwd);
+ if(!nolock) { lock_rw_unlock(&fwd->lock); }
return 1;
}
void
-forwards_delete_zone(struct iter_forwards* fwd, uint16_t c, uint8_t* nm)
+forwards_delete_zone(struct iter_forwards* fwd, uint16_t c, uint8_t* nm,
+ int nolock)
{
struct iter_forward_zone *z;
- if(!(z=fwd_zone_find(fwd, c, nm)))
+ /* lock_() calls are macros that could be nothing, surround in {} */
+ if(!nolock) { lock_rw_wrlock(&fwd->lock); }
+ if(!(z=fwd_zone_find(fwd, c, nm))) {
+ if(!nolock) { lock_rw_unlock(&fwd->lock); }
return; /* nothing to do */
+ }
(void)rbtree_delete(fwd->tree, &z->node);
fwd_zone_free(z);
fwd_init_parents(fwd);
+ if(!nolock) { lock_rw_unlock(&fwd->lock); }
}
int
-forwards_add_stub_hole(struct iter_forwards* fwd, uint16_t c, uint8_t* nm)
+forwards_add_stub_hole(struct iter_forwards* fwd, uint16_t c, uint8_t* nm,
+ int nolock)
{
+ /* lock_() calls are macros that could be nothing, surround in {} */
+ if(!nolock) { lock_rw_wrlock(&fwd->lock); }
+ if(fwd_zone_find(fwd, c, nm) != NULL) {
+ if(!nolock) { lock_rw_unlock(&fwd->lock); }
+ return 1; /* already a stub zone there */
+ }
if(!fwd_add_stub_hole(fwd, c, nm)) {
+ if(!nolock) { lock_rw_unlock(&fwd->lock); }
return 0;
}
fwd_init_parents(fwd);
+ if(!nolock) { lock_rw_unlock(&fwd->lock); }
return 1;
}
void
-forwards_delete_stub_hole(struct iter_forwards* fwd, uint16_t c, uint8_t* nm)
+forwards_delete_stub_hole(struct iter_forwards* fwd, uint16_t c,
+ uint8_t* nm, int nolock)
{
struct iter_forward_zone *z;
- if(!(z=fwd_zone_find(fwd, c, nm)))
+ /* lock_() calls are macros that could be nothing, surround in {} */
+ if(!nolock) { lock_rw_wrlock(&fwd->lock); }
+ if(!(z=fwd_zone_find(fwd, c, nm))) {
+ if(!nolock) { lock_rw_unlock(&fwd->lock); }
return; /* nothing to do */
- if(z->dp != NULL)
+ }
+ if(z->dp != NULL) {
+ if(!nolock) { lock_rw_unlock(&fwd->lock); }
return; /* not a stub hole */
+ }
(void)rbtree_delete(fwd->tree, &z->node);
fwd_zone_free(z);
fwd_init_parents(fwd);
+ if(!nolock) { lock_rw_unlock(&fwd->lock); }
}
diff --git a/sbin/unwind/libunbound/iterator/iter_fwd.h b/sbin/unwind/libunbound/iterator/iter_fwd.h
index e90b74c16a5..4527d899c79 100644
--- a/sbin/unwind/libunbound/iterator/iter_fwd.h
+++ b/sbin/unwind/libunbound/iterator/iter_fwd.h
@@ -43,6 +43,7 @@
#ifndef ITERATOR_ITER_FWD_H
#define ITERATOR_ITER_FWD_H
#include "util/rbtree.h"
+#include "util/locks.h"
struct config_file;
struct delegpt;
@@ -50,6 +51,11 @@ struct delegpt;
* Iterator forward zones structure
*/
struct iter_forwards {
+ /** lock on the forwards tree.
+ * When grabbing both this lock and the anchors.lock, this lock
+ * is grabbed first. When grabbing both this lock and the hints.lock
+ * this lock is grabbed first. */
+ lock_rw_type lock;
/**
* Zones are stored in this tree. Sort order is specially chosen.
* first sorted on qclass. Then on dname in nsec-like order, so that
@@ -106,47 +112,65 @@ int forwards_apply_cfg(struct iter_forwards* fwd, struct config_file* cfg);
/**
* Find forward zone exactly by name
+ * The return value is contents of the forwards structure.
+ * Caller should lock and unlock a readlock on the forwards structure if nolock
+ * is set.
+ * Otherwise caller should unlock the readlock on the forwards structure if a
+ * value was returned.
* @param fwd: forward storage.
* @param qname: The qname of the query.
* @param qclass: The qclass of the query.
+ * @param nolock: Skip locking, locking is handled by the caller.
* @return: A delegation point or null.
*/
struct delegpt* forwards_find(struct iter_forwards* fwd, uint8_t* qname,
- uint16_t qclass);
+ uint16_t qclass, int nolock);
/**
* Find forward zone information
* For this qname/qclass find forward zone information, returns delegation
* point with server names and addresses, or NULL if no forwarding is needed.
+ * The return value is contents of the forwards structure.
+ * Caller should lock and unlock a readlock on the forwards structure if nolock
+ * is set.
+ * Otherwise caller should unlock the readlock on the forwards structure if a
+ * value was returned.
*
* @param fwd: forward storage.
* @param qname: The qname of the query.
* @param qclass: The qclass of the query.
+ * @param nolock: Skip locking, locking is handled by the caller.
* @return: A delegation point if the query has to be forwarded to that list,
* otherwise null.
*/
-struct delegpt* forwards_lookup(struct iter_forwards* fwd,
- uint8_t* qname, uint16_t qclass);
+struct delegpt* forwards_lookup(struct iter_forwards* fwd,
+ uint8_t* qname, uint16_t qclass, int nolock);
/**
* Same as forwards_lookup, but for the root only
* @param fwd: forward storage.
* @param qclass: The qclass of the query.
+ * @param nolock: Skip locking, locking is handled by the caller.
* @return: A delegation point if root forward exists, otherwise null.
*/
-struct delegpt* forwards_lookup_root(struct iter_forwards* fwd,
- uint16_t qclass);
+struct delegpt* forwards_lookup_root(struct iter_forwards* fwd,
+ uint16_t qclass, int nolock);
/**
* Find next root item in forwards lookup tree.
+ * Handles its own locking unless nolock is set. In that case the caller
+ * should lock and unlock a readlock on the forwards structure.
* @param fwd: the forward storage
* @param qclass: class to look at next, or higher.
+ * @param nolock: Skip locking, locking is handled by the caller.
* @return false if none found, or if true stored in qclass.
*/
-int forwards_next_root(struct iter_forwards* fwd, uint16_t* qclass);
+int forwards_next_root(struct iter_forwards* fwd, uint16_t* qclass,
+ int nolock);
/**
* Get memory in use by forward storage
+ * Locks and unlocks the structure.
* @param fwd: forward storage.
* @return bytes in use
*/
@@ -158,42 +182,56 @@ int fwd_cmp(const void* k1, const void* k2);
/**
* Add zone to forward structure. For external use since it recalcs
* the tree parents.
+ * Handles its own locking unless nolock is set. In that case the caller
+ * should lock and unlock a writelock on the forwards structure.
* @param fwd: the forward data structure
* @param c: class of zone
* @param dp: delegation point with name and target nameservers for new
* forward zone. malloced.
+ * @param nolock: Skip locking, locking is handled by the caller.
* @return false on failure (out of memory);
*/
-int forwards_add_zone(struct iter_forwards* fwd, uint16_t c,
- struct delegpt* dp);
+int forwards_add_zone(struct iter_forwards* fwd, uint16_t c,
+ struct delegpt* dp, int nolock);
/**
* Remove zone from forward structure. For external use since it
* recalcs the tree parents.
+ * Handles its own locking unless nolock is set. In that case the caller
+ * should lock and unlock a writelock on the forwards structure.
* @param fwd: the forward data structure
* @param c: class of zone
* @param nm: name of zone (in uncompressed wireformat).
+ * @param nolock: Skip locking, locking is handled by the caller.
*/
-void forwards_delete_zone(struct iter_forwards* fwd, uint16_t c, uint8_t* nm);
+void forwards_delete_zone(struct iter_forwards* fwd, uint16_t c,
+ uint8_t* nm, int nolock);
/**
* Add stub hole (empty entry in forward table, that makes resolution skip
* a forward-zone because the stub zone should override the forward zone).
* Does not add one if not necessary.
+ * Handles its own locking unless nolock is set. In that case the caller
+ * should lock and unlock a writelock on the forwards structure.
* @param fwd: the forward data structure
* @param c: class of zone
* @param nm: name of zone (in uncompressed wireformat).
+ * @param nolock: Skip locking, locking is handled by the caller.
* @return false on failure (out of memory);
*/
-int forwards_add_stub_hole(struct iter_forwards* fwd, uint16_t c, uint8_t* nm);
+int forwards_add_stub_hole(struct iter_forwards* fwd, uint16_t c,
+ uint8_t* nm, int nolock);
/**
* Remove stub hole, if one exists.
+ * Handles its own locking unless nolock is set. In that case the caller
+ * should lock and unlock a writelock on the forwards structure.
* @param fwd: the forward data structure
* @param c: class of zone
* @param nm: name of zone (in uncompressed wireformat).
+ * @param nolock: Skip locking, locking is handled by the caller.
*/
void forwards_delete_stub_hole(struct iter_forwards* fwd, uint16_t c,
- uint8_t* nm);
+ uint8_t* nm, int nolock);
#endif /* ITERATOR_ITER_FWD_H */
diff --git a/sbin/unwind/libunbound/iterator/iter_hints.c b/sbin/unwind/libunbound/iterator/iter_hints.c
index 4f86f3676a2..8b168271c7f 100644
--- a/sbin/unwind/libunbound/iterator/iter_hints.c
+++ b/sbin/unwind/libunbound/iterator/iter_hints.c
@@ -57,6 +57,8 @@ hints_create(void)
sizeof(struct iter_hints));
if(!hints)
return NULL;
+ lock_rw_init(&hints->lock);
+ lock_protect(&hints->lock, &hints->tree, sizeof(hints->tree));
return hints;
}
@@ -83,6 +85,7 @@ hints_delete(struct iter_hints* hints)
{
if(!hints)
return;
+ lock_rw_destroy(&hints->lock);
hints_del_tree(hints);
free(hints);
}
@@ -438,47 +441,70 @@ read_root_hints_list(struct iter_hints* hints, struct config_file* cfg)
int
hints_apply_cfg(struct iter_hints* hints, struct config_file* cfg)
{
+ int nolock = 1;
+ lock_rw_wrlock(&hints->lock);
hints_del_tree(hints);
name_tree_init(&hints->tree);
-
+
/* read root hints */
- if(!read_root_hints_list(hints, cfg))
+ if(!read_root_hints_list(hints, cfg)) {
+ lock_rw_unlock(&hints->lock);
return 0;
+ }
/* read stub hints */
- if(!read_stubs(hints, cfg))
+ if(!read_stubs(hints, cfg)) {
+ lock_rw_unlock(&hints->lock);
return 0;
+ }
/* use fallback compiletime root hints */
- if(!hints_lookup_root(hints, LDNS_RR_CLASS_IN)) {
+ if(!hints_find_root(hints, LDNS_RR_CLASS_IN, nolock)) {
struct delegpt* dp = compile_time_root_prime(cfg->do_ip4,
cfg->do_ip6);
verbose(VERB_ALGO, "no config, using builtin root hints.");
- if(!dp)
+ if(!dp) {
+ lock_rw_unlock(&hints->lock);
return 0;
- if(!hints_insert(hints, LDNS_RR_CLASS_IN, dp, 0))
+ }
+ if(!hints_insert(hints, LDNS_RR_CLASS_IN, dp, 0)) {
+ lock_rw_unlock(&hints->lock);
return 0;
+ }
}
name_tree_init_parents(&hints->tree);
+ lock_rw_unlock(&hints->lock);
return 1;
}
-struct delegpt*
-hints_lookup_root(struct iter_hints* hints, uint16_t qclass)
+struct delegpt*
+hints_find(struct iter_hints* hints, uint8_t* qname, uint16_t qclass,
+ int nolock)
{
- uint8_t rootlab = 0;
struct iter_hints_stub *stub;
+ size_t len;
+ int has_dp;
+ int labs = dname_count_size_labels(qname, &len);
+ /* lock_() calls are macros that could be nothing, surround in {} */
+ if(!nolock) { lock_rw_rdlock(&hints->lock); }
stub = (struct iter_hints_stub*)name_tree_find(&hints->tree,
- &rootlab, 1, 1, qclass);
- if(!stub)
- return NULL;
- return stub->dp;
+ qname, len, labs, qclass);
+ has_dp = stub && stub->dp;
+ if(!has_dp && !nolock) { lock_rw_unlock(&hints->lock); }
+ return has_dp?stub->dp:NULL;
+}
+
+struct delegpt*
+hints_find_root(struct iter_hints* hints, uint16_t qclass, int nolock)
+{
+ uint8_t rootlab = 0;
+ return hints_find(hints, &rootlab, qclass, nolock);
}
struct iter_hints_stub*
-hints_lookup_stub(struct iter_hints* hints, uint8_t* qname,
- uint16_t qclass, struct delegpt* cache_dp)
+hints_lookup_stub(struct iter_hints* hints, uint8_t* qname,
+ uint16_t qclass, struct delegpt* cache_dp, int nolock)
{
size_t len;
int labs;
@@ -486,14 +512,20 @@ hints_lookup_stub(struct iter_hints* hints, uint8_t* qname,
/* first lookup the stub */
labs = dname_count_size_labels(qname, &len);
+ /* lock_() calls are macros that could be nothing, surround in {} */
+ if(!nolock) { lock_rw_rdlock(&hints->lock); }
r = (struct iter_hints_stub*)name_tree_lookup(&hints->tree, qname,
len, labs, qclass);
- if(!r) return NULL;
+ if(!r) {
+ if(!nolock) { lock_rw_unlock(&hints->lock); }
+ return NULL;
+ }
/* If there is no cache (root prime situation) */
if(cache_dp == NULL) {
if(r->dp->namelabs != 1)
return r; /* no cache dp, use any non-root stub */
+ if(!nolock) { lock_rw_unlock(&hints->lock); }
return NULL;
}
@@ -510,12 +542,18 @@ hints_lookup_stub(struct iter_hints* hints, uint8_t* qname,
if(dname_strict_subdomain(r->dp->name, r->dp->namelabs,
cache_dp->name, cache_dp->namelabs))
return r; /* need to prime this stub */
+ if(!nolock) { lock_rw_unlock(&hints->lock); }
return NULL;
}
-int hints_next_root(struct iter_hints* hints, uint16_t* qclass)
+int hints_next_root(struct iter_hints* hints, uint16_t* qclass, int nolock)
{
- return name_tree_next_root(&hints->tree, qclass);
+ int ret;
+ /* lock_() calls are macros that could be nothing, surround in {} */
+ if(!nolock) { lock_rw_rdlock(&hints->lock); }
+ ret = name_tree_next_root(&hints->tree, qclass);
+ if(!nolock) { lock_rw_unlock(&hints->lock); }
+ return ret;
}
size_t
@@ -524,39 +562,52 @@ hints_get_mem(struct iter_hints* hints)
size_t s;
struct iter_hints_stub* p;
if(!hints) return 0;
+ lock_rw_rdlock(&hints->lock);
s = sizeof(*hints);
RBTREE_FOR(p, struct iter_hints_stub*, &hints->tree) {
s += sizeof(*p) + delegpt_get_mem(p->dp);
}
+ lock_rw_unlock(&hints->lock);
return s;
}
int
hints_add_stub(struct iter_hints* hints, uint16_t c, struct delegpt* dp,
- int noprime)
+ int noprime, int nolock)
{
struct iter_hints_stub *z;
+ /* lock_() calls are macros that could be nothing, surround in {} */
+ if(!nolock) { lock_rw_wrlock(&hints->lock); }
if((z=(struct iter_hints_stub*)name_tree_find(&hints->tree,
dp->name, dp->namelen, dp->namelabs, c)) != NULL) {
(void)rbtree_delete(&hints->tree, &z->node);
hints_stub_free(z);
}
- if(!hints_insert(hints, c, dp, noprime))
+ if(!hints_insert(hints, c, dp, noprime)) {
+ if(!nolock) { lock_rw_unlock(&hints->lock); }
return 0;
+ }
name_tree_init_parents(&hints->tree);
+ if(!nolock) { lock_rw_unlock(&hints->lock); }
return 1;
}
void
-hints_delete_stub(struct iter_hints* hints, uint16_t c, uint8_t* nm)
+hints_delete_stub(struct iter_hints* hints, uint16_t c, uint8_t* nm,
+ int nolock)
{
struct iter_hints_stub *z;
size_t len;
int labs = dname_count_size_labels(nm, &len);
+ /* lock_() calls are macros that could be nothing, surround in {} */
+ if(!nolock) { lock_rw_wrlock(&hints->lock); }
if(!(z=(struct iter_hints_stub*)name_tree_find(&hints->tree,
- nm, len, labs, c)))
+ nm, len, labs, c))) {
+ if(!nolock) { lock_rw_unlock(&hints->lock); }
return; /* nothing to do */
+ }
(void)rbtree_delete(&hints->tree, &z->node);
hints_stub_free(z);
name_tree_init_parents(&hints->tree);
+ if(!nolock) { lock_rw_unlock(&hints->lock); }
}
diff --git a/sbin/unwind/libunbound/iterator/iter_hints.h b/sbin/unwind/libunbound/iterator/iter_hints.h
index 06b4b9667d1..26de323c9e9 100644
--- a/sbin/unwind/libunbound/iterator/iter_hints.h
+++ b/sbin/unwind/libunbound/iterator/iter_hints.h
@@ -43,6 +43,7 @@
#ifndef ITERATOR_ITER_HINTS_H
#define ITERATOR_ITER_HINTS_H
#include "util/storage/dnstree.h"
+#include "util/locks.h"
struct iter_env;
struct config_file;
struct delegpt;
@@ -51,6 +52,10 @@ struct delegpt;
* Iterator hints structure
*/
struct iter_hints {
+ /** lock on the forwards tree.
+ * When grabbing both this lock and the anchors.lock, this lock
+ * is grabbed first. */
+ lock_rw_type lock;
/**
* Hints are stored in this tree. Sort order is specially chosen.
* first sorted on qclass. Then on dname in nsec-like order, so that
@@ -95,42 +100,70 @@ void hints_delete(struct iter_hints* hints);
int hints_apply_cfg(struct iter_hints* hints, struct config_file* cfg);
/**
- * Find root hints for the given class.
+ * Find hints for the given class.
+ * The return value is contents of the hints structure.
+ * Caller should lock and unlock a readlock on the hints structure if nolock
+ * is set.
+ * Otherwise caller should unlock the readlock on the hints structure if a
+ * value was returned.
* @param hints: hint storage.
+ * @param qname: the qname that generated the delegation point.
* @param qclass: class for which root hints are requested. host order.
+ * @param nolock: Skip locking, locking is handled by the caller.
* @return: NULL if no hints, or a ptr to stored hints.
*/
-struct delegpt* hints_lookup_root(struct iter_hints* hints, uint16_t qclass);
+struct delegpt* hints_find(struct iter_hints* hints, uint8_t* qname,
+ uint16_t qclass, int nolock);
+
+/**
+ * Same as hints_lookup, but for the root only.
+ * @param hints: hint storage.
+ * @param qclass: class for which root hints are requested. host order.
+ * @param nolock: Skip locking, locking is handled by the caller.
+ * @return: NULL if no hints, or a ptr to stored hints.
+ */
+struct delegpt* hints_find_root(struct iter_hints* hints,
+ uint16_t qclass, int nolock);
/**
* Find next root hints (to cycle through all root hints).
+ * Handles its own locking unless nolock is set. In that case the caller
+ * should lock and unlock a readlock on the hints structure.
* @param hints: hint storage
* @param qclass: class for which root hints are sought.
* 0 means give the first available root hints class.
* x means, give class x or a higher class if any.
* returns the found class in this variable.
+ * @param nolock: Skip locking, locking is handled by the caller.
* @return true if a root hint class is found.
* false if not root hint class is found (qclass may have been changed).
*/
-int hints_next_root(struct iter_hints* hints, uint16_t* qclass);
+int hints_next_root(struct iter_hints* hints, uint16_t* qclass, int nolock);
/**
* Given a qname/qclass combination, and the delegation point from the cache
* for this qname/qclass, determine if this combination indicates that a
* stub hint exists and must be primed.
+ * The return value is contents of the hints structure.
+ * Caller should lock and unlock a readlock on the hints structure if nolock
+ * is set.
+ * Otherwise caller should unlock the readlock on the hints structure if a
+ * value was returned.
*
* @param hints: hint storage.
* @param qname: The qname that generated the delegation point.
* @param qclass: The qclass that generated the delegation point.
* @param dp: The cache generated delegation point.
+ * @param nolock: Skip locking, locking is handled by the caller.
* @return: A priming delegation point if there is a stub hint that must
* be primed, otherwise null.
*/
-struct iter_hints_stub* hints_lookup_stub(struct iter_hints* hints,
- uint8_t* qname, uint16_t qclass, struct delegpt* dp);
+struct iter_hints_stub* hints_lookup_stub(struct iter_hints* hints,
+ uint8_t* qname, uint16_t qclass, struct delegpt* dp, int nolock);
/**
* Get memory in use by hints
+ * Locks and unlocks the structure.
* @param hints: hint storage.
* @return bytes in use
*/
@@ -139,23 +172,30 @@ size_t hints_get_mem(struct iter_hints* hints);
/**
* Add stub to hints structure. For external use since it recalcs
* the tree parents.
+ * Handles its own locking unless nolock is set. In that case the caller
+ * should lock and unlock a writelock on the hints structure.
* @param hints: the hints data structure
* @param c: class of zone
* @param dp: delegation point with name and target nameservers for new
* hints stub. malloced.
* @param noprime: set noprime option to true or false on new hint stub.
+ * @param nolock: Skip locking, locking is handled by the caller.
* @return false on failure (out of memory);
*/
int hints_add_stub(struct iter_hints* hints, uint16_t c, struct delegpt* dp,
- int noprime);
+ int noprime, int nolock);
/**
* Remove stub from hints structure. For external use since it
* recalcs the tree parents.
+ * Handles its own locking unless nolock is set. In that case the caller
+ * should lock and unlock a writelock on the hints structure.
* @param hints: the hints data structure
* @param c: class of stub zone
* @param nm: name of stub zone (in uncompressed wireformat).
+ * @param nolock: Skip locking, locking is handled by the caller.
*/
-void hints_delete_stub(struct iter_hints* hints, uint16_t c, uint8_t* nm);
+void hints_delete_stub(struct iter_hints* hints, uint16_t c,
+ uint8_t* nm, int nolock);
#endif /* ITERATOR_ITER_HINTS_H */
diff --git a/sbin/unwind/libunbound/iterator/iter_utils.c b/sbin/unwind/libunbound/iterator/iter_utils.c
index 10a8ec3eb08..f291178d231 100644
--- a/sbin/unwind/libunbound/iterator/iter_utils.c
+++ b/sbin/unwind/libunbound/iterator/iter_utils.c
@@ -1284,8 +1284,17 @@ iter_get_next_root(struct iter_hints* hints, struct iter_forwards* fwd,
uint16_t* c)
{
uint16_t c1 = *c, c2 = *c;
- int r1 = hints_next_root(hints, &c1);
- int r2 = forwards_next_root(fwd, &c2);
+ int r1, r2;
+ int nolock = 1;
+
+ /* prelock both forwards and hints for atomic read. */
+ lock_rw_rdlock(&fwd->lock);
+ lock_rw_rdlock(&hints->lock);
+ r1 = hints_next_root(hints, &c1, nolock);
+ r2 = forwards_next_root(fwd, &c2, nolock);
+ lock_rw_unlock(&fwd->lock);
+ lock_rw_unlock(&hints->lock);
+
if(!r1 && !r2) /* got none, end of list */
return 0;
else if(!r1) /* got one, return that */
@@ -1450,15 +1459,21 @@ int iter_dp_cangodown(struct query_info* qinfo, struct delegpt* dp)
int
iter_stub_fwd_no_cache(struct module_qstate *qstate, struct query_info *qinf,
- uint8_t** retdpname, size_t* retdpnamelen)
+ uint8_t** retdpname, size_t* retdpnamelen, uint8_t* dpname_storage,
+ size_t dpname_storage_len)
{
struct iter_hints_stub *stub;
struct delegpt *dp;
+ int nolock = 1;
/* Check for stub. */
+ /* Lock both forwards and hints for atomic read. */
+ lock_rw_rdlock(&qstate->env->fwds->lock);
+ lock_rw_rdlock(&qstate->env->hints->lock);
stub = hints_lookup_stub(qstate->env->hints, qinf->qname,
- qinf->qclass, NULL);
- dp = forwards_lookup(qstate->env->fwds, qinf->qname, qinf->qclass);
+ qinf->qclass, NULL, nolock);
+ dp = forwards_lookup(qstate->env->fwds, qinf->qname, qinf->qclass,
+ nolock);
/* see if forward or stub is more pertinent */
if(stub && stub->dp && dp) {
@@ -1472,7 +1487,9 @@ iter_stub_fwd_no_cache(struct module_qstate *qstate, struct query_info *qinf,
/* check stub */
if (stub != NULL && stub->dp != NULL) {
- if(stub->dp->no_cache) {
+ int stub_no_cache = stub->dp->no_cache;
+ lock_rw_unlock(&qstate->env->fwds->lock);
+ if(stub_no_cache) {
char qname[255+1];
char dpname[255+1];
dname_str(qinf->qname, qname);
@@ -1480,15 +1497,27 @@ iter_stub_fwd_no_cache(struct module_qstate *qstate, struct query_info *qinf,
verbose(VERB_ALGO, "stub for %s %s has no_cache", qname, dpname);
}
if(retdpname) {
- *retdpname = stub->dp->name;
+ if(stub->dp->namelen > dpname_storage_len) {
+ verbose(VERB_ALGO, "no cache stub dpname too long");
+ lock_rw_unlock(&qstate->env->hints->lock);
+ *retdpname = NULL;
+ *retdpnamelen = 0;
+ return stub_no_cache;
+ }
+ memmove(dpname_storage, stub->dp->name,
+ stub->dp->namelen);
+ *retdpname = dpname_storage;
*retdpnamelen = stub->dp->namelen;
}
- return (stub->dp->no_cache);
+ lock_rw_unlock(&qstate->env->hints->lock);
+ return stub_no_cache;
}
/* Check for forward. */
if (dp) {
- if(dp->no_cache) {
+ int dp_no_cache = dp->no_cache;
+ lock_rw_unlock(&qstate->env->hints->lock);
+ if(dp_no_cache) {
char qname[255+1];
char dpname[255+1];
dname_str(qinf->qname, qname);
@@ -1496,11 +1525,22 @@ iter_stub_fwd_no_cache(struct module_qstate *qstate, struct query_info *qinf,
verbose(VERB_ALGO, "forward for %s %s has no_cache", qname, dpname);
}
if(retdpname) {
- *retdpname = dp->name;
+ if(dp->namelen > dpname_storage_len) {
+ verbose(VERB_ALGO, "no cache dpname too long");
+ lock_rw_unlock(&qstate->env->fwds->lock);
+ *retdpname = NULL;
+ *retdpnamelen = 0;
+ return dp_no_cache;
+ }
+ memmove(dpname_storage, dp->name, dp->namelen);
+ *retdpname = dpname_storage;
*retdpnamelen = dp->namelen;
}
- return (dp->no_cache);
+ lock_rw_unlock(&qstate->env->fwds->lock);
+ return dp_no_cache;
}
+ lock_rw_unlock(&qstate->env->fwds->lock);
+ lock_rw_unlock(&qstate->env->hints->lock);
if(retdpname) {
*retdpname = NULL;
*retdpnamelen = 0;
diff --git a/sbin/unwind/libunbound/iterator/iter_utils.h b/sbin/unwind/libunbound/iterator/iter_utils.h
index fa860fa682f..4024629e686 100644
--- a/sbin/unwind/libunbound/iterator/iter_utils.h
+++ b/sbin/unwind/libunbound/iterator/iter_utils.h
@@ -407,10 +407,14 @@ int iter_dp_cangodown(struct query_info* qinfo, struct delegpt* dp);
* Used for NXDOMAIN checks, above that it is an nxdomain from a
* different server and zone. You can pass NULL to not get it.
* @param retdpnamelen: returns the length of the dpname.
+ * @param dpname_storage: this is where the dpname buf is stored, if any.
+ * So that caller can manage the buffer.
+ * @param dpname_storage_len: size of dpname_storage buffer.
* @return true if no_cache is set in stub or fwd.
*/
int iter_stub_fwd_no_cache(struct module_qstate *qstate,
- struct query_info *qinf, uint8_t** retdpname, size_t* retdpnamelen);
+ struct query_info *qinf, uint8_t** retdpname, size_t* retdpnamelen,
+ uint8_t* dpname_storage, size_t dpname_storage_len);
/**
* Set support for IP4 and IP6 depending on outgoing interfaces
diff --git a/sbin/unwind/libunbound/iterator/iterator.c b/sbin/unwind/libunbound/iterator/iterator.c
index e9fea544aa6..5732a414857 100644
--- a/sbin/unwind/libunbound/iterator/iterator.c
+++ b/sbin/unwind/libunbound/iterator/iterator.c
@@ -52,6 +52,7 @@
#include "iterator/iter_priv.h"
#include "validator/val_neg.h"
#include "services/cache/dns.h"
+#include "services/cache/rrset.h"
#include "services/cache/infra.h"
#include "services/authzone.h"
#include "util/module.h"
@@ -678,30 +679,40 @@ errinf_reply(struct module_qstate* qstate, struct iter_qstate* iq)
/** see if last resort is possible - does config allow queries to parent */
static int
-can_have_last_resort(struct module_env* env, uint8_t* nm, size_t nmlen,
- uint16_t qclass, struct delegpt** retdp)
+can_have_last_resort(struct module_env* env, uint8_t* nm, size_t ATTR_UNUSED(nmlen),
+ uint16_t qclass, int* have_dp, struct delegpt** retdp,
+ struct regional* region)
{
- struct delegpt* fwddp;
- struct iter_hints_stub* stub;
- int labs = dname_count_labels(nm);
+ struct delegpt* dp = NULL;
+ int nolock = 0;
/* do not process a last resort (the parent side) if a stub
* or forward is configured, because we do not want to go 'above'
* the configured servers */
- if(!dname_is_root(nm) && (stub = (struct iter_hints_stub*)
- name_tree_find(&env->hints->tree, nm, nmlen, labs, qclass)) &&
+ if(!dname_is_root(nm) &&
+ (dp = hints_find(env->hints, nm, qclass, nolock)) &&
/* has_parent side is turned off for stub_first, where we
* are allowed to go to the parent */
- stub->dp->has_parent_side_NS) {
- if(retdp) *retdp = stub->dp;
+ dp->has_parent_side_NS) {
+ if(retdp) *retdp = delegpt_copy(dp, region);
+ lock_rw_unlock(&env->hints->lock);
+ if(have_dp) *have_dp = 1;
return 0;
}
- if((fwddp = forwards_find(env->fwds, nm, qclass)) &&
+ if(dp) {
+ lock_rw_unlock(&env->hints->lock);
+ dp = NULL;
+ }
+ if((dp = forwards_find(env->fwds, nm, qclass, nolock)) &&
/* has_parent_side is turned off for forward_first, where
* we are allowed to go to the parent */
- fwddp->has_parent_side_NS) {
- if(retdp) *retdp = fwddp;
+ dp->has_parent_side_NS) {
+ if(retdp) *retdp = delegpt_copy(dp, region);
+ lock_rw_unlock(&env->fwds->lock);
+ if(have_dp) *have_dp = 1;
return 0;
}
+ /* lock_() calls are macros that could be nothing, surround in {} */
+ if(dp) { lock_rw_unlock(&env->fwds->lock); }
return 1;
}
@@ -877,10 +888,11 @@ prime_root(struct module_qstate* qstate, struct iter_qstate* iq, int id,
{
struct delegpt* dp;
struct module_qstate* subq;
+ int nolock = 0;
verbose(VERB_DETAIL, "priming . %s NS",
sldns_lookup_by_id(sldns_rr_classes, (int)qclass)?
sldns_lookup_by_id(sldns_rr_classes, (int)qclass)->name:"??");
- dp = hints_lookup_root(qstate->env->hints, qclass);
+ dp = hints_find_root(qstate->env->hints, qclass, nolock);
if(!dp) {
verbose(VERB_ALGO, "Cannot prime due to lack of hints");
return 0;
@@ -890,6 +902,7 @@ prime_root(struct module_qstate* qstate, struct iter_qstate* iq, int id,
if(!generate_sub_request((uint8_t*)"\000", 1, LDNS_RR_TYPE_NS,
qclass, qstate, id, iq, QUERYTARGETS_STATE, PRIME_RESP_STATE,
&subq, 0, 0)) {
+ lock_rw_unlock(&qstate->env->hints->lock);
verbose(VERB_ALGO, "could not prime root");
return 0;
}
@@ -900,6 +913,7 @@ prime_root(struct module_qstate* qstate, struct iter_qstate* iq, int id,
* copy dp, it is now part of the root prime query.
* dp was part of in the fixed hints structure. */
subiq->dp = delegpt_copy(dp, subq->region);
+ lock_rw_unlock(&qstate->env->hints->lock);
if(!subiq->dp) {
log_err("out of memory priming root, copydp");
fptr_ok(fptr_whitelist_modenv_kill_sub(
@@ -911,6 +925,8 @@ prime_root(struct module_qstate* qstate, struct iter_qstate* iq, int id,
subiq->num_target_queries = 0;
subiq->dnssec_expected = iter_indicates_dnssec(
qstate->env, subiq->dp, NULL, subq->qinfo.qclass);
+ } else {
+ lock_rw_unlock(&qstate->env->hints->lock);
}
/* this module stops, our submodule starts, and does the query. */
@@ -941,18 +957,21 @@ prime_stub(struct module_qstate* qstate, struct iter_qstate* iq, int id,
struct iter_hints_stub* stub;
struct delegpt* stub_dp;
struct module_qstate* subq;
+ int nolock = 0;
if(!qname) return 0;
- stub = hints_lookup_stub(qstate->env->hints, qname, qclass, iq->dp);
+ stub = hints_lookup_stub(qstate->env->hints, qname, qclass, iq->dp,
+ nolock);
/* The stub (if there is one) does not need priming. */
- if(!stub)
- return 0;
+ if(!stub) return 0;
stub_dp = stub->dp;
/* if we have an auth_zone dp, and stub is equal, don't prime stub
* yet, unless we want to fallback and avoid the auth_zone */
if(!iq->auth_zone_avoid && iq->dp && iq->dp->auth_dp &&
- query_dname_compare(iq->dp->name, stub_dp->name) == 0)
+ query_dname_compare(iq->dp->name, stub_dp->name) == 0) {
+ lock_rw_unlock(&qstate->env->hints->lock);
return 0;
+ }
/* is it a noprime stub (always use) */
if(stub->noprime) {
@@ -961,13 +980,14 @@ prime_stub(struct module_qstate* qstate, struct iter_qstate* iq, int id,
/* copy the dp out of the fixed hints structure, so that
* it can be changed when servicing this query */
iq->dp = delegpt_copy(stub_dp, qstate->region);
+ lock_rw_unlock(&qstate->env->hints->lock);
if(!iq->dp) {
log_err("out of memory priming stub");
errinf(qstate, "malloc failure, priming stub");
(void)error_response(qstate, id, LDNS_RCODE_SERVFAIL);
return 1; /* return 1 to make module stop, with error */
}
- log_nametypeclass(VERB_DETAIL, "use stub", stub_dp->name,
+ log_nametypeclass(VERB_DETAIL, "use stub", iq->dp->name,
LDNS_RR_TYPE_NS, qclass);
return r;
}
@@ -981,6 +1001,7 @@ prime_stub(struct module_qstate* qstate, struct iter_qstate* iq, int id,
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, 0)) {
+ lock_rw_unlock(&qstate->env->hints->lock);
verbose(VERB_ALGO, "could not prime stub");
errinf(qstate, "could not generate lookup for stub prime");
(void)error_response(qstate, id, LDNS_RCODE_SERVFAIL);
@@ -993,6 +1014,7 @@ prime_stub(struct module_qstate* qstate, struct iter_qstate* iq, int id,
/* Set the initial delegation point to the hint. */
/* make copy to avoid use of stub dp by different qs/threads */
subiq->dp = delegpt_copy(stub_dp, subq->region);
+ lock_rw_unlock(&qstate->env->hints->lock);
if(!subiq->dp) {
log_err("out of memory priming stub, copydp");
fptr_ok(fptr_whitelist_modenv_kill_sub(
@@ -1009,6 +1031,8 @@ prime_stub(struct module_qstate* qstate, struct iter_qstate* iq, int id,
subiq->wait_priming_stub = 1;
subiq->dnssec_expected = iter_indicates_dnssec(
qstate->env, subiq->dp, NULL, subq->qinfo.qclass);
+ } else {
+ lock_rw_unlock(&qstate->env->hints->lock);
}
/* this module stops, our submodule starts, and does the query. */
@@ -1181,7 +1205,7 @@ generate_ns_check(struct module_qstate* qstate, struct iter_qstate* iq, int id)
if(iq->depth == ie->max_dependency_depth)
return;
if(!can_have_last_resort(qstate->env, iq->dp->name, iq->dp->namelen,
- iq->qchase.qclass, NULL))
+ iq->qchase.qclass, NULL, NULL, NULL))
return;
/* is this query the same as the nscheck? */
if(qstate->qinfo.qtype == LDNS_RR_TYPE_NS &&
@@ -1294,6 +1318,7 @@ forward_request(struct module_qstate* qstate, struct iter_qstate* iq)
struct delegpt* dp;
uint8_t* delname = iq->qchase.qname;
size_t delnamelen = iq->qchase.qname_len;
+ int nolock = 0;
if(iq->refetch_glue && iq->dp) {
delname = iq->dp->name;
delnamelen = iq->dp->namelen;
@@ -1302,12 +1327,13 @@ forward_request(struct module_qstate* qstate, struct iter_qstate* iq)
if( (iq->qchase.qtype == LDNS_RR_TYPE_DS || iq->refetch_glue)
&& !dname_is_root(iq->qchase.qname))
dname_remove_label(&delname, &delnamelen);
- dp = forwards_lookup(qstate->env->fwds, delname, iq->qchase.qclass);
- if(!dp)
- return 0;
+ dp = forwards_lookup(qstate->env->fwds, delname, iq->qchase.qclass,
+ nolock);
+ if(!dp) return 0;
/* send recursion desired to forward addr */
iq->chase_flags |= BIT_RD;
iq->dp = delegpt_copy(dp, qstate->region);
+ lock_rw_unlock(&qstate->env->fwds->lock);
/* iq->dp checked by caller */
verbose(VERB_ALGO, "forwarding request");
return 1;
@@ -1335,6 +1361,7 @@ static int
processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq,
struct iter_env* ie, int id)
{
+ uint8_t dpname_storage[LDNS_MAX_DOMAINLEN+1];
uint8_t* delname, *dpname=NULL;
size_t delnamelen, dpnamelen=0;
struct dns_msg* msg = NULL;
@@ -1381,7 +1408,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq,
if (iq->refetch_glue &&
iq->dp &&
!can_have_last_resort(qstate->env, iq->dp->name,
- iq->dp->namelen, iq->qchase.qclass, NULL)) {
+ iq->dp->namelen, iq->qchase.qclass, NULL, NULL, NULL)) {
iq->refetch_glue = 0;
}
@@ -1389,8 +1416,61 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq,
/* This either results in a query restart (CNAME cache response), a
* terminating response (ANSWER), or a cache miss (null). */
-
- if (iter_stub_fwd_no_cache(qstate, &iq->qchase, &dpname, &dpnamelen)) {
+
+ /* Check RPZ for override */
+ if(qstate->env->auth_zones) {
+ /* apply rpz qname triggers, like after cname */
+ struct dns_msg* forged_response =
+ rpz_callback_from_iterator_cname(qstate, iq);
+ if(forged_response) {
+ uint8_t* sname = 0;
+ size_t slen = 0;
+ int count = 0;
+ while(forged_response && reply_find_rrset_section_an(
+ forged_response->rep, iq->qchase.qname,
+ iq->qchase.qname_len, LDNS_RR_TYPE_CNAME,
+ iq->qchase.qclass) &&
+ iq->qchase.qtype != LDNS_RR_TYPE_CNAME &&
+ count++ < ie->max_query_restarts) {
+ /* another cname to follow */
+ if(!handle_cname_response(qstate, iq, forged_response,
+ &sname, &slen)) {
+ errinf(qstate, "malloc failure, CNAME info");
+ return error_response(qstate, id, LDNS_RCODE_SERVFAIL);
+ }
+ iq->qchase.qname = sname;
+ iq->qchase.qname_len = slen;
+ forged_response =
+ rpz_callback_from_iterator_cname(qstate, iq);
+ }
+ if(forged_response != NULL) {
+ qstate->ext_state[id] = module_finished;
+ qstate->return_rcode = LDNS_RCODE_NOERROR;
+ qstate->return_msg = forged_response;
+ iq->response = forged_response;
+ next_state(iq, FINISHED_STATE);
+ if(!iter_prepend(iq, qstate->return_msg, qstate->region)) {
+ log_err("rpz: after cached cname, prepend rrsets: out of memory");
+ return error_response(qstate, id, LDNS_RCODE_SERVFAIL);
+ }
+ qstate->return_msg->qinfo = qstate->qinfo;
+ return 0;
+ }
+ /* Follow the CNAME response */
+ iq->dp = NULL;
+ 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;
+ return next_state(iq, INIT_REQUEST_STATE);
+ }
+ }
+
+ if (iter_stub_fwd_no_cache(qstate, &iq->qchase, &dpname, &dpnamelen,
+ dpname_storage, sizeof(dpname_storage))) {
/* Asked to not query cache. */
verbose(VERB_ALGO, "no-cache set, going to the network");
qstate->no_cache_lookup = 1;
@@ -1449,39 +1529,6 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq,
}
iq->qchase.qname = sname;
iq->qchase.qname_len = slen;
- if(qstate->env->auth_zones) {
- /* apply rpz qname triggers after cname */
- struct dns_msg* forged_response =
- rpz_callback_from_iterator_cname(qstate, iq);
- while(forged_response && reply_find_rrset_section_an(
- forged_response->rep, iq->qchase.qname,
- iq->qchase.qname_len, LDNS_RR_TYPE_CNAME,
- iq->qchase.qclass)) {
- /* another cname to follow */
- if(!handle_cname_response(qstate, iq, forged_response,
- &sname, &slen)) {
- errinf(qstate, "malloc failure, CNAME info");
- return error_response(qstate, id, LDNS_RCODE_SERVFAIL);
- }
- iq->qchase.qname = sname;
- iq->qchase.qname_len = slen;
- forged_response =
- rpz_callback_from_iterator_cname(qstate, iq);
- }
- if(forged_response != NULL) {
- qstate->ext_state[id] = module_finished;
- qstate->return_rcode = LDNS_RCODE_NOERROR;
- qstate->return_msg = forged_response;
- iq->response = forged_response;
- next_state(iq, FINISHED_STATE);
- if(!iter_prepend(iq, qstate->return_msg, qstate->region)) {
- log_err("rpz: after cached cname, prepend rrsets: out of memory");
- return error_response(qstate, id, LDNS_RCODE_SERVFAIL);
- }
- qstate->return_msg->qinfo = qstate->qinfo;
- return 0;
- }
- }
/* This *is* a query restart, even if it is a cheap
* one. */
iq->dp = NULL;
@@ -1494,7 +1541,6 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq,
iq->minimisation_state = INIT_MINIMISE_STATE;
return next_state(iq, INIT_REQUEST_STATE);
}
-
/* if from cache, NULL, else insert 'cache IP' len=0 */
if(qstate->reply_origin)
sock_list_insert(&qstate->reply_origin, NULL, 0, qstate->region);
@@ -1555,7 +1601,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq,
}
if(iq->qchase.qtype == LDNS_RR_TYPE_DS || iq->refetch_glue ||
(iq->qchase.qtype == LDNS_RR_TYPE_NS && qstate->prefetch_leeway
- && can_have_last_resort(qstate->env, delname, delnamelen, iq->qchase.qclass, NULL))) {
+ && can_have_last_resort(qstate->env, delname, delnamelen, iq->qchase.qclass, NULL, NULL, NULL))) {
/* remove first label from delname, root goes to hints,
* but only to fetch glue, not for qtype=DS. */
/* also when prefetching an NS record, fetch it again from
@@ -1584,6 +1630,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq,
* root priming situation. */
if(iq->dp == NULL) {
int r;
+ int nolock = 0;
/* if under auth zone, no prime needed */
if(!auth_zone_delegpt(qstate, iq, delname, delnamelen))
return error_response(qstate, id,
@@ -1597,12 +1644,13 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq,
break; /* got noprime-stub-zone, continue */
else if(r)
return 0; /* stub prime request made */
- if(forwards_lookup_root(qstate->env->fwds,
- iq->qchase.qclass)) {
+ if(forwards_lookup_root(qstate->env->fwds,
+ iq->qchase.qclass, nolock)) {
+ lock_rw_unlock(&qstate->env->fwds->lock);
/* forward zone root, no root prime needed */
/* fill in some dp - safety belt */
- iq->dp = hints_lookup_root(qstate->env->hints,
- iq->qchase.qclass);
+ iq->dp = hints_find_root(qstate->env->hints,
+ iq->qchase.qclass, nolock);
if(!iq->dp) {
log_err("internal error: no hints dp");
errinf(qstate, "no hints for this class");
@@ -1610,6 +1658,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq,
LDNS_RCODE_SERVFAIL);
}
iq->dp = delegpt_copy(iq->dp, qstate->region);
+ lock_rw_unlock(&qstate->env->hints->lock);
if(!iq->dp) {
log_err("out of memory in safety belt");
errinf(qstate, "malloc failure, in safety belt");
@@ -1649,15 +1698,13 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq,
if(iter_dp_is_useless(&qstate->qinfo, qstate->query_flags,
iq->dp, ie->supports_ipv4, ie->supports_ipv6,
ie->use_nat64)) {
- struct delegpt* retdp = NULL;
- if(!can_have_last_resort(qstate->env, iq->dp->name, iq->dp->namelen, iq->qchase.qclass, &retdp)) {
- if(retdp) {
+ int have_dp = 0;
+ if(!can_have_last_resort(qstate->env, iq->dp->name, iq->dp->namelen, iq->qchase.qclass, &have_dp, &iq->dp, qstate->region)) {
+ if(have_dp) {
verbose(VERB_QUERY, "cache has stub "
"or fwd but no addresses, "
"fallback to config");
- iq->dp = delegpt_copy(retdp,
- qstate->region);
- if(!iq->dp) {
+ if(have_dp && !iq->dp) {
log_err("out of memory in "
"stub/fwd fallback");
errinf(qstate, "malloc failure, for fallback to config");
@@ -1677,10 +1724,11 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq,
}
if(dname_is_root(iq->dp->name)) {
/* use safety belt */
+ int nolock = 0;
verbose(VERB_QUERY, "Cache has root NS but "
"no addresses. Fallback to the safety belt.");
- iq->dp = hints_lookup_root(qstate->env->hints,
- iq->qchase.qclass);
+ iq->dp = hints_find_root(qstate->env->hints,
+ iq->qchase.qclass, nolock);
/* note deleg_msg is from previous lookup,
* but RD is on, so it is not used */
if(!iq->dp) {
@@ -1689,6 +1737,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq,
LDNS_RCODE_REFUSED);
}
iq->dp = delegpt_copy(iq->dp, qstate->region);
+ lock_rw_unlock(&qstate->env->hints->lock);
if(!iq->dp) {
log_err("out of memory in safety belt");
errinf(qstate, "malloc failure, in safety belt, for root");
@@ -1744,6 +1793,7 @@ processInitRequest2(struct module_qstate* qstate, struct iter_qstate* iq,
delnamelen = iq->qchase.qname_len;
if(iq->refetch_glue) {
struct iter_hints_stub* stub;
+ int nolock = 0;
if(!iq->dp) {
log_err("internal or malloc fail: no dp for refetch");
errinf(qstate, "malloc failure, no delegation info");
@@ -1753,12 +1803,14 @@ processInitRequest2(struct module_qstate* qstate, struct iter_qstate* iq,
* this is above stub without stub-first. */
stub = hints_lookup_stub(
qstate->env->hints, iq->qchase.qname, iq->qchase.qclass,
- iq->dp);
+ iq->dp, nolock);
if(!stub || !stub->dp->has_parent_side_NS ||
dname_subdomain_c(iq->dp->name, stub->dp->name)) {
delname = iq->dp->name;
delnamelen = iq->dp->namelen;
}
+ /* lock_() calls are macros that could be nothing, surround in {} */
+ if(stub) { lock_rw_unlock(&qstate->env->hints->lock); }
}
if(iq->qchase.qtype == LDNS_RR_TYPE_DS || iq->refetch_glue) {
if(!dname_is_root(delname))
@@ -2062,7 +2114,7 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq,
log_assert(iq->dp);
if(!can_have_last_resort(qstate->env, iq->dp->name, iq->dp->namelen,
- iq->qchase.qclass, NULL)) {
+ iq->qchase.qclass, NULL, NULL, NULL)) {
/* fail -- no more targets, no more hope of targets, no hope
* of a response. */
errinf(qstate, "all the configured stub or forward servers failed,");
@@ -2072,21 +2124,24 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq,
return error_response_cache(qstate, id, LDNS_RCODE_SERVFAIL);
}
if(!iq->dp->has_parent_side_NS && dname_is_root(iq->dp->name)) {
- struct delegpt* p = hints_lookup_root(qstate->env->hints,
- iq->qchase.qclass);
- if(p) {
+ struct delegpt* dp;
+ int nolock = 0;
+ dp = hints_find_root(qstate->env->hints,
+ iq->qchase.qclass, nolock);
+ if(dp) {
struct delegpt_addr* a;
iq->chase_flags &= ~BIT_RD; /* go to authorities */
- for(ns = p->nslist; ns; ns=ns->next) {
+ for(ns = dp->nslist; ns; ns=ns->next) {
(void)delegpt_add_ns(iq->dp, qstate->region,
ns->name, ns->lame, ns->tls_auth_name,
ns->port);
}
- for(a = p->target_list; a; a=a->next_target) {
+ for(a = dp->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, -1, NULL);
}
+ lock_rw_unlock(&qstate->env->hints->lock);
}
iq->dp->has_parent_side_NS = 1;
} else if(!iq->dp->has_parent_side_NS) {
@@ -2164,7 +2219,7 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq,
if( ((ie->supports_ipv6 && !ns->done_pside6) ||
((ie->supports_ipv4 || ie->use_nat64) && !ns->done_pside4)) &&
!can_have_last_resort(qstate->env, ns->name, ns->namelen,
- iq->qchase.qclass, NULL)) {
+ iq->qchase.qclass, NULL, NULL, NULL)) {
log_nametypeclass(VERB_ALGO, "cannot pside lookup ns "
"because it is also a stub/forward,",
ns->name, LDNS_RR_TYPE_NS, iq->qchase.qclass);
@@ -2746,8 +2801,51 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq,
delegpt_add_unused_targets(iq->dp);
if(qstate->env->auth_zones) {
- /* apply rpz triggers at query time */
+ uint8_t* sname = NULL;
+ size_t snamelen = 0;
+ /* apply rpz triggers at query time; nameserver IP and dname */
+ struct dns_msg* forged_response_after_cname;
struct dns_msg* forged_response = rpz_callback_from_iterator_module(qstate, iq);
+ int count = 0;
+ while(forged_response && reply_find_rrset_section_an(
+ forged_response->rep, iq->qchase.qname,
+ iq->qchase.qname_len, LDNS_RR_TYPE_CNAME,
+ iq->qchase.qclass) &&
+ iq->qchase.qtype != LDNS_RR_TYPE_CNAME &&
+ count++ < ie->max_query_restarts) {
+ /* another cname to follow */
+ if(!handle_cname_response(qstate, iq, forged_response,
+ &sname, &snamelen)) {
+ errinf(qstate, "malloc failure, CNAME info");
+ return error_response(qstate, id, LDNS_RCODE_SERVFAIL);
+ }
+ iq->qchase.qname = sname;
+ iq->qchase.qname_len = snamelen;
+ forged_response_after_cname =
+ rpz_callback_from_iterator_cname(qstate, iq);
+ if(forged_response_after_cname) {
+ forged_response = forged_response_after_cname;
+ } else {
+ /* Follow the CNAME with a query restart */
+ iq->deleg_msg = NULL;
+ iq->dp = NULL;
+ iq->dsns_point = NULL;
+ iq->auth_zone_response = 0;
+ iq->refetch_glue = 0;
+ 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;
+ 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, INIT_REQUEST_STATE);
+ }
+ }
if(forged_response != NULL) {
qstate->ext_state[id] = module_finished;
qstate->return_rcode = LDNS_RCODE_NOERROR;
@@ -3082,7 +3180,8 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq,
/* DNAME to a subdomain loop; do not recurse */
type = RESPONSE_TYPE_ANSWER;
}
- } else if(type == RESPONSE_TYPE_CNAME &&
+ }
+ if(type == RESPONSE_TYPE_CNAME &&
iq->qchase.qtype == LDNS_RR_TYPE_CNAME &&
iq->minimisation_state == MINIMISE_STATE &&
query_dname_compare(iq->qchase.qname, iq->qinfo_out.qname) == 0) {
@@ -3193,6 +3292,7 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq,
}
return final_state(iq);
} else if(type == RESPONSE_TYPE_REFERRAL) {
+ struct delegpt* old_dp = NULL;
/* REFERRAL type responses get a reset of the
* delegation point, and back to the QUERYTARGETS_STATE. */
verbose(VERB_DETAIL, "query response was REFERRAL");
@@ -3244,6 +3344,8 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq,
/* Reset the event state, setting the current delegation
* point to the referral. */
iq->deleg_msg = iq->response;
+ /* Keep current delegation point for label comparison */
+ old_dp = iq->dp;
iq->dp = delegpt_from_message(iq->response, qstate->region);
if (qstate->env->cfg->qname_minimisation)
iq->minimisation_state = INIT_MINIMISE_STATE;
@@ -3251,6 +3353,20 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq,
errinf(qstate, "malloc failure, for delegation point");
return error_response(qstate, id, LDNS_RCODE_SERVFAIL);
}
+ if(old_dp->namelabs + 1 < iq->dp->namelabs) {
+ /* We got a grandchild delegation (more than one label
+ * difference) than expected. Check for in-between
+ * delegations in the cache and remove them.
+ * They could prove problematic when they expire
+ * and rrset_expired_above() encounters them during
+ * delegation cache lookups. */
+ uint8_t* qname = iq->dp->name;
+ size_t qnamelen = iq->dp->namelen;
+ rrset_cache_remove_above(qstate->env->rrset_cache,
+ &qname, &qnamelen, LDNS_RR_TYPE_NS,
+ iq->qchase.qclass, *qstate->env->now,
+ old_dp->name, old_dp->namelen);
+ }
if(!cache_fill_missing(qstate->env, iq->qchase.qclass,
qstate->region, iq->dp)) {
errinf(qstate, "malloc failure, copy extra info into delegation point");
@@ -3341,10 +3457,13 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq,
/* apply rpz qname triggers after cname */
struct dns_msg* forged_response =
rpz_callback_from_iterator_cname(qstate, iq);
+ int count = 0;
while(forged_response && reply_find_rrset_section_an(
forged_response->rep, iq->qchase.qname,
iq->qchase.qname_len, LDNS_RR_TYPE_CNAME,
- iq->qchase.qclass)) {
+ iq->qchase.qclass) &&
+ iq->qchase.qtype != LDNS_RR_TYPE_CNAME &&
+ count++ < ie->max_query_restarts) {
/* another cname to follow */
if(!handle_cname_response(qstate, iq, forged_response,
&sname, &snamelen)) {
@@ -3926,17 +4045,9 @@ processFinished(struct module_qstate* qstate, struct iter_qstate* iq,
!qstate->env->cfg->val_log_squelch) {
char* err_str = errinf_to_str_misc(qstate);
if(err_str) {
- size_t err_str_len = strlen(err_str);
verbose(VERB_ALGO, "iterator EDE: %s", err_str);
- /* allocate space and store the error
- * string */
- iq->response->rep->reason_bogus_str = regional_alloc(
- qstate->region,
- sizeof(char) * (err_str_len+1));
- memcpy(iq->response->rep->reason_bogus_str,
- err_str, err_str_len+1);
+ iq->response->rep->reason_bogus_str = err_str;
}
- free(err_str);
}
/* we have finished processing this query */
diff --git a/sbin/unwind/libunbound/libunbound/context.c b/sbin/unwind/libunbound/libunbound/context.c
index f7c0a2cd5fa..a319f59cdea 100644
--- a/sbin/unwind/libunbound/libunbound/context.c
+++ b/sbin/unwind/libunbound/libunbound/context.c
@@ -53,6 +53,8 @@
#include "util/storage/slabhash.h"
#include "util/edns.h"
#include "sldns/sbuffer.h"
+#include "iterator/iter_fwd.h"
+#include "iterator/iter_hints.h"
int
context_finalize(struct ub_ctx* ctx)
@@ -85,6 +87,12 @@ context_finalize(struct ub_ctx* ctx)
if(!auth_zones_apply_cfg(ctx->env->auth_zones, cfg, 1, &is_rpz,
ctx->env, &ctx->mods))
return UB_INITFAIL;
+ if(!(ctx->env->fwds = forwards_create()) ||
+ !forwards_apply_cfg(ctx->env->fwds, cfg))
+ return UB_INITFAIL;
+ if(!(ctx->env->hints = hints_create()) ||
+ !hints_apply_cfg(ctx->env->hints, cfg))
+ return UB_INITFAIL;
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,
diff --git a/sbin/unwind/libunbound/libunbound/libunbound.c b/sbin/unwind/libunbound/libunbound/libunbound.c
index 80a82bb47dd..17057ec6c01 100644
--- a/sbin/unwind/libunbound/libunbound/libunbound.c
+++ b/sbin/unwind/libunbound/libunbound/libunbound.c
@@ -66,6 +66,8 @@
#include "services/authzone.h"
#include "services/listen_dnsport.h"
#include "sldns/sbuffer.h"
+#include "iterator/iter_fwd.h"
+#include "iterator/iter_hints.h"
#ifdef HAVE_PTHREAD
#include <signal.h>
#endif
@@ -171,6 +173,7 @@ static struct ub_ctx* ub_ctx_create_nopipe(void)
ctx->env->worker = NULL;
ctx->env->need_to_validate = 0;
modstack_init(&ctx->mods);
+ ctx->env->modstack = &ctx->mods;
rbtree_init(&ctx->queries, &context_query_cmp);
return ctx;
}
@@ -379,6 +382,8 @@ ub_ctx_delete(struct ub_ctx* ctx)
config_delete(ctx->env->cfg);
edns_known_options_delete(ctx->env);
edns_strings_delete(ctx->env->edns_strings);
+ forwards_delete(ctx->env->fwds);
+ hints_delete(ctx->env->hints);
auth_zones_delete(ctx->env->auth_zones);
free(ctx->env);
}
diff --git a/sbin/unwind/libunbound/libunbound/libworker.c b/sbin/unwind/libunbound/libunbound/libworker.c
index 0e1c4039376..5c75f61d8dc 100644
--- a/sbin/unwind/libunbound/libunbound/libworker.c
+++ b/sbin/unwind/libunbound/libunbound/libworker.c
@@ -70,8 +70,6 @@
#include "util/data/msgreply.h"
#include "util/data/msgencode.h"
#include "util/tube.h"
-#include "iterator/iter_fwd.h"
-#include "iterator/iter_hints.h"
#include "sldns/sbuffer.h"
#include "sldns/str2wire.h"
#ifdef USE_DNSTAP
@@ -100,8 +98,6 @@ libworker_delete_env(struct libworker* w)
!w->is_bg || w->is_bg_thread);
sldns_buffer_free(w->env->scratch_buffer);
regional_destroy(w->env->scratch);
- forwards_delete(w->env->fwds);
- hints_delete(w->env->hints);
ub_randfree(w->env->rnd);
free(w->env);
}
@@ -159,30 +155,19 @@ libworker_setup(struct ub_ctx* ctx, int is_bg, struct ub_event_base* eb)
}
w->env->scratch = regional_create_custom(cfg->msg_buffer_size);
w->env->scratch_buffer = sldns_buffer_new(cfg->msg_buffer_size);
- w->env->fwds = forwards_create();
- if(w->env->fwds && !forwards_apply_cfg(w->env->fwds, cfg)) {
- forwards_delete(w->env->fwds);
- w->env->fwds = NULL;
- }
- w->env->hints = hints_create();
- if(w->env->hints && !hints_apply_cfg(w->env->hints, cfg)) {
- hints_delete(w->env->hints);
- w->env->hints = NULL;
- }
#ifdef HAVE_SSL
w->sslctx = connect_sslctx_create(NULL, NULL,
cfg->tls_cert_bundle, cfg->tls_win_cert);
if(!w->sslctx) {
/* to make the setup fail after unlock */
- hints_delete(w->env->hints);
- w->env->hints = NULL;
+ sldns_buffer_free(w->env->scratch_buffer);
+ w->env->scratch_buffer = NULL;
}
#endif
if(!w->is_bg || w->is_bg_thread) {
lock_basic_unlock(&ctx->cfglock);
}
- if(!w->env->scratch || !w->env->scratch_buffer || !w->env->fwds ||
- !w->env->hints) {
+ if(!w->env->scratch || !w->env->scratch_buffer) {
libworker_delete(w);
return NULL;
}
diff --git a/sbin/unwind/libunbound/services/authzone.c b/sbin/unwind/libunbound/services/authzone.c
index 93fef8ef1c2..f01a6d9e0e0 100644
--- a/sbin/unwind/libunbound/services/authzone.c
+++ b/sbin/unwind/libunbound/services/authzone.c
@@ -2152,6 +2152,16 @@ auth_zones_cfg(struct auth_zones* az, struct config_auth* c)
if(az->rpz_first)
az->rpz_first->rpz_az_prev = z;
az->rpz_first = z;
+ } else if(c->isrpz && z->rpz) {
+ if(!rpz_config(z->rpz, c)) {
+ log_err("Could not change rpz config");
+ if(x) {
+ lock_basic_unlock(&x->lock);
+ }
+ lock_rw_unlock(&z->lock);
+ lock_rw_unlock(&az->rpz_lock);
+ return 0;
+ }
}
if(c->isrpz) {
lock_rw_unlock(&az->rpz_lock);
diff --git a/sbin/unwind/libunbound/services/cache/dns.c b/sbin/unwind/libunbound/services/cache/dns.c
index 6a980548d72..632ed79ace4 100644
--- a/sbin/unwind/libunbound/services/cache/dns.c
+++ b/sbin/unwind/libunbound/services/cache/dns.c
@@ -193,46 +193,6 @@ dns_cache_store_msg(struct module_env* env, struct query_info* qinfo,
slabhash_insert(env->msg_cache, hash, &e->entry, rep, env->alloc);
}
-/** see if an rrset is expired above the qname, return upper qname. */
-static int
-rrset_expired_above(struct module_env* env, uint8_t** qname, size_t* qnamelen,
- uint16_t searchtype, uint16_t qclass, time_t now, uint8_t* expiretop,
- size_t expiretoplen)
-{
- struct ub_packed_rrset_key *rrset;
- uint8_t lablen;
-
- while(*qnamelen > 0) {
- /* look one label higher */
- lablen = **qname;
- *qname += lablen + 1;
- *qnamelen -= lablen + 1;
- if(*qnamelen <= 0)
- break;
-
- /* looks up with a time of 0, to see expired entries */
- if((rrset = rrset_cache_lookup(env->rrset_cache, *qname,
- *qnamelen, searchtype, qclass, 0, 0, 0))) {
- struct packed_rrset_data* data =
- (struct packed_rrset_data*)rrset->entry.data;
- if(now > data->ttl) {
- /* it is expired, this is not wanted */
- lock_rw_unlock(&rrset->entry.lock);
- log_nametypeclass(VERB_ALGO, "this rrset is expired", *qname, searchtype, qclass);
- return 1;
- }
- /* it is not expired, continue looking */
- lock_rw_unlock(&rrset->entry.lock);
- }
-
- /* do not look above the expiretop. */
- if(expiretop && *qnamelen == expiretoplen &&
- query_dname_compare(*qname, expiretop)==0)
- break;
- }
- return 0;
-}
-
/** find closest NS or DNAME and returns the rrset (locked) */
static struct ub_packed_rrset_key*
find_closest_of_type(struct module_env* env, uint8_t* qname, size_t qnamelen,
@@ -266,12 +226,12 @@ find_closest_of_type(struct module_env* env, uint8_t* qname, size_t qnamelen,
/* check for expiry, but we have to let go of the rrset
* for the lock ordering */
lock_rw_unlock(&rrset->entry.lock);
- /* the expired_above function always takes off one
- * label (if qnamelen>0) and returns the final qname
- * where it searched, so we can continue from there
- * turning the O N*N search into O N. */
- if(!rrset_expired_above(env, &qname, &qnamelen,
- searchtype, qclass, now, expiretop,
+ /* the rrset_cache_expired_above function always takes
+ * off one label (if qnamelen>0) and returns the final
+ * qname where it searched, so we can continue from
+ * there turning the O N*N search into O N. */
+ if(!rrset_cache_expired_above(env->rrset_cache, &qname,
+ &qnamelen, searchtype, qclass, now, expiretop,
expiretoplen)) {
/* we want to return rrset, but it may be
* gone from cache, if so, just loop like
diff --git a/sbin/unwind/libunbound/services/cache/infra.c b/sbin/unwind/libunbound/services/cache/infra.c
index 31462d13ae0..457685ab598 100644
--- a/sbin/unwind/libunbound/services/cache/infra.c
+++ b/sbin/unwind/libunbound/services/cache/infra.c
@@ -234,6 +234,81 @@ setup_domain_limits(struct infra_cache* infra, struct config_file* cfg)
return 1;
}
+/** find or create element in wait limit netblock tree */
+static struct wait_limit_netblock_info*
+wait_limit_netblock_findcreate(struct infra_cache* infra, char* str,
+ int cookie)
+{
+ rbtree_type* tree;
+ struct sockaddr_storage addr;
+ int net;
+ socklen_t addrlen;
+ struct wait_limit_netblock_info* d;
+
+ if(!netblockstrtoaddr(str, 0, &addr, &addrlen, &net)) {
+ log_err("cannot parse wait limit netblock '%s'", str);
+ return 0;
+ }
+
+ /* can we find it? */
+ if(cookie)
+ tree = &infra->wait_limits_cookie_netblock;
+ else
+ tree = &infra->wait_limits_netblock;
+ d = (struct wait_limit_netblock_info*)addr_tree_find(tree, &addr,
+ addrlen, net);
+ if(d)
+ return d;
+
+ /* create it */
+ d = (struct wait_limit_netblock_info*)calloc(1, sizeof(*d));
+ if(!d)
+ return NULL;
+ d->limit = -1;
+ if(!addr_tree_insert(tree, &d->node, &addr, addrlen, net)) {
+ log_err("duplicate element in domainlimit tree");
+ free(d);
+ return NULL;
+ }
+ return d;
+}
+
+
+/** insert wait limit information into lookup tree */
+static int
+infra_wait_limit_netblock_insert(struct infra_cache* infra,
+ struct config_file* cfg)
+{
+ struct config_str2list* p;
+ struct wait_limit_netblock_info* d;
+ for(p = cfg->wait_limit_netblock; p; p = p->next) {
+ d = wait_limit_netblock_findcreate(infra, p->str, 0);
+ if(!d)
+ return 0;
+ d->limit = atoi(p->str2);
+ }
+ for(p = cfg->wait_limit_cookie_netblock; p; p = p->next) {
+ d = wait_limit_netblock_findcreate(infra, p->str, 1);
+ if(!d)
+ return 0;
+ d->limit = atoi(p->str2);
+ }
+ return 1;
+}
+
+/** setup wait limits tree (0 on failure) */
+static int
+setup_wait_limits(struct infra_cache* infra, struct config_file* cfg)
+{
+ addr_tree_init(&infra->wait_limits_netblock);
+ addr_tree_init(&infra->wait_limits_cookie_netblock);
+ if(!infra_wait_limit_netblock_insert(infra, cfg))
+ return 0;
+ addr_tree_init_parents(&infra->wait_limits_netblock);
+ addr_tree_init_parents(&infra->wait_limits_cookie_netblock);
+ return 1;
+}
+
struct infra_cache*
infra_create(struct config_file* cfg)
{
@@ -267,6 +342,10 @@ infra_create(struct config_file* cfg)
infra_delete(infra);
return NULL;
}
+ if(!setup_wait_limits(infra, cfg)) {
+ infra_delete(infra);
+ return NULL;
+ }
infra_ip_ratelimit = cfg->ip_ratelimit;
infra->client_ip_rates = slabhash_create(cfg->ip_ratelimit_slabs,
INFRA_HOST_STARTSIZE, cfg->ip_ratelimit_size, &ip_rate_sizefunc,
@@ -287,6 +366,12 @@ static void domain_limit_free(rbnode_type* n, void* ATTR_UNUSED(arg))
}
}
+/** delete wait_limit_netblock_info entries */
+static void wait_limit_netblock_del(rbnode_type* n, void* ATTR_UNUSED(arg))
+{
+ free(n);
+}
+
void
infra_delete(struct infra_cache* infra)
{
@@ -296,6 +381,10 @@ infra_delete(struct infra_cache* infra)
slabhash_delete(infra->domain_rates);
traverse_postorder(&infra->domain_limits, domain_limit_free, NULL);
slabhash_delete(infra->client_ip_rates);
+ traverse_postorder(&infra->wait_limits_netblock,
+ wait_limit_netblock_del, NULL);
+ traverse_postorder(&infra->wait_limits_cookie_netblock,
+ wait_limit_netblock_del, NULL);
free(infra);
}
@@ -880,7 +969,8 @@ static void infra_create_ratedata(struct infra_cache* infra,
/** create rate data item for ip address */
static void infra_ip_create_ratedata(struct infra_cache* infra,
- struct sockaddr_storage* addr, socklen_t addrlen, time_t timenow)
+ struct sockaddr_storage* addr, socklen_t addrlen, time_t timenow,
+ int mesh_wait)
{
hashvalue_type h = hash_addr(addr, addrlen, 0);
struct ip_rate_key* k = (struct ip_rate_key*)calloc(1, sizeof(*k));
@@ -898,6 +988,7 @@ static void infra_ip_create_ratedata(struct infra_cache* infra,
k->entry.data = d;
d->qps[0] = 1;
d->timestamp[0] = timenow;
+ d->mesh_wait = mesh_wait;
slabhash_insert(infra->client_ip_rates, h, &k->entry, d, NULL);
}
@@ -1121,6 +1212,81 @@ int infra_ip_ratelimit_inc(struct infra_cache* infra,
}
/* create */
- infra_ip_create_ratedata(infra, addr, addrlen, timenow);
+ infra_ip_create_ratedata(infra, addr, addrlen, timenow, 0);
return 1;
}
+
+int infra_wait_limit_allowed(struct infra_cache* infra, struct comm_reply* rep,
+ int cookie_valid, struct config_file* cfg)
+{
+ struct lruhash_entry* entry;
+ if(cfg->wait_limit == 0)
+ return 1;
+
+ entry = infra_find_ip_ratedata(infra, &rep->client_addr,
+ rep->client_addrlen, 0);
+ if(entry) {
+ rbtree_type* tree;
+ struct wait_limit_netblock_info* w;
+ struct rate_data* d = (struct rate_data*)entry->data;
+ int mesh_wait = d->mesh_wait;
+ lock_rw_unlock(&entry->lock);
+
+ /* have the wait amount, check how much is allowed */
+ if(cookie_valid)
+ tree = &infra->wait_limits_cookie_netblock;
+ else tree = &infra->wait_limits_netblock;
+ w = (struct wait_limit_netblock_info*)addr_tree_lookup(tree,
+ &rep->client_addr, rep->client_addrlen);
+ if(w) {
+ if(w->limit != -1 && mesh_wait > w->limit)
+ return 0;
+ } else {
+ /* if there is no IP netblock specific information,
+ * use the configured value. */
+ if(mesh_wait > (cookie_valid?cfg->wait_limit_cookie:
+ cfg->wait_limit))
+ return 0;
+ }
+ }
+ return 1;
+}
+
+void infra_wait_limit_inc(struct infra_cache* infra, struct comm_reply* rep,
+ time_t timenow, struct config_file* cfg)
+{
+ struct lruhash_entry* entry;
+ if(cfg->wait_limit == 0)
+ return;
+
+ /* Find it */
+ entry = infra_find_ip_ratedata(infra, &rep->client_addr,
+ rep->client_addrlen, 1);
+ if(entry) {
+ struct rate_data* d = (struct rate_data*)entry->data;
+ d->mesh_wait++;
+ lock_rw_unlock(&entry->lock);
+ return;
+ }
+
+ /* Create it */
+ infra_ip_create_ratedata(infra, &rep->client_addr,
+ rep->client_addrlen, timenow, 1);
+}
+
+void infra_wait_limit_dec(struct infra_cache* infra, struct comm_reply* rep,
+ struct config_file* cfg)
+{
+ struct lruhash_entry* entry;
+ if(cfg->wait_limit == 0)
+ return;
+
+ entry = infra_find_ip_ratedata(infra, &rep->client_addr,
+ rep->client_addrlen, 1);
+ if(entry) {
+ struct rate_data* d = (struct rate_data*)entry->data;
+ if(d->mesh_wait > 0)
+ d->mesh_wait--;
+ lock_rw_unlock(&entry->lock);
+ }
+}
diff --git a/sbin/unwind/libunbound/services/cache/infra.h b/sbin/unwind/libunbound/services/cache/infra.h
index 525073bf35b..ee6f384de34 100644
--- a/sbin/unwind/libunbound/services/cache/infra.h
+++ b/sbin/unwind/libunbound/services/cache/infra.h
@@ -122,6 +122,10 @@ struct infra_cache {
rbtree_type domain_limits;
/** hash table with query rates per client ip: ip_rate_key, ip_rate_data */
struct slabhash* client_ip_rates;
+ /** tree of addr_tree_node, with wait_limit_netblock_info information */
+ rbtree_type wait_limits_netblock;
+ /** tree of addr_tree_node, with wait_limit_netblock_info information */
+ rbtree_type wait_limits_cookie_netblock;
};
/** ratelimit, unless overridden by domain_limits, 0 is off */
@@ -184,10 +188,22 @@ struct rate_data {
/** what the timestamp is of the qps array members, counter is
* valid for that timestamp. Usually now and now-1. */
time_t timestamp[RATE_WINDOW];
+ /** the number of queries waiting in the mesh */
+ int mesh_wait;
};
#define ip_rate_data rate_data
+/**
+ * Data to store the configuration per netblock for the wait limit
+ */
+struct wait_limit_netblock_info {
+ /** The addr tree node, this must be first. */
+ struct addr_tree_node node;
+ /** the limit on the amount */
+ int limit;
+};
+
/** infra host cache default hash lookup size */
#define INFRA_HOST_STARTSIZE 32
/** bytes per zonename reserved in the hostcache, dnamelen(zonename.com.) */
@@ -474,4 +490,16 @@ void ip_rate_delkeyfunc(void* d, void* arg);
/* delete data */
#define ip_rate_deldatafunc rate_deldatafunc
+/** See if the IP address can have another reply in the wait limit */
+int infra_wait_limit_allowed(struct infra_cache* infra, struct comm_reply* rep,
+ int cookie_valid, struct config_file* cfg);
+
+/** Increment number of waiting replies for IP */
+void infra_wait_limit_inc(struct infra_cache* infra, struct comm_reply* rep,
+ time_t timenow, struct config_file* cfg);
+
+/** Decrement number of waiting replies for IP */
+void infra_wait_limit_dec(struct infra_cache* infra, struct comm_reply* rep,
+ struct config_file* cfg);
+
#endif /* SERVICES_CACHE_INFRA_H */
diff --git a/sbin/unwind/libunbound/services/cache/rrset.c b/sbin/unwind/libunbound/services/cache/rrset.c
index 4e3d08bdaaf..2c03214c8fe 100644
--- a/sbin/unwind/libunbound/services/cache/rrset.c
+++ b/sbin/unwind/libunbound/services/cache/rrset.c
@@ -46,6 +46,7 @@
#include "util/data/packed_rrset.h"
#include "util/data/msgreply.h"
#include "util/data/msgparse.h"
+#include "util/data/dname.h"
#include "util/regional.h"
#include "util/alloc.h"
#include "util/net_help.h"
@@ -127,6 +128,9 @@ need_to_update_rrset(void* nd, void* cd, time_t timenow, int equal, int ns)
{
struct packed_rrset_data* newd = (struct packed_rrset_data*)nd;
struct packed_rrset_data* cached = (struct packed_rrset_data*)cd;
+ /* o if new data is expired, current data is better */
+ if( newd->ttl < timenow && cached->ttl >= timenow)
+ return 0;
/* o store if rrset has been validated
* everything better than bogus data
* secure is preferred */
@@ -440,6 +444,89 @@ rrset_check_sec_status(struct rrset_cache* r,
lock_rw_unlock(&e->lock);
}
+void
+rrset_cache_remove_above(struct rrset_cache* r, uint8_t** qname, size_t*
+ qnamelen, uint16_t searchtype, uint16_t qclass, time_t now, uint8_t*
+ qnametop, size_t qnametoplen)
+{
+ struct ub_packed_rrset_key *rrset;
+ uint8_t lablen;
+
+ while(*qnamelen > 0) {
+ /* look one label higher */
+ lablen = **qname;
+ *qname += lablen + 1;
+ *qnamelen -= lablen + 1;
+ if(*qnamelen <= 0)
+ return;
+
+ /* stop at qnametop */
+ if(qnametop && *qnamelen == qnametoplen &&
+ query_dname_compare(*qname, qnametop)==0)
+ return;
+
+ if(verbosity >= VERB_ALGO) {
+ /* looks up with a time of 0, to see expired entries */
+ if((rrset = rrset_cache_lookup(r, *qname,
+ *qnamelen, searchtype, qclass, 0, 0, 0))) {
+ struct packed_rrset_data* data =
+ (struct packed_rrset_data*)rrset->entry.data;
+ int expired = (now > data->ttl);
+ lock_rw_unlock(&rrset->entry.lock);
+ if(expired)
+ log_nametypeclass(verbosity, "this "
+ "(grand)parent rrset will be "
+ "removed (expired)",
+ *qname, searchtype, qclass);
+ else log_nametypeclass(verbosity, "this "
+ "(grand)parent rrset will be "
+ "removed",
+ *qname, searchtype, qclass);
+ }
+ }
+ rrset_cache_remove(r, *qname, *qnamelen, searchtype, qclass, 0);
+ }
+}
+
+int
+rrset_cache_expired_above(struct rrset_cache* r, uint8_t** qname, size_t*
+ qnamelen, uint16_t searchtype, uint16_t qclass, time_t now, uint8_t*
+ qnametop, size_t qnametoplen)
+{
+ struct ub_packed_rrset_key *rrset;
+ uint8_t lablen;
+
+ while(*qnamelen > 0) {
+ /* look one label higher */
+ lablen = **qname;
+ *qname += lablen + 1;
+ *qnamelen -= lablen + 1;
+ if(*qnamelen <= 0)
+ break;
+
+ /* looks up with a time of 0, to see expired entries */
+ if((rrset = rrset_cache_lookup(r, *qname,
+ *qnamelen, searchtype, qclass, 0, 0, 0))) {
+ struct packed_rrset_data* data =
+ (struct packed_rrset_data*)rrset->entry.data;
+ if(now > data->ttl) {
+ /* it is expired, this is not wanted */
+ lock_rw_unlock(&rrset->entry.lock);
+ log_nametypeclass(VERB_ALGO, "this rrset is expired", *qname, searchtype, qclass);
+ return 1;
+ }
+ /* it is not expired, continue looking */
+ lock_rw_unlock(&rrset->entry.lock);
+ }
+
+ /* do not look above the qnametop. */
+ if(qnametop && *qnamelen == qnametoplen &&
+ query_dname_compare(*qname, qnametop)==0)
+ break;
+ }
+ return 0;
+}
+
void rrset_cache_remove(struct rrset_cache* r, uint8_t* nm, size_t nmlen,
uint16_t type, uint16_t dclass, uint32_t flags)
{
diff --git a/sbin/unwind/libunbound/services/cache/rrset.h b/sbin/unwind/libunbound/services/cache/rrset.h
index 7c36d4032eb..6db79d90f53 100644
--- a/sbin/unwind/libunbound/services/cache/rrset.h
+++ b/sbin/unwind/libunbound/services/cache/rrset.h
@@ -232,6 +232,37 @@ void rrset_check_sec_status(struct rrset_cache* r,
struct ub_packed_rrset_key* rrset, time_t now);
/**
+ * Removes rrsets above the qname, returns upper qname.
+ * @param r: the rrset cache.
+ * @param qname: the start qname, also used as the output.
+ * @param qnamelen: length of qname, updated when it returns.
+ * @param searchtype: qtype to search for.
+ * @param qclass: qclass to search for.
+ * @param now: current time.
+ * @param qnametop: the top qname to stop removal (it is not removed).
+ * @param qnametoplen: length of qnametop.
+ */
+void rrset_cache_remove_above(struct rrset_cache* r, uint8_t** qname,
+ size_t* qnamelen, uint16_t searchtype, uint16_t qclass, time_t now,
+ uint8_t* qnametop, size_t qnametoplen);
+
+/**
+ * Sees if an rrset is expired above the qname, returns upper qname.
+ * @param r: the rrset cache.
+ * @param qname: the start qname, also used as the output.
+ * @param qnamelen: length of qname, updated when it returns.
+ * @param searchtype: qtype to search for.
+ * @param qclass: qclass to search for.
+ * @param now: current time.
+ * @param qnametop: the top qname, don't look farther than that.
+ * @param qnametoplen: length of qnametop.
+ * @return true if there is an expired rrset above, false otherwise.
+ */
+int rrset_cache_expired_above(struct rrset_cache* r, uint8_t** qname,
+ size_t* qnamelen, uint16_t searchtype, uint16_t qclass, time_t now,
+ uint8_t* qnametop, size_t qnametoplen);
+
+/**
* Remove an rrset from the cache, by name and type and flags
* @param r: rrset cache
* @param nm: name of rrset
diff --git a/sbin/unwind/libunbound/services/listen_dnsport.c b/sbin/unwind/libunbound/services/listen_dnsport.c
index 753550978a0..7eb59a1618a 100644
--- a/sbin/unwind/libunbound/services/listen_dnsport.c
+++ b/sbin/unwind/libunbound/services/listen_dnsport.c
@@ -140,9 +140,11 @@ void
verbose_print_unbound_socket(struct unbound_socket* ub_sock)
{
if(verbosity >= VERB_ALGO) {
+ char buf[256];
log_info("listing of unbound_socket structure:");
- verbose_print_addr(ub_sock->addr);
- log_info("s is: %d, fam is: %s, acl: %s", ub_sock->s,
+ addr_to_str((void*)ub_sock->addr, ub_sock->addrlen, buf,
+ sizeof(buf));
+ log_info("%s s is: %d, fam is: %s, acl: %s", buf, ub_sock->s,
ub_sock->fam == AF_INET?"AF_INET":"AF_INET6",
ub_sock->acl?"yes":"no");
}
@@ -610,7 +612,9 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr,
# 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;
+ /* a nonzero value disables fragmentation, according to
+ * docs.oracle.com for ip(4). */
+ int off = 1;
if (setsockopt(s, IPPROTO_IP, IP_DONTFRAG,
&off, (socklen_t)sizeof(off)) < 0) {
log_err("setsockopt(..., IP_DONTFRAG, ...) failed: %s",
@@ -1047,7 +1051,22 @@ make_sock(int stype, const char* ifname, const char* port,
}
}
- ub_sock->addr = res;
+ if(!res->ai_addr) {
+ log_err("getaddrinfo returned no address");
+ freeaddrinfo(res);
+ sock_close(s);
+ return -1;
+ }
+ ub_sock->addr = memdup(res->ai_addr, res->ai_addrlen);
+ ub_sock->addrlen = res->ai_addrlen;
+ if(!ub_sock->addr) {
+ log_err("out of memory: allocate listening address");
+ freeaddrinfo(res);
+ sock_close(s);
+ return -1;
+ }
+ freeaddrinfo(res);
+
ub_sock->s = s;
ub_sock->fam = hints->ai_family;
ub_sock->acl = NULL;
@@ -1277,8 +1296,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp,
if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1,
&noip6, rcv, snd, reuseport, transparent,
tcp_mss, nodelay, freebind, use_systemd, dscp, ub_sock)) == -1) {
- if(ub_sock->addr)
- freeaddrinfo(ub_sock->addr);
+ free(ub_sock->addr);
free(ub_sock);
if(noip6) {
log_warn("IPv6 protocol not available");
@@ -1289,8 +1307,7 @@ 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)) {
sock_close(s);
- if(ub_sock->addr)
- freeaddrinfo(ub_sock->addr);
+ free(ub_sock->addr);
free(ub_sock);
return 0;
}
@@ -1301,8 +1318,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp,
?listen_type_udpancil_dnscrypt:listen_type_udpancil,
is_pp2, ub_sock)) {
sock_close(s);
- if(ub_sock->addr)
- freeaddrinfo(ub_sock->addr);
+ free(ub_sock->addr);
free(ub_sock);
return 0;
}
@@ -1314,8 +1330,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp,
if((s = make_sock_port(SOCK_DGRAM, ifname, port, hints, 1,
&noip6, rcv, snd, reuseport, transparent,
tcp_mss, nodelay, freebind, use_systemd, dscp, ub_sock)) == -1) {
- if(ub_sock->addr)
- freeaddrinfo(ub_sock->addr);
+ free(ub_sock->addr);
free(ub_sock);
if(noip6) {
log_warn("IPv6 protocol not available");
@@ -1332,8 +1347,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp,
listen_type_udpancil:listen_type_udp),
is_pp2, ub_sock)) {
sock_close(s);
- if(ub_sock->addr)
- freeaddrinfo(ub_sock->addr);
+ free(ub_sock->addr);
free(ub_sock);
return 0;
}
@@ -1356,8 +1370,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp,
if((s = make_sock_port(SOCK_STREAM, ifname, port, hints, 1,
&noip6, 0, 0, reuseport, transparent, tcp_mss, nodelay,
freebind, use_systemd, dscp, ub_sock)) == -1) {
- if(ub_sock->addr)
- freeaddrinfo(ub_sock->addr);
+ free(ub_sock->addr);
free(ub_sock);
if(noip6) {
/*log_warn("IPv6 protocol not available");*/
@@ -1369,8 +1382,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, port_type, is_pp2, ub_sock)) {
sock_close(s);
- if(ub_sock->addr)
- freeaddrinfo(ub_sock->addr);
+ free(ub_sock->addr);
free(ub_sock);
return 0;
}
@@ -1952,8 +1964,7 @@ void listening_ports_free(struct listen_port* list)
}
/* rc_ports don't have ub_socket */
if(list->socket) {
- if(list->socket->addr)
- freeaddrinfo(list->socket->addr);
+ free(list->socket->addr);
free(list->socket);
}
free(list);
diff --git a/sbin/unwind/libunbound/services/listen_dnsport.h b/sbin/unwind/libunbound/services/listen_dnsport.h
index 816d79aea61..84ac4b068b1 100644
--- a/sbin/unwind/libunbound/services/listen_dnsport.h
+++ b/sbin/unwind/libunbound/services/listen_dnsport.h
@@ -107,11 +107,13 @@ enum listen_type {
* socket properties (just like NSD nsd_socket structure definition)
*/
struct unbound_socket {
- /** socket-address structure */
- struct addrinfo* addr;
+ /** the address of the socket */
+ struct sockaddr* addr;
+ /** length of the address */
+ socklen_t addrlen;
/** socket descriptor returned by socket() syscall */
int s;
- /** address family (AF_INET/IF_INET6) */
+ /** address family (AF_INET/AF_INET6) */
int fam;
/** ACL on the socket (listening interface) */
struct acl_addr* acl;
diff --git a/sbin/unwind/libunbound/services/localzone.c b/sbin/unwind/libunbound/services/localzone.c
index 9c8e3c7acb1..51056c8ffef 100644
--- a/sbin/unwind/libunbound/services/localzone.c
+++ b/sbin/unwind/libunbound/services/localzone.c
@@ -330,14 +330,16 @@ get_rr_nameclass(const char* str, uint8_t** nm, uint16_t* dclass,
static struct local_rrset*
local_data_find_type(struct local_data* data, uint16_t type, int alias_ok)
{
- struct local_rrset* p;
+ struct local_rrset* p, *cname = NULL;
type = htons(type);
for(p = data->rrsets; p; p = p->next) {
if(p->rrset->rk.type == type)
return p;
if(alias_ok && p->rrset->rk.type == htons(LDNS_RR_TYPE_CNAME))
- return p;
+ cname = p;
}
+ if(alias_ok)
+ return cname;
return NULL;
}
diff --git a/sbin/unwind/libunbound/services/mesh.c b/sbin/unwind/libunbound/services/mesh.c
index 47cfb04249b..e886c4b92c8 100644
--- a/sbin/unwind/libunbound/services/mesh.c
+++ b/sbin/unwind/libunbound/services/mesh.c
@@ -47,6 +47,7 @@
#include "services/outbound_list.h"
#include "services/cache/dns.h"
#include "services/cache/rrset.h"
+#include "services/cache/infra.h"
#include "util/log.h"
#include "util/net_help.h"
#include "util/module.h"
@@ -385,7 +386,7 @@ mesh_serve_expired_init(struct mesh_state* mstate, int timeout)
&mesh_serve_expired_lookup;
/* In case this timer already popped, start it again */
- if(!mstate->s.serve_expired_data->timer) {
+ if(!mstate->s.serve_expired_data->timer && timeout != -1) {
mstate->s.serve_expired_data->timer = comm_timer_create(
mstate->s.env->worker_base, mesh_serve_expired_callback, mstate);
if(!mstate->s.serve_expired_data->timer)
@@ -415,6 +416,14 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo,
if(rep->c->tcp_req_info) {
r_buffer = rep->c->tcp_req_info->spool_buffer;
}
+ if(!infra_wait_limit_allowed(mesh->env->infra_cache, rep,
+ edns->cookie_valid, mesh->env->cfg)) {
+ verbose(VERB_ALGO, "Too many queries waiting from the IP. "
+ "dropping incoming query.");
+ comm_point_drop_reply(rep);
+ mesh->stats_dropped++;
+ return;
+ }
if(!unique)
s = mesh_area_find(mesh, cinfo, qinfo, qflags&(BIT_RD|BIT_CD), 0, 0);
/* does this create a new reply state? */
@@ -511,6 +520,19 @@ void mesh_new_client(struct mesh_area* mesh, struct query_info* qinfo,
log_err("mesh_new_client: out of memory initializing serve expired");
goto servfail_mem;
}
+#ifdef USE_CACHEDB
+ if(!timeout && mesh->env->cfg->serve_expired &&
+ !mesh->env->cfg->serve_expired_client_timeout &&
+ (mesh->env->cachedb_enabled &&
+ mesh->env->cfg->cachedb_check_when_serve_expired)) {
+ if(!mesh_serve_expired_init(s, -1)) {
+ log_err("mesh_new_client: out of memory initializing serve expired");
+ goto servfail_mem;
+ }
+ }
+#endif
+ infra_wait_limit_inc(mesh->env->infra_cache, rep, *mesh->env->now,
+ mesh->env->cfg);
/* update statistics */
if(was_detached) {
log_assert(mesh->num_detached_states > 0);
@@ -616,6 +638,18 @@ mesh_new_callback(struct mesh_area* mesh, struct query_info* qinfo,
mesh_state_delete(&s->s);
return 0;
}
+#ifdef USE_CACHEDB
+ if(!timeout && mesh->env->cfg->serve_expired &&
+ !mesh->env->cfg->serve_expired_client_timeout &&
+ (mesh->env->cachedb_enabled &&
+ mesh->env->cfg->cachedb_check_when_serve_expired)) {
+ if(!mesh_serve_expired_init(s, -1)) {
+ if(added)
+ mesh_state_delete(&s->s);
+ return 0;
+ }
+ }
+#endif
/* update statistics */
if(was_detached) {
log_assert(mesh->num_detached_states > 0);
@@ -930,6 +964,8 @@ mesh_state_cleanup(struct mesh_state* mstate)
* takes no time and also it does not do the mesh accounting */
mstate->reply_list = NULL;
for(; rep; rep=rep->next) {
+ infra_wait_limit_dec(mesh->env->infra_cache,
+ &rep->query_reply, mesh->env->cfg);
comm_point_drop_reply(&rep->query_reply);
log_assert(mesh->num_reply_addrs > 0);
mesh->num_reply_addrs--;
@@ -1179,7 +1215,7 @@ mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info* rep,
rcode = LDNS_RCODE_SERVFAIL;
if(!rcode && rep && (rep->security == sec_status_bogus ||
rep->security == sec_status_secure_sentinel_fail)) {
- if(!(reason = errinf_to_str_bogus(&m->s)))
+ if(!(reason = errinf_to_str_bogus(&m->s, NULL)))
rcode = LDNS_RCODE_SERVFAIL;
}
/* send the reply */
@@ -1413,6 +1449,8 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep,
comm_point_send_reply(&r->query_reply);
m->reply_list = rlist;
}
+ infra_wait_limit_dec(m->s.env->infra_cache, &r->query_reply,
+ m->s.env->cfg);
/* account */
log_assert(m->s.env->mesh->num_reply_addrs > 0);
m->s.env->mesh->num_reply_addrs--;
@@ -1436,7 +1474,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep,
log_reply_info(NO_VERBOSE, &m->s.qinfo,
&r->query_reply.client_addr,
r->query_reply.client_addrlen, duration, 0, r_buffer,
- (m->s.env->cfg->log_destaddr?(void*)r->query_reply.c->socket->addr->ai_addr:NULL),
+ (m->s.env->cfg->log_destaddr?(void*)r->query_reply.c->socket->addr:NULL),
r->query_reply.c->type);
}
}
@@ -1464,12 +1502,32 @@ void mesh_query_done(struct mesh_state* mstate)
&& mstate->s.env->cfg->log_servfail
&& !mstate->s.env->cfg->val_log_squelch) {
char* err = errinf_to_str_servfail(&mstate->s);
- if(err)
- log_err("%s", err);
- free(err);
+ if(err) { log_err("%s", err); }
}
}
for(r = mstate->reply_list; r; r = r->next) {
+ struct timeval old;
+ timeval_subtract(&old, mstate->s.env->now_tv, &r->start_time);
+ if(mstate->s.env->cfg->discard_timeout != 0 &&
+ ((int)old.tv_sec)*1000+((int)old.tv_usec)/1000 >
+ mstate->s.env->cfg->discard_timeout) {
+ /* Drop the reply, it is too old */
+ /* 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;
+ verbose(VERB_ALGO, "drop reply, it is older than discard-timeout");
+ infra_wait_limit_dec(mstate->s.env->infra_cache,
+ &r->query_reply, mstate->s.env->cfg);
+ mstate->reply_list = NULL;
+ comm_point_drop_reply(&r->query_reply);
+ mstate->reply_list = reply_list;
+ mstate->s.env->mesh->stats_dropped++;
+ continue;
+ }
+
i++;
tv = r->start_time;
@@ -1493,6 +1551,8 @@ void mesh_query_done(struct mesh_state* mstate)
* 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;
+ infra_wait_limit_dec(mstate->s.env->infra_cache,
+ &r->query_reply, mstate->s.env->cfg);
mstate->reply_list = NULL;
comm_point_drop_reply(&r->query_reply);
mstate->reply_list = reply_list;
@@ -2025,6 +2085,8 @@ void mesh_state_remove_reply(struct mesh_area* mesh, struct mesh_state* m,
/* delete it, but allocated in m region */
log_assert(mesh->num_reply_addrs > 0);
mesh->num_reply_addrs--;
+ infra_wait_limit_dec(mesh->env->infra_cache,
+ &n->query_reply, mesh->env->cfg);
/* prev = prev; */
n = n->next;
@@ -2165,6 +2227,28 @@ 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) {
+ struct timeval old;
+ timeval_subtract(&old, mstate->s.env->now_tv, &r->start_time);
+ if(mstate->s.env->cfg->discard_timeout != 0 &&
+ ((int)old.tv_sec)*1000+((int)old.tv_usec)/1000 >
+ mstate->s.env->cfg->discard_timeout) {
+ /* Drop the reply, it is too old */
+ /* 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;
+ verbose(VERB_ALGO, "drop reply, it is older than discard-timeout");
+ infra_wait_limit_dec(mstate->s.env->infra_cache,
+ &r->query_reply, mstate->s.env->cfg);
+ mstate->reply_list = NULL;
+ comm_point_drop_reply(&r->query_reply);
+ mstate->reply_list = reply_list;
+ mstate->s.env->mesh->stats_dropped++;
+ continue;
+ }
+
i++;
tv = r->start_time;
@@ -2192,6 +2276,8 @@ mesh_serve_expired_callback(void* arg)
r, r_buffer, prev, prev_buffer);
if(r->query_reply.c->tcp_req_info)
tcp_req_info_remove_mesh_state(r->query_reply.c->tcp_req_info, mstate);
+ infra_wait_limit_dec(mstate->s.env->infra_cache,
+ &r->query_reply, mstate->s.env->cfg);
prev = r;
prev_buffer = r_buffer;
}
@@ -2238,6 +2324,14 @@ mesh_serve_expired_callback(void* arg)
}
}
+void
+mesh_respond_serve_expired(struct mesh_state* mstate)
+{
+ if(!mstate->s.serve_expired_data)
+ mesh_serve_expired_init(mstate, -1);
+ mesh_serve_expired_callback(mstate);
+}
+
int mesh_jostle_exceeded(struct mesh_area* mesh)
{
if(mesh->all.count < mesh->max_reply_states)
diff --git a/sbin/unwind/libunbound/services/mesh.h b/sbin/unwind/libunbound/services/mesh.h
index d926cfc9dec..5bd53e065e8 100644
--- a/sbin/unwind/libunbound/services/mesh.h
+++ b/sbin/unwind/libunbound/services/mesh.h
@@ -690,4 +690,10 @@ mesh_serve_expired_lookup(struct module_qstate* qstate,
*/
int mesh_jostle_exceeded(struct mesh_area* mesh);
+/**
+ * Give the serve expired responses.
+ * @param mstate: mesh state for query that has serve_expired_data.
+ */
+void mesh_respond_serve_expired(struct mesh_state* mstate);
+
#endif /* SERVICES_MESH_H */
diff --git a/sbin/unwind/libunbound/services/rpz.c b/sbin/unwind/libunbound/services/rpz.c
index 18d76c07bff..f036cc5fd64 100644
--- a/sbin/unwind/libunbound/services/rpz.c
+++ b/sbin/unwind/libunbound/services/rpz.c
@@ -478,43 +478,30 @@ new_cname_override(struct regional* region, uint8_t* ct, size_t ctlen)
return rrset;
}
-struct rpz*
-rpz_create(struct config_auth* p)
+/** delete the cname override */
+static void
+delete_cname_override(struct rpz* r)
{
- struct rpz* r = calloc(1, sizeof(*r));
- if(!r)
- goto err;
-
- r->region = regional_create_custom(sizeof(struct regional));
- if(!r->region) {
- goto err;
- }
-
- if(!(r->local_zones = local_zones_create())){
- goto err;
- }
-
- r->nsdname_zones = local_zones_create();
- if(r->local_zones == NULL){
- goto err;
- }
-
- if(!(r->respip_set = respip_set_create())) {
- goto err;
- }
-
- r->client_set = rpz_clientip_synthesized_set_create();
- if(r->client_set == NULL) {
- goto err;
+ if(r->cname_override) {
+ /* The cname override is what is allocated in the region. */
+ regional_free_all(r->region);
+ r->cname_override = NULL;
}
+}
- r->ns_set = rpz_clientip_synthesized_set_create();
- if(r->ns_set == NULL) {
- goto err;
+/** Apply rpz config elements to the rpz structure, false on failure. */
+static int
+rpz_apply_cfg_elements(struct rpz* r, struct config_auth* p)
+{
+ if(p->rpz_taglist && p->rpz_taglistlen) {
+ r->taglistlen = p->rpz_taglistlen;
+ r->taglist = memdup(p->rpz_taglist, r->taglistlen);
+ if(!r->taglist) {
+ log_err("malloc failure on RPZ taglist alloc");
+ return 0;
+ }
}
- r->taglistlen = p->rpz_taglistlen;
- r->taglist = memdup(p->rpz_taglist, r->taglistlen);
if(p->rpz_action_override) {
r->action_override = rpz_config_to_action(p->rpz_action_override);
}
@@ -528,17 +515,17 @@ rpz_create(struct config_auth* p)
if(!p->rpz_cname) {
log_err("rpz: override with cname action found, but no "
"rpz-cname-override configured");
- goto err;
+ return 0;
}
if(sldns_str2wire_dname_buf(p->rpz_cname, nm, &nmlen) != 0) {
log_err("rpz: cannot parse cname override: %s",
p->rpz_cname);
- goto err;
+ return 0;
}
r->cname_override = new_cname_override(r->region, nm, nmlen);
if(!r->cname_override) {
- goto err;
+ return 0;
}
}
r->log = p->rpz_log;
@@ -546,9 +533,49 @@ rpz_create(struct config_auth* p)
if(p->rpz_log_name) {
if(!(r->log_name = strdup(p->rpz_log_name))) {
log_err("malloc failure on RPZ log_name strdup");
- goto err;
+ return 0;
}
}
+ return 1;
+}
+
+struct rpz*
+rpz_create(struct config_auth* p)
+{
+ struct rpz* r = calloc(1, sizeof(*r));
+ if(!r)
+ goto err;
+
+ r->region = regional_create_custom(sizeof(struct regional));
+ if(!r->region) {
+ goto err;
+ }
+
+ if(!(r->local_zones = local_zones_create())){
+ goto err;
+ }
+
+ r->nsdname_zones = local_zones_create();
+ if(r->local_zones == NULL){
+ goto err;
+ }
+
+ if(!(r->respip_set = respip_set_create())) {
+ goto err;
+ }
+
+ r->client_set = rpz_clientip_synthesized_set_create();
+ if(r->client_set == NULL) {
+ goto err;
+ }
+
+ r->ns_set = rpz_clientip_synthesized_set_create();
+ if(r->ns_set == NULL) {
+ goto err;
+ }
+
+ if(!rpz_apply_cfg_elements(r, p))
+ goto err;
return r;
err:
if(r) {
@@ -571,6 +598,32 @@ err:
return NULL;
}
+int
+rpz_config(struct rpz* r, struct config_auth* p)
+{
+ /* If the zonefile changes, it is read later, after which
+ * rpz_clear and rpz_finish_config is called. */
+
+ /* free taglist, if any */
+ if(r->taglist) {
+ free(r->taglist);
+ r->taglist = NULL;
+ r->taglistlen = 0;
+ }
+
+ /* free logname, if any */
+ if(r->log_name) {
+ free(r->log_name);
+ r->log_name = NULL;
+ }
+
+ delete_cname_override(r);
+
+ if(!rpz_apply_cfg_elements(r, p))
+ return 0;
+ return 1;
+}
+
/**
* Remove RPZ zone name from dname
* Copy dname to newdname, without the originlen number of trailing bytes
@@ -1191,16 +1244,20 @@ rpz_find_zone(struct local_zones* zones, uint8_t* qname, size_t qname_len, uint1
/** Find entry for RR type in the list of rrsets for the clientip. */
static struct local_rrset*
rpz_find_synthesized_rrset(uint16_t qtype,
- struct clientip_synthesized_rr* data)
+ struct clientip_synthesized_rr* data, int alias_ok)
{
- struct local_rrset* cursor = data->data;
+ struct local_rrset* cursor = data->data, *cname = NULL;
while( cursor != NULL) {
struct packed_rrset_key* packed_rrset = &cursor->rrset->rk;
if(htons(qtype) == packed_rrset->type) {
return cursor;
}
+ if(ntohs(packed_rrset->type) == LDNS_RR_TYPE_CNAME && alias_ok)
+ cname = cursor;
cursor = cursor->next;
}
+ if(alias_ok)
+ return cname;
return NULL;
}
@@ -1386,7 +1443,7 @@ static int rpz_remove_clientip_rr(struct clientip_synthesized_rr* node,
struct local_rrset* rrset;
struct packed_rrset_data* d;
size_t index;
- rrset = rpz_find_synthesized_rrset(rr_type, node);
+ rrset = rpz_find_synthesized_rrset(rr_type, node, 0);
if(rrset == NULL)
return 0; /* type not found, ignore */
d = (struct packed_rrset_data*)rrset->rrset->entry.data;
@@ -1789,7 +1846,7 @@ rpz_apply_clientip_localdata_action(struct clientip_synthesized_rr* raddr,
}
/* check query type / rr type */
- rrset = rpz_find_synthesized_rrset(qinfo->qtype, raddr);
+ rrset = rpz_find_synthesized_rrset(qinfo->qtype, raddr, 1);
if(rrset == NULL) {
verbose(VERB_ALGO, "rpz: unable to find local-data for query");
rrset_count = 0;
@@ -1823,6 +1880,28 @@ nodata:
rrset_count, rcode, rsoa);
}
+/** Apply the cname override action, during worker request callback.
+ * false on failure. */
+static int
+rpz_apply_cname_override_action(struct rpz* r,
+ struct query_info* qinfo, struct regional* temp)
+{
+ if(!r)
+ return 0;
+ qinfo->local_alias = regional_alloc_zero(temp,
+ sizeof(struct local_rrset));
+ if(qinfo->local_alias == NULL)
+ return 0; /* out of memory */
+ qinfo->local_alias->rrset = respip_copy_rrset(r->cname_override, temp);
+ if(qinfo->local_alias->rrset == NULL) {
+ qinfo->local_alias = NULL;
+ return 0; /* out of memory */
+ }
+ qinfo->local_alias->rrset->rk.dname = qinfo->qname;
+ qinfo->local_alias->rrset->rk.dname_len = qinfo->qname_len;
+ return 1;
+}
+
/** add additional section SOA record to the reply.
* Since this gets fed into the normal iterator answer creation, it
* gets minimal-responses applied to it, that can remove the additional SOA
@@ -1933,6 +2012,7 @@ rpz_synthesize_localdata_from_rrset(struct rpz* ATTR_UNUSED(r), struct module_qs
msg = rpz_dns_msg_new(ms->region);
if(msg == NULL) { return NULL; }
+ msg->qinfo = *qi;
new_reply_info = construct_reply_info_base(ms->region,
LDNS_RCODE_NOERROR | BIT_QR | BIT_AA | BIT_RA,
1, /* qd */
@@ -1975,40 +2055,42 @@ rpz_synthesize_localdata_from_rrset(struct rpz* ATTR_UNUSED(r), struct module_qs
static inline struct dns_msg*
rpz_synthesize_nsip_localdata(struct rpz* r, struct module_qstate* ms,
- struct clientip_synthesized_rr* data, struct auth_zone* az)
+ struct query_info* qi, struct clientip_synthesized_rr* data,
+ struct auth_zone* az)
{
- struct query_info* qi = &ms->qinfo;
struct local_rrset* rrset;
- rrset = rpz_find_synthesized_rrset(qi->qtype, data);
+ rrset = rpz_find_synthesized_rrset(qi->qtype, data, 1);
if(rrset == NULL) {
verbose(VERB_ALGO, "rpz: nsip: no matching local data found");
return NULL;
}
- return rpz_synthesize_localdata_from_rrset(r, ms, &ms->qinfo, rrset, az);
+ return rpz_synthesize_localdata_from_rrset(r, ms, qi, rrset, az);
}
/* copy'n'paste from localzone.c */
static struct local_rrset*
local_data_find_type(struct local_data* data, uint16_t type, int alias_ok)
{
- struct local_rrset* p;
+ struct local_rrset* p, *cname = NULL;
type = htons(type);
for(p = data->rrsets; p; p = p->next) {
if(p->rrset->rk.type == type)
return p;
if(alias_ok && p->rrset->rk.type == htons(LDNS_RR_TYPE_CNAME))
- return p;
+ cname = p;
}
+ if(alias_ok)
+ return cname;
return NULL;
}
/* based on localzone.c:local_data_answer() */
static inline struct dns_msg*
rpz_synthesize_nsdname_localdata(struct rpz* r, struct module_qstate* ms,
- struct local_zone* z, struct matched_delegation_point const* match,
- struct auth_zone* az)
+ struct query_info* qi, struct local_zone* z,
+ struct matched_delegation_point const* match, struct auth_zone* az)
{
struct local_data key;
struct local_data* ld;
@@ -2029,13 +2111,13 @@ rpz_synthesize_nsdname_localdata(struct rpz* r, struct module_qstate* ms,
return NULL;
}
- rrset = local_data_find_type(ld, ms->qinfo.qtype, 1);
+ rrset = local_data_find_type(ld, qi->qtype, 1);
if(rrset == NULL) {
verbose(VERB_ALGO, "rpz: nsdname: no matching local data found");
return NULL;
}
- return rpz_synthesize_localdata_from_rrset(r, ms, &ms->qinfo, rrset, az);
+ return rpz_synthesize_localdata_from_rrset(r, ms, qi, rrset, az);
}
/* like local_data_answer for qname triggers after a cname */
@@ -2052,17 +2134,70 @@ rpz_synthesize_qname_localdata_msg(struct rpz* r, struct module_qstate* ms,
key.namelabs = dname_count_labels(qinfo->qname);
ld = (struct local_data*)rbtree_search(&z->data, &key.node);
if(ld == NULL) {
- verbose(VERB_ALGO, "rpz: qname after cname: name not found");
+ verbose(VERB_ALGO, "rpz: qname: name not found");
return NULL;
}
rrset = local_data_find_type(ld, qinfo->qtype, 1);
if(rrset == NULL) {
- verbose(VERB_ALGO, "rpz: qname after cname: type not found");
+ verbose(VERB_ALGO, "rpz: qname: type not found");
return NULL;
}
return rpz_synthesize_localdata_from_rrset(r, ms, qinfo, rrset, az);
}
+/** Synthesize a CNAME message for RPZ action override */
+static struct dns_msg*
+rpz_synthesize_cname_override_msg(struct rpz* r, struct module_qstate* ms,
+ struct query_info* qinfo)
+{
+ struct dns_msg* msg = NULL;
+ struct reply_info* new_reply_info;
+ struct ub_packed_rrset_key* rp;
+
+ msg = rpz_dns_msg_new(ms->region);
+ if(msg == NULL) { return NULL; }
+
+ msg->qinfo = *qinfo;
+ new_reply_info = construct_reply_info_base(ms->region,
+ LDNS_RCODE_NOERROR | BIT_QR | BIT_AA | BIT_RA,
+ 1, /* qd */
+ 0, /* ttl */
+ 0, /* prettl */
+ 0, /* expttl */
+ 1, /* an */
+ 0, /* ns */
+ 0, /* ar */
+ 1, /* total */
+ sec_status_insecure,
+ LDNS_EDE_NONE);
+ if(new_reply_info == NULL) {
+ log_err("out of memory");
+ return NULL;
+ }
+ new_reply_info->authoritative = 1;
+
+ rp = respip_copy_rrset(r->cname_override, ms->region);
+ if(rp == NULL) {
+ log_err("out of memory");
+ return NULL;
+ }
+ rp->rk.dname = qinfo->qname;
+ rp->rk.dname_len = qinfo->qname_len;
+ /* this rrset is from the rpz data, or synthesized.
+ * It is not actually from the network, so we flag it with this
+ * flags as a fake RRset. If later the cache is used to look up
+ * rrsets, then the fake ones are not returned (if you look without
+ * the flag). For like CNAME lookups from the iterator or A, AAAA
+ * lookups for nameserver targets, it would use the without flag
+ * actual data. So that the actual network data and fake data
+ * are kept track of separately. */
+ rp->rk.flags |= PACKED_RRSET_RPZ;
+ new_reply_info->rrsets[0] = rp;
+
+ msg->rep = new_reply_info;
+ return msg;
+}
+
static int
rpz_synthesize_qname_localdata(struct module_env* env, struct rpz* r,
struct local_zone* z, enum localzone_type lzt, struct query_info* qinfo,
@@ -2072,17 +2207,8 @@ rpz_synthesize_qname_localdata(struct module_env* env, struct rpz* r,
struct local_data* ld = NULL;
int ret = 0;
if(r->action_override == RPZ_CNAME_OVERRIDE_ACTION) {
- qinfo->local_alias = regional_alloc_zero(temp, sizeof(struct local_rrset));
- if(qinfo->local_alias == NULL) {
- return 0; /* out of memory */
- }
- qinfo->local_alias->rrset = regional_alloc_init(temp, r->cname_override,
- sizeof(*r->cname_override));
- if(qinfo->local_alias->rrset == NULL) {
- return 0; /* out of memory */
- }
- qinfo->local_alias->rrset->rk.dname = qinfo->qname;
- qinfo->local_alias->rrset->rk.dname_len = qinfo->qname_len;
+ if(!rpz_apply_cname_override_action(r, qinfo, temp))
+ return 0;
if(r->log) {
log_rpz_apply("qname", z->name, NULL, RPZ_CNAME_OVERRIDE_ACTION,
qinfo, repinfo, NULL, r->log_name);
@@ -2134,8 +2260,9 @@ rpz_delegation_point_ipbased_trigger_lookup(struct rpz* rpz, struct iter_qstate*
}
static struct dns_msg*
-rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r,
- struct clientip_synthesized_rr* raddr, struct auth_zone* az)
+rpz_apply_nsip_trigger(struct module_qstate* ms, struct query_info* qchase,
+ struct rpz* r, struct clientip_synthesized_rr* raddr,
+ struct auth_zone* az)
{
enum rpz_action action = raddr->action;
struct dns_msg* ret = NULL;
@@ -2148,16 +2275,16 @@ rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r,
if(action == RPZ_LOCAL_DATA_ACTION && raddr->data == NULL) {
verbose(VERB_ALGO, "rpz: bug: nsip local data action but no local data");
- ret = rpz_synthesize_nodata(r, ms, &ms->qinfo, az);
+ ret = rpz_synthesize_nodata(r, ms, qchase, az);
goto done;
}
switch(action) {
case RPZ_NXDOMAIN_ACTION:
- ret = rpz_synthesize_nxdomain(r, ms, &ms->qinfo, az);
+ ret = rpz_synthesize_nxdomain(r, ms, qchase, az);
break;
case RPZ_NODATA_ACTION:
- ret = rpz_synthesize_nodata(r, ms, &ms->qinfo, az);
+ ret = rpz_synthesize_nodata(r, ms, qchase, az);
break;
case RPZ_TCP_ONLY_ACTION:
/* basically a passthru here but the tcp-only will be
@@ -2166,17 +2293,20 @@ rpz_apply_nsip_trigger(struct module_qstate* ms, struct rpz* r,
ret = NULL;
break;
case RPZ_DROP_ACTION:
- ret = rpz_synthesize_nodata(r, ms, &ms->qinfo, az);
+ ret = rpz_synthesize_nodata(r, ms, qchase, az);
ms->is_drop = 1;
break;
case RPZ_LOCAL_DATA_ACTION:
- ret = rpz_synthesize_nsip_localdata(r, ms, raddr, az);
- if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms, &ms->qinfo, az); }
+ ret = rpz_synthesize_nsip_localdata(r, ms, qchase, raddr, az);
+ if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms, qchase, az); }
break;
case RPZ_PASSTHRU_ACTION:
ret = NULL;
ms->rpz_passthru = 1;
break;
+ case RPZ_CNAME_OVERRIDE_ACTION:
+ ret = rpz_synthesize_cname_override_msg(r, ms, qchase);
+ break;
default:
verbose(VERB_ALGO, "rpz: nsip: bug: unhandled or invalid action: '%s'",
rpz_action_to_string(action));
@@ -2194,9 +2324,9 @@ done:
}
static struct dns_msg*
-rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r,
- struct local_zone* z, struct matched_delegation_point const* match,
- struct auth_zone* az)
+rpz_apply_nsdname_trigger(struct module_qstate* ms, struct query_info* qchase,
+ struct rpz* r, struct local_zone* z,
+ struct matched_delegation_point const* match, struct auth_zone* az)
{
struct dns_msg* ret = NULL;
enum rpz_action action = localzone_type_to_rpz_action(z->type);
@@ -2209,10 +2339,10 @@ rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r,
switch(action) {
case RPZ_NXDOMAIN_ACTION:
- ret = rpz_synthesize_nxdomain(r, ms, &ms->qinfo, az);
+ ret = rpz_synthesize_nxdomain(r, ms, qchase, az);
break;
case RPZ_NODATA_ACTION:
- ret = rpz_synthesize_nodata(r, ms, &ms->qinfo, az);
+ ret = rpz_synthesize_nodata(r, ms, qchase, az);
break;
case RPZ_TCP_ONLY_ACTION:
/* basically a passthru here but the tcp-only will be
@@ -2221,19 +2351,22 @@ rpz_apply_nsdname_trigger(struct module_qstate* ms, struct rpz* r,
ret = NULL;
break;
case RPZ_DROP_ACTION:
- ret = rpz_synthesize_nodata(r, ms, &ms->qinfo, az);
+ ret = rpz_synthesize_nodata(r, ms, qchase, az);
ms->is_drop = 1;
break;
case RPZ_LOCAL_DATA_ACTION:
- ret = rpz_synthesize_nsdname_localdata(r, ms, z, match, az);
- if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms, &ms->qinfo, az); }
+ ret = rpz_synthesize_nsdname_localdata(r, ms, qchase, z, match, az);
+ if(ret == NULL) { ret = rpz_synthesize_nodata(r, ms, qchase, az); }
break;
case RPZ_PASSTHRU_ACTION:
ret = NULL;
ms->rpz_passthru = 1;
break;
+ case RPZ_CNAME_OVERRIDE_ACTION:
+ ret = rpz_synthesize_cname_override_msg(r, ms, qchase);
+ break;
default:
- verbose(VERB_ALGO, "rpz: nsip: bug: unhandled or invalid action: '%s'",
+ verbose(VERB_ALGO, "rpz: nsdname: bug: unhandled or invalid action: '%s'",
rpz_action_to_string(action));
ret = NULL;
}
@@ -2324,7 +2457,7 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate*
/* the nsdname has precedence over the nsip triggers */
z = rpz_delegation_point_zone_lookup(is->dp, r->nsdname_zones,
- ms->qinfo.qclass, &match);
+ is->qchase.qclass, &match);
if(z != NULL) {
lock_rw_unlock(&a->lock);
break;
@@ -2347,9 +2480,9 @@ rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate*
if(z) {
lock_rw_unlock(&z->lock);
}
- return rpz_apply_nsip_trigger(ms, r, raddr, a);
+ return rpz_apply_nsip_trigger(ms, &is->qchase, r, raddr, a);
}
- return rpz_apply_nsdname_trigger(ms, r, z, &match, a);
+ return rpz_apply_nsdname_trigger(ms, &is->qchase, r, z, &match, a);
}
struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate* ms,
@@ -2412,10 +2545,10 @@ struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate* ms,
dname_str(is->qchase.qname, nm);
dname_str(z->name, zn);
if(strcmp(zn, nm) != 0)
- verbose(VERB_ALGO, "rpz: qname trigger after cname %s on %s, with action=%s",
+ verbose(VERB_ALGO, "rpz: qname trigger %s on %s, with action=%s",
zn, nm, rpz_action_to_string(localzone_type_to_rpz_action(lzt)));
else
- verbose(VERB_ALGO, "rpz: qname trigger after cname %s, with action=%s",
+ verbose(VERB_ALGO, "rpz: qname trigger %s, with action=%s",
nm, rpz_action_to_string(localzone_type_to_rpz_action(lzt)));
}
switch(localzone_type_to_rpz_action(lzt)) {
@@ -2444,7 +2577,7 @@ struct dns_msg* rpz_callback_from_iterator_cname(struct module_qstate* ms,
ms->rpz_passthru = 1;
break;
default:
- verbose(VERB_ALGO, "rpz: qname trigger after cname: bug: unhandled or invalid action: '%s'",
+ verbose(VERB_ALGO, "rpz: qname trigger: bug: unhandled or invalid action: '%s'",
rpz_action_to_string(localzone_type_to_rpz_action(lzt)));
ret = NULL;
}
@@ -2472,8 +2605,21 @@ rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct module_env* env,
az, qinfo, repinfo, taglist, taglen, stats, z_out, a_out, r_out);
client_action = ((node == NULL) ? RPZ_INVALID_ACTION : node->action);
+ if(node != NULL && *r_out &&
+ (*r_out)->action_override != RPZ_NO_OVERRIDE_ACTION) {
+ client_action = (*r_out)->action_override;
+ }
if(client_action == RPZ_PASSTHRU_ACTION) {
+ if(*r_out && (*r_out)->log)
+ log_rpz_apply(
+ (node?"clientip":"qname"),
+ ((*z_out)?(*z_out)->name:NULL),
+ (node?&node->node:NULL),
+ client_action, qinfo, repinfo, NULL,
+ (*r_out)->log_name);
*passthru = 1;
+ ret = 0;
+ goto done;
}
if(*z_out == NULL || (client_action != RPZ_INVALID_ACTION &&
client_action != RPZ_PASSTHRU_ACTION)) {
@@ -2488,14 +2634,15 @@ rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct module_env* env,
if(client_action == RPZ_LOCAL_DATA_ACTION) {
rpz_apply_clientip_localdata_action(node, env, qinfo,
edns, repinfo, buf, temp, *a_out);
+ ret = 1;
+ } else if(client_action == RPZ_CNAME_OVERRIDE_ACTION) {
+ if(!rpz_apply_cname_override_action(*r_out, qinfo,
+ temp)) {
+ ret = 0;
+ goto done;
+ }
+ ret = 0;
} else {
- if(*r_out && (*r_out)->log)
- log_rpz_apply(
- (node?"clientip":"qname"),
- ((*z_out)?(*z_out)->name:NULL),
- (node?&node->node:NULL),
- client_action, qinfo, repinfo, NULL,
- (*r_out)->log_name);
local_zones_zone_answer(*z_out /*likely NULL, no zone*/, env, qinfo, edns,
repinfo, buf, temp, 0 /* no local data used */,
rpz_action_to_localzone_type(client_action));
@@ -2503,8 +2650,15 @@ rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct module_env* env,
LDNS_RCODE_WIRE(sldns_buffer_begin(buf))
== LDNS_RCODE_NXDOMAIN)
LDNS_RA_CLR(sldns_buffer_begin(buf));
+ ret = 1;
}
- ret = 1;
+ if(*r_out && (*r_out)->log)
+ log_rpz_apply(
+ (node?"clientip":"qname"),
+ ((*z_out)?(*z_out)->name:NULL),
+ (node?&node->node:NULL),
+ client_action, qinfo, repinfo, NULL,
+ (*r_out)->log_name);
goto done;
}
ret = -1;
diff --git a/sbin/unwind/libunbound/services/rpz.h b/sbin/unwind/libunbound/services/rpz.h
index e6d8bf566e1..7f409087f77 100644
--- a/sbin/unwind/libunbound/services/rpz.h
+++ b/sbin/unwind/libunbound/services/rpz.h
@@ -226,6 +226,14 @@ int rpz_clear(struct rpz* r);
struct rpz* rpz_create(struct config_auth* p);
/**
+ * Change config on rpz, after reload.
+ * @param r: the rpz structure.
+ * @param p: the config that was read.
+ * @return false on failure.
+ */
+int rpz_config(struct rpz* r, struct config_auth* p);
+
+/**
* String for RPZ action enum
* @param a: RPZ action to get string for
* @return: string for RPZ action
diff --git a/sbin/unwind/libunbound/services/view.h b/sbin/unwind/libunbound/services/view.h
index 17778100474..12f7a64e717 100644
--- a/sbin/unwind/libunbound/services/view.h
+++ b/sbin/unwind/libunbound/services/view.h
@@ -126,7 +126,8 @@ void view_delete(struct view* v);
*/
void views_print(struct views* v);
-/* Find a view by name.
+/**
+ * Find a view by name.
* @param vs: views
* @param name: name of the view we are looking for
* @param write: 1 for obtaining write lock on found view, 0 for read lock
diff --git a/sbin/unwind/libunbound/util/config_file.c b/sbin/unwind/libunbound/util/config_file.c
index c0610812111..62d1eedf90c 100644
--- a/sbin/unwind/libunbound/util/config_file.c
+++ b/sbin/unwind/libunbound/util/config_file.c
@@ -174,6 +174,7 @@ config_create(void)
cfg->min_ttl = 0;
cfg->max_ttl = 3600 * 24;
cfg->max_negative_ttl = 3600;
+ cfg->min_negative_ttl = 0;
cfg->prefetch = 0;
cfg->prefetch_key = 0;
cfg->deny_any = 0;
@@ -308,6 +309,11 @@ config_create(void)
cfg->minimal_responses = 1;
cfg->rrset_roundrobin = 1;
cfg->unknown_server_time_limit = 376;
+ cfg->discard_timeout = 1900; /* msec */
+ cfg->wait_limit = 1000;
+ cfg->wait_limit_cookie = 10000;
+ cfg->wait_limit_netblock = NULL;
+ cfg->wait_limit_cookie_netblock = NULL;
cfg->max_udp_size = 1232; /* value taken from edns_buffer_size */
if(!(cfg->server_key_file = strdup(RUN_DIR"/unbound_server.key")))
goto error_exit;
@@ -384,6 +390,7 @@ config_create(void)
if(!(cfg->cachedb_backend = strdup("testframe"))) goto error_exit;
if(!(cfg->cachedb_secret = strdup("default"))) goto error_exit;
cfg->cachedb_no_store = 0;
+ cfg->cachedb_check_when_serve_expired = 1;
#ifdef USE_REDIS
if(!(cfg->redis_server_host = strdup("127.0.0.1"))) goto error_exit;
cfg->redis_server_path = NULL;
@@ -615,6 +622,8 @@ int config_set_option(struct config_file* cfg, const char* opt,
{ IS_NUMBER_OR_ZERO; cfg->max_ttl = atoi(val); MAX_TTL=(time_t)cfg->max_ttl;}
else if(strcmp(opt, "cache-max-negative-ttl:") == 0)
{ IS_NUMBER_OR_ZERO; cfg->max_negative_ttl = atoi(val); MAX_NEG_TTL=(time_t)cfg->max_negative_ttl;}
+ else if(strcmp(opt, "cache-min-negative-ttl:") == 0)
+ { IS_NUMBER_OR_ZERO; cfg->min_negative_ttl = atoi(val); MIN_NEG_TTL=(time_t)cfg->min_negative_ttl;}
else if(strcmp(opt, "cache-min-ttl:") == 0)
{ IS_NUMBER_OR_ZERO; cfg->min_ttl = atoi(val); MIN_TTL=(time_t)cfg->min_ttl;}
else if(strcmp(opt, "infra-cache-min-rtt:") == 0) {
@@ -722,6 +731,9 @@ int config_set_option(struct config_file* cfg, const char* opt,
else S_YNO("minimal-responses:", minimal_responses)
else S_YNO("rrset-roundrobin:", rrset_roundrobin)
else S_NUMBER_OR_ZERO("unknown-server-time-limit:", unknown_server_time_limit)
+ else S_NUMBER_OR_ZERO("discard-timeout:", discard_timeout)
+ else S_NUMBER_OR_ZERO("wait-limit:", wait_limit)
+ else S_NUMBER_OR_ZERO("wait-limit-cookie:", wait_limit_cookie)
else S_STRLIST("local-data:", local_data)
else S_YNO("unblock-lan-zones:", unblock_lan_zones)
else S_YNO("insecure-lan-zones:", insecure_lan_zones)
@@ -827,6 +839,7 @@ int config_set_option(struct config_file* cfg, const char* opt,
#endif
#ifdef USE_CACHEDB
else S_YNO("cachedb-no-store:", cachedb_no_store)
+ else S_YNO("cachedb-check-when-serve-expired:", cachedb_check_when_serve_expired)
#endif /* USE_CACHEDB */
else if(strcmp(opt, "define-tag:") ==0) {
return config_add_tag(cfg, val);
@@ -1065,6 +1078,7 @@ config_get_option(struct config_file* cfg, const char* opt,
else O_YNO(opt, "deny-any", deny_any)
else O_DEC(opt, "cache-max-ttl", max_ttl)
else O_DEC(opt, "cache-max-negative-ttl", max_negative_ttl)
+ else O_DEC(opt, "cache-min-negative-ttl", min_negative_ttl)
else O_DEC(opt, "cache-min-ttl", min_ttl)
else O_DEC(opt, "infra-host-ttl", host_ttl)
else O_DEC(opt, "infra-cache-slabs", infra_cache_slabs)
@@ -1201,6 +1215,11 @@ config_get_option(struct config_file* cfg, const char* opt,
else O_YNO(opt, "minimal-responses", minimal_responses)
else O_YNO(opt, "rrset-roundrobin", rrset_roundrobin)
else O_DEC(opt, "unknown-server-time-limit", unknown_server_time_limit)
+ else O_DEC(opt, "discard-timeout", discard_timeout)
+ else O_DEC(opt, "wait-limit", wait_limit)
+ else O_DEC(opt, "wait-limit-cookie", wait_limit_cookie)
+ else O_LS2(opt, "wait-limit-netblock", wait_limit_netblock)
+ else O_LS2(opt, "wait-limit-cookie-netblock", wait_limit_cookie_netblock)
#ifdef CLIENT_SUBNET
else O_LST(opt, "send-client-subnet", client_subnet)
else O_LST(opt, "client-subnet-zone", client_subnet_zone)
@@ -1318,6 +1337,7 @@ config_get_option(struct config_file* cfg, const char* opt,
else O_STR(opt, "backend", cachedb_backend)
else O_STR(opt, "secret-seed", cachedb_secret)
else O_YNO(opt, "cachedb-no-store", cachedb_no_store)
+ else O_YNO(opt, "cachedb-check-when-serve-expired", cachedb_check_when_serve_expired)
#ifdef USE_REDIS
else O_STR(opt, "redis-server-host", redis_server_host)
else O_DEC(opt, "redis-server-port", redis_server_port)
@@ -1671,6 +1691,8 @@ config_delete(struct config_file* cfg)
config_deltrplstrlist(cfg->interface_tag_actions);
config_deltrplstrlist(cfg->interface_tag_datas);
config_delstrlist(cfg->control_ifs.first);
+ config_deldblstrlist(cfg->wait_limit_netblock);
+ config_deldblstrlist(cfg->wait_limit_cookie_netblock);
free(cfg->server_key_file);
free(cfg->server_cert_file);
free(cfg->control_key_file);
@@ -1761,6 +1783,10 @@ cfg_mark_ports(const char* str, int allow, int* avail, int num)
#endif
if(!mid) {
int port = atoi(str);
+ if(port < 0) {
+ log_err("port number is negative: %d", port);
+ return 0;
+ }
if(port == 0 && strcmp(str, "0") != 0) {
log_err("cannot parse port number '%s'", str);
return 0;
@@ -1770,6 +1796,10 @@ cfg_mark_ports(const char* str, int allow, int* avail, int num)
} else {
int i, low, high = atoi(mid+1);
char buf[16];
+ if(high < 0) {
+ log_err("port number is negative: %d", high);
+ return 0;
+ }
if(high == 0 && strcmp(mid+1, "0") != 0) {
log_err("cannot parse port number '%s'", mid+1);
return 0;
@@ -1782,10 +1812,18 @@ cfg_mark_ports(const char* str, int allow, int* avail, int num)
memcpy(buf, str, (size_t)(mid-str));
buf[mid-str] = 0;
low = atoi(buf);
+ if(low < 0) {
+ log_err("port number is negative: %d", low);
+ return 0;
+ }
if(low == 0 && strcmp(buf, "0") != 0) {
log_err("cannot parse port number '%s'", buf);
return 0;
}
+ if(high > num) {
+ /* Stop very high values from taking a long time. */
+ high = num;
+ }
for(i=low; i<=high; i++) {
if(i < num)
avail[i] = (allow?i:0);
@@ -2310,6 +2348,7 @@ config_apply(struct config_file* config)
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;
+ MIN_NEG_TTL = (time_t)config->min_negative_ttl;
RTT_MIN_TIMEOUT = config->infra_cache_min_rtt;
RTT_MAX_TIMEOUT = config->infra_cache_max_rtt;
EDNS_ADVERTISED_SIZE = (uint16_t)config->edns_buffer_size;
diff --git a/sbin/unwind/libunbound/util/config_file.h b/sbin/unwind/libunbound/util/config_file.h
index 491109833e4..d3a2e268c49 100644
--- a/sbin/unwind/libunbound/util/config_file.h
+++ b/sbin/unwind/libunbound/util/config_file.h
@@ -315,6 +315,8 @@ struct config_file {
int min_ttl;
/** the number of seconds maximal negative TTL for SOA in auth */
int max_negative_ttl;
+ /** the number of seconds minimal negative TTL for SOA in auth */
+ int min_negative_ttl;
/** if prefetching of messages should be performed. */
int prefetch;
/** if prefetching of DNSKEYs should be performed. */
@@ -535,6 +537,21 @@ struct config_file {
/* wait time for unknown server in msec */
int unknown_server_time_limit;
+ /** Wait time to drop recursion replies */
+ int discard_timeout;
+
+ /** Wait limit for number of replies per IP address */
+ int wait_limit;
+
+ /** Wait limit for number of replies per IP address with cookie */
+ int wait_limit_cookie;
+
+ /** wait limit per netblock */
+ struct config_str2list* wait_limit_netblock;
+
+ /** wait limit with cookie per netblock */
+ struct config_str2list* wait_limit_cookie_netblock;
+
/* maximum UDP response size */
size_t max_udp_size;
@@ -705,6 +722,8 @@ struct config_file {
char* cachedb_secret;
/** cachedb that does not store, but only reads from database, if on */
int cachedb_no_store;
+ /** cachedb check before serving serve-expired response */
+ int cachedb_check_when_serve_expired;
#ifdef USE_REDIS
/** redis server's IP address or host name */
char* redis_server_host;
diff --git a/sbin/unwind/libunbound/util/configlexer.c b/sbin/unwind/libunbound/util/configlexer.c
index dbaf487707c..42e9df82586 100644
--- a/sbin/unwind/libunbound/util/configlexer.c
+++ b/sbin/unwind/libunbound/util/configlexer.c
@@ -5,7 +5,7 @@
#define YY_INT_ALIGNED short int
-/* $OpenBSD: configlexer.c,v 1.18 2024/04/13 13:58:35 florian Exp $ */
+/* $OpenBSD: configlexer.c,v 1.19 2024/06/14 07:45:44 florian Exp $ */
/* A lexical scanner generated by flex */
@@ -27,7 +27,7 @@
/* end standard C headers. */
-/* $OpenBSD: configlexer.c,v 1.18 2024/04/13 13:58:35 florian Exp $ */
+/* $OpenBSD: configlexer.c,v 1.19 2024/06/14 07:45:44 florian Exp $ */
/* flex integer type definitions */
@@ -368,8 +368,8 @@ static void yy_fatal_error (yyconst char msg[] );
*yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 385
-#define YY_END_OF_BUFFER 386
+#define YY_NUM_RULES 392
+#define YY_END_OF_BUFFER 393
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -377,428 +377,438 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static yyconst flex_int16_t yy_accept[3816] =
+static yyconst flex_int16_t yy_accept[3905] =
{ 0,
- 1, 1, 359, 359, 363, 363, 367, 367, 371, 371,
- 1, 1, 375, 375, 379, 379, 386, 383, 1, 357,
- 357, 384, 2, 384, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 359, 360, 360, 361,
- 384, 363, 364, 364, 365, 384, 370, 367, 368, 368,
- 369, 384, 371, 372, 372, 373, 384, 382, 358, 2,
- 362, 384, 382, 378, 375, 376, 376, 377, 384, 379,
- 380, 380, 381, 384, 383, 0, 1, 2, 2, 2,
- 2, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 359, 0, 363, 0, 370, 0, 367, 371, 0, 382,
- 0, 2, 2, 382, 378, 0, 375, 379, 0, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 382, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 355, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 136, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 146, 383, 383, 383, 383, 383,
-
- 383, 383, 382, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 118,
- 383, 383, 354, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 8, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 137, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 151, 383,
- 383, 382, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 345, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 382, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 71, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 267, 383, 14, 15, 383, 383,
-
- 20, 19, 383, 383, 246, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 144, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 244, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 3, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 382, 383, 383, 383, 383, 383,
- 383, 383, 383, 335, 383, 383, 383, 334, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 366, 383, 383, 383, 383, 383, 383, 383, 383,
- 70, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 74, 383,
- 304, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 346, 347, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 75, 383, 383, 145, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 140, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 233, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 22, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 172, 383, 383, 383, 383, 383, 382, 366, 383,
-
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 116, 383, 383, 383, 383, 383, 383,
- 383, 383, 312, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 16, 383, 383, 383, 383, 383, 383,
- 383, 383, 200, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 171, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 115, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 37,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 38, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 72,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 143, 383, 383, 383, 382, 383, 383, 383, 383, 383,
- 383, 135, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 73,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 271, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 201, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 60, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 290, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 65, 383, 66, 383, 383, 383, 383, 383,
- 383, 119, 383, 120, 383, 383, 383, 383, 383, 117,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 7, 383, 383, 383, 383, 382, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 256, 383, 383, 383, 383, 383, 175, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 272, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 51, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 61, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 224, 383, 223, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 17,
- 18, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 76, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 232, 383, 383, 383, 383, 383, 383, 383, 122, 383,
- 121, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 214, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 152, 383, 383,
- 383, 382, 383, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 110, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 97, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 245, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 102, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 69, 383, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 217, 218, 383, 383, 383, 306, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 6, 383, 383, 383, 383, 383, 383,
- 383, 325, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 310, 383, 383, 383, 383, 383, 383, 383,
- 336, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 48, 383, 383, 383,
-
- 383, 383, 50, 383, 383, 383, 98, 383, 383, 383,
- 383, 383, 58, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 382, 383, 210, 383, 383, 383,
- 147, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 237, 383, 383, 211, 383, 383, 383,
- 383, 252, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 59, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 149, 128, 383, 129, 383, 383,
- 383, 383, 127, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 168, 383, 383, 56, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 288, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 212, 383, 383,
- 383, 383, 383, 222, 215, 383, 221, 383, 383, 383,
- 383, 383, 383, 383, 383, 251, 383, 383, 383, 383,
- 383, 383, 255, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 114, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 141, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 67, 383, 383, 383, 383,
- 31, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 21, 383, 383, 383, 383, 383, 383,
- 383, 32, 41, 383, 180, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 208,
- 383, 383, 382, 383, 383, 383, 383, 350, 383, 383,
- 84, 86, 383, 383, 383, 383, 383, 383, 383, 383,
- 351, 383, 383, 383, 383, 383, 383, 383, 314, 383,
- 383, 383, 383, 268, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 383, 383, 130, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 167, 383, 52, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 262, 383, 383, 383, 383, 383, 383,
- 383, 383, 329, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 174, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 323, 383,
- 383, 383, 383, 243, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 342, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 193, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 123, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 187, 383, 202, 383, 383, 383,
- 383, 383, 383, 383, 382, 383, 155, 383, 383, 383,
- 383, 383, 383, 109, 383, 383, 383, 383, 235, 383,
- 383, 383, 383, 383, 383, 383, 253, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 280, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 148, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 191, 383, 383, 383, 383, 383,
- 383, 383, 87, 383, 88, 383, 383, 383, 383, 383,
- 265, 383, 383, 383, 383, 383, 68, 332, 383, 383,
- 383, 383, 383, 96, 203, 383, 225, 383, 257, 383,
- 383, 216, 307, 383, 383, 383, 383, 302, 383, 383,
- 383, 80, 383, 205, 383, 383, 383, 383, 383, 383,
- 9, 383, 383, 383, 383, 383, 113, 383, 383, 383,
-
- 383, 383, 383, 294, 383, 383, 383, 383, 383, 383,
- 234, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 382, 383, 383,
- 383, 383, 190, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 192, 176, 383, 313, 383, 383,
- 383, 383, 383, 279, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 247, 383, 383, 383, 383,
- 383, 383, 305, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 173, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 333, 383, 204, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 79, 81, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 112, 383, 383,
- 383, 383, 383, 383, 292, 383, 383, 383, 383, 383,
- 383, 383, 309, 383, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 383, 239, 383, 39, 33,
- 35, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 40, 383, 34, 36, 383, 42,
- 383, 383, 383, 383, 383, 383, 383, 108, 383, 186,
- 383, 383, 383, 383, 383, 383, 383, 382, 383, 383,
- 383, 383, 383, 383, 337, 383, 383, 383, 383, 383,
- 241, 238, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 78, 383, 383, 383, 150, 383, 131, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 169,
-
- 53, 383, 383, 383, 374, 13, 383, 383, 383, 383,
- 383, 383, 383, 156, 383, 383, 383, 383, 383, 383,
- 383, 383, 327, 383, 330, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 12, 383,
- 383, 23, 383, 383, 383, 383, 383, 383, 383, 298,
- 383, 383, 344, 383, 383, 383, 383, 311, 383, 383,
- 383, 383, 82, 383, 249, 383, 383, 383, 383, 383,
- 240, 383, 383, 383, 383, 77, 383, 383, 383, 383,
- 383, 383, 24, 383, 383, 49, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 185, 184,
-
- 383, 383, 374, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 242, 236, 383, 254, 383, 383, 315, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 198, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 89, 383, 383, 383,
- 383, 383, 383, 383, 383, 293, 383, 383, 383, 383,
- 220, 383, 383, 383, 383, 383, 383, 248, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 300, 383,
- 383, 383, 338, 383, 340, 339, 182, 383, 383, 383,
-
- 83, 383, 383, 383, 383, 194, 383, 383, 383, 383,
- 383, 124, 126, 125, 383, 383, 383, 26, 383, 383,
- 177, 383, 179, 383, 226, 383, 383, 383, 383, 183,
- 383, 383, 383, 383, 258, 383, 383, 383, 383, 383,
- 383, 383, 158, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 270, 383, 383, 383, 383,
- 383, 383, 383, 352, 383, 28, 383, 308, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 94, 227, 383, 383,
- 264, 383, 383, 383, 291, 383, 331, 383, 219, 383,
-
- 383, 303, 383, 383, 383, 301, 62, 383, 383, 383,
- 383, 383, 383, 383, 4, 383, 383, 383, 383, 383,
- 139, 383, 157, 383, 383, 383, 199, 30, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 261, 43, 44,
- 383, 383, 383, 383, 383, 383, 383, 316, 383, 383,
- 383, 383, 383, 383, 383, 278, 383, 383, 383, 383,
- 383, 383, 383, 383, 230, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 93, 92, 383, 383, 63, 383, 383, 289, 297, 383,
-
- 266, 383, 383, 383, 383, 383, 11, 383, 383, 383,
- 383, 356, 383, 383, 383, 383, 383, 138, 383, 383,
- 383, 383, 383, 383, 228, 99, 383, 383, 46, 383,
- 383, 383, 383, 383, 383, 383, 383, 189, 383, 383,
- 383, 383, 383, 383, 383, 160, 383, 383, 383, 383,
- 269, 383, 383, 383, 383, 383, 277, 383, 383, 383,
- 383, 153, 383, 383, 383, 132, 134, 133, 383, 383,
- 383, 101, 105, 100, 383, 170, 383, 383, 383, 383,
- 90, 383, 263, 299, 383, 383, 383, 383, 383, 383,
- 10, 383, 383, 383, 383, 383, 295, 343, 383, 383,
-
- 383, 383, 383, 383, 383, 383, 349, 45, 383, 383,
- 383, 383, 383, 188, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 106,
- 104, 383, 383, 57, 383, 383, 91, 383, 328, 383,
- 383, 383, 383, 25, 383, 383, 383, 383, 383, 213,
- 383, 383, 341, 383, 383, 383, 383, 229, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 209, 383, 383,
- 178, 85, 383, 383, 383, 383, 383, 317, 383, 383,
- 383, 383, 383, 383, 383, 274, 383, 383, 273, 154,
-
- 383, 383, 103, 383, 54, 383, 383, 161, 162, 165,
- 166, 163, 164, 95, 326, 383, 383, 296, 142, 383,
- 383, 383, 383, 27, 383, 181, 383, 383, 383, 383,
- 207, 383, 260, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 196, 195, 231, 47, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 324, 383, 383, 383, 383, 111, 383,
- 259, 383, 287, 321, 383, 383, 383, 383, 383, 383,
-
- 383, 383, 383, 383, 383, 353, 383, 107, 55, 64,
- 5, 383, 383, 250, 383, 383, 322, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 275, 29, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 276, 383, 383, 383, 159, 383, 383, 383, 383, 383,
- 383, 383, 383, 197, 383, 206, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 318, 383, 383, 383, 383,
- 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
- 383, 383, 383, 348, 383, 383, 283, 383, 383, 383,
- 383, 383, 319, 383, 383, 383, 383, 383, 383, 320,
-
- 383, 383, 383, 281, 383, 284, 285, 383, 383, 383,
- 383, 383, 282, 286, 0
+ 1, 1, 366, 366, 370, 370, 374, 374, 378, 378,
+ 1, 1, 382, 382, 386, 386, 393, 390, 1, 364,
+ 364, 391, 2, 391, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 366, 367, 367,
+ 368, 391, 370, 371, 371, 372, 391, 377, 374, 375,
+ 375, 376, 391, 378, 379, 379, 380, 391, 389, 365,
+ 2, 369, 391, 389, 385, 382, 383, 383, 384, 391,
+ 386, 387, 387, 388, 391, 390, 0, 1, 2, 2,
+ 2, 2, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 366, 0, 370, 0, 377, 0, 374, 378,
+ 0, 389, 0, 2, 2, 389, 385, 0, 382, 386,
+ 0, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 389, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 362, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 137, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 147, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 389, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 119, 390, 390, 361, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 8, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 138, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 152, 390, 390, 390, 389, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 352, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 389, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 71, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 390, 273, 390, 14, 15, 390, 390,
+ 20, 19, 390, 390, 247, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 145, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 245, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 3, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 389, 390, 390, 390, 390,
+ 390, 390, 390, 390, 341, 390, 390, 390, 340, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 373, 390, 390, 390, 390, 390, 390,
+ 390, 390, 70, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 74, 390, 310, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 390, 353, 354, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 75, 390, 390, 146, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 141, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 234, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 22, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 173, 390, 390, 390, 390, 390, 390,
+ 389, 373, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 117, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 318, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 16, 390,
+ 390, 390, 390, 390, 390, 390, 390, 201, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 172, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 116, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 37, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 38, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 72, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 144, 390, 390, 390,
+ 389, 390, 390, 390, 390, 390, 390, 136, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 73, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 277, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 202, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 60, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 296, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 65, 390, 66, 390, 390, 390, 390, 390, 390, 120,
+ 390, 121, 390, 390, 390, 390, 390, 118, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 7, 390, 390, 390, 390, 390, 389, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 262, 390, 390, 390, 390, 390, 390, 176, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 278, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 51, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 61,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 225, 390, 224, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 17, 18, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 76, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 233, 390, 390, 390, 390, 390, 390, 390,
+ 123, 390, 122, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 215,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 153,
+ 390, 253, 390, 390, 390, 389, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 111, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 98, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 246,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 103, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 69, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 218, 219,
+ 390, 390, 390, 312, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 6, 390, 390, 390, 390, 390, 390, 390, 331, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 316,
+ 390, 390, 390, 390, 390, 390, 390, 342, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 48, 390, 390, 390, 390, 390, 50,
+ 390, 390, 390, 99, 390, 390, 390, 390, 390, 58,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 389, 390, 211, 390, 390, 390, 148,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 238, 390, 390, 212, 390, 390,
+ 390, 390, 390, 258, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 390, 59, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 150, 129, 390, 130,
+ 390, 390, 390, 390, 128, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 169, 390, 390, 56, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 294,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 213,
+ 390, 390, 390, 390, 390, 223, 216, 390, 222, 390,
+ 390, 390, 390, 390, 390, 390, 390, 257, 390, 390,
+ 390, 390, 390, 390, 261, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 115, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 142, 390,
+ 390, 390, 390, 390, 390, 390, 390, 67, 390, 390,
+ 390, 390, 31, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 21, 390, 390, 390, 390,
+ 390, 390, 390, 32, 41, 390, 181, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 209, 390, 390, 389, 390, 390, 390,
+ 390, 357, 390, 390, 84, 390, 87, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 358, 390, 390, 390,
+ 390, 390, 390, 390, 390, 320, 390, 390, 390, 390,
+ 274, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 131, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 168, 390, 52,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 268, 390, 390, 390, 390, 390, 390, 390, 390, 335,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 175, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 329, 390, 390, 390, 390,
+ 244, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 349, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 194, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 124, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 188, 390, 203, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 389, 390, 156, 390, 390, 390, 390,
+ 390, 390, 390, 390, 110, 390, 390, 390, 390, 236,
+ 390, 390, 390, 390, 390, 390, 390, 390, 259, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 286, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 149, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 192, 390, 390, 390,
+ 390, 390, 390, 390, 88, 390, 89, 390, 390, 390,
+ 390, 390, 271, 390, 390, 390, 390, 390, 68, 338,
+
+ 390, 390, 390, 390, 390, 97, 204, 390, 226, 390,
+ 263, 390, 390, 217, 313, 390, 390, 390, 390, 308,
+ 390, 390, 390, 80, 390, 206, 390, 390, 390, 390,
+ 390, 390, 9, 390, 390, 390, 390, 390, 114, 390,
+ 390, 390, 390, 390, 390, 300, 390, 390, 390, 390,
+ 390, 390, 235, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 389, 390, 390, 390, 390, 191, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 193, 252, 177, 390, 319, 390, 390, 390, 390, 390,
+ 285, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 248, 390, 390, 390, 390, 390, 390, 311,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 174, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 339, 390, 205, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 79, 81, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 113, 390, 390, 390, 390, 390,
+ 390, 298, 390, 390, 390, 390, 390, 390, 390, 315,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 240, 390, 39, 33, 35, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 40, 390, 34, 36, 390, 42, 390, 390, 390,
+ 390, 390, 390, 390, 109, 390, 187, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 389, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 343, 390, 390, 390, 390,
+ 390, 242, 239, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 78, 390, 390, 390, 151, 390, 132, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 170, 53, 390, 390, 390, 381, 13, 390, 390, 390,
+ 390, 390, 390, 390, 157, 390, 390, 390, 390, 390,
+ 390, 390, 390, 333, 390, 336, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 12,
+ 390, 390, 23, 390, 390, 390, 390, 390, 390, 390,
+
+ 304, 390, 390, 351, 390, 390, 390, 390, 317, 390,
+ 390, 390, 390, 82, 390, 250, 390, 390, 390, 390,
+ 390, 241, 390, 390, 390, 390, 77, 390, 390, 390,
+ 390, 390, 390, 24, 390, 390, 49, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 186,
+ 185, 390, 390, 390, 390, 381, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 243, 237, 390,
+ 260, 390, 390, 321, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 199, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 90, 390, 390, 390, 390, 390, 390, 390, 390,
+ 299, 390, 390, 390, 390, 221, 390, 390, 390, 390,
+ 390, 390, 249, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 306, 390, 390, 390, 345, 390, 347,
+ 346, 183, 390, 390, 390, 83, 390, 390, 390, 390,
+ 195, 390, 390, 390, 390, 390, 125, 127, 126, 390,
+ 390, 390, 26, 390, 390, 178, 390, 180, 390, 227,
+ 390, 390, 390, 390, 184, 390, 390, 254, 390, 390,
+ 390, 390, 264, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 159, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 276, 390, 390, 390, 390,
+ 390, 390, 390, 359, 390, 28, 390, 314, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 95, 228, 390, 390,
+ 270, 390, 390, 390, 297, 390, 337, 390, 220, 390,
+ 390, 309, 390, 390, 390, 307, 62, 390, 390, 390,
+ 390, 390, 390, 390, 4, 390, 390, 390, 390, 390,
+ 140, 390, 158, 390, 390, 390, 200, 30, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 267,
+ 43, 44, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 322, 390, 390, 390, 390, 390, 390, 390, 284,
+ 390, 390, 390, 390, 390, 390, 390, 390, 231, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 94, 93, 390, 390, 63, 390,
+ 390, 295, 303, 390, 272, 390, 390, 390, 390, 390,
+ 11, 390, 390, 390, 390, 363, 390, 390, 390, 390,
+ 390, 139, 390, 390, 390, 390, 390, 390, 229, 100,
+ 390, 390, 46, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 190, 390, 255, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 161, 390, 390, 390, 390, 275, 390,
+ 390, 390, 390, 390, 283, 390, 390, 390, 390, 154,
+ 390, 390, 390, 133, 135, 134, 390, 390, 390, 102,
+ 106, 101, 390, 171, 390, 390, 390, 390, 91, 390,
+ 269, 305, 390, 390, 390, 390, 390, 390, 10, 390,
+ 390, 390, 390, 390, 301, 350, 390, 390, 390, 390,
+ 390, 390, 390, 390, 356, 45, 390, 390, 390, 390,
+ 390, 189, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 107, 105, 390, 390, 57, 390, 390, 92, 390, 334,
+ 390, 390, 390, 390, 25, 390, 390, 390, 390, 390,
+ 214, 390, 390, 348, 390, 390, 390, 390, 230, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 210,
+ 390, 390, 179, 85, 86, 390, 390, 390, 390, 390,
+ 390, 323, 390, 390, 390, 390, 390, 390, 390, 280,
+ 390, 390, 279, 155, 390, 390, 104, 390, 54, 390,
+ 390, 162, 163, 166, 167, 164, 165, 96, 332, 390,
+ 390, 302, 143, 390, 390, 390, 390, 27, 390, 182,
+
+ 390, 390, 390, 390, 390, 208, 390, 266, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 197, 196, 232, 47, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 330, 390, 390, 390, 390, 112, 390, 390, 265,
+ 390, 390, 293, 327, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 360, 390, 108, 55, 64,
+ 5, 390, 390, 251, 390, 390, 390, 390, 328, 390,
+
+ 390, 390, 390, 390, 390, 390, 390, 390, 281, 29,
+ 390, 390, 390, 256, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 282, 390, 390, 390, 390, 160,
+ 390, 390, 390, 390, 390, 390, 390, 390, 198, 390,
+ 207, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 324, 390, 390, 390, 390, 390, 390, 390,
+ 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
+ 390, 355, 344, 390, 390, 289, 390, 390, 390, 390,
+ 390, 325, 390, 390, 390, 390, 390, 390, 326, 390,
+ 390, 390, 287, 390, 290, 291, 390, 390, 390, 390,
+
+ 390, 288, 292, 0
} ;
static yyconst flex_int32_t yy_ec[256] =
@@ -841,1685 +851,1725 @@ static yyconst flex_int32_t yy_meta[41] =
1, 1, 1, 1, 1, 1, 1, 1, 1, 1
} ;
-static yyconst flex_int16_t yy_base[3834] =
+static yyconst flex_int16_t yy_base[3923] =
{ 0,
0, 0, 38, 41, 44, 46, 59, 65, 71, 77,
- 90, 112, 96, 118, 124, 136, 3191, 3104, 81, 7436,
- 7436, 7436, 129, 52, 137, 63, 130, 159, 70, 132,
+ 90, 112, 96, 118, 124, 136, 3268, 3142, 81, 7612,
+ 7612, 7612, 129, 52, 137, 63, 130, 159, 70, 132,
134, 146, 57, 88, 76, 166, 177, 95, 199, 155,
- 187, 201, 210, 172, 156, 148, 2859, 7436, 7436, 7436,
- 107, 2648, 7436, 7436, 7436, 190, 2503, 2468, 7436, 7436,
- 7436, 239, 2382, 7436, 7436, 7436, 203, 2265, 7436, 243,
- 7436, 247, 212, 2082, 2052, 7436, 7436, 7436, 251, 1980,
- 7436, 7436, 7436, 228, 1711, 257, 261, 0, 264, 0,
- 0, 258, 262, 260, 195, 170, 251, 265, 269, 92,
-
- 270, 259, 275, 276, 277, 278, 288, 284, 286, 283,
- 293, 179, 290, 292, 302, 306, 307, 310, 315, 314,
- 318, 317, 325, 327, 328, 319, 335, 331, 336, 139,
- 337, 342, 347, 350, 351, 353, 339, 360, 352, 363,
- 356, 364, 366, 370, 374, 383, 379, 380, 389, 378,
- 392, 225, 393, 395, 400, 399, 402, 403, 405, 408,
- 1561, 425, 1340, 427, 1244, 435, 1182, 1079, 439, 967,
- 443, 447, 0, 424, 937, 451, 920, 375, 455, 443,
- 455, 432, 451, 452, 453, 454, 215, 457, 456, 458,
- 459, 462, 460, 480, 467, 472, 482, 419, 486, 487,
-
- 493, 478, 503, 485, 495, 505, 499, 498, 515, 512,
- 514, 513, 517, 520, 521, 470, 522, 523, 539, 525,
- 524, 526, 547, 548, 552, 556, 534, 561, 566, 532,
- 568, 564, 565, 573, 570, 577, 576, 585, 580, 581,
- 572, 582, 584, 586, 590, 589, 591, 594, 599, 595,
- 600, 613, 604, 601, 617, 605, 622, 615, 618, 630,
- 608, 626, 623, 632, 635, 643, 644, 636, 645, 640,
- 537, 646, 649, 656, 659, 658, 641, 657, 654, 661,
- 663, 665, 667, 668, 670, 679, 682, 678, 681, 690,
- 687, 689, 688, 692, 693, 696, 669, 705, 695, 708,
-
- 711, 700, 709, 713, 715, 717, 719, 718, 722, 723,
- 728, 724, 7436, 731, 730, 735, 736, 745, 742, 740,
- 747, 754, 755, 750, 751, 756, 753, 757, 759, 760,
- 761, 764, 767, 771, 768, 773, 775, 788, 781, 779,
- 794, 780, 790, 792, 815, 796, 804, 795, 819, 829,
- 805, 824, 801, 825, 816, 826, 830, 835, 837, 810,
- 838, 839, 849, 851, 852, 853, 854, 855, 857, 856,
- 865, 860, 7436, 862, 864, 881, 868, 878, 885, 870,
- 886, 891, 887, 892, 901, 898, 899, 913, 935, 900,
- 902, 903, 906, 911, 7436, 924, 915, 959, 917, 919,
-
- 945, 940, 909, 933, 942, 941, 947, 955, 963, 960,
- 948, 965, 976, 964, 977, 982, 983, 984, 985, 988,
- 999, 991, 994, 995, 996, 1006, 1001, 1004, 1008, 1018,
- 1005, 1009, 1011, 1012, 1017, 1019, 1030, 1034, 1038, 1039,
- 1022, 1032, 1033, 1024, 1041, 1046, 1044, 1067, 1055, 1047,
- 1045, 1057, 1062, 1069, 1065, 1068, 1073, 1075, 1082, 1070,
- 1091, 1076, 1094, 1095, 1083, 1097, 1105, 1101, 1103, 1102,
- 1104, 1108, 1109, 1110, 1112, 1115, 1116, 1118, 1120, 1121,
- 1122, 1126, 1128, 1129, 1136, 1133, 1139, 1143, 1140, 7436,
- 1151, 1146, 7436, 1148, 1149, 1150, 1152, 1153, 1154, 1155,
-
- 1156, 7436, 1158, 1163, 1164, 1172, 1165, 1173, 1177, 1188,
- 1180, 1183, 1187, 1189, 1190, 1191, 1193, 1200, 1196, 1205,
- 1207, 1199, 1209, 1210, 1203, 1211, 1212, 1217, 1218, 1221,
- 1219, 1220, 1223, 1240, 7436, 1227, 1228, 1230, 1234, 1231,
- 1237, 1251, 1253, 1263, 1243, 1264, 1255, 1252, 1276, 1262,
- 1275, 1279, 1265, 1273, 1283, 1278, 1285, 1280, 1287, 1290,
- 1296, 1292, 1294, 1301, 1298, 1300, 1302, 1304, 7436, 1309,
- 1308, 1320, 1321, 1313, 1314, 1322, 1323, 1332, 1327, 1328,
- 1330, 1331, 1333, 1336, 1339, 1349, 1351, 1338, 1358, 1359,
- 1343, 1354, 1356, 1361, 1362, 1363, 1364, 1365, 1375, 1371,
-
- 1378, 1386, 1389, 1388, 1391, 1393, 1400, 1402, 1379, 1395,
- 1398, 1403, 1399, 1405, 1407, 1408, 1409, 1412, 1413, 1368,
- 1423, 1418, 1421, 1419, 1422, 1420, 1428, 1426, 1430, 1431,
- 1433, 1439, 1440, 1448, 1444, 1443, 1450, 1445, 1446, 1454,
- 1459, 1464, 1465, 1466, 1456, 7436, 1473, 1468, 1476, 1474,
- 1482, 1481, 1484, 1483, 1489, 1485, 1490, 1491, 1493, 1492,
- 1495, 1499, 1496, 1502, 1506, 1509, 1510, 1511, 1513, 1522,
- 1518, 1514, 1531, 1519, 1530, 1532, 1521, 1534, 1536, 1538,
- 1540, 1547, 1544, 1551, 1552, 1542, 1553, 1546, 1566, 1556,
- 1557, 1563, 1577, 1554, 1572, 1574, 1564, 1585, 1580, 1588,
-
- 1589, 1596, 1591, 1593, 1600, 1601, 1597, 1576, 1604, 1609,
- 1605, 1606, 1610, 1612, 1613, 1614, 1621, 1616, 1618, 1625,
- 1629, 1617, 1619, 1633, 1631, 1643, 1639, 1641, 1642, 1647,
- 1648, 1649, 1652, 1653, 1651, 1657, 1658, 1660, 1661, 1665,
- 1650, 1662, 1674, 1672, 1673, 1682, 1681, 1683, 1684, 1685,
- 1689, 1687, 1691, 1690, 1698, 1701, 1703, 1699, 1705, 1707,
- 1709, 1710, 1713, 1720, 1721, 1715, 1724, 1727, 1729, 1730,
- 1731, 1732, 1733, 1736, 1739, 1743, 1744, 1747, 7436, 1750,
- 1757, 1752, 1753, 1755, 1758, 1760, 1761, 1768, 1764, 1767,
- 1763, 1765, 1766, 1791, 7436, 1777, 7436, 7436, 1778, 1780,
-
- 7436, 7436, 1789, 1776, 7436, 1783, 1788, 1795, 1799, 1802,
- 1807, 1816, 1801, 1809, 1814, 1818, 1825, 1839, 1822, 1821,
- 1823, 1829, 1820, 1830, 1832, 1845, 1834, 1856, 1833, 1837,
- 1784, 1865, 1863, 1866, 1868, 1869, 1871, 1873, 1876, 1875,
- 1882, 1884, 1877, 1885, 1831, 1887, 1890, 1888, 1891, 1893,
- 1894, 1897, 1898, 1895, 1900, 1901, 1855, 1905, 1903, 1921,
- 7436, 1917, 1924, 1916, 1906, 1919, 1932, 1928, 1935, 1927,
- 1931, 1936, 1941, 1943, 1938, 1945, 1946, 1947, 1950, 1948,
- 1949, 1957, 1951, 1959, 1960, 1963, 1962, 1972, 1965, 1968,
- 7436, 1975, 1976, 1974, 1977, 1981, 1979, 1990, 1989, 1982,
-
- 1978, 1991, 1995, 2005, 1997, 2001, 2006, 2007, 2009, 2010,
- 2012, 2013, 7436, 2015, 2020, 2014, 2022, 2023, 2028, 2025,
- 2029, 2031, 2032, 2037, 2036, 2038, 2039, 2041, 2054, 2047,
- 2043, 2050, 2051, 2058, 2061, 2063, 2062, 2064, 2074, 2065,
- 2068, 2077, 2075, 2079, 2078, 2080, 2081, 2083, 2085, 2096,
- 2097, 2092, 2099, 2094, 2089, 2107, 2110, 2111, 2112, 2113,
- 2114, 2116, 2117, 2126, 2127, 2129, 2122, 2123, 2130, 2128,
- 2135, 2138, 2139, 2142, 2147, 2149, 2150, 2151, 2143, 2153,
- 2155, 2157, 2159, 7436, 2161, 2163, 2166, 7436, 2168, 2167,
- 2169, 2191, 2171, 2174, 2179, 2182, 2189, 2184, 2199, 2186,
-
- 2192, 2193, 2205, 2214, 2211, 2210, 2217, 2215, 2222, 2216,
- 2218, 2225, 2232, 2226, 2229, 2235, 2236, 2234, 2245, 2248,
- 2252, 2254, 2256, 2255, 2238, 2257, 2259, 2278, 2258, 2261,
- 2267, 2262, 2263, 2268, 2272, 2269, 2271, 2275, 2282, 2288,
- 2290, 2291, 2294, 2293, 2295, 2296, 2300, 2302, 2309, 2310,
- 2303, 7436, 2317, 2316, 2315, 2321, 2322, 2330, 2327, 2325,
- 7436, 2328, 2329, 2331, 2339, 2336, 2340, 2341, 2342, 2343,
- 2348, 2350, 2351, 2352, 2355, 2354, 2356, 2371, 7436, 2353,
- 7436, 2358, 2366, 2367, 2374, 2381, 2368, 2376, 2377, 2378,
- 2380, 2383, 7436, 7436, 2384, 2391, 2394, 2397, 2405, 2406,
-
- 2401, 2402, 2407, 7436, 2408, 2415, 7436, 2412, 2404, 2418,
- 2411, 2422, 2423, 2426, 2427, 2428, 2429, 2436, 2431, 2438,
- 2434, 2435, 2443, 7436, 2446, 2450, 2437, 2454, 2455, 2448,
- 2452, 2462, 2463, 2465, 7436, 2466, 2469, 2470, 2471, 2479,
- 2475, 2478, 2480, 2481, 2482, 2486, 2488, 2489, 2490, 2495,
- 2497, 2500, 2502, 2501, 2505, 2517, 2513, 2520, 7436, 2516,
- 2512, 2499, 2528, 2524, 2526, 2523, 2527, 2533, 2531, 2515,
- 2537, 2539, 2535, 2543, 2541, 2544, 2545, 2553, 2557, 2550,
- 2555, 2562, 2552, 2554, 2558, 2563, 2573, 2566, 2567, 2572,
- 2574, 7436, 2575, 2578, 2579, 2580, 2583, 2582, 280, 2586,
-
- 2589, 2593, 2590, 2592, 2596, 2598, 2603, 2612, 2613, 2609,
- 2610, 2614, 2615, 2616, 2608, 2618, 2620, 2627, 2628, 2630,
- 2629, 2631, 2634, 7436, 2638, 2635, 2639, 2640, 2641, 2644,
- 2645, 2652, 7436, 2651, 2659, 2662, 2664, 2654, 2669, 2670,
- 2672, 2674, 2675, 7436, 2676, 2677, 2678, 2685, 2682, 2680,
- 2686, 2688, 7436, 2699, 2695, 2701, 2689, 2703, 2710, 2693,
- 2704, 2705, 2711, 2712, 2713, 2716, 2717, 2718, 2721, 2722,
- 2725, 2726, 2727, 2739, 2732, 2734, 2735, 2736, 2743, 2745,
- 2746, 2747, 2748, 2755, 2750, 7436, 2759, 2756, 2760, 2758,
- 2761, 2764, 2768, 2767, 2783, 2769, 2775, 2778, 2784, 2792,
-
- 2786, 2787, 2804, 2794, 2802, 2806, 2803, 2814, 2813, 2816,
- 2819, 2809, 2822, 2824, 2817, 2825, 2832, 2834, 2833, 2831,
- 2835, 2839, 2776, 2838, 2847, 2842, 2851, 2849, 2846, 2852,
- 2853, 2858, 2860, 2875, 2880, 2857, 7436, 2866, 2864, 2861,
- 2872, 2882, 2889, 2884, 2885, 2886, 2887, 2895, 2896, 2897,
- 2898, 2899, 2906, 2901, 2903, 2904, 2907, 2914, 2910, 2911,
- 2918, 2922, 2923, 2926, 2928, 2929, 2933, 2930, 2934, 7436,
- 2938, 2937, 2939, 2943, 2946, 2947, 2950, 2953, 2951, 2955,
- 2957, 2959, 2961, 2962, 2964, 2963, 2965, 2974, 2970, 2977,
- 2969, 2972, 7436, 2984, 2973, 2979, 2989, 2983, 2991, 2993,
-
- 2995, 2999, 2998, 3004, 3006, 3007, 3008, 3009, 3010, 7436,
- 3018, 3019, 3015, 3017, 3027, 3024, 3026, 3028, 3030, 3031,
- 7436, 3032, 3034, 3036, 3035, 3038, 2172, 3047, 3048, 3043,
- 3044, 7436, 3059, 3040, 3056, 3063, 3061, 3062, 3064, 3065,
- 3066, 3068, 3069, 3071, 3070, 3072, 3080, 3073, 3077, 7436,
- 3084, 3085, 3092, 3087, 3093, 3098, 3095, 3097, 3100, 3108,
- 3101, 3117, 3107, 7436, 3120, 3122, 3123, 3130, 3125, 3111,
- 3127, 3128, 3131, 3135, 3132, 3138, 3141, 3139, 7436, 3142,
- 3143, 3147, 3148, 3151, 3152, 3153, 3160, 3157, 3162, 3163,
- 3166, 3164, 3168, 3167, 3171, 3174, 3184, 3173, 3185, 3175,
-
- 3188, 3192, 3187, 3194, 3190, 3200, 3204, 3211, 3195, 3206,
- 3213, 3208, 3215, 3216, 3217, 3224, 3225, 3226, 3227, 3229,
- 7436, 3233, 3234, 3235, 3221, 3236, 3240, 3241, 3243, 3245,
- 3242, 3247, 3252, 3253, 3258, 3265, 3269, 3266, 3260, 3271,
- 3273, 3274, 3275, 3276, 3278, 3279, 3282, 3289, 3285, 3286,
- 3287, 3288, 3291, 3301, 3294, 3296, 3311, 3306, 3309, 3308,
- 3310, 3312, 3314, 3316, 3298, 3320, 3321, 3323, 3315, 3324,
- 3328, 3337, 3339, 3341, 3344, 3332, 3342, 3347, 3349, 3352,
- 7436, 3350, 3360, 3359, 3351, 3353, 3361, 3370, 3367, 3380,
- 3375, 3365, 3382, 3379, 3381, 3383, 3386, 3389, 3388, 3391,
-
- 3398, 3394, 7436, 3395, 7436, 3402, 3399, 3400, 3403, 3414,
- 3401, 7436, 3410, 7436, 3412, 3417, 3418, 3419, 3422, 7436,
- 3423, 3424, 3427, 3428, 3429, 3430, 3425, 3432, 3433, 3436,
- 3442, 3450, 3454, 3439, 3443, 3451, 3446, 3457, 3458, 3460,
- 3462, 3463, 3464, 3470, 3472, 3465, 3481, 3467, 3473, 3475,
- 3483, 3478, 3488, 7436, 3491, 3495, 3494, 3496, 3484, 3499,
- 3502, 3503, 3504, 3505, 3506, 3508, 3514, 3511, 3512, 3510,
- 3521, 3524, 3534, 3525, 3526, 3535, 3542, 3527, 3543, 3541,
- 7436, 3538, 3549, 3544, 3550, 3551, 7436, 3553, 3554, 3555,
- 3559, 3561, 3562, 3564, 3565, 3566, 3570, 3571, 3572, 3581,
-
- 3582, 3585, 3574, 7436, 3586, 3589, 3573, 3597, 3602, 3591,
- 3609, 3610, 3606, 3607, 3612, 3620, 3616, 3605, 3617, 3619,
- 3622, 3623, 3630, 3631, 3633, 3629, 3643, 3628, 3636, 3640,
- 3644, 3632, 3645, 3646, 3647, 3648, 3653, 3655, 3656, 3654,
- 3652, 3658, 3657, 3660, 3664, 7436, 3663, 3673, 3674, 3682,
- 3678, 3680, 3681, 3683, 3686, 3690, 3684, 7436, 3695, 3688,
- 3699, 3700, 3702, 3705, 3692, 3709, 3710, 3713, 3711, 3714,
- 3715, 3716, 7436, 3719, 7436, 3717, 3718, 3737, 3730, 3742,
- 3736, 3731, 3744, 3746, 3725, 3750, 3751, 3752, 3755, 3753,
- 3754, 3760, 3761, 3762, 3763, 3764, 3765, 3766, 3778, 3768,
-
- 3780, 3770, 3781, 3783, 3784, 3786, 3797, 3788, 3792, 7436,
- 7436, 3785, 3795, 3799, 3803, 3805, 3807, 3814, 3808, 3817,
- 3820, 3811, 3818, 3822, 3824, 3833, 7436, 3830, 3831, 3828,
- 3834, 3835, 3847, 3837, 3852, 3854, 3840, 3853, 3862, 3857,
- 7436, 3838, 3859, 3860, 3870, 3865, 3866, 3877, 7436, 3868,
- 7436, 3861, 3872, 3873, 3881, 3882, 3884, 3883, 3885, 3886,
- 3888, 3890, 3898, 3901, 3906, 3905, 3903, 3910, 3907, 3911,
- 3912, 3914, 3915, 3923, 3918, 3920, 3921, 7436, 3925, 3922,
- 3926, 3932, 3933, 3938, 3941, 3935, 3934, 7436, 3945, 3949,
- 3947, 3948, 3951, 3955, 3952, 3961, 3959, 3963, 3964, 3965,
-
- 3967, 3968, 3970, 3972, 7436, 3975, 3976, 3983, 3981, 3984,
- 3985, 3987, 3995, 3988, 3990, 7436, 3999, 4003, 4000, 4007,
- 4006, 4010, 4011, 4012, 4014, 4016, 4017, 4018, 4019, 4020,
- 4021, 4027, 4026, 4023, 4031, 4029, 4032, 4042, 4033, 4046,
- 4056, 4043, 7436, 4051, 4052, 4054, 4058, 4055, 4057, 4062,
- 4060, 4066, 4069, 4063, 4080, 4081, 4070, 4072, 4077, 4085,
- 4086, 4094, 4089, 7436, 4101, 4087, 4102, 4097, 4099, 4100,
- 4103, 4108, 4109, 4110, 4112, 4113, 4114, 4116, 4117, 4118,
- 4126, 4130, 4127, 4123, 4132, 4133, 4142, 4134, 4137, 4138,
- 4144, 7436, 4161, 4148, 4151, 4156, 4152, 4159, 4170, 4167,
-
- 4165, 4147, 4172, 4169, 4177, 4173, 4175, 4179, 4182, 4184,
- 4186, 7436, 7436, 4188, 4189, 4190, 7436, 4191, 4192, 4202,
- 4198, 4194, 4201, 4204, 4205, 4207, 4209, 4211, 4208, 4218,
- 4224, 4212, 4221, 7436, 4231, 4227, 4235, 4228, 4233, 4236,
- 4239, 7436, 4242, 4249, 4245, 4246, 4247, 4250, 4252, 4254,
- 4255, 4257, 4259, 4253, 4260, 4263, 4274, 4266, 4276, 4267,
- 4275, 4277, 7436, 4279, 4280, 4283, 4285, 4282, 4289, 4292,
- 7436, 4291, 4294, 4295, 4303, 4304, 4301, 4305, 4311, 4312,
- 4317, 4318, 4319, 4321, 4320, 4322, 4324, 4326, 4335, 4327,
- 4332, 4331, 4330, 4338, 4348, 4350, 7436, 4351, 4341, 4353,
-
- 4356, 4359, 7436, 4363, 4370, 4371, 7436, 4372, 4355, 4374,
- 4368, 4382, 7436, 4375, 4384, 4377, 4385, 4367, 4396, 4378,
- 4397, 4394, 4383, 4395, 4398, 4399, 7436, 4401, 4404, 4405,
- 7436, 4407, 4409, 4416, 4419, 4421, 4414, 4408, 4430, 4425,
- 4422, 4426, 4433, 7436, 4434, 4436, 7436, 4437, 4441, 4438,
- 4443, 7436, 4446, 4447, 4448, 4452, 4454, 4455, 4456, 4462,
- 4467, 4449, 4464, 4457, 4468, 4470, 4471, 4478, 4477, 4479,
- 4480, 4482, 7436, 4485, 4481, 4483, 4484, 4489, 4490, 4494,
- 4500, 4501, 4502, 4504, 7436, 7436, 4506, 7436, 4508, 4510,
- 4513, 4514, 7436, 4516, 4518, 4521, 4519, 4523, 4525, 4520,
-
- 4528, 4538, 4533, 7436, 4540, 4542, 7436, 4535, 4544, 4551,
- 4547, 4548, 4549, 4552, 4553, 4556, 4559, 4562, 4563, 4564,
- 4566, 4560, 4567, 4568, 4588, 4569, 4591, 7436, 4570, 4573,
- 4577, 4585, 4581, 4595, 4598, 4600, 4602, 7436, 4603, 4604,
- 4607, 4609, 4611, 7436, 7436, 4612, 7436, 4613, 4617, 4616,
- 4627, 4619, 4620, 4630, 4623, 7436, 4632, 4633, 4636, 4637,
- 4639, 4646, 7436, 4645, 4649, 4641, 4642, 4651, 4658, 4656,
- 4653, 4655, 4670, 4657, 7436, 4662, 4668, 4672, 4674, 4675,
- 4677, 4678, 4679, 4686, 4685, 4687, 4683, 4697, 4692, 4695,
- 4698, 4702, 4704, 4706, 4707, 4696, 7436, 4709, 4711, 4716,
-
- 4717, 4725, 4721, 4722, 4727, 7436, 4728, 4730, 4729, 4732,
- 7436, 4735, 4736, 4740, 4746, 4743, 4747, 4750, 4751, 4752,
- 4755, 4757, 4753, 7436, 4754, 4759, 4760, 4770, 4773, 4774,
- 4763, 7436, 7436, 4776, 7436, 4779, 4764, 4784, 4786, 4788,
- 4789, 4791, 4792, 4794, 4796, 4797, 4802, 4800, 4807, 7436,
- 4803, 4815, 4808, 4818, 4825, 4827, 4823, 7436, 4824, 4811,
- 7436, 7436, 4810, 4834, 4835, 4829, 4840, 4841, 4837, 4844,
- 7436, 4851, 4843, 4847, 4853, 4856, 4859, 4863, 7436, 4865,
- 4846, 4867, 4848, 7436, 4860, 4870, 4872, 4873, 4874, 4876,
- 4877, 4878, 4881, 4880, 4883, 4887, 4884, 4892, 4889, 4890,
-
- 4896, 4900, 4901, 4903, 4904, 4905, 4910, 7436, 4911, 4906,
- 4913, 4915, 4918, 4921, 4924, 4926, 4927, 4928, 4935, 4936,
- 7436, 4922, 7436, 4931, 4938, 4940, 4948, 4933, 4955, 4951,
- 4957, 4958, 4942, 4959, 4961, 4962, 4965, 4967, 4976, 4968,
- 4970, 4977, 4978, 7436, 4981, 4986, 4984, 4988, 4991, 4993,
- 4995, 4996, 7436, 4997, 4998, 5004, 5005, 5007, 5009, 5010,
- 5012, 5013, 5015, 5019, 5016, 5023, 5026, 5027, 5028, 5032,
- 5030, 5036, 5038, 5020, 7436, 5040, 5043, 5044, 5049, 5046,
- 5050, 5051, 5053, 5058, 5061, 5054, 5062, 5065, 7436, 5066,
- 5068, 5070, 5078, 7436, 5071, 5075, 5076, 5079, 5080, 5083,
-
- 5085, 5088, 5092, 5086, 5097, 7436, 5103, 5089, 5100, 5105,
- 5095, 5106, 5108, 5110, 5114, 5111, 5116, 5122, 7436, 5127,
- 5117, 5126, 5128, 5130, 5132, 5134, 5137, 5139, 5138, 5141,
- 7436, 5144, 5145, 5146, 5153, 5160, 5161, 5152, 5156, 5165,
- 5164, 5170, 5162, 5163, 5174, 5166, 5172, 5179, 5180, 5182,
- 5178, 5190, 5199, 5194, 7436, 5183, 7436, 5185, 5195, 5196,
- 5206, 5201, 5207, 5208, 5212, 5211, 7436, 5213, 5214, 5219,
- 5220, 5215, 5221, 7436, 5222, 5223, 5225, 5232, 7436, 5238,
- 5237, 5227, 5236, 5246, 5250, 5251, 7436, 5254, 5255, 5256,
- 5263, 5265, 5260, 5267, 5262, 5270, 5268, 5264, 5272, 5273,
-
- 5281, 5279, 5277, 7436, 5283, 5285, 5290, 5292, 5294, 5286,
- 5296, 5284, 5298, 5301, 5303, 7436, 5306, 5307, 5308, 5309,
- 5310, 5313, 5312, 5314, 5321, 5320, 5322, 5330, 5318, 5325,
- 5333, 5334, 5335, 5338, 7436, 5341, 5342, 5340, 5349, 5354,
- 5347, 5357, 7436, 5351, 7436, 5350, 5361, 5362, 5365, 5366,
- 7436, 5369, 5228, 5370, 5371, 5376, 7436, 7436, 5374, 5385,
- 5380, 5382, 5384, 7436, 7436, 5387, 7436, 5383, 7436, 5388,
- 5389, 7436, 7436, 5390, 5391, 5394, 5398, 7436, 5399, 5403,
- 5407, 7436, 5410, 7436, 5420, 5396, 5421, 5411, 5413, 5418,
- 7436, 5415, 5425, 5424, 5426, 5430, 7436, 5431, 5432, 5433,
-
- 5443, 5440, 5442, 7436, 5445, 5446, 5448, 5451, 5452, 5455,
- 7436, 5453, 5460, 5456, 5462, 5465, 5463, 5464, 5466, 5467,
- 5475, 5478, 5477, 5479, 5483, 5486, 5485, 5487, 5493, 5495,
- 5497, 5488, 5504, 5498, 5505, 5507, 5511, 5513, 5509, 5515,
- 5517, 5518, 5501, 5520, 5524, 5525, 5527, 5531, 5528, 5533,
- 5534, 5540, 5537, 5541, 5543, 5542, 5545, 5551, 5554, 5553,
- 5555, 5556, 5557, 5558, 5559, 5564, 5566, 5560, 5574, 5569,
- 5577, 5579, 7436, 5567, 5571, 5584, 5580, 5587, 5588, 5591,
- 5595, 5598, 5605, 5606, 7436, 7436, 5608, 7436, 5610, 5599,
- 5601, 5613, 5614, 7436, 5615, 5616, 5618, 5619, 5621, 5622,
-
- 5623, 5624, 5620, 5627, 5636, 7436, 5643, 5649, 5641, 5628,
- 5651, 5653, 7436, 5654, 5657, 5646, 5658, 5659, 5626, 5665,
- 5661, 5666, 5662, 5667, 5668, 5674, 5670, 5683, 5671, 5675,
- 5688, 7436, 5690, 5696, 5698, 5685, 5687, 5697, 5699, 5700,
- 5701, 5708, 5702, 5704, 5709, 5710, 5715, 5711, 5720, 5717,
- 5728, 5730, 5734, 7436, 5716, 7436, 5736, 5723, 5737, 5738,
- 5739, 5740, 5741, 5743, 5747, 7436, 7436, 5748, 5751, 5750,
- 5755, 5752, 5756, 5762, 5759, 5757, 5771, 7436, 5764, 5765,
- 5776, 5773, 5784, 5778, 7436, 5781, 5786, 5787, 5789, 5790,
- 5792, 5794, 7436, 5788, 5795, 5797, 5802, 5806, 5799, 5810,
-
- 5811, 5813, 5814, 5815, 5817, 5820, 7436, 5821, 7436, 7436,
- 7436, 5823, 5825, 5826, 5829, 5831, 5832, 5833, 5838, 5840,
- 5841, 5836, 5839, 5843, 7436, 5852, 7436, 7436, 5855, 7436,
- 5856, 5853, 5857, 5863, 5854, 5865, 5864, 7436, 5866, 7436,
- 5870, 5877, 5868, 5879, 5885, 5886, 5869, 5890, 5880, 5892,
- 5876, 5893, 5901, 5898, 7436, 5899, 5902, 5904, 5906, 5908,
- 7436, 7436, 5910, 5913, 5915, 5920, 5916, 5922, 5924, 5931,
- 5926, 5928, 5932, 5929, 5934, 5935, 5943, 5945, 5946, 5936,
- 5950, 7436, 5940, 5952, 5955, 7436, 5953, 7436, 5954, 5961,
- 5962, 5960, 5963, 5964, 5968, 5969, 5971, 5975, 5981, 7436,
-
- 7436, 5972, 5988, 5983, 7436, 7436, 5974, 5984, 5985, 5987,
- 5992, 5994, 5995, 7436, 5998, 5999, 5996, 6000, 6002, 6003,
- 6010, 6012, 7436, 6013, 7436, 6016, 6017, 6020, 6022, 6029,
- 6030, 6025, 6027, 6032, 6034, 6035, 6037, 6041, 7436, 6039,
- 6038, 7436, 6055, 6050, 6052, 6040, 6054, 6060, 6042, 7436,
- 6063, 6061, 7436, 6066, 6067, 6070, 6072, 7436, 6074, 6076,
- 6077, 6075, 7436, 6086, 7436, 6078, 6083, 6081, 6095, 6087,
- 7436, 6091, 6092, 6096, 6100, 7436, 6103, 6105, 6107, 6110,
- 6108, 6109, 7436, 6115, 6117, 7436, 6118, 6120, 6123, 6126,
- 6127, 6129, 6130, 6131, 6132, 6139, 6137, 6140, 7436, 7436,
-
- 6147, 6145, 123, 6154, 6134, 6151, 6152, 6155, 6162, 6158,
- 6159, 6165, 7436, 7436, 6168, 7436, 6166, 6167, 7436, 6160,
- 6175, 6176, 6169, 6179, 6180, 6181, 6182, 6189, 6190, 6191,
- 6192, 6193, 6195, 7436, 6211, 6214, 6197, 6200, 6217, 6219,
- 6221, 6223, 6225, 6215, 6227, 6209, 6207, 6228, 6230, 6234,
- 6235, 6236, 6238, 6240, 6242, 6243, 7436, 6246, 6249, 6250,
- 6251, 6256, 6252, 6259, 6257, 7436, 6268, 6265, 6270, 6271,
- 7436, 6274, 6277, 6278, 6280, 6281, 6282, 7436, 6283, 6285,
- 6289, 6292, 6293, 6294, 6295, 6297, 6298, 6305, 7436, 6303,
- 6300, 6307, 7436, 6308, 7436, 7436, 7436, 6310, 6320, 6314,
-
- 7436, 6322, 6317, 6324, 6325, 7436, 6327, 6330, 6332, 6339,
- 6334, 7436, 7436, 7436, 6335, 6337, 6336, 7436, 6338, 6350,
- 7436, 6340, 7436, 6347, 7436, 6348, 6351, 6354, 6357, 7436,
- 6359, 6361, 6362, 6369, 7436, 6372, 6378, 6380, 6375, 6363,
- 6367, 6382, 7436, 6391, 6388, 6389, 6396, 6381, 6390, 6392,
- 6398, 6397, 6406, 6401, 6405, 7436, 6407, 6409, 6412, 6418,
- 6408, 6410, 6416, 7436, 6420, 7436, 6422, 7436, 6423, 6424,
- 6428, 6429, 6430, 6432, 6434, 6435, 6442, 6438, 6444, 6445,
- 6450, 6449, 6451, 6455, 6457, 6452, 7436, 7436, 6466, 6461,
- 7436, 6462, 6470, 6473, 7436, 6463, 7436, 6479, 7436, 6474,
-
- 6476, 7436, 6480, 6481, 6482, 7436, 7436, 6489, 6483, 6486,
- 6499, 6491, 6501, 6494, 7436, 6504, 6496, 6498, 6502, 6507,
- 7436, 6515, 7436, 6508, 6518, 6511, 7436, 7436, 6519, 6521,
- 6523, 6525, 6527, 6526, 6530, 6532, 6531, 6533, 6544, 6535,
- 6536, 6537, 6551, 6545, 6552, 6556, 6561, 7436, 7436, 7436,
- 6558, 6563, 6571, 6567, 6569, 6574, 6564, 7436, 6534, 6576,
- 6573, 6577, 6585, 6580, 6587, 7436, 6581, 6584, 6588, 6590,
- 6592, 6589, 6594, 6595, 7436, 6600, 6606, 6612, 6609, 6601,
- 6616, 6618, 6620, 6623, 6624, 6626, 6627, 6628, 6635, 6631,
- 7436, 7436, 6638, 6630, 7436, 6642, 6644, 7436, 7436, 6632,
-
- 7436, 6634, 6639, 6645, 6647, 6648, 7436, 6653, 6650, 6655,
- 6657, 7436, 6658, 6659, 6663, 6666, 6673, 7436, 6667, 6681,
- 6660, 6670, 6679, 6682, 7436, 7436, 6672, 6691, 7436, 6695,
- 6683, 6686, 6698, 6696, 6697, 6702, 6699, 7436, 6703, 6706,
- 6709, 6710, 6712, 6713, 6714, 7436, 6715, 6716, 6718, 6719,
- 7436, 6722, 6721, 6724, 6726, 6727, 7436, 6728, 6731, 6749,
- 6745, 7436, 6734, 6752, 6744, 7436, 7436, 7436, 6759, 6761,
- 6762, 7436, 7436, 7436, 6748, 7436, 6765, 6767, 6756, 6769,
- 7436, 6770, 7436, 7436, 6774, 6779, 6783, 6787, 6791, 6778,
- 7436, 6790, 6784, 6797, 6753, 6792, 7436, 7436, 6799, 6800,
-
- 6794, 6802, 6803, 6805, 6807, 6809, 7436, 7436, 6810, 6811,
- 6812, 6815, 6813, 7436, 6819, 6821, 6831, 6823, 6833, 6839,
- 6841, 6827, 6843, 6844, 6851, 6852, 6836, 6847, 6849, 6854,
- 6855, 6857, 6864, 6871, 6866, 6868, 6874, 6869, 6875, 7436,
- 7436, 6878, 6879, 7436, 6882, 6883, 7436, 6885, 7436, 6887,
- 6889, 6891, 6895, 7436, 6897, 6899, 6901, 6905, 6902, 7436,
- 6906, 6908, 7436, 6910, 6911, 6912, 6913, 7436, 6914, 6917,
- 6918, 6922, 6919, 6923, 6926, 6930, 6940, 7436, 6927, 6944,
- 7436, 7436, 6932, 6817, 6925, 6945, 6935, 7436, 6949, 6947,
- 6948, 6954, 6955, 6957, 6956, 7436, 6958, 6960, 7436, 7436,
-
- 6961, 6963, 7436, 6966, 7436, 6968, 6970, 7436, 7436, 7436,
- 7436, 7436, 7436, 7436, 7436, 6971, 6977, 7436, 7436, 6973,
- 6982, 6984, 6988, 7436, 6992, 7436, 6979, 6989, 6993, 6985,
- 7436, 6995, 7436, 6996, 6999, 7001, 7011, 7000, 7003, 7007,
- 7008, 7012, 7016, 7014, 7018, 7017, 7022, 7023, 7021, 7024,
- 7035, 7025, 7038, 7029, 7041, 7436, 7436, 7436, 7436, 7031,
- 7043, 7048, 7050, 7052, 7053, 7056, 7058, 7060, 7061, 7062,
- 7064, 7066, 7067, 7068, 7076, 7072, 7073, 7075, 7078, 7074,
- 7088, 7090, 7096, 7436, 7098, 7084, 7082, 7103, 7436, 7091,
- 7436, 7093, 7436, 7436, 7105, 7107, 7109, 7100, 7116, 7118,
-
- 7113, 7115, 7114, 7120, 7122, 7436, 7124, 7436, 7436, 7436,
- 7436, 7126, 7129, 7436, 7130, 7131, 7436, 7132, 7134, 7136,
- 7137, 7138, 7140, 7141, 7143, 7154, 7436, 7436, 7142, 7145,
- 7156, 7158, 7160, 7167, 7168, 7166, 7172, 7173, 7164, 7176,
- 7436, 7180, 7181, 7185, 7436, 7187, 7174, 7182, 7188, 7190,
- 7198, 7194, 7195, 7436, 7196, 7436, 7200, 7202, 7201, 7203,
- 7204, 7205, 7215, 7212, 7219, 7436, 7210, 7220, 7224, 7225,
- 7227, 7229, 7230, 7231, 7239, 7235, 7242, 7246, 7241, 7247,
- 7233, 7251, 7249, 7436, 7258, 7253, 7436, 7255, 7259, 7261,
- 7262, 7265, 7436, 7270, 7263, 7267, 7273, 7276, 7271, 7436,
-
- 7284, 7288, 7285, 7436, 7289, 7436, 7436, 7290, 7277, 7279,
- 7300, 7302, 7436, 7436, 7436, 7316, 7323, 7330, 7337, 7344,
- 7351, 7358, 88, 7365, 7372, 7379, 7386, 7393, 7400, 7407,
- 7414, 7421, 7428
+ 187, 201, 210, 172, 156, 97, 148, 2842, 7612, 7612,
+ 7612, 189, 2313, 7612, 7612, 7612, 204, 2257, 2137, 7612,
+ 7612, 7612, 239, 1886, 7612, 7612, 7612, 228, 1806, 7612,
+ 243, 7612, 247, 193, 1718, 1695, 7612, 7612, 7612, 251,
+ 1535, 7612, 7612, 7612, 235, 1388, 257, 261, 0, 264,
+ 0, 0, 212, 258, 259, 183, 170, 251, 265, 267,
+
+ 92, 260, 261, 272, 273, 274, 279, 287, 280, 285,
+ 277, 293, 288, 289, 309, 282, 303, 301, 311, 316,
+ 318, 319, 320, 321, 322, 325, 326, 328, 332, 338,
+ 139, 334, 342, 349, 351, 350, 356, 352, 357, 353,
+ 362, 359, 360, 363, 376, 364, 384, 380, 388, 393,
+ 369, 383, 370, 396, 397, 395, 398, 401, 404, 405,
+ 414, 415, 1269, 426, 1184, 428, 1103, 437, 996, 899,
+ 441, 707, 445, 449, 0, 441, 523, 455, 491, 426,
+ 460, 419, 453, 434, 454, 223, 455, 456, 457, 458,
+ 459, 461, 460, 464, 472, 482, 468, 473, 484, 492,
+
+ 491, 495, 496, 488, 507, 471, 498, 505, 502, 508,
+ 518, 513, 519, 520, 521, 522, 527, 525, 526, 529,
+ 544, 533, 532, 530, 553, 554, 557, 565, 540, 567,
+ 572, 549, 574, 571, 558, 575, 573, 584, 580, 585,
+ 583, 586, 588, 589, 590, 591, 593, 594, 597, 600,
+ 598, 604, 599, 611, 616, 606, 614, 617, 628, 623,
+ 625, 632, 627, 629, 631, 630, 637, 646, 651, 635,
+ 656, 643, 638, 657, 660, 667, 668, 663, 648, 653,
+ 664, 666, 670, 672, 674, 676, 675, 679, 683, 692,
+ 688, 690, 697, 687, 696, 699, 700, 701, 703, 704,
+
+ 712, 705, 714, 718, 720, 725, 713, 723, 726, 728,
+ 732, 734, 735, 736, 740, 738, 7612, 748, 741, 752,
+ 751, 756, 754, 759, 761, 768, 769, 764, 765, 770,
+ 730, 771, 773, 767, 774, 777, 779, 780, 782, 786,
+ 787, 798, 790, 795, 808, 794, 801, 804, 829, 802,
+ 810, 818, 811, 822, 836, 835, 840, 824, 837, 842,
+ 843, 845, 849, 856, 859, 862, 865, 851, 853, 867,
+ 869, 870, 871, 873, 880, 882, 7612, 875, 879, 892,
+ 893, 897, 900, 890, 912, 907, 878, 913, 915, 917,
+ 919, 929, 951, 911, 918, 920, 922, 927, 7612, 940,
+
+ 934, 975, 945, 944, 962, 955, 958, 925, 877, 965,
+ 957, 963, 979, 968, 969, 976, 983, 998, 999, 981,
+ 985, 993, 1006, 1007, 1000, 1009, 1013, 1010, 1016, 1017,
+ 1018, 1025, 1020, 815, 1021, 1036, 1023, 1024, 1031, 1037,
+ 1027, 1038, 1046, 1052, 1056, 1057, 1048, 1039, 1050, 1059,
+ 1062, 1063, 1070, 1093, 1073, 1074, 1064, 1081, 1082, 1094,
+ 1066, 1089, 1096, 933, 1097, 1084, 1108, 1029, 1113, 1115,
+ 1086, 1116, 1124, 1121, 1101, 1119, 1122, 1123, 1125, 1131,
+ 1127, 1129, 1133, 1135, 1068, 1136, 1137, 1141, 1144, 1138,
+ 1152, 1154, 1145, 1155, 1158, 7612, 1167, 1162, 7612, 1160,
+
+ 1164, 1165, 1168, 1169, 1170, 1171, 1173, 7612, 1174, 1178,
+ 1179, 1182, 1183, 1193, 1189, 1201, 1200, 1188, 1203, 1204,
+ 1206, 1208, 1209, 1216, 1212, 1219, 1221, 1213, 1224, 1225,
+ 1217, 1226, 1228, 1231, 1233, 1235, 1234, 1237, 1241, 1257,
+ 7612, 1242, 1243, 1244, 1249, 1251, 1255, 1252, 1274, 1275,
+ 1246, 1267, 1266, 1279, 1293, 1281, 1286, 1291, 1289, 1290,
+ 1299, 1295, 1303, 1301, 1297, 1306, 1307, 1305, 1311, 1313,
+ 1314, 1315, 1317, 1319, 7612, 1326, 1322, 1335, 1336, 1343,
+ 1329, 1327, 1328, 1330, 1351, 1346, 1348, 1349, 1350, 1352,
+ 1355, 1356, 1358, 1365, 1360, 1368, 1373, 1369, 1371, 1370,
+
+ 1375, 1377, 1376, 1383, 1378, 1385, 1399, 1389, 1392, 1396,
+ 1405, 1406, 1408, 1410, 1417, 1419, 1404, 1412, 1414, 1420,
+ 1416, 1415, 1424, 1425, 1430, 1427, 1429, 1436, 1437, 1438,
+ 1439, 1441, 1442, 1446, 1444, 1449, 1451, 1452, 1454, 1453,
+ 1455, 1462, 1461, 1463, 1468, 1465, 1481, 1467, 1470, 1484,
+ 1487, 1474, 1478, 7612, 1496, 1491, 1494, 1495, 1498, 1501,
+ 1502, 1503, 1504, 1507, 1509, 1510, 1513, 1511, 1515, 1519,
+ 1522, 1524, 1512, 1526, 1527, 1530, 1532, 1542, 1545, 1534,
+ 1549, 1538, 1550, 1552, 1548, 1555, 1556, 1558, 1559, 1567,
+ 1560, 1568, 1571, 1564, 1572, 1575, 1582, 1573, 1579, 1583,
+
+ 1590, 1580, 1585, 1593, 1587, 1596, 1601, 1604, 1606, 1616,
+ 1600, 1613, 1620, 1621, 1605, 1615, 1623, 1625, 1626, 1631,
+ 1632, 1633, 1629, 1634, 1641, 1636, 1637, 1638, 1643, 1639,
+ 1644, 1652, 1645, 1662, 1659, 1661, 1665, 1666, 1667, 1668,
+ 1669, 1671, 1670, 1672, 1674, 1676, 1678, 1691, 1680, 1681,
+ 1698, 1699, 1684, 1700, 1701, 1704, 1705, 1706, 1707, 1710,
+ 1714, 1716, 1708, 1722, 1724, 1712, 1726, 1728, 1731, 1734,
+ 1735, 1736, 1746, 1742, 1738, 1749, 1750, 1751, 1739, 1752,
+ 1756, 1757, 1759, 1762, 1767, 1768, 1765, 7612, 1769, 1781,
+ 1772, 1776, 1779, 1777, 1780, 1782, 1790, 1792, 1785, 1787,
+
+ 1795, 1797, 1798, 1823, 7612, 1799, 7612, 7612, 1804, 1802,
+ 7612, 7612, 1803, 1809, 7612, 1807, 1810, 1808, 1811, 1820,
+ 1830, 1833, 1826, 1821, 1836, 1838, 1846, 1859, 1844, 1847,
+ 1841, 1849, 1851, 1848, 1853, 1865, 1856, 1869, 1868, 1854,
+ 1881, 1888, 1885, 1889, 1876, 1893, 1894, 1896, 1897, 1899,
+ 1903, 1905, 1906, 1908, 1909, 1910, 1912, 1911, 1914, 1917,
+ 1916, 1920, 1921, 1923, 1925, 1924, 1935, 1928, 1939, 1948,
+ 7612, 1940, 1949, 1926, 1950, 1951, 1958, 1954, 1961, 1953,
+ 1957, 1960, 1965, 1967, 1962, 1970, 1972, 1974, 1973, 1975,
+ 1976, 1981, 1983, 1985, 1986, 1988, 1992, 1993, 1989, 1998,
+
+ 7612, 1999, 2000, 2001, 2003, 2005, 2004, 2011, 2015, 2012,
+ 2006, 2019, 2016, 2033, 2021, 2022, 2024, 2030, 2034, 2036,
+ 2037, 2041, 7612, 2038, 2046, 2042, 2048, 2047, 2051, 2050,
+ 2054, 2057, 2058, 2062, 2059, 2061, 2066, 2064, 2073, 2072,
+ 2075, 2069, 2076, 2077, 2080, 2088, 2089, 2092, 2094, 2090,
+ 2098, 2099, 2100, 2102, 2101, 2104, 2105, 2107, 2111, 2112,
+ 2119, 2114, 2122, 2115, 2117, 2136, 2138, 2135, 2123, 2133,
+ 2141, 2134, 2143, 2154, 2156, 2149, 2140, 2147, 2157, 2159,
+ 2162, 2163, 2164, 2165, 2166, 2173, 2168, 2171, 2185, 2174,
+ 2178, 2176, 2187, 2180, 7612, 2188, 2189, 2190, 7612, 2194,
+
+ 2195, 2197, 2219, 2200, 2201, 2206, 2208, 2214, 2209, 2216,
+ 2211, 2217, 2225, 2233, 2227, 2243, 2236, 2244, 2246, 2248,
+ 2249, 2247, 2251, 2252, 2261, 2253, 2255, 2267, 2265, 2271,
+ 2268, 2278, 2281, 2280, 2287, 2289, 2284, 2285, 2290, 2309,
+ 2286, 2288, 2291, 2295, 2296, 2294, 2292, 2302, 2303, 2311,
+ 2301, 2312, 2314, 2324, 2321, 2322, 2327, 2332, 2333, 2336,
+ 2338, 2339, 2340, 7612, 2347, 2226, 2342, 2344, 2346, 2356,
+ 2352, 2353, 7612, 2355, 2358, 2362, 2369, 2365, 2366, 2368,
+ 2370, 2375, 2376, 2371, 2380, 2379, 2384, 2381, 2382, 2400,
+ 7612, 2386, 7612, 2383, 2395, 2396, 2398, 2407, 2404, 2405,
+
+ 2406, 2410, 2408, 2409, 7612, 7612, 2411, 2412, 2418, 2428,
+ 2426, 2436, 2422, 2432, 2433, 7612, 2434, 2441, 7612, 2438,
+ 2437, 2445, 2443, 2444, 2449, 2451, 2453, 2454, 2455, 2462,
+ 2459, 2466, 2461, 2463, 2469, 7612, 2472, 2474, 2475, 2480,
+ 2481, 2478, 2482, 2484, 2487, 2488, 7612, 2493, 2490, 2495,
+ 2497, 2504, 2503, 2505, 2507, 2508, 2509, 2512, 2513, 2515,
+ 2516, 2520, 2523, 2527, 2528, 2524, 2526, 2540, 2536, 2543,
+ 7612, 2539, 2538, 2542, 2551, 2547, 2549, 2546, 2550, 2553,
+ 2554, 2557, 2560, 2561, 2566, 2565, 2567, 2568, 2569, 2579,
+ 2581, 2571, 2578, 2590, 2574, 2582, 2587, 2584, 2595, 2592,
+
+ 2594, 2597, 2598, 7612, 2600, 2604, 2606, 2601, 2607, 2615,
+ 2608, 295, 2611, 2614, 2618, 2617, 2624, 2621, 2627, 2631,
+ 2638, 2640, 2635, 2637, 2639, 2641, 2642, 2645, 2647, 2648,
+ 2649, 2653, 2656, 2657, 2658, 2659, 2663, 7612, 2667, 2664,
+ 2669, 2670, 2671, 2672, 2677, 2676, 2681, 7612, 2680, 2690,
+ 2688, 2699, 2685, 2694, 2701, 2702, 2705, 2703, 7612, 2706,
+ 2707, 2710, 2715, 2713, 2714, 2716, 2717, 7612, 2720, 2724,
+ 2725, 2731, 2732, 2734, 2733, 2735, 2739, 2740, 2741, 2743,
+ 2745, 2748, 2746, 2747, 2749, 2755, 2756, 2762, 2763, 2764,
+ 2766, 2769, 2770, 2772, 2775, 2774, 2776, 2777, 2788, 2779,
+
+ 7612, 2789, 2780, 2790, 2794, 2796, 2781, 2798, 2800, 2811,
+ 2806, 2807, 2809, 2813, 2826, 2815, 2808, 2824, 2819, 2832,
+ 2829, 2838, 2836, 2841, 2843, 2850, 2823, 2852, 2854, 2840,
+ 2855, 2862, 2864, 2863, 2861, 2865, 2867, 2868, 2869, 2877,
+ 2874, 2881, 2878, 2884, 2876, 2886, 2891, 2879, 2897, 2910,
+ 2890, 7612, 2899, 2894, 2892, 2905, 2911, 2919, 2915, 2916,
+ 2914, 2917, 2921, 2928, 2926, 2927, 2929, 2938, 2930, 2939,
+ 2933, 2934, 2942, 2940, 2944, 2949, 2950, 2952, 2955, 2958,
+ 2959, 2962, 2964, 2963, 7612, 2967, 2966, 2972, 2973, 2976,
+ 2978, 2980, 2983, 2981, 2985, 2987, 2988, 2990, 2992, 2993,
+
+ 2994, 2995, 3002, 2999, 3005, 3001, 3000, 7612, 3013, 3007,
+ 3011, 3020, 3017, 3021, 3019, 3023, 3029, 3030, 3033, 3036,
+ 3037, 3038, 3039, 3040, 7612, 3048, 3049, 3045, 3047, 3057,
+ 3054, 3056, 3058, 3060, 3061, 3062, 7612, 3065, 3066, 3064,
+ 3068, 3067, 3071, 3078, 3079, 3080, 3077, 7612, 3091, 3076,
+ 3089, 3092, 3099, 3095, 3098, 3100, 3101, 3104, 3102, 3106,
+ 3107, 3108, 3111, 3117, 3112, 3118, 7612, 3120, 3124, 3121,
+ 3133, 3126, 3128, 3140, 3136, 3130, 3141, 3146, 3143, 3147,
+ 3153, 7612, 3161, 3158, 3157, 3166, 3163, 3164, 3169, 3170,
+ 3171, 3172, 3173, 3174, 3178, 3179, 7612, 3181, 3180, 3184,
+
+ 3185, 3188, 3189, 3193, 3203, 3196, 3200, 3201, 3204, 3206,
+ 3209, 3210, 3214, 3215, 3223, 3213, 3211, 3205, 3227, 3232,
+ 3230, 3234, 3217, 3238, 3241, 3246, 3242, 3247, 3250, 3251,
+ 3244, 3252, 3253, 3261, 3265, 3268, 3263, 3266, 7612, 3270,
+ 3271, 3272, 3274, 3277, 3276, 3278, 3280, 3282, 3279, 3294,
+ 3291, 3284, 3285, 3301, 3309, 3306, 3297, 3311, 3305, 3307,
+ 3313, 3314, 3315, 3316, 3320, 3327, 3318, 3325, 3328, 3329,
+ 3330, 3337, 3332, 3333, 3341, 3340, 3345, 3342, 3346, 3347,
+ 3349, 3350, 3352, 3355, 3357, 3360, 3353, 3362, 3367, 3375,
+ 3377, 3378, 3380, 3369, 3371, 3385, 3387, 3389, 7612, 3388,
+
+ 3390, 3392, 3396, 3398, 3399, 3402, 3404, 3413, 3405, 3403,
+ 3423, 3414, 3421, 3422, 3410, 3424, 3427, 3412, 3434, 3438,
+ 7612, 3429, 7612, 3439, 3431, 3435, 3443, 3451, 3441, 7612,
+ 3449, 7612, 3450, 3455, 3446, 3456, 3457, 7612, 3460, 3458,
+ 3464, 3459, 3465, 3466, 3471, 3469, 3470, 3475, 3474, 3482,
+ 3477, 3483, 3481, 3487, 3491, 3493, 3494, 3496, 3497, 3498,
+ 3504, 3501, 3505, 3506, 3507, 3511, 3512, 3514, 3517, 3518,
+ 3522, 7612, 3524, 3535, 3536, 3528, 3538, 3530, 3532, 3540,
+ 3542, 3544, 3520, 3547, 3548, 3552, 3551, 3555, 3553, 3563,
+ 3559, 3565, 3567, 3569, 3568, 3570, 3575, 3583, 3579, 3587,
+
+ 3584, 7612, 3582, 3586, 3590, 3591, 3592, 3594, 7612, 3593,
+ 3595, 3601, 3603, 3606, 3605, 3607, 3608, 3612, 3614, 3615,
+ 3616, 3625, 3624, 3621, 3630, 7612, 3629, 3634, 3617, 3637,
+ 3645, 3635, 3647, 3652, 3648, 3650, 3654, 3662, 3658, 3657,
+ 3660, 3661, 3664, 3665, 3672, 3673, 3675, 3671, 3683, 3674,
+ 3681, 3688, 3685, 3682, 3679, 3689, 3691, 3692, 3693, 3694,
+ 3695, 3696, 3698, 3701, 3711, 3702, 3715, 7612, 3706, 3716,
+ 3717, 3725, 3720, 3726, 3724, 3727, 3729, 3733, 3736, 7612,
+ 3738, 3731, 3743, 3735, 3752, 3739, 3746, 3749, 3756, 3755,
+ 3757, 3758, 3759, 3761, 7612, 3763, 7612, 3762, 3766, 3767,
+
+ 3776, 3782, 3784, 3769, 3785, 3790, 3779, 3786, 3793, 3794,
+ 3797, 3795, 3801, 3802, 3803, 3804, 3807, 3808, 3809, 3814,
+ 3818, 3811, 3815, 3824, 3825, 3827, 3828, 3830, 3835, 3831,
+ 3837, 7612, 7612, 3832, 3840, 3847, 3850, 3839, 3843, 3859,
+ 3861, 3854, 3851, 3867, 3865, 3869, 3870, 3878, 7612, 3871,
+ 3874, 3873, 3875, 3879, 3887, 3882, 3892, 3902, 3894, 3884,
+ 3903, 3901, 7612, 3886, 3904, 3905, 3914, 3909, 3912, 3916,
+ 7612, 3917, 7612, 3911, 3913, 3918, 3920, 3926, 3927, 3929,
+ 3934, 3933, 3935, 3938, 3940, 3947, 3950, 3945, 3951, 3954,
+ 3955, 3956, 3957, 3959, 3960, 3968, 3963, 3965, 3966, 7612,
+
+ 3970, 3967, 3978, 3972, 3971, 3983, 3989, 3986, 3979, 7612,
+ 3990, 7612, 3992, 3996, 3997, 3998, 3999, 4007, 4001, 4009,
+ 4008, 4012, 4013, 4015, 4016, 4019, 4017, 4022, 4025, 4026,
+ 7612, 4028, 4030, 4038, 4033, 4035, 4037, 4040, 4041, 4042,
+ 4049, 7612, 4051, 4058, 4054, 4055, 4063, 4060, 4061, 4065,
+ 4068, 4066, 4070, 4072, 4075, 4074, 4076, 4078, 4077, 4080,
+ 4083, 4082, 4085, 4094, 4096, 4097, 4103, 4113, 4098, 7612,
+ 4084, 4108, 4109, 4110, 4111, 4114, 4118, 4120, 4123, 4125,
+ 4115, 4130, 4136, 4117, 4133, 4139, 4141, 4142, 4149, 4144,
+ 7612, 4151, 4148, 4156, 4152, 4153, 4155, 4159, 4164, 4157,
+
+ 4165, 4168, 4161, 4169, 4173, 4174, 4171, 4181, 4188, 4183,
+ 4184, 4185, 4187, 4198, 4189, 4191, 4193, 4194, 7612, 4214,
+ 4201, 4205, 4210, 4206, 4216, 4224, 4219, 4221, 4222, 4226,
+ 4223, 4229, 4227, 4232, 4233, 4236, 4238, 4239, 7612, 7612,
+ 4245, 4240, 4242, 7612, 4246, 4248, 4256, 4252, 4257, 4253,
+ 4261, 4258, 4262, 4263, 4266, 4264, 4280, 4283, 4268, 4272,
+ 7612, 4284, 4286, 4293, 4276, 4285, 4295, 4297, 7612, 4298,
+ 4306, 4302, 4303, 4304, 4305, 4307, 4309, 4311, 4310, 4312,
+ 4316, 4318, 4323, 4325, 4321, 4332, 4329, 4330, 4331, 7612,
+ 4336, 4337, 4338, 4340, 4341, 4342, 4347, 7612, 4348, 4346,
+
+ 4352, 4354, 4355, 4358, 4363, 4366, 4368, 4374, 4369, 4371,
+ 4375, 4376, 4377, 4378, 4380, 4388, 4383, 4387, 4386, 4392,
+ 4396, 4403, 4389, 7612, 4399, 4406, 4407, 4409, 4411, 7612,
+ 4413, 4421, 4424, 7612, 4425, 4416, 4423, 4426, 4435, 7612,
+ 4431, 4430, 4432, 4436, 4433, 4445, 4440, 4447, 4446, 4448,
+ 4450, 4451, 4452, 4454, 4455, 7612, 4456, 4457, 4460, 7612,
+ 4464, 4466, 4473, 4478, 4479, 4482, 4489, 4471, 4475, 4490,
+ 4485, 4487, 4488, 4493, 7612, 4496, 4498, 7612, 4500, 4504,
+ 4499, 4505, 4506, 7612, 4509, 4510, 4511, 4513, 4514, 4519,
+ 4525, 4515, 4527, 4528, 4529, 4531, 4532, 4533, 4534, 4541,
+
+ 4536, 4543, 4540, 4542, 7612, 4545, 4544, 4550, 4555, 4547,
+ 4560, 4563, 4553, 4566, 4568, 4569, 7612, 7612, 4571, 7612,
+ 4574, 4575, 4576, 4578, 7612, 4580, 4579, 4589, 4581, 4584,
+ 4586, 4590, 4596, 4600, 4597, 7612, 4602, 4606, 7612, 4603,
+ 4609, 4616, 4608, 4611, 4612, 4613, 4619, 4623, 4617, 4625,
+ 4627, 4621, 4628, 4629, 4635, 4630, 4647, 4631, 4650, 7612,
+ 4642, 4643, 4648, 4658, 4649, 4651, 4661, 4663, 4659, 7612,
+ 4665, 4672, 4673, 4675, 4676, 7612, 7612, 4677, 7612, 4678,
+ 4681, 4682, 4685, 4684, 4688, 4695, 4692, 7612, 4697, 4693,
+ 4701, 4698, 4704, 4711, 7612, 4705, 4714, 4702, 4715, 4706,
+
+ 4722, 4718, 4717, 4725, 4735, 4728, 7612, 4721, 4727, 4731,
+ 4739, 4744, 4742, 4732, 4746, 4754, 4750, 4749, 4752, 4762,
+ 4757, 4759, 4760, 4763, 4767, 4769, 4771, 4761, 7612, 4777,
+ 4774, 4780, 4775, 4790, 4785, 4791, 4787, 7612, 4788, 4792,
+ 4793, 4802, 7612, 4795, 4803, 4805, 4810, 4794, 4806, 4813,
+ 4816, 4815, 4819, 4820, 4817, 7612, 4818, 4825, 4821, 4829,
+ 4838, 4827, 4826, 7612, 7612, 4839, 7612, 4842, 4828, 4846,
+ 4847, 4849, 4850, 4853, 4854, 4856, 4857, 4860, 4862, 4864,
+ 4867, 4868, 4870, 7612, 4872, 4877, 4873, 4882, 4884, 4892,
+ 4885, 7612, 4889, 4887, 7612, 4893, 7612, 4894, 4896, 4899,
+
+ 4900, 4902, 4904, 4905, 4908, 4909, 7612, 4916, 4918, 4912,
+ 4919, 4921, 4929, 4925, 4937, 7612, 4934, 4923, 4935, 4936,
+ 7612, 4940, 4941, 4944, 4942, 4945, 4948, 4947, 4949, 4953,
+ 4951, 4955, 4960, 4959, 4970, 4961, 4952, 4962, 4971, 4968,
+ 4972, 4976, 4981, 4985, 7612, 4982, 4986, 4988, 4991, 4992,
+ 4993, 4994, 4995, 4996, 4997, 5004, 5006, 7612, 5009, 7612,
+ 5001, 5011, 5020, 5019, 5002, 5028, 5029, 5030, 5023, 5031,
+ 5032, 5035, 5037, 5040, 5041, 5045, 5042, 5047, 5050, 5052,
+ 7612, 5059, 5060, 5049, 5065, 5067, 5069, 5071, 5072, 7612,
+ 5073, 5054, 5075, 5080, 5082, 5084, 5085, 5087, 5088, 5090,
+
+ 5093, 5091, 5098, 5100, 5101, 5003, 5102, 5094, 5110, 5105,
+ 5107, 7612, 5112, 5114, 5116, 5121, 5118, 5122, 5123, 5125,
+ 5130, 5133, 5124, 5134, 5137, 7612, 5138, 5140, 5142, 5150,
+ 7612, 5145, 5147, 5148, 5151, 5152, 5155, 5157, 5158, 5160,
+ 5167, 5168, 7612, 5173, 5161, 5170, 5174, 5175, 5178, 5179,
+ 5180, 5184, 5186, 5187, 5197, 7612, 5198, 5190, 5199, 5203,
+ 5205, 5191, 5201, 5207, 5209, 5219, 5211, 7612, 5220, 5221,
+ 5222, 5223, 5235, 5236, 5212, 5231, 5240, 5239, 5242, 5232,
+ 5241, 5245, 5243, 5249, 5250, 5251, 5252, 5253, 5262, 5270,
+ 5265, 7612, 5255, 7612, 5266, 5268, 5271, 5279, 5280, 5274,
+
+ 5276, 5282, 5283, 5287, 5288, 7612, 5290, 5293, 5295, 5296,
+ 5298, 5303, 5297, 5299, 7612, 5301, 5300, 5302, 5314, 7612,
+ 5315, 5319, 5320, 5321, 5323, 5328, 5330, 5331, 7612, 5335,
+ 5336, 5337, 5344, 5347, 5343, 5346, 5348, 5349, 5351, 5353,
+ 5354, 5355, 5364, 5357, 5360, 7612, 5366, 5369, 5375, 5376,
+ 5377, 5359, 5378, 5379, 5380, 5386, 5383, 7612, 5388, 5389,
+ 5390, 5391, 5392, 5394, 5395, 5397, 5407, 5408, 5403, 5412,
+ 5400, 5405, 5416, 5417, 5419, 5421, 7612, 5425, 5423, 5426,
+ 5433, 5434, 5430, 5441, 7612, 5436, 7612, 5432, 5442, 5447,
+ 5449, 5450, 7612, 5454, 5429, 5455, 5453, 5459, 7612, 7612,
+
+ 5461, 5468, 5463, 5467, 5464, 7612, 7612, 5470, 7612, 5471,
+ 7612, 5472, 5474, 7612, 7612, 5476, 5477, 5478, 5480, 7612,
+ 5482, 5483, 5485, 7612, 5492, 7612, 5499, 5494, 5497, 5495,
+ 5500, 5502, 7612, 5504, 5505, 5506, 5509, 5513, 7612, 5510,
+ 5515, 5519, 5533, 5516, 5517, 7612, 5529, 5535, 5537, 5530,
+ 5531, 5536, 7612, 5540, 5543, 5547, 5544, 5546, 5545, 5548,
+ 5557, 5556, 5560, 5561, 5563, 5564, 5565, 5566, 5576, 5567,
+ 5578, 5580, 5587, 5569, 5588, 5583, 5589, 5591, 5595, 5597,
+ 5593, 5599, 5600, 5602, 5603, 5604, 5607, 5608, 5610, 5614,
+ 5615, 5617, 5611, 5618, 5621, 5628, 5629, 5630, 5631, 5636,
+
+ 5632, 5638, 5639, 5640, 5642, 5643, 5644, 5645, 5647, 5646,
+ 5661, 5652, 5656, 5653, 5666, 5669, 7612, 5670, 5649, 5672,
+ 5673, 5675, 5676, 5677, 5679, 5682, 5685, 5692, 5696, 5697,
+ 7612, 7612, 7612, 5700, 7612, 5702, 5686, 5705, 5689, 5706,
+ 7612, 5707, 5710, 5709, 5712, 5711, 5713, 5715, 5714, 5718,
+ 5719, 5722, 7612, 5725, 5739, 5726, 5724, 5735, 5742, 7612,
+ 5743, 5748, 5745, 5749, 5750, 5751, 5754, 5753, 5755, 5756,
+ 5757, 5760, 5759, 5762, 5775, 5765, 5770, 5777, 7612, 5779,
+ 5781, 5790, 5782, 5786, 5787, 5789, 5791, 5792, 5794, 5795,
+ 5796, 5798, 5799, 5801, 5803, 5806, 5807, 5814, 5817, 5821,
+
+ 7612, 5822, 7612, 5824, 5825, 5826, 5827, 5829, 5828, 5830,
+ 5831, 5836, 7612, 7612, 5832, 5839, 5837, 5843, 5845, 5846,
+ 5850, 5854, 5853, 5858, 7612, 5856, 5859, 5861, 5866, 5873,
+ 5863, 7612, 5869, 5878, 5875, 5879, 5880, 5881, 5883, 7612,
+ 5885, 5887, 5886, 5891, 5894, 5889, 5900, 5902, 5903, 5904,
+ 5905, 5906, 5910, 7612, 5911, 7612, 7612, 7612, 5913, 5915,
+ 5916, 5919, 5921, 5922, 5923, 5928, 5930, 5931, 5942, 5925,
+ 5929, 7612, 5947, 7612, 7612, 5943, 7612, 5949, 5950, 5951,
+ 5952, 5953, 5957, 5955, 7612, 5958, 7612, 5962, 5965, 5959,
+ 5969, 5976, 5977, 5971, 5978, 5961, 5985, 5981, 5987, 5979,
+
+ 5989, 5933, 5990, 5991, 5994, 7612, 5998, 6000, 6001, 6003,
+ 6005, 7612, 7612, 6009, 6011, 6013, 6018, 6014, 6020, 6021,
+ 6029, 6024, 6026, 6027, 6030, 6032, 6033, 6043, 6044, 6034,
+ 6041, 6047, 7612, 6042, 6050, 6048, 7612, 6052, 7612, 6056,
+ 6057, 6058, 6059, 6060, 6065, 6066, 6067, 6069, 6072, 6079,
+ 7612, 7612, 6070, 6086, 6081, 7612, 7612, 6071, 6082, 6083,
+ 6085, 6092, 6089, 6093, 7612, 6097, 6098, 6094, 6099, 6100,
+ 6101, 6111, 6105, 7612, 6108, 7612, 6113, 6115, 6118, 6120,
+ 6127, 6128, 6125, 6129, 6132, 6131, 6134, 6135, 6136, 7612,
+ 6137, 6138, 7612, 6149, 6150, 6148, 6139, 6140, 6156, 6158,
+
+ 7612, 6161, 6159, 7612, 6164, 6165, 6167, 6169, 7612, 6171,
+ 6172, 6174, 6175, 7612, 6181, 7612, 6178, 6182, 6183, 6191,
+ 6189, 7612, 6186, 6192, 6193, 6196, 7612, 6200, 6203, 6205,
+ 6207, 6208, 6209, 7612, 6215, 6211, 7612, 6216, 6218, 6219,
+ 6224, 6225, 6227, 6228, 6230, 6231, 6238, 6234, 6235, 7612,
+ 7612, 6243, 6244, 6252, 6249, 123, 6256, 6251, 6253, 6257,
+ 6258, 6265, 6266, 6267, 6262, 6268, 6270, 7612, 7612, 6271,
+ 7612, 6275, 6278, 7612, 6263, 6279, 6284, 6280, 6286, 6289,
+ 6290, 6292, 6294, 6295, 6300, 6299, 6296, 6304, 7612, 6320,
+ 6322, 6305, 6302, 6317, 6325, 6327, 6329, 6331, 6323, 6333,
+
+ 6334, 6335, 6336, 6337, 6341, 6340, 6342, 6343, 6344, 6348,
+ 6349, 7612, 6356, 6358, 6350, 6360, 6363, 6365, 6367, 6366,
+ 7612, 6374, 6370, 6379, 6376, 7612, 6383, 6380, 6385, 6387,
+ 6388, 6390, 7612, 6391, 6393, 6396, 6398, 6401, 6400, 6403,
+ 6405, 6404, 6412, 7612, 6408, 6407, 6413, 7612, 6415, 7612,
+ 7612, 7612, 6418, 6426, 6422, 7612, 6428, 6429, 6431, 6432,
+ 7612, 6434, 6438, 6435, 6445, 6440, 7612, 7612, 7612, 6441,
+ 6442, 6446, 7612, 6448, 6457, 7612, 6449, 7612, 6453, 7612,
+ 6454, 6458, 6464, 6460, 7612, 6462, 6470, 7612, 6471, 6472,
+ 6473, 6475, 7612, 6478, 6481, 6489, 6483, 6486, 6490, 6493,
+
+ 6494, 6491, 7612, 6501, 6497, 6498, 6500, 6504, 6505, 6507,
+ 6509, 6508, 6521, 6511, 6519, 7612, 6516, 6524, 6525, 6531,
+ 6523, 6533, 6534, 7612, 6527, 7612, 6538, 7612, 6539, 6540,
+ 6541, 6546, 6535, 6543, 6545, 6555, 6551, 6557, 6558, 6560,
+ 6562, 6565, 6566, 6568, 6570, 6572, 7612, 7612, 6580, 6573,
+ 7612, 6575, 6585, 6589, 7612, 6576, 7612, 6594, 7612, 6582,
+ 6586, 7612, 6590, 6596, 6599, 7612, 7612, 6601, 6603, 6605,
+ 6613, 6606, 6609, 6611, 7612, 6615, 6610, 6617, 6619, 6621,
+ 7612, 6628, 7612, 6618, 6631, 6627, 7612, 7612, 6626, 6633,
+ 6635, 6640, 6641, 6642, 6644, 6646, 6645, 6647, 6655, 6650,
+
+ 6652, 6651, 6661, 6653, 6666, 6668, 6670, 6672, 6676, 7612,
+ 7612, 7612, 6674, 6678, 6679, 6680, 6687, 6689, 6690, 6697,
+ 6682, 7612, 6696, 6695, 6702, 6684, 6710, 6705, 6709, 7612,
+ 6706, 6711, 6692, 6712, 6714, 6715, 6716, 6719, 7612, 6721,
+ 6727, 6731, 6733, 6735, 6736, 6740, 6743, 6745, 6737, 6748,
+ 6750, 6751, 6758, 6754, 7612, 7612, 6756, 6753, 7612, 6761,
+ 6765, 7612, 7612, 6757, 7612, 6762, 6766, 6767, 6768, 6770,
+ 7612, 6773, 6774, 6775, 6778, 7612, 6779, 6780, 6782, 6796,
+ 6783, 7612, 6785, 6797, 6793, 6798, 6801, 6802, 7612, 7612,
+ 6804, 6809, 7612, 6811, 6814, 6812, 6821, 6816, 6822, 6824,
+
+ 6827, 7612, 6818, 7612, 6829, 6831, 6820, 6834, 6837, 6835,
+ 6839, 6841, 6843, 7612, 6844, 6845, 6846, 6848, 7612, 6853,
+ 6856, 6857, 6855, 6858, 7612, 6860, 6850, 6867, 6873, 7612,
+ 6862, 6877, 6879, 7612, 7612, 7612, 6884, 6886, 6887, 7612,
+ 7612, 7612, 6881, 7612, 6889, 6890, 6893, 6898, 7612, 6894,
+ 7612, 7612, 6900, 6904, 6908, 6911, 6916, 6903, 7612, 6915,
+ 6917, 6919, 6921, 6922, 7612, 7612, 6924, 6927, 6925, 6929,
+ 6930, 6932, 6933, 6934, 7612, 7612, 6937, 6940, 6938, 6941,
+ 6943, 7612, 6946, 6953, 6952, 6960, 6956, 6966, 6969, 6971,
+ 6973, 6961, 6948, 6974, 6975, 6982, 6986, 6977, 6978, 6985,
+
+ 6989, 6990, 6988, 6992, 7003, 6998, 7000, 7009, 6996, 7005,
+ 7612, 7612, 7013, 7001, 7612, 7017, 7014, 7612, 7018, 7612,
+ 7020, 7022, 7025, 7027, 7612, 7029, 7031, 7033, 7035, 7037,
+ 7612, 7038, 7040, 7612, 7042, 7043, 7044, 7045, 7612, 7046,
+ 7049, 7050, 7054, 7051, 7055, 7058, 7059, 7062, 7072, 7612,
+ 7064, 7076, 7612, 7612, 7612, 7073, 7067, 7077, 7057, 7081,
+ 7084, 7612, 7086, 7093, 7090, 7091, 7088, 7092, 7095, 7612,
+ 7094, 7097, 7612, 7612, 7099, 7098, 7612, 7108, 7612, 7101,
+ 7105, 7612, 7612, 7612, 7612, 7612, 7612, 7612, 7612, 7112,
+ 7115, 7612, 7612, 7116, 7120, 7122, 7124, 7612, 7131, 7612,
+
+ 7114, 7126, 7128, 7133, 7134, 7612, 7136, 7612, 7144, 7139,
+ 7140, 7141, 7143, 7142, 7147, 7152, 7154, 7156, 7155, 7158,
+ 7160, 7159, 7164, 7161, 7163, 7167, 7172, 7169, 7181, 7170,
+ 7182, 7612, 7612, 7612, 7612, 7178, 7185, 7194, 7186, 7196,
+ 7198, 7201, 7202, 7208, 7210, 7200, 7191, 7212, 7213, 7216,
+ 7189, 7217, 7226, 7222, 7223, 7224, 7228, 7225, 7231, 7234,
+ 7238, 7612, 7240, 7241, 7242, 7244, 7612, 7247, 7246, 7612,
+ 7248, 7249, 7612, 7612, 7251, 7252, 7255, 7254, 7264, 7265,
+ 7260, 7266, 7268, 7270, 7277, 7612, 7281, 7612, 7612, 7612,
+ 7612, 7269, 7271, 7612, 7278, 7283, 7284, 7285, 7612, 7286,
+
+ 7288, 7294, 7295, 7296, 7297, 7298, 7299, 7302, 7612, 7612,
+ 7305, 7310, 7307, 7612, 7311, 7315, 7312, 7324, 7321, 7327,
+ 7329, 7330, 7319, 7337, 7612, 7340, 7336, 7343, 7333, 7612,
+ 7344, 7345, 7346, 7347, 7349, 7356, 7352, 7354, 7612, 7357,
+ 7612, 7355, 7362, 7363, 7365, 7359, 7369, 7373, 7376, 7374,
+ 7380, 7381, 7612, 7382, 7383, 7387, 7389, 7391, 7394, 7395,
+ 7396, 7398, 7401, 7404, 7403, 7411, 7407, 7412, 7413, 7416,
+ 7417, 7612, 7612, 7423, 7418, 7612, 7420, 7424, 7426, 7427,
+ 7430, 7612, 7434, 7428, 7435, 7438, 7441, 7442, 7612, 7444,
+ 7451, 7448, 7612, 7452, 7612, 7612, 7453, 7456, 7459, 7461,
+
+ 7463, 7612, 7612, 7612, 7492, 7499, 7506, 7513, 7520, 7527,
+ 7534, 88, 7541, 7548, 7555, 7562, 7569, 7576, 7583, 7590,
+ 7597, 7604
} ;
-static yyconst flex_int16_t yy_def[3834] =
+static yyconst flex_int16_t yy_def[3923] =
{ 0,
- 3815, 1, 3816, 3816, 3817, 3817, 3818, 3818, 3819, 3819,
- 3820, 3820, 3821, 3821, 3822, 3822, 3815, 3823, 3815, 3815,
- 3815, 3815, 3824, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3825, 3815, 3815, 3815,
- 3825, 3826, 3815, 3815, 3815, 3826, 3827, 3815, 3815, 3815,
- 3815, 3827, 3828, 3815, 3815, 3815, 3828, 3829, 3815, 3830,
- 3815, 3829, 3829, 3831, 3815, 3815, 3815, 3815, 3831, 3832,
- 3815, 3815, 3815, 3832, 3823, 3823, 3815, 3833, 3824, 3833,
- 3824, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3825, 3825, 3826, 3826, 3827, 3827, 3815, 3828, 3828, 3829,
- 3829, 3830, 3830, 3829, 3831, 3831, 3815, 3832, 3832, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3829, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3829, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823,
- 3823, 3829, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3829, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3815, 3823, 3815, 3815, 3823, 3823,
-
- 3815, 3815, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3829, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3815, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3815, 3823, 3823, 3815, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3829, 3829, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3829, 3823, 3823, 3823, 3823, 3823,
- 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3815, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3823, 3815, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3815,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3829, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3823, 3829, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3815, 3815, 3823, 3823, 3823, 3815, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823,
-
- 3823, 3823, 3815, 3823, 3823, 3823, 3815, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3829, 3823, 3815, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3815, 3823, 3823, 3823,
- 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3815, 3815, 3823, 3815, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3815, 3823, 3823, 3815, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3823, 3823, 3823, 3815, 3815, 3823, 3815, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3815, 3815, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815,
- 3823, 3823, 3829, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3815, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3815, 3823, 3815, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3829, 3823, 3815, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3815, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3815, 3815, 3823, 3823,
- 3823, 3823, 3823, 3815, 3815, 3823, 3815, 3823, 3815, 3823,
- 3823, 3815, 3815, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3823, 3815, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3829, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3815, 3815, 3823, 3815, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3815, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3815, 3815, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3815, 3815,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3815, 3823, 3815, 3815, 3823, 3815,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3815,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3829, 3823, 3823,
- 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3815, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3815, 3823, 3823, 3823, 3815, 3823, 3815, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815,
-
- 3815, 3823, 3823, 3823, 3815, 3815, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823,
- 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3823, 3823, 3815, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3815,
-
- 3823, 3823, 3829, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3815, 3823, 3815, 3823, 3823, 3815, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823,
- 3823, 3823, 3815, 3823, 3815, 3815, 3815, 3823, 3823, 3823,
-
- 3815, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3823, 3815, 3815, 3815, 3823, 3823, 3823, 3815, 3823, 3823,
- 3815, 3823, 3815, 3823, 3815, 3823, 3823, 3823, 3823, 3815,
- 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3815, 3823, 3815, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3815, 3823, 3823,
- 3815, 3823, 3823, 3823, 3815, 3823, 3815, 3823, 3815, 3823,
-
- 3823, 3815, 3823, 3823, 3823, 3815, 3815, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3815, 3823, 3823, 3823, 3815, 3815, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3815, 3815,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3815, 3823, 3823, 3815, 3823, 3823, 3815, 3815, 3823,
-
- 3815, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823,
- 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3823, 3823, 3823, 3823, 3815, 3815, 3823, 3823, 3815, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823,
- 3823, 3815, 3823, 3823, 3823, 3815, 3815, 3815, 3823, 3823,
- 3823, 3815, 3815, 3815, 3823, 3815, 3823, 3823, 3823, 3823,
- 3815, 3823, 3815, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3823, 3823, 3815, 3815, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3815, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815,
- 3815, 3823, 3823, 3815, 3823, 3823, 3815, 3823, 3815, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3815,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3815, 3815, 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3815, 3815,
-
- 3823, 3823, 3815, 3823, 3815, 3823, 3823, 3815, 3815, 3815,
- 3815, 3815, 3815, 3815, 3815, 3823, 3823, 3815, 3815, 3823,
- 3823, 3823, 3823, 3815, 3823, 3815, 3823, 3823, 3823, 3823,
- 3815, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3815, 3815, 3815, 3815, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3815, 3823,
- 3815, 3823, 3815, 3815, 3823, 3823, 3823, 3823, 3823, 3823,
-
- 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3815, 3815, 3815,
- 3815, 3823, 3823, 3815, 3823, 3823, 3815, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3815, 3815, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3815, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3815, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3815, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823, 3823,
- 3823, 3823, 3823, 3815, 3823, 3823, 3815, 3823, 3823, 3823,
- 3823, 3823, 3815, 3823, 3823, 3823, 3823, 3823, 3823, 3815,
-
- 3823, 3823, 3823, 3815, 3823, 3815, 3815, 3823, 3823, 3823,
- 3823, 3823, 3815, 3815, 0, 3815, 3815, 3815, 3815, 3815,
- 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815,
- 3815, 3815, 3815
+ 3904, 1, 3905, 3905, 3906, 3906, 3907, 3907, 3908, 3908,
+ 3909, 3909, 3910, 3910, 3911, 3911, 3904, 3912, 3904, 3904,
+ 3904, 3904, 3913, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3914, 3904, 3904,
+ 3904, 3914, 3915, 3904, 3904, 3904, 3915, 3916, 3904, 3904,
+ 3904, 3904, 3916, 3917, 3904, 3904, 3904, 3917, 3918, 3904,
+ 3919, 3904, 3918, 3918, 3920, 3904, 3904, 3904, 3904, 3920,
+ 3921, 3904, 3904, 3904, 3921, 3912, 3912, 3904, 3922, 3913,
+ 3922, 3913, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3914, 3914, 3915, 3915, 3916, 3916, 3904, 3917,
+ 3917, 3918, 3918, 3919, 3919, 3918, 3920, 3920, 3904, 3921,
+ 3921, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3918, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3918, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3904, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3918, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3918, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3904, 3912, 3904, 3904, 3912, 3912,
+ 3904, 3904, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3918, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3904, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3904, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3918, 3918, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912,
+ 3918, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3918, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3904, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3904, 3912, 3912, 3912, 3918, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3904,
+ 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3918, 3912, 3904, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3904, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3912, 3904, 3904, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3904, 3904, 3912, 3904, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3904, 3912, 3912, 3918, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3912, 3904, 3912, 3904, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3918, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3904, 3912, 3912, 3912,
+ 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3904, 3904,
+
+ 3912, 3912, 3912, 3912, 3912, 3904, 3904, 3912, 3904, 3912,
+ 3904, 3912, 3912, 3904, 3904, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3912, 3904, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3918, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3904, 3904, 3912, 3904, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3904, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3904, 3904, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3904, 3912, 3904, 3904, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3904, 3904, 3912, 3904, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3904, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3918, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3904, 3912, 3912, 3912, 3904, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3904, 3912, 3912, 3912, 3904, 3904, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3904, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3904, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3904, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3904, 3912, 3912, 3904, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3904, 3912, 3912, 3912, 3912, 3918, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3904, 3912,
+ 3904, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3904, 3912, 3904,
+ 3904, 3904, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3912, 3912, 3912, 3912, 3904, 3904, 3904, 3912,
+ 3912, 3912, 3904, 3912, 3912, 3904, 3912, 3904, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3904, 3912, 3904, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3904, 3912, 3912,
+ 3904, 3912, 3912, 3912, 3904, 3912, 3904, 3912, 3904, 3912,
+ 3912, 3904, 3912, 3912, 3912, 3904, 3904, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3904, 3912, 3912, 3912, 3904, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3904, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3904, 3912, 3912, 3904, 3912,
+ 3912, 3904, 3904, 3912, 3904, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3904,
+ 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3904, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3912, 3904, 3904, 3904, 3912, 3912, 3912, 3904,
+ 3904, 3904, 3912, 3904, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3904, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3904, 3912, 3912, 3904, 3912, 3912, 3904, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912,
+ 3904, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3904, 3904, 3904, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3904, 3904, 3912, 3912, 3904, 3912, 3904, 3912,
+ 3912, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3912,
+ 3912, 3904, 3904, 3912, 3912, 3912, 3912, 3904, 3912, 3904,
+
+ 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3904, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3904, 3904, 3904, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3904,
+ 3912, 3912, 3904, 3904, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3904, 3912, 3904, 3904, 3904,
+ 3904, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3904, 3912,
+
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3904,
+ 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3904,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3904, 3912, 3912, 3904, 3912, 3912, 3912, 3912,
+ 3912, 3904, 3912, 3912, 3912, 3912, 3912, 3912, 3904, 3912,
+ 3912, 3912, 3904, 3912, 3904, 3904, 3912, 3912, 3912, 3912,
+
+ 3912, 3904, 3904, 0, 3904, 3904, 3904, 3904, 3904, 3904,
+ 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904,
+ 3904, 3904
} ;
-static yyconst flex_int16_t yy_nxt[7477] =
+static yyconst flex_int16_t yy_nxt[7653] =
{ 0,
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, 98, 62, 64,
- 65, 66, 87, 86, 67, 120, 88, 109, 85, 86,
- 67, 19, 20, 21, 69, 70, 71, 75, 76, 77,
-
- 78, 86, 22, 72, 122, 86, 121, 110, 86, 79,
- 161, 161, 73, 19, 20, 21, 69, 70, 71, 75,
- 76, 77, 78, 189, 22, 72, 81, 82, 83, 131,
- 90, 79, 90, 90, 73, 90, 171, 84, 81, 82,
- 83, 90, 91, 86, 99, 86, 111, 86, 113, 84,
- 86, 100, 86, 92, 93, 101, 114, 94, 102, 86,
- 112, 86, 95, 116, 96, 236, 117, 115, 86, 86,
- 157, 97, 86, 118, 158, 119, 160, 103, 159, 86,
- 123, 104, 138, 86, 105, 86, 106, 107, 124, 153,
- 86, 127, 86, 163, 125, 128, 163, 108, 126, 154,
-
- 86, 139, 184, 155, 156, 140, 168, 168, 86, 129,
- 209, 130, 86, 132, 86, 141, 142, 133, 143, 144,
- 183, 134, 145, 86, 149, 171, 150, 135, 86, 146,
- 136, 178, 178, 147, 148, 151, 289, 137, 86, 174,
- 165, 152, 165, 165, 90, 165, 90, 90, 170, 90,
- 170, 170, 175, 170, 175, 175, 173, 175, 85, 268,
- 85, 85, 87, 85, 86, 90, 88, 90, 90, 85,
- 90, 86, 86, 86, 180, 86, 90, 91, 86, 181,
- 182, 186, 86, 86, 185, 187, 191, 192, 86, 86,
- 86, 86, 190, 171, 193, 200, 86, 86, 188, 86,
-
- 194, 86, 195, 86, 203, 86, 86, 196, 197, 211,
- 199, 202, 198, 204, 201, 86, 205, 206, 207, 86,
- 86, 210, 219, 86, 213, 208, 215, 86, 86, 216,
- 86, 86, 86, 224, 214, 212, 222, 225, 86, 231,
- 86, 86, 217, 218, 86, 230, 221, 220, 86, 86,
- 86, 234, 86, 226, 229, 86, 223, 227, 235, 238,
- 86, 232, 228, 86, 86, 86, 86, 240, 233, 86,
- 237, 242, 245, 86, 246, 243, 86, 86, 239, 86,
- 248, 244, 241, 86, 251, 247, 254, 86, 179, 249,
- 258, 86, 86, 86, 261, 250, 86, 255, 253, 259,
-
- 257, 256, 86, 252, 260, 86, 86, 266, 86, 264,
- 270, 262, 86, 86, 263, 86, 86, 274, 86, 271,
- 265, 86, 269, 277, 267, 273, 301, 275, 161, 161,
- 163, 272, 86, 163, 276, 278, 165, 171, 165, 165,
- 279, 165, 168, 168, 170, 86, 170, 170, 90, 170,
- 90, 90, 175, 90, 175, 175, 86, 175, 178, 178,
- 173, 280, 281, 283, 86, 86, 86, 86, 86, 86,
- 86, 86, 86, 86, 286, 86, 292, 282, 288, 284,
- 86, 287, 295, 86, 291, 86, 294, 296, 285, 290,
- 299, 86, 293, 86, 297, 86, 300, 302, 86, 86,
-
- 86, 328, 303, 311, 305, 298, 86, 310, 86, 306,
- 312, 86, 86, 315, 307, 313, 86, 314, 86, 304,
- 308, 309, 319, 316, 317, 86, 86, 86, 86, 321,
- 86, 318, 322, 86, 86, 86, 86, 86, 86, 86,
- 329, 330, 323, 336, 324, 86, 326, 86, 325, 327,
- 86, 320, 86, 331, 339, 338, 332, 337, 333, 341,
- 86, 86, 340, 343, 393, 86, 348, 344, 345, 86,
- 334, 342, 335, 346, 86, 349, 351, 86, 86, 86,
- 352, 86, 350, 86, 354, 86, 86, 353, 347, 86,
- 86, 355, 357, 86, 86, 86, 356, 86, 86, 86,
-
- 359, 361, 86, 86, 86, 360, 358, 86, 86, 367,
- 362, 365, 86, 86, 86, 366, 368, 86, 86, 363,
- 372, 86, 374, 364, 370, 373, 86, 369, 86, 378,
- 86, 86, 375, 371, 376, 86, 86, 382, 385, 86,
- 377, 383, 381, 86, 384, 86, 379, 380, 86, 86,
- 388, 389, 391, 86, 86, 387, 86, 86, 86, 86,
- 394, 395, 86, 396, 386, 392, 398, 171, 390, 86,
- 86, 86, 86, 399, 86, 402, 86, 401, 86, 403,
- 86, 86, 86, 86, 405, 407, 410, 397, 409, 411,
- 400, 86, 86, 404, 86, 86, 412, 414, 406, 413,
-
- 86, 86, 86, 86, 408, 86, 86, 421, 86, 86,
- 426, 423, 422, 86, 418, 415, 416, 420, 86, 417,
- 419, 86, 86, 424, 86, 425, 86, 428, 86, 429,
- 86, 86, 86, 431, 433, 86, 86, 86, 438, 434,
- 427, 86, 440, 86, 86, 435, 430, 432, 86, 86,
- 436, 441, 442, 86, 445, 86, 437, 439, 86, 443,
- 86, 447, 448, 86, 86, 446, 86, 86, 86, 86,
- 86, 454, 86, 86, 86, 455, 444, 86, 457, 453,
- 86, 86, 451, 450, 86, 460, 86, 449, 86, 462,
- 452, 456, 86, 86, 86, 465, 458, 466, 459, 461,
-
- 464, 86, 475, 86, 467, 86, 463, 86, 86, 86,
- 477, 468, 484, 493, 86, 491, 469, 86, 86, 470,
- 486, 476, 502, 86, 471, 472, 473, 474, 86, 86,
- 485, 478, 86, 479, 487, 488, 489, 86, 86, 86,
- 492, 490, 86, 86, 496, 480, 481, 482, 86, 483,
- 86, 86, 86, 504, 497, 494, 503, 500, 495, 501,
- 498, 499, 86, 505, 86, 86, 86, 86, 86, 86,
- 86, 508, 513, 86, 514, 86, 515, 86, 86, 509,
- 507, 86, 519, 86, 512, 516, 521, 510, 520, 506,
- 511, 86, 517, 527, 86, 518, 522, 526, 86, 86,
-
- 86, 524, 523, 525, 86, 86, 533, 528, 534, 532,
- 535, 86, 86, 86, 86, 86, 86, 536, 550, 86,
- 529, 177, 171, 530, 86, 531, 86, 537, 86, 538,
- 86, 552, 86, 549, 553, 539, 551, 86, 554, 540,
- 555, 567, 557, 572, 541, 566, 86, 542, 86, 543,
- 176, 544, 568, 86, 86, 86, 556, 569, 86, 570,
- 86, 86, 577, 575, 545, 573, 571, 546, 86, 547,
- 574, 548, 86, 86, 558, 559, 86, 86, 86, 576,
- 171, 580, 584, 582, 560, 561, 562, 563, 564, 86,
- 86, 565, 581, 583, 578, 86, 86, 86, 86, 579,
-
- 585, 86, 589, 590, 86, 593, 592, 86, 86, 86,
- 586, 588, 86, 597, 86, 587, 591, 86, 86, 86,
- 595, 86, 86, 596, 86, 86, 600, 594, 601, 602,
- 86, 86, 86, 599, 608, 86, 616, 86, 603, 598,
- 605, 606, 604, 86, 607, 86, 86, 86, 609, 610,
- 611, 86, 86, 619, 86, 613, 614, 86, 86, 86,
- 86, 618, 632, 634, 617, 622, 623, 612, 86, 633,
- 86, 615, 620, 621, 635, 86, 637, 624, 86, 625,
- 86, 86, 86, 86, 636, 626, 86, 639, 86, 86,
- 640, 641, 169, 627, 628, 86, 86, 629, 630, 638,
-
- 642, 631, 645, 643, 86, 644, 646, 86, 86, 648,
- 86, 649, 650, 647, 86, 86, 86, 86, 86, 651,
- 652, 86, 86, 86, 657, 86, 655, 656, 86, 86,
- 653, 86, 658, 86, 86, 86, 663, 659, 654, 86,
- 665, 86, 86, 662, 666, 667, 86, 661, 660, 86,
- 669, 670, 86, 86, 668, 664, 86, 672, 674, 86,
- 675, 86, 86, 86, 86, 86, 86, 86, 86, 86,
- 677, 86, 681, 671, 679, 673, 86, 86, 86, 688,
- 690, 683, 676, 167, 678, 86, 86, 680, 682, 684,
- 86, 685, 689, 86, 686, 692, 86, 687, 693, 691,
-
- 86, 86, 86, 86, 86, 697, 86, 701, 695, 86,
- 694, 696, 86, 86, 704, 700, 86, 698, 86, 699,
- 86, 703, 86, 86, 86, 86, 706, 707, 710, 702,
- 86, 86, 86, 86, 86, 712, 86, 709, 705, 714,
- 86, 86, 711, 86, 86, 708, 713, 86, 715, 717,
- 86, 729, 716, 86, 718, 731, 86, 166, 728, 719,
- 726, 720, 727, 730, 86, 86, 86, 721, 86, 722,
- 733, 736, 723, 724, 741, 86, 86, 86, 86, 725,
- 732, 734, 737, 742, 739, 735, 86, 740, 86, 86,
- 744, 86, 86, 86, 743, 746, 86, 749, 86, 751,
-
- 86, 747, 738, 86, 745, 86, 748, 86, 752, 86,
- 755, 86, 753, 86, 86, 86, 750, 86, 754, 758,
- 759, 86, 86, 762, 756, 764, 86, 86, 766, 757,
- 761, 763, 760, 171, 86, 86, 86, 765, 767, 771,
- 86, 86, 768, 86, 86, 86, 86, 774, 776, 86,
- 770, 86, 86, 164, 769, 772, 86, 775, 780, 773,
- 778, 779, 86, 781, 86, 782, 783, 86, 784, 86,
- 785, 86, 86, 777, 86, 86, 86, 86, 86, 789,
- 788, 86, 794, 786, 86, 817, 790, 795, 86, 787,
- 797, 86, 86, 791, 793, 800, 792, 796, 798, 86,
-
- 799, 86, 86, 801, 86, 802, 86, 803, 86, 804,
- 806, 86, 86, 86, 805, 86, 86, 810, 86, 809,
- 86, 86, 86, 808, 813, 86, 86, 814, 812, 807,
- 818, 86, 86, 86, 86, 86, 86, 811, 820, 86,
- 822, 86, 824, 86, 86, 816, 86, 823, 815, 827,
- 821, 819, 86, 86, 825, 831, 86, 86, 86, 86,
- 839, 86, 832, 86, 826, 828, 834, 86, 829, 86,
- 833, 835, 86, 830, 836, 837, 838, 86, 86, 86,
- 846, 86, 842, 843, 845, 840, 86, 86, 841, 86,
- 847, 849, 848, 844, 86, 86, 86, 86, 86, 852,
-
- 853, 854, 86, 86, 86, 86, 86, 861, 86, 86,
- 857, 859, 86, 850, 851, 86, 856, 858, 855, 86,
- 864, 862, 86, 86, 86, 860, 86, 86, 863, 870,
- 872, 86, 86, 868, 86, 86, 866, 871, 869, 867,
- 865, 873, 874, 86, 86, 86, 876, 86, 875, 86,
- 877, 86, 878, 86, 883, 86, 881, 86, 885, 86,
- 86, 879, 884, 880, 86, 86, 86, 86, 886, 86,
- 86, 888, 882, 890, 162, 889, 86, 86, 891, 86,
- 887, 894, 892, 893, 898, 86, 899, 86, 895, 86,
- 86, 916, 901, 86, 900, 896, 897, 902, 86, 903,
-
- 904, 86, 86, 908, 86, 906, 86, 912, 905, 86,
- 86, 910, 913, 86, 86, 914, 909, 86, 86, 86,
- 907, 911, 86, 86, 918, 86, 86, 86, 925, 86,
- 86, 86, 86, 926, 86, 915, 917, 920, 86, 919,
- 927, 921, 86, 922, 86, 923, 86, 924, 930, 932,
- 935, 931, 86, 928, 86, 86, 86, 929, 933, 934,
- 86, 86, 86, 86, 86, 86, 86, 938, 937, 942,
- 86, 86, 936, 86, 86, 86, 952, 951, 86, 939,
- 944, 941, 940, 950, 943, 86, 86, 86, 945, 946,
- 947, 953, 948, 949, 86, 86, 86, 86, 86, 954,
-
- 86, 958, 86, 86, 86, 955, 956, 962, 957, 963,
- 964, 86, 86, 959, 86, 961, 86, 960, 86, 966,
- 86, 967, 86, 86, 86, 969, 86, 974, 86, 970,
- 968, 976, 972, 86, 171, 965, 971, 86, 973, 975,
- 86, 977, 86, 86, 86, 86, 86, 981, 984, 86,
- 987, 979, 86, 985, 978, 988, 86, 86, 980, 982,
- 86, 986, 989, 86, 992, 86, 86, 983, 86, 990,
- 86, 86, 995, 86, 86, 999, 86, 86, 86, 86,
- 86, 86, 991, 996, 993, 1000, 994, 1001, 1013, 86,
- 86, 86, 998, 86, 1002, 1016, 86, 86, 997, 1004,
-
- 1050, 86, 86, 1003, 86, 1012, 1005, 1018, 86, 1006,
- 1014, 1015, 86, 1007, 86, 86, 1008, 1019, 1017, 1021,
- 86, 1022, 86, 1009, 1010, 1024, 1011, 86, 1020, 86,
- 1023, 86, 1028, 86, 86, 86, 86, 1041, 86, 1038,
- 1025, 1026, 86, 86, 86, 86, 86, 86, 1065, 1043,
- 86, 1027, 86, 1029, 1030, 1037, 1031, 1039, 86, 1032,
- 1040, 1048, 1077, 1045, 1033, 1044, 1046, 1042, 86, 86,
- 1034, 1035, 1051, 1036, 1047, 1049, 86, 1052, 86, 86,
- 1054, 86, 86, 1053, 86, 1057, 86, 1056, 86, 86,
- 86, 1058, 1059, 1060, 1061, 86, 1055, 86, 86, 1062,
-
- 86, 86, 1063, 86, 86, 1069, 86, 86, 86, 1068,
- 86, 86, 1073, 86, 86, 1079, 86, 1064, 86, 86,
- 1066, 1070, 1067, 1078, 1072, 1075, 1074, 1071, 1080, 86,
- 86, 1083, 86, 1081, 86, 1082, 1076, 86, 1085, 1087,
- 86, 86, 1089, 1090, 86, 86, 1088, 1084, 86, 86,
- 1091, 86, 1086, 1093, 86, 1094, 86, 1092, 86, 86,
- 86, 86, 86, 86, 86, 1098, 1096, 1099, 1100, 1095,
- 86, 1104, 86, 86, 1107, 86, 86, 1097, 86, 1108,
- 1101, 86, 1105, 1103, 1106, 86, 1102, 86, 86, 86,
- 86, 86, 86, 179, 86, 86, 1109, 1111, 1112, 1115,
-
- 1110, 1116, 86, 86, 86, 1114, 1117, 1118, 86, 1119,
- 86, 1113, 1123, 1121, 86, 1126, 1120, 1124, 86, 86,
- 86, 1122, 86, 86, 1125, 86, 86, 86, 86, 1132,
- 1134, 1129, 1135, 86, 1127, 86, 86, 1133, 86, 1128,
- 1137, 86, 86, 1131, 86, 86, 1139, 1130, 1136, 86,
- 86, 86, 86, 177, 86, 1146, 86, 1138, 1140, 1144,
- 86, 1149, 1141, 86, 86, 1143, 1142, 86, 1151, 1150,
- 1147, 86, 1145, 1148, 86, 86, 86, 86, 86, 1152,
- 1155, 86, 1158, 1153, 1156, 1154, 1159, 86, 86, 1157,
- 86, 86, 86, 86, 86, 176, 86, 1160, 86, 1162,
-
- 1164, 1161, 86, 1170, 1171, 86, 1173, 86, 1163, 86,
- 86, 1165, 86, 1167, 1176, 1166, 1168, 1177, 1169, 1172,
- 86, 1174, 1175, 86, 86, 86, 86, 86, 1178, 86,
- 86, 1184, 1182, 1185, 1186, 86, 86, 1190, 1180, 86,
- 86, 86, 86, 86, 1179, 1187, 1181, 1192, 86, 1189,
- 1183, 86, 86, 1188, 1198, 86, 86, 1194, 1195, 1199,
- 171, 1191, 86, 86, 86, 1202, 86, 1201, 86, 1193,
- 86, 1196, 86, 1197, 86, 1206, 86, 1200, 1203, 86,
- 86, 86, 86, 1205, 86, 86, 1204, 86, 1221, 1220,
- 1209, 1207, 86, 1210, 1211, 86, 1222, 86, 1208, 86,
-
- 1212, 1224, 86, 1213, 86, 86, 86, 1214, 1661, 1215,
- 1223, 1230, 86, 1216, 1228, 1217, 1226, 1227, 86, 1229,
- 1218, 1232, 1225, 86, 86, 1219, 1233, 86, 86, 86,
- 86, 86, 1231, 1234, 1236, 86, 1242, 1235, 86, 86,
- 1239, 1241, 86, 1238, 1244, 86, 1237, 86, 86, 86,
- 1240, 86, 1243, 1249, 1248, 1251, 1246, 1247, 86, 1252,
- 1245, 86, 1255, 1250, 1254, 86, 1253, 86, 86, 86,
- 86, 86, 86, 1256, 86, 86, 86, 1270, 171, 1267,
- 86, 86, 86, 1266, 86, 86, 1271, 1269, 86, 1257,
- 1258, 86, 1259, 1272, 1268, 86, 1273, 1260, 1279, 1261,
-
- 1274, 86, 1275, 86, 86, 1262, 86, 86, 86, 86,
- 1263, 1264, 1280, 86, 1276, 86, 86, 1265, 1281, 1278,
- 1277, 1286, 86, 86, 1289, 1283, 1282, 1287, 86, 86,
- 86, 1284, 1290, 1285, 86, 86, 1288, 1294, 86, 1292,
- 86, 86, 86, 86, 86, 1295, 1300, 1291, 1293, 86,
- 1297, 1298, 86, 86, 86, 86, 86, 1296, 1301, 1303,
- 1299, 86, 1306, 86, 86, 86, 86, 86, 86, 86,
- 1305, 86, 1302, 1311, 1309, 1304, 1308, 1310, 1313, 86,
- 86, 86, 1314, 1307, 86, 1315, 1312, 86, 1319, 86,
- 86, 86, 1318, 86, 86, 169, 86, 86, 1324, 1316,
-
- 1320, 1325, 1326, 1321, 86, 1317, 1323, 86, 1322, 1327,
- 86, 1329, 1330, 1331, 86, 86, 1328, 86, 86, 86,
- 86, 86, 1336, 1332, 86, 86, 1338, 1337, 86, 1339,
- 1333, 86, 1340, 1334, 1341, 86, 86, 1335, 1342, 86,
- 86, 86, 86, 1349, 86, 1351, 1345, 86, 86, 86,
- 86, 86, 1344, 1353, 1347, 1343, 86, 1348, 1346, 86,
- 1355, 86, 1352, 86, 1350, 86, 1356, 86, 86, 167,
- 1354, 1357, 1358, 1359, 1361, 86, 86, 1360, 86, 86,
- 1362, 1363, 86, 86, 86, 1365, 1369, 1370, 86, 1367,
- 1364, 86, 86, 86, 86, 86, 1374, 1373, 1366, 86,
-
- 1371, 86, 86, 86, 1380, 1368, 1378, 1381, 86, 1382,
- 86, 1372, 86, 86, 86, 86, 166, 1375, 86, 1383,
- 1376, 1379, 1377, 1384, 1385, 86, 86, 1387, 86, 86,
- 86, 1386, 1390, 86, 1388, 1391, 86, 86, 1393, 86,
- 86, 86, 1392, 1389, 86, 1394, 86, 1398, 86, 1395,
- 86, 1396, 86, 1399, 86, 1400, 86, 86, 86, 1401,
- 1406, 1402, 1397, 86, 1407, 86, 86, 86, 86, 1404,
- 86, 86, 1403, 1409, 1410, 86, 86, 1405, 1408, 86,
- 86, 1412, 1415, 1413, 1411, 86, 86, 86, 86, 1417,
- 1421, 86, 86, 86, 1414, 171, 86, 1416, 1423, 86,
-
- 1422, 1424, 86, 86, 1418, 86, 86, 1420, 1429, 86,
- 1432, 86, 1419, 1426, 1430, 1425, 86, 1427, 1428, 1434,
- 1435, 86, 86, 86, 1431, 86, 86, 86, 86, 86,
- 1439, 86, 1438, 86, 1440, 1441, 1433, 1436, 1443, 1437,
- 86, 86, 86, 86, 86, 1442, 1446, 86, 86, 1447,
- 1450, 86, 86, 86, 86, 1444, 1452, 86, 86, 1448,
- 1445, 164, 1451, 1455, 86, 86, 1449, 86, 1461, 1454,
- 1457, 1453, 86, 1462, 1465, 86, 1464, 86, 1456, 1458,
- 1463, 1459, 86, 86, 1460, 86, 1467, 86, 86, 86,
- 86, 86, 1474, 86, 1471, 86, 1466, 1470, 86, 86,
-
- 1475, 86, 86, 1473, 1468, 1469, 86, 1476, 86, 1472,
- 1477, 1479, 86, 1480, 86, 1485, 86, 86, 86, 1481,
- 1478, 1483, 1482, 86, 86, 86, 86, 1484, 1489, 86,
- 86, 86, 1486, 1487, 86, 86, 1492, 1490, 86, 86,
- 86, 1491, 1493, 1488, 1497, 86, 1500, 86, 86, 86,
- 1494, 1499, 86, 1496, 1498, 1495, 86, 1503, 86, 86,
- 86, 86, 1510, 86, 1504, 1501, 1512, 1502, 86, 86,
- 1506, 86, 86, 86, 86, 1505, 1509, 86, 1507, 1515,
- 86, 86, 86, 1511, 1513, 1508, 1518, 1514, 86, 86,
- 1520, 86, 1519, 1517, 1516, 1521, 86, 86, 1525, 86,
-
- 86, 1522, 1523, 1556, 1524, 86, 1526, 86, 1536, 1534,
- 1527, 1535, 1533, 1528, 1529, 86, 86, 86, 1530, 86,
- 1537, 1540, 86, 1538, 1531, 1539, 86, 86, 1532, 86,
- 86, 1541, 86, 1543, 1542, 86, 1545, 86, 86, 1550,
- 1546, 1551, 1547, 1544, 86, 86, 86, 86, 86, 1552,
- 1548, 86, 86, 1553, 1558, 86, 1549, 1555, 1560, 86,
- 86, 1559, 86, 1562, 86, 86, 86, 1561, 1554, 1557,
- 86, 86, 162, 86, 86, 1564, 1569, 86, 1563, 86,
- 1565, 1574, 1566, 1575, 1567, 86, 1568, 1570, 86, 1571,
- 1572, 1573, 1576, 86, 1577, 86, 1580, 86, 86, 86,
-
- 86, 1581, 86, 1578, 1579, 1585, 1582, 1583, 86, 86,
- 86, 86, 86, 1591, 86, 1592, 86, 86, 1587, 86,
- 86, 1584, 1586, 86, 86, 1594, 1590, 86, 1593, 1588,
- 1589, 86, 1596, 1598, 1595, 86, 86, 1597, 1599, 86,
- 1603, 86, 86, 86, 1602, 1605, 86, 86, 1606, 1607,
- 86, 86, 86, 1600, 1608, 1609, 86, 1604, 1612, 86,
- 86, 1601, 1614, 86, 86, 1611, 86, 1615, 86, 1616,
- 86, 1610, 86, 1620, 86, 86, 86, 86, 86, 1623,
- 1613, 1625, 86, 86, 1628, 86, 86, 86, 1626, 1617,
- 86, 1618, 86, 1619, 1622, 1621, 86, 86, 1624, 1627,
-
- 1630, 1631, 86, 1629, 86, 1632, 86, 1633, 86, 1635,
- 1634, 86, 86, 1637, 1636, 1638, 1639, 86, 1640, 86,
- 86, 86, 86, 86, 1641, 1646, 1647, 1643, 86, 1644,
- 86, 86, 86, 1648, 1650, 1649, 1645, 86, 1642, 86,
- 86, 86, 1654, 86, 86, 86, 1651, 86, 171, 86,
- 1656, 86, 1653, 86, 1662, 1663, 86, 86, 1652, 1658,
- 86, 86, 1664, 1659, 1655, 1657, 1666, 1667, 1665, 86,
- 1670, 1660, 86, 1668, 86, 86, 86, 86, 86, 86,
- 1675, 86, 86, 86, 86, 86, 86, 1672, 1679, 1669,
- 86, 1673, 1681, 86, 1671, 1683, 1674, 86, 86, 1686,
-
- 86, 1676, 1678, 1680, 1687, 86, 86, 1677, 86, 1682,
- 86, 86, 1685, 86, 86, 1689, 1684, 86, 1688, 1690,
- 86, 86, 1691, 1697, 86, 1692, 1695, 1700, 1693, 1696,
- 86, 1694, 1698, 86, 1699, 86, 86, 1703, 86, 1701,
- 86, 86, 1704, 86, 86, 86, 1708, 1702, 86, 1709,
- 1706, 86, 86, 1710, 86, 86, 86, 1705, 1707, 1713,
- 86, 86, 1718, 1711, 86, 86, 86, 1722, 1719, 1715,
- 86, 1712, 1714, 86, 1716, 86, 86, 86, 1717, 86,
- 86, 86, 1723, 1720, 86, 1721, 86, 86, 86, 1730,
- 3815, 1724, 1727, 1726, 1731, 1725, 1728, 86, 86, 1729,
-
- 86, 86, 1732, 86, 1733, 86, 1737, 86, 86, 1735,
- 1736, 1742, 1734, 86, 1741, 1738, 1739, 86, 1743, 86,
- 1745, 86, 1744, 1740, 86, 1746, 86, 1747, 86, 86,
- 86, 1751, 1752, 1753, 86, 1750, 3815, 86, 86, 86,
- 86, 1754, 86, 1755, 1748, 1758, 86, 86, 86, 86,
- 1749, 1759, 1761, 86, 86, 86, 86, 1760, 86, 1766,
- 86, 1762, 1756, 1765, 1757, 86, 86, 1763, 1768, 1764,
- 1769, 86, 1772, 86, 3815, 1767, 1774, 1773, 86, 86,
- 1770, 1775, 86, 1776, 86, 1778, 86, 86, 86, 86,
- 1771, 86, 86, 1777, 1782, 86, 1786, 1781, 86, 86,
-
- 86, 86, 86, 1787, 86, 1779, 1780, 86, 1792, 86,
- 1783, 86, 1784, 1785, 86, 1794, 1790, 1788, 1795, 86,
- 1789, 86, 86, 86, 86, 86, 1793, 86, 86, 86,
- 1791, 1797, 1803, 86, 86, 1805, 86, 86, 1796, 1806,
- 1798, 86, 1799, 1802, 1800, 86, 1801, 1807, 1804, 1810,
- 86, 1811, 86, 1809, 86, 86, 1808, 86, 1814, 1812,
- 86, 1813, 86, 86, 86, 86, 86, 1818, 3815, 1816,
- 1815, 1819, 86, 86, 86, 1817, 1822, 1823, 86, 1824,
- 86, 1821, 1827, 86, 1820, 1828, 1825, 1829, 86, 1832,
- 1826, 1831, 86, 86, 86, 86, 86, 1833, 1834, 86,
-
- 1835, 86, 86, 1830, 86, 1840, 1841, 86, 86, 1843,
- 1838, 86, 86, 86, 86, 86, 86, 1846, 1845, 1836,
- 1837, 1847, 1849, 86, 1839, 86, 1842, 86, 1850, 1851,
- 86, 86, 86, 1844, 1848, 86, 86, 86, 86, 1855,
- 86, 86, 86, 86, 1860, 86, 86, 1852, 1853, 86,
- 1858, 1854, 86, 1861, 1864, 86, 86, 1866, 1856, 86,
- 1857, 1868, 1859, 86, 86, 1863, 1862, 86, 1867, 1865,
- 86, 86, 1873, 86, 1869, 86, 86, 86, 86, 1870,
- 86, 1876, 1878, 86, 1871, 86, 86, 1874, 86, 1879,
- 1872, 86, 1877, 1875, 86, 1881, 86, 171, 1880, 1884,
-
- 1885, 86, 1882, 1888, 86, 1883, 1887, 86, 86, 86,
- 1886, 1889, 86, 1892, 1891, 86, 86, 86, 86, 86,
- 1890, 86, 1900, 86, 86, 86, 3815, 86, 1899, 1894,
- 1893, 1897, 1901, 1905, 86, 1895, 1896, 86, 86, 86,
- 86, 1909, 1904, 1898, 1902, 1903, 1906, 86, 86, 1911,
- 1913, 86, 1907, 1910, 86, 86, 86, 86, 1908, 1914,
- 1912, 1916, 86, 86, 86, 1915, 86, 86, 86, 1922,
- 1919, 1920, 86, 1923, 86, 86, 1917, 86, 86, 86,
- 1928, 1927, 1918, 86, 86, 86, 86, 86, 1924, 1935,
- 1937, 1921, 1926, 1925, 86, 86, 1930, 1932, 86, 86,
-
- 1933, 1929, 86, 1936, 86, 1931, 1938, 1940, 1939, 3815,
- 86, 1941, 1934, 1942, 1943, 86, 1945, 1946, 86, 86,
- 86, 1948, 86, 86, 1947, 86, 1949, 1950, 1944, 86,
- 86, 1952, 86, 86, 1951, 86, 86, 1957, 1958, 1956,
- 1959, 86, 86, 86, 86, 86, 86, 1960, 1953, 86,
- 1961, 1954, 1964, 86, 1963, 1955, 86, 86, 86, 86,
- 86, 86, 1965, 1966, 1962, 86, 86, 86, 86, 86,
- 86, 86, 1977, 86, 1968, 1976, 86, 86, 1967, 1969,
- 1971, 1970, 1972, 1973, 1979, 1974, 86, 86, 1980, 1983,
- 1975, 86, 1978, 86, 86, 86, 86, 86, 1981, 86,
-
- 1982, 86, 1988, 86, 1990, 86, 1991, 1992, 86, 1985,
- 1987, 1984, 86, 86, 1986, 86, 1996, 1994, 86, 1998,
- 1989, 1993, 86, 86, 86, 1995, 86, 86, 86, 86,
- 86, 86, 86, 1997, 2003, 2001, 3815, 2004, 86, 2002,
- 2005, 2000, 2012, 86, 86, 2006, 1999, 2007, 2009, 86,
- 86, 2018, 2008, 2011, 2013, 86, 2010, 86, 2017, 86,
- 2016, 2014, 2015, 86, 86, 86, 86, 86, 86, 2020,
- 2021, 2022, 2024, 86, 86, 86, 86, 86, 86, 86,
- 2034, 86, 2019, 86, 2027, 2033, 2029, 2023, 2032, 2030,
- 2026, 86, 2025, 86, 86, 2028, 86, 86, 86, 86,
-
- 2035, 86, 2031, 2036, 2041, 86, 2043, 2037, 86, 2042,
- 86, 2039, 86, 2047, 2038, 2040, 86, 2044, 86, 2048,
- 86, 86, 2053, 2045, 86, 2058, 2046, 86, 2051, 2050,
- 86, 86, 2052, 86, 2049, 86, 2054, 86, 2057, 2055,
- 2062, 86, 2056, 86, 86, 2063, 86, 86, 86, 2059,
- 86, 86, 2067, 86, 2069, 2061, 2060, 2064, 2073, 2065,
- 86, 2072, 2068, 2066, 2071, 86, 86, 86, 2070, 2075,
- 86, 2077, 86, 86, 86, 86, 2076, 2080, 86, 86,
- 2074, 86, 2082, 86, 2084, 86, 86, 2079, 2083, 2085,
- 86, 2081, 2078, 2086, 86, 86, 86, 86, 86, 86,
-
- 2090, 86, 2089, 86, 2087, 2088, 2091, 2093, 2099, 2092,
- 2097, 86, 2094, 2100, 86, 2095, 86, 2096, 86, 86,
- 86, 2101, 2103, 86, 86, 86, 2107, 86, 86, 2102,
- 2109, 86, 2098, 86, 86, 86, 86, 2113, 86, 86,
- 2104, 2108, 2105, 2115, 2106, 86, 86, 86, 86, 2111,
- 2116, 86, 2112, 2110, 86, 2114, 2118, 2120, 86, 2119,
- 86, 171, 86, 2124, 86, 86, 2117, 2127, 86, 2122,
- 2121, 2123, 86, 2125, 86, 2131, 86, 86, 86, 2126,
- 86, 86, 2132, 86, 2128, 86, 2129, 2134, 86, 86,
- 2140, 2130, 2133, 2135, 86, 2136, 86, 86, 86, 2144,
-
- 86, 86, 2147, 86, 2143, 2137, 2141, 2138, 86, 2139,
- 2149, 2145, 86, 86, 2151, 2142, 86, 2148, 2152, 86,
- 86, 2146, 2150, 86, 86, 86, 2154, 86, 2155, 86,
- 86, 86, 86, 86, 86, 2153, 86, 2160, 2161, 86,
- 86, 2165, 86, 2162, 86, 86, 86, 2156, 2158, 2159,
- 2169, 2157, 2163, 2166, 2164, 86, 86, 2170, 2173, 86,
- 2171, 2172, 2168, 2174, 86, 86, 2167, 86, 86, 86,
- 86, 86, 2181, 86, 2184, 86, 86, 2175, 2185, 86,
- 2176, 2186, 86, 86, 2177, 86, 2178, 2179, 2180, 2182,
- 86, 2183, 2188, 86, 86, 2189, 2187, 2193, 86, 86,
-
- 86, 2195, 86, 2194, 2190, 2196, 2191, 86, 2197, 2199,
- 86, 2192, 86, 86, 86, 86, 86, 2201, 2198, 2203,
- 2204, 86, 86, 86, 2207, 86, 86, 86, 2206, 86,
- 86, 86, 2212, 2200, 2210, 2211, 86, 2214, 2202, 86,
- 86, 2208, 2205, 86, 2213, 86, 86, 86, 2209, 2222,
- 86, 86, 2215, 2216, 2217, 86, 2219, 86, 2225, 2218,
- 86, 86, 2226, 2220, 86, 86, 2221, 2223, 2227, 86,
- 2224, 2231, 86, 2228, 86, 2229, 2232, 2234, 86, 2230,
- 86, 2237, 86, 86, 2238, 86, 86, 2233, 86, 2235,
- 86, 2240, 86, 2243, 2244, 86, 2245, 86, 2236, 86,
-
- 2247, 86, 86, 86, 86, 86, 2241, 86, 2239, 2252,
- 2242, 86, 2249, 2250, 86, 86, 2256, 86, 86, 2246,
- 86, 86, 86, 2254, 86, 86, 2251, 2248, 2255, 2259,
- 2253, 86, 2262, 2260, 86, 2258, 2263, 86, 2266, 2257,
- 86, 86, 2268, 2271, 86, 2267, 86, 2261, 86, 86,
- 2265, 2264, 86, 2270, 2272, 86, 2274, 2275, 86, 86,
- 86, 2269, 86, 86, 2276, 86, 86, 86, 86, 2277,
- 86, 2281, 86, 86, 2273, 2283, 86, 2286, 2278, 86,
- 86, 2287, 2282, 2289, 2284, 2279, 2280, 86, 86, 86,
- 86, 2288, 86, 86, 2292, 86, 86, 2297, 86, 2285,
-
- 2290, 2296, 86, 2291, 86, 86, 3815, 86, 86, 2303,
- 2293, 2302, 2294, 2306, 86, 2295, 86, 86, 86, 2298,
- 2300, 2299, 2304, 2301, 86, 86, 2305, 2307, 2308, 2311,
- 86, 86, 86, 86, 86, 86, 2309, 86, 2315, 86,
- 86, 2310, 2319, 86, 86, 86, 2313, 3815, 86, 2322,
- 2324, 86, 2312, 2314, 86, 2316, 2323, 2317, 2320, 2318,
- 2321, 86, 2325, 86, 86, 2328, 86, 2326, 86, 86,
- 2329, 2332, 86, 2327, 2331, 2333, 86, 2334, 2336, 2337,
- 86, 86, 2335, 86, 86, 86, 2330, 86, 86, 2341,
- 86, 86, 2339, 2340, 2338, 86, 86, 86, 86, 2345,
-
- 2342, 2343, 2344, 2347, 2349, 2346, 2350, 86, 86, 86,
- 86, 171, 86, 2348, 86, 2351, 2353, 86, 86, 2358,
- 86, 86, 86, 2357, 2354, 2359, 2355, 86, 2352, 86,
- 2360, 2361, 86, 2362, 86, 86, 2356, 2365, 86, 86,
- 2367, 2364, 2363, 86, 2366, 2368, 86, 86, 2371, 86,
- 86, 86, 2370, 2372, 86, 2369, 86, 2375, 2373, 86,
- 86, 86, 86, 2374, 2379, 86, 2378, 86, 86, 86,
- 86, 2376, 2377, 2381, 2382, 86, 2380, 86, 2383, 2384,
- 86, 86, 2385, 86, 86, 2391, 2386, 2389, 2387, 2390,
- 86, 86, 86, 86, 86, 86, 86, 86, 86, 2396,
-
- 2388, 2393, 86, 86, 2402, 2399, 2400, 86, 2392, 2395,
- 2397, 2394, 2398, 86, 86, 86, 2403, 86, 2408, 86,
- 2406, 86, 2401, 86, 2409, 2404, 86, 86, 2415, 86,
- 2407, 86, 86, 86, 86, 2405, 86, 2417, 86, 2410,
- 2418, 86, 2411, 2412, 2413, 2414, 86, 2419, 86, 2416,
- 2421, 86, 2423, 86, 2422, 86, 2424, 86, 2427, 2420,
- 86, 86, 86, 2426, 86, 86, 86, 2432, 2429, 86,
- 2433, 2425, 86, 86, 2428, 86, 86, 86, 2434, 86,
- 86, 86, 86, 86, 2430, 2431, 86, 2436, 2437, 2441,
- 86, 2439, 2438, 2435, 86, 2443, 2442, 2453, 86, 2440,
-
- 2444, 86, 2452, 2450, 86, 2445, 2446, 2447, 86, 2451,
- 2448, 86, 2454, 86, 2456, 86, 86, 86, 2457, 2460,
- 86, 2459, 86, 2449, 86, 86, 86, 2462, 2455, 86,
- 86, 2463, 86, 86, 2464, 2458, 86, 2471, 2461, 2466,
- 86, 2467, 2468, 86, 2465, 86, 86, 2473, 2475, 86,
- 86, 2469, 86, 2470, 86, 86, 2472, 2477, 86, 86,
- 2474, 2478, 86, 2479, 86, 2484, 86, 2480, 86, 86,
- 86, 86, 2481, 2482, 2485, 86, 2476, 2488, 2490, 2486,
- 2487, 86, 2489, 86, 2483, 86, 2494, 86, 86, 2495,
- 86, 86, 86, 2499, 2491, 2492, 86, 2493, 86, 86,
-
- 86, 2496, 2501, 2500, 2503, 86, 2497, 2506, 86, 86,
- 86, 86, 2498, 2504, 2502, 86, 2508, 86, 2509, 86,
- 86, 2505, 86, 2507, 86, 2511, 2513, 2512, 2510, 86,
- 86, 2516, 2518, 2514, 86, 86, 2515, 2519, 86, 3815,
- 86, 86, 86, 86, 2521, 86, 2520, 2525, 86, 86,
- 2526, 2517, 2522, 86, 2523, 2524, 86, 2528, 2531, 86,
- 86, 2527, 2530, 86, 86, 86, 86, 86, 86, 2529,
- 86, 2539, 86, 86, 2532, 3815, 86, 86, 2533, 2540,
- 2535, 2534, 2537, 86, 2541, 2538, 86, 86, 2543, 86,
- 2536, 2544, 86, 2542, 2546, 2547, 2545, 86, 2549, 86,
-
- 2550, 86, 86, 2555, 86, 86, 2557, 86, 2548, 86,
- 86, 2554, 2551, 86, 2556, 86, 86, 2552, 2561, 2560,
- 86, 171, 2564, 86, 86, 2566, 2553, 2558, 86, 2559,
- 2567, 86, 2568, 2562, 2569, 2563, 86, 86, 86, 2570,
- 86, 2573, 86, 2565, 2572, 2571, 2574, 86, 86, 2575,
- 86, 2578, 2579, 86, 86, 2580, 86, 86, 2583, 86,
- 86, 86, 2581, 2576, 86, 2585, 86, 2586, 2587, 86,
- 2589, 2584, 86, 86, 2577, 2582, 86, 2588, 86, 2591,
- 86, 2593, 2590, 86, 2592, 86, 86, 86, 2595, 86,
- 86, 86, 2598, 86, 86, 2604, 86, 86, 2594, 2602,
-
- 86, 2597, 86, 86, 2605, 86, 2600, 2599, 2596, 86,
- 2607, 2601, 2606, 86, 86, 2603, 86, 86, 86, 86,
- 2608, 2613, 2616, 86, 86, 2611, 86, 2610, 86, 2609,
- 2614, 86, 2617, 2612, 86, 86, 2615, 86, 2618, 86,
- 86, 86, 2627, 2628, 86, 2619, 86, 2620, 86, 86,
- 2629, 86, 2625, 86, 2621, 86, 2623, 2630, 2622, 2632,
- 2624, 86, 2626, 2633, 86, 2631, 2634, 2635, 86, 2636,
- 86, 86, 86, 2637, 86, 86, 2642, 2643, 86, 2639,
- 86, 86, 2644, 86, 2638, 3815, 2640, 2641, 2645, 86,
- 86, 86, 2649, 2651, 86, 2650, 2646, 86, 2647, 86,
-
- 2652, 86, 2654, 2648, 86, 2657, 86, 2658, 86, 86,
- 86, 86, 2653, 2655, 2659, 2660, 2656, 86, 86, 2664,
- 86, 2665, 86, 86, 2667, 86, 86, 2669, 86, 86,
- 2663, 2661, 86, 86, 2671, 2672, 86, 2662, 2673, 86,
- 86, 86, 2666, 86, 2668, 86, 2676, 2670, 2678, 86,
- 2675, 86, 2680, 86, 2674, 2682, 86, 86, 2681, 86,
- 2677, 2684, 86, 86, 86, 2679, 86, 86, 2686, 2688,
- 2687, 86, 2689, 2691, 86, 86, 2683, 2685, 86, 86,
- 2694, 86, 2697, 86, 86, 2698, 2692, 2690, 86, 86,
- 2693, 86, 86, 86, 2695, 2704, 86, 2703, 86, 86,
-
- 2696, 86, 86, 2700, 2699, 86, 2706, 2702, 86, 2707,
- 86, 2709, 2701, 86, 2708, 2711, 86, 2705, 86, 86,
- 2713, 86, 2712, 86, 86, 2710, 2715, 86, 2719, 86,
- 86, 2721, 2714, 2720, 2725, 86, 2717, 2716, 2722, 86,
- 86, 86, 2726, 86, 2727, 86, 2728, 86, 2729, 2718,
- 86, 86, 86, 2723, 86, 2724, 2734, 86, 86, 86,
- 2731, 2733, 2736, 2737, 2738, 86, 86, 2740, 2741, 86,
- 2730, 2732, 2744, 86, 86, 86, 86, 86, 86, 86,
- 2735, 2739, 2745, 86, 2743, 86, 2742, 86, 2746, 2748,
- 2749, 86, 86, 86, 2751, 86, 86, 2756, 86, 2750,
-
- 2747, 2752, 2753, 86, 2754, 2755, 2757, 86, 86, 86,
- 2762, 2758, 86, 2763, 86, 2764, 2759, 2761, 2760, 86,
- 86, 86, 2767, 2765, 86, 171, 86, 86, 86, 2766,
- 2768, 2773, 86, 86, 86, 86, 86, 2775, 86, 2776,
- 86, 86, 2771, 2772, 2769, 86, 2770, 2777, 2774, 86,
- 86, 86, 2778, 2779, 2781, 2782, 2847, 2780, 2785, 86,
- 2783, 2784, 2786, 86, 86, 2787, 2788, 86, 86, 86,
- 2791, 2789, 2792, 86, 2790, 86, 86, 86, 86, 2794,
- 86, 86, 2793, 86, 2796, 86, 86, 2800, 2801, 2795,
- 86, 2798, 86, 2797, 86, 2803, 86, 86, 86, 86,
-
- 2804, 2805, 2806, 86, 2799, 86, 2802, 86, 2809, 86,
- 2807, 86, 2808, 2813, 86, 2812, 86, 2811, 2810, 86,
- 86, 86, 86, 86, 2815, 86, 86, 86, 2823, 2814,
- 2820, 86, 2822, 86, 86, 86, 2825, 2819, 86, 2824,
- 2816, 2817, 2818, 86, 2826, 2821, 86, 86, 86, 2827,
- 2832, 86, 2830, 86, 86, 86, 2836, 2828, 2835, 3815,
- 86, 2837, 86, 86, 86, 2829, 2833, 86, 2838, 2831,
- 86, 2834, 2839, 2840, 86, 86, 2843, 2841, 86, 86,
- 2845, 2844, 86, 86, 86, 2846, 2848, 86, 2842, 86,
- 2850, 2851, 2852, 86, 2854, 86, 86, 86, 86, 2856,
-
- 86, 86, 86, 86, 86, 2853, 2855, 86, 2860, 86,
- 2849, 86, 86, 3815, 2857, 2858, 86, 2864, 2859, 2866,
- 86, 2865, 2867, 86, 86, 2862, 86, 2868, 86, 2869,
- 2861, 86, 2863, 86, 86, 2870, 2873, 86, 86, 86,
- 2871, 2875, 2878, 86, 86, 86, 86, 2874, 2872, 2876,
- 2882, 2877, 2881, 86, 2880, 86, 86, 2885, 86, 86,
- 2879, 86, 2886, 2887, 86, 86, 86, 2892, 86, 86,
- 2884, 2883, 2893, 86, 2894, 86, 86, 86, 86, 86,
- 86, 2899, 2898, 2888, 2889, 2890, 2891, 2896, 86, 2897,
- 86, 86, 86, 2895, 2900, 2903, 86, 2907, 86, 86,
-
- 86, 86, 2901, 2902, 2906, 2909, 86, 2910, 86, 2911,
- 86, 86, 2904, 2912, 86, 2908, 2905, 86, 86, 2913,
- 86, 2916, 86, 2915, 86, 2917, 86, 2918, 86, 2914,
- 86, 86, 3815, 86, 2919, 2923, 2925, 86, 86, 2927,
- 86, 86, 2921, 2928, 86, 2930, 86, 86, 2920, 2924,
- 86, 2922, 2929, 86, 86, 86, 86, 2926, 86, 2931,
- 2932, 2935, 2933, 2938, 86, 2940, 86, 86, 86, 86,
- 86, 86, 86, 171, 2934, 2936, 2939, 86, 2937, 86,
- 86, 2947, 86, 2943, 86, 2948, 2945, 86, 2949, 2942,
- 86, 2950, 86, 86, 2941, 2944, 2955, 86, 2953, 2946,
-
- 86, 86, 3815, 2957, 86, 2951, 2954, 2952, 86, 2959,
- 2961, 86, 86, 2960, 86, 2958, 2956, 2962, 86, 86,
- 2963, 86, 2964, 86, 2965, 2967, 86, 86, 86, 86,
- 2966, 86, 86, 86, 86, 86, 86, 86, 2976, 86,
- 86, 86, 2969, 2974, 3815, 2968, 2992, 2971, 2970, 86,
- 2980, 2978, 2973, 2972, 86, 2975, 86, 2977, 2979, 86,
- 2981, 2982, 86, 2984, 86, 2986, 86, 86, 2983, 2988,
- 86, 86, 86, 2985, 86, 86, 2987, 2989, 86, 86,
- 86, 86, 3000, 86, 86, 2998, 3815, 86, 86, 2990,
- 2991, 2996, 2994, 2993, 2999, 3001, 86, 2995, 86, 2997,
-
- 86, 86, 3005, 86, 3002, 3007, 3003, 3004, 3006, 86,
- 86, 86, 86, 86, 86, 86, 3008, 86, 3009, 3013,
- 3014, 86, 86, 86, 86, 3010, 3815, 3012, 86, 86,
- 86, 3011, 3022, 86, 3018, 3015, 86, 3016, 3021, 3019,
- 3023, 86, 3017, 86, 3020, 3024, 3025, 86, 3026, 86,
- 86, 86, 86, 86, 86, 3028, 86, 3031, 3027, 3033,
- 86, 86, 3029, 86, 86, 86, 3038, 3039, 86, 86,
- 86, 3030, 86, 3032, 3042, 86, 3034, 86, 86, 3035,
- 3040, 3036, 3037, 3043, 86, 3044, 86, 3041, 3045, 86,
- 3049, 86, 3046, 3047, 86, 3048, 3050, 86, 3053, 86,
-
- 86, 86, 86, 86, 3051, 86, 3058, 86, 86, 3052,
- 86, 3056, 86, 3059, 3061, 86, 3062, 3060, 3063, 86,
- 3054, 3055, 3065, 86, 86, 3057, 86, 86, 86, 3066,
- 86, 3064, 3071, 86, 86, 3067, 86, 3073, 86, 86,
- 3069, 3076, 86, 3068, 86, 86, 86, 3074, 3083, 86,
- 3070, 86, 86, 86, 86, 3072, 86, 3077, 3078, 3079,
- 3080, 3075, 3081, 3082, 3086, 86, 86, 86, 86, 86,
- 86, 3085, 3084, 3087, 3088, 3090, 86, 86, 86, 86,
- 3089, 86, 86, 86, 3091, 3094, 3092, 3093, 3096, 86,
- 86, 3099, 86, 86, 3095, 3097, 3098, 3100, 86, 86,
-
- 3104, 3102, 3103, 171, 3101, 86, 86, 3106, 3108, 3815,
- 3105, 86, 86, 3110, 86, 86, 3109, 86, 3113, 86,
- 3114, 86, 3112, 86, 3107, 3116, 86, 3118, 86, 86,
- 3111, 3117, 3119, 86, 3120, 86, 3115, 86, 3123, 86,
- 3121, 86, 86, 3124, 86, 86, 3125, 86, 86, 86,
- 3130, 3122, 3131, 86, 3126, 3128, 86, 3127, 86, 86,
- 3135, 3133, 3134, 86, 3132, 86, 86, 86, 86, 3129,
- 3136, 3137, 3139, 86, 86, 86, 86, 86, 3138, 3140,
- 3141, 86, 86, 3146, 86, 86, 3144, 86, 86, 3143,
- 3145, 3142, 3148, 3147, 86, 3151, 86, 86, 86, 3149,
-
- 86, 86, 3152, 3150, 3157, 86, 3153, 86, 86, 86,
- 3162, 86, 86, 86, 3158, 86, 86, 3154, 3155, 3156,
- 3160, 3161, 3166, 86, 3164, 86, 86, 3159, 3163, 86,
- 86, 3165, 3171, 86, 3170, 86, 3173, 3174, 86, 3177,
- 86, 3168, 86, 86, 3167, 86, 3178, 86, 86, 3169,
- 86, 86, 86, 86, 86, 86, 3179, 3175, 3176, 3181,
- 3172, 3182, 3184, 86, 3183, 86, 3185, 86, 86, 3186,
- 3190, 3187, 3189, 86, 86, 3180, 86, 3191, 3193, 86,
- 86, 3188, 3195, 86, 3196, 86, 3197, 86, 86, 86,
- 86, 86, 3192, 3198, 86, 3199, 86, 3200, 3201, 86,
-
- 86, 3203, 3205, 3194, 86, 86, 3204, 3206, 86, 86,
- 3815, 3202, 3207, 86, 3211, 3212, 86, 3213, 86, 3214,
- 86, 86, 86, 86, 3208, 3209, 3215, 3218, 86, 3210,
- 86, 86, 3221, 86, 3216, 3217, 86, 3222, 3223, 86,
- 86, 3225, 86, 86, 86, 86, 3229, 86, 3219, 3230,
- 86, 3220, 86, 86, 3232, 3224, 3226, 3231, 86, 3228,
- 86, 3234, 3227, 3233, 86, 86, 3235, 86, 86, 3240,
- 3236, 86, 86, 86, 3239, 86, 3242, 3243, 86, 86,
- 86, 86, 86, 3246, 3237, 3238, 3244, 3245, 86, 86,
- 3249, 3248, 86, 86, 86, 86, 3241, 3252, 3247, 3250,
-
- 3251, 3256, 86, 86, 86, 86, 86, 3258, 86, 3255,
- 86, 3253, 3268, 86, 3254, 3259, 3262, 3257, 3263, 3260,
- 86, 3265, 86, 3264, 86, 3261, 3266, 86, 86, 3267,
- 86, 3269, 86, 3270, 86, 3271, 86, 3272, 86, 3273,
- 86, 86, 3276, 86, 3274, 3275, 3277, 86, 86, 86,
- 3278, 86, 3280, 86, 3282, 86, 86, 3279, 3287, 86,
- 3283, 3288, 86, 86, 86, 86, 3289, 3281, 3291, 86,
- 86, 3292, 86, 3284, 3815, 3285, 3286, 3293, 86, 3290,
- 3295, 86, 3297, 86, 86, 3296, 3299, 86, 3294, 3298,
- 86, 86, 3302, 86, 86, 86, 86, 3306, 86, 3300,
-
- 3301, 3307, 86, 3303, 3304, 86, 86, 86, 86, 3308,
- 86, 86, 3314, 86, 3305, 3309, 86, 3315, 86, 3311,
- 86, 86, 3317, 86, 3318, 3312, 3310, 86, 3320, 3316,
- 86, 3313, 3321, 86, 3323, 86, 3319, 86, 86, 3327,
- 86, 3322, 3328, 86, 3324, 86, 3330, 86, 86, 86,
- 86, 86, 86, 86, 3329, 3333, 3326, 3336, 3334, 3331,
- 86, 86, 3325, 86, 86, 3337, 3339, 86, 3341, 3340,
- 86, 3335, 86, 3332, 86, 86, 86, 3343, 3815, 3342,
- 86, 3338, 86, 3346, 3348, 86, 3347, 3344, 86, 3345,
- 3349, 86, 3350, 86, 86, 86, 3352, 3351, 3355, 3353,
-
- 3354, 86, 86, 86, 86, 86, 3356, 3357, 3358, 86,
- 86, 86, 3359, 3364, 86, 3360, 3362, 3366, 86, 86,
- 86, 86, 86, 86, 3367, 86, 3361, 3368, 3363, 86,
- 3369, 86, 3370, 86, 3375, 86, 86, 86, 3372, 3365,
- 3371, 86, 86, 86, 3373, 86, 3379, 86, 86, 3376,
- 3377, 86, 3380, 3374, 3378, 86, 3383, 86, 86, 3387,
- 3384, 3381, 86, 86, 86, 86, 3382, 3391, 86, 3392,
- 86, 3385, 3388, 3394, 86, 86, 86, 3386, 3395, 86,
- 3389, 3397, 3398, 86, 3393, 3399, 86, 86, 3396, 86,
- 3390, 3401, 86, 86, 86, 86, 86, 3400, 3404, 86,
-
- 3406, 3407, 86, 3402, 86, 3403, 3410, 86, 3409, 86,
- 3405, 86, 86, 3412, 86, 86, 3408, 86, 3414, 3418,
- 86, 86, 3419, 3415, 86, 3421, 3413, 3411, 86, 3422,
- 3416, 86, 86, 3417, 86, 3425, 86, 3426, 86, 86,
- 86, 3420, 3429, 86, 86, 86, 86, 86, 86, 86,
- 86, 3434, 3450, 3432, 3423, 3427, 3431, 86, 86, 3428,
- 3424, 3436, 3430, 3438, 86, 86, 3433, 3435, 3440, 86,
- 3437, 86, 3441, 3439, 86, 3442, 86, 86, 3445, 3446,
- 86, 3448, 86, 3443, 86, 3447, 86, 86, 3451, 86,
- 86, 3452, 3454, 86, 86, 3449, 3444, 86, 86, 3457,
-
- 86, 86, 86, 86, 3462, 86, 3458, 86, 86, 3453,
- 3455, 3456, 3466, 86, 86, 3459, 3461, 3465, 3467, 86,
- 3815, 3463, 86, 3464, 3468, 86, 3460, 3469, 3470, 86,
- 3472, 86, 3473, 86, 3471, 3474, 86, 86, 3476, 86,
- 86, 86, 3479, 86, 86, 86, 3475, 86, 86, 3480,
- 3481, 86, 86, 3477, 3483, 86, 3484, 86, 86, 3482,
- 86, 86, 3490, 86, 3485, 3491, 86, 3478, 86, 3486,
- 86, 86, 86, 86, 3487, 3497, 86, 3488, 3498, 86,
- 86, 3496, 3489, 86, 3494, 86, 86, 3493, 3501, 3492,
- 3499, 3495, 86, 3502, 86, 86, 86, 3504, 3500, 86,
-
- 3505, 3509, 3503, 3507, 86, 3511, 3506, 3508, 86, 86,
- 86, 86, 86, 3510, 3514, 86, 86, 3515, 3513, 86,
- 3516, 3512, 86, 86, 3517, 86, 86, 86, 86, 86,
- 3520, 86, 86, 3522, 86, 86, 3523, 86, 3521, 86,
- 86, 86, 3518, 3519, 86, 3532, 3533, 86, 3524, 3815,
- 3528, 3525, 3526, 3527, 3529, 3530, 3535, 86, 86, 3815,
- 3531, 86, 86, 3536, 3534, 86, 86, 3537, 3538, 86,
- 3539, 3540, 86, 3541, 86, 86, 3543, 3544, 86, 3542,
- 86, 3547, 86, 86, 3561, 3545, 3549, 86, 3546, 3550,
- 3551, 86, 86, 3552, 3553, 3557, 86, 86, 3548, 3554,
-
- 86, 3555, 3556, 86, 86, 86, 3559, 86, 3558, 3560,
- 86, 3563, 86, 86, 3564, 86, 86, 3568, 86, 3562,
- 86, 3567, 86, 86, 86, 86, 86, 3565, 86, 3573,
- 86, 3572, 86, 3635, 86, 3566, 86, 3574, 3569, 3577,
- 86, 3575, 3570, 3578, 86, 3579, 86, 3580, 3571, 86,
- 3576, 3581, 86, 3582, 86, 3583, 86, 86, 3587, 3589,
- 86, 3584, 86, 3588, 86, 86, 3585, 86, 86, 3586,
- 86, 3815, 3593, 3594, 3590, 3591, 3596, 86, 3597, 86,
- 3599, 86, 86, 3592, 86, 3598, 3600, 86, 86, 3595,
- 3603, 86, 86, 3602, 3605, 86, 86, 3601, 86, 3608,
-
- 86, 3609, 86, 3610, 86, 3606, 3604, 3611, 86, 3612,
- 86, 3613, 86, 3614, 86, 86, 3607, 3615, 86, 86,
- 3618, 86, 3619, 86, 86, 86, 86, 86, 3617, 3624,
- 86, 86, 86, 3620, 3626, 86, 86, 3621, 86, 86,
- 86, 3616, 3623, 86, 3630, 86, 3622, 3627, 86, 3628,
- 3625, 3629, 3631, 86, 3640, 3632, 3633, 86, 86, 3637,
- 86, 86, 86, 3634, 3636, 3639, 3638, 86, 86, 86,
- 86, 86, 3642, 86, 86, 3641, 86, 3646, 3648, 86,
- 3650, 86, 3647, 86, 86, 3645, 86, 3643, 3644, 3653,
- 86, 3649, 86, 3654, 3656, 86, 3657, 86, 86, 3655,
-
- 3658, 86, 86, 3652, 3659, 86, 86, 3651, 86, 86,
- 3662, 3661, 86, 86, 86, 3660, 86, 3670, 3663, 3667,
- 86, 86, 3664, 3666, 86, 86, 3668, 86, 3669, 86,
- 86, 86, 3665, 3671, 86, 86, 86, 86, 86, 3677,
- 3672, 3679, 86, 3673, 86, 3674, 3676, 3678, 86, 3681,
- 3684, 86, 3675, 3682, 86, 3680, 86, 3683, 3687, 3686,
- 3689, 86, 3685, 86, 3691, 86, 86, 3692, 3693, 86,
- 3694, 86, 3690, 86, 86, 86, 3688, 86, 3697, 86,
- 86, 86, 3698, 3702, 3699, 86, 86, 86, 86, 86,
- 3706, 86, 3695, 3705, 3696, 86, 3701, 86, 3704, 3703,
-
- 3708, 86, 3709, 86, 86, 3700, 86, 3707, 3710, 86,
- 3711, 86, 3712, 86, 3713, 3714, 86, 3717, 86, 3715,
- 86, 3718, 86, 3721, 3716, 3722, 86, 86, 86, 86,
- 3719, 86, 3720, 86, 3727, 86, 3728, 86, 3726, 86,
- 3723, 3724, 86, 86, 86, 86, 3725, 86, 3732, 86,
- 86, 86, 3734, 86, 86, 86, 86, 3731, 86, 3739,
- 3729, 3740, 3730, 3736, 3737, 3733, 3741, 86, 3735, 86,
- 3745, 86, 3738, 86, 3747, 3742, 3743, 86, 3746, 86,
- 86, 86, 3748, 3753, 3749, 86, 86, 86, 3744, 86,
- 3750, 3751, 3754, 86, 86, 86, 3752, 3756, 86, 3755,
-
- 86, 86, 3759, 86, 3757, 3762, 3758, 86, 86, 86,
- 3765, 86, 3766, 86, 86, 86, 86, 86, 86, 3769,
- 3760, 3764, 3761, 86, 3767, 86, 3763, 3768, 86, 3773,
- 3774, 3772, 86, 86, 3777, 3770, 3771, 86, 86, 3779,
- 86, 3780, 86, 86, 86, 3775, 86, 3781, 86, 3776,
- 3782, 3784, 86, 3785, 86, 86, 3778, 3786, 3787, 86,
- 86, 3788, 86, 3783, 86, 3790, 86, 3789, 86, 3791,
- 3793, 86, 86, 3795, 86, 86, 86, 3796, 86, 3799,
- 86, 3792, 3800, 86, 86, 3794, 86, 3803, 3804, 86,
- 86, 3805, 86, 3797, 3798, 3801, 3806, 86, 86, 3802,
-
- 3807, 86, 86, 86, 3815, 3808, 3815, 3809, 3810, 3811,
- 3815, 3812, 3813, 86, 3814, 86, 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, 3815, 89, 89,
- 89, 89, 161, 161, 3815, 3815, 3815, 161, 161, 163,
- 163, 3815, 3815, 163, 3815, 163, 165, 3815, 3815, 3815,
- 3815, 3815, 165, 168, 168, 3815, 3815, 3815, 168, 168,
-
- 170, 3815, 3815, 3815, 3815, 3815, 170, 172, 172, 3815,
- 172, 172, 172, 172, 175, 3815, 3815, 3815, 3815, 3815,
- 175, 178, 178, 3815, 3815, 3815, 178, 178, 90, 90,
- 3815, 90, 90, 90, 90, 17, 3815, 3815, 3815, 3815,
- 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815,
- 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815,
- 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815,
- 3815, 3815, 3815, 3815, 3815, 3815
+ 40, 41, 42, 43, 44, 45, 46, 18, 18, 47,
+ 49, 50, 51, 49, 50, 51, 54, 55, 54, 55,
+ 56, 52, 56, 86, 52, 86, 86, 57, 86, 57,
+ 59, 60, 61, 62, 86, 22, 59, 60, 61, 62,
+ 87, 22, 63, 65, 66, 67, 87, 99, 63, 65,
+ 66, 67, 88, 87, 68, 121, 89, 110, 86, 87,
+ 68, 19, 20, 21, 70, 71, 72, 76, 77, 78,
+
+ 79, 87, 22, 73, 123, 87, 122, 111, 87, 80,
+ 87, 161, 74, 19, 20, 21, 70, 71, 72, 76,
+ 77, 78, 79, 191, 22, 73, 82, 83, 84, 132,
+ 91, 80, 91, 91, 74, 91, 173, 85, 82, 83,
+ 84, 91, 92, 87, 100, 87, 112, 87, 114, 85,
+ 87, 101, 87, 93, 94, 102, 115, 95, 103, 87,
+ 113, 87, 96, 117, 97, 238, 118, 116, 87, 87,
+ 158, 98, 87, 119, 159, 120, 162, 104, 160, 87,
+ 124, 105, 139, 87, 106, 87, 107, 108, 125, 154,
+ 87, 128, 163, 163, 126, 129, 87, 109, 127, 155,
+
+ 87, 140, 186, 156, 157, 141, 173, 165, 185, 130,
+ 165, 131, 87, 133, 87, 142, 143, 134, 144, 145,
+ 176, 135, 146, 87, 150, 87, 151, 136, 182, 147,
+ 137, 170, 170, 148, 149, 152, 87, 138, 180, 180,
+ 167, 153, 167, 167, 91, 167, 91, 91, 172, 91,
+ 172, 172, 177, 172, 177, 177, 175, 177, 86, 288,
+ 86, 86, 88, 86, 87, 91, 89, 91, 91, 86,
+ 91, 87, 87, 87, 87, 183, 91, 92, 87, 184,
+ 87, 188, 192, 189, 187, 87, 87, 87, 193, 194,
+ 87, 195, 87, 87, 202, 87, 190, 196, 87, 197,
+
+ 87, 87, 87, 205, 198, 199, 87, 204, 173, 200,
+ 207, 201, 206, 203, 87, 214, 87, 208, 209, 211,
+ 212, 215, 87, 221, 87, 210, 213, 217, 216, 87,
+ 218, 87, 87, 87, 87, 87, 226, 224, 87, 87,
+ 227, 87, 232, 219, 220, 87, 233, 87, 222, 231,
+ 223, 87, 236, 229, 234, 87, 228, 225, 230, 240,
+ 237, 235, 87, 87, 87, 87, 87, 239, 242, 87,
+ 87, 248, 87, 87, 244, 87, 87, 87, 245, 250,
+ 241, 243, 87, 87, 246, 247, 249, 253, 251, 87,
+ 259, 260, 256, 87, 252, 255, 87, 87, 268, 254,
+
+ 261, 87, 263, 257, 270, 262, 87, 258, 87, 87,
+ 87, 87, 272, 266, 87, 269, 276, 87, 87, 264,
+ 275, 273, 265, 279, 267, 271, 277, 87, 87, 163,
+ 163, 165, 87, 274, 165, 278, 280, 283, 167, 181,
+ 167, 167, 281, 167, 170, 170, 172, 87, 172, 172,
+ 91, 172, 91, 91, 173, 91, 177, 282, 177, 177,
+ 284, 177, 175, 180, 180, 286, 87, 87, 87, 87,
+ 87, 87, 87, 87, 87, 285, 289, 87, 292, 295,
+ 291, 87, 287, 290, 87, 87, 87, 294, 297, 299,
+ 293, 302, 179, 296, 298, 87, 300, 87, 303, 305,
+
+ 304, 87, 306, 318, 87, 87, 301, 307, 87, 87,
+ 314, 87, 309, 315, 316, 87, 319, 310, 87, 317,
+ 87, 87, 311, 320, 308, 323, 87, 321, 312, 313,
+ 325, 87, 87, 87, 87, 87, 178, 326, 87, 87,
+ 87, 322, 87, 87, 333, 87, 87, 334, 328, 327,
+ 329, 340, 330, 87, 324, 331, 332, 87, 335, 342,
+ 343, 336, 87, 337, 345, 341, 87, 87, 344, 355,
+ 87, 87, 347, 348, 349, 338, 346, 339, 87, 350,
+ 87, 353, 356, 352, 87, 87, 87, 87, 87, 354,
+ 357, 358, 361, 87, 351, 359, 87, 87, 87, 87,
+
+ 360, 87, 87, 87, 87, 363, 87, 87, 365, 362,
+ 87, 87, 87, 87, 369, 371, 366, 87, 376, 87,
+ 370, 364, 372, 377, 87, 367, 373, 87, 368, 87,
+ 87, 380, 375, 374, 378, 382, 87, 379, 87, 386,
+ 87, 87, 87, 87, 87, 87, 389, 388, 87, 385,
+ 87, 87, 381, 392, 383, 384, 87, 391, 393, 87,
+ 387, 87, 390, 395, 87, 397, 87, 394, 396, 87,
+ 87, 398, 399, 87, 400, 402, 87, 87, 403, 173,
+ 87, 87, 407, 87, 405, 87, 406, 87, 87, 87,
+ 415, 408, 87, 410, 412, 404, 87, 414, 401, 416,
+
+ 87, 87, 409, 87, 419, 87, 417, 411, 418, 87,
+ 87, 413, 87, 87, 87, 420, 87, 87, 87, 427,
+ 173, 428, 423, 421, 425, 87, 87, 87, 424, 429,
+ 422, 87, 430, 87, 431, 432, 87, 434, 87, 87,
+ 435, 87, 426, 87, 433, 87, 437, 87, 87, 87,
+ 439, 87, 440, 87, 87, 444, 459, 436, 441, 446,
+ 438, 87, 442, 448, 87, 87, 447, 87, 445, 87,
+ 443, 449, 87, 451, 87, 453, 454, 87, 87, 452,
+ 87, 87, 87, 87, 87, 460, 87, 87, 450, 461,
+ 87, 463, 87, 87, 466, 87, 457, 456, 462, 87,
+
+ 87, 455, 468, 87, 458, 471, 472, 87, 87, 464,
+ 465, 87, 470, 467, 87, 87, 481, 87, 490, 469,
+ 473, 87, 483, 87, 87, 474, 493, 494, 87, 495,
+ 475, 87, 482, 476, 496, 87, 491, 87, 477, 478,
+ 479, 480, 87, 492, 607, 484, 497, 485, 87, 87,
+ 87, 498, 499, 87, 500, 87, 87, 501, 87, 486,
+ 487, 488, 87, 489, 87, 502, 87, 506, 508, 87,
+ 503, 507, 87, 504, 505, 87, 510, 509, 87, 511,
+ 87, 513, 87, 87, 87, 514, 87, 519, 87, 512,
+ 87, 87, 87, 87, 515, 87, 520, 525, 521, 526,
+
+ 538, 518, 516, 87, 517, 87, 87, 522, 524, 580,
+ 87, 527, 171, 87, 523, 528, 530, 532, 531, 533,
+ 87, 529, 540, 534, 87, 87, 87, 539, 87, 541,
+ 87, 87, 87, 87, 556, 87, 535, 542, 173, 536,
+ 87, 537, 87, 543, 555, 544, 87, 87, 558, 649,
+ 559, 545, 557, 87, 560, 546, 561, 87, 87, 579,
+ 547, 563, 576, 548, 87, 549, 573, 550, 87, 574,
+ 87, 87, 562, 572, 575, 87, 87, 577, 87, 582,
+ 551, 87, 87, 552, 578, 553, 584, 554, 87, 87,
+ 564, 565, 87, 581, 87, 583, 87, 169, 87, 585,
+
+ 566, 567, 568, 569, 570, 589, 87, 571, 586, 587,
+ 588, 87, 87, 87, 593, 590, 599, 591, 594, 87,
+ 87, 595, 87, 87, 596, 597, 87, 600, 598, 87,
+ 87, 87, 605, 87, 87, 592, 87, 87, 87, 608,
+ 87, 602, 87, 601, 87, 604, 609, 610, 603, 87,
+ 87, 87, 87, 616, 615, 653, 611, 612, 606, 87,
+ 613, 87, 624, 87, 617, 87, 614, 618, 619, 87,
+ 87, 625, 87, 621, 622, 87, 87, 87, 626, 87,
+ 640, 87, 642, 87, 671, 620, 87, 87, 627, 623,
+ 629, 630, 631, 628, 87, 87, 641, 87, 643, 87,
+
+ 646, 645, 87, 632, 644, 633, 87, 87, 647, 87,
+ 87, 634, 656, 648, 87, 650, 168, 651, 660, 635,
+ 636, 87, 652, 637, 638, 654, 87, 639, 87, 87,
+ 657, 658, 87, 655, 87, 87, 87, 87, 87, 659,
+ 87, 663, 87, 664, 87, 665, 87, 661, 87, 87,
+ 87, 87, 667, 666, 87, 673, 662, 87, 87, 674,
+ 670, 675, 668, 676, 669, 87, 677, 87, 87, 680,
+ 672, 87, 678, 87, 682, 87, 683, 87, 87, 679,
+ 87, 87, 87, 87, 87, 685, 87, 87, 689, 696,
+ 687, 87, 87, 681, 684, 87, 87, 166, 691, 686,
+
+ 698, 87, 87, 688, 690, 692, 87, 693, 700, 694,
+ 697, 699, 695, 87, 87, 702, 87, 87, 701, 87,
+ 705, 87, 87, 709, 703, 87, 87, 704, 712, 87,
+ 87, 708, 87, 706, 87, 711, 707, 87, 87, 87,
+ 714, 87, 715, 718, 87, 710, 87, 87, 87, 720,
+ 87, 717, 713, 722, 87, 87, 87, 87, 719, 87,
+ 716, 721, 87, 723, 87, 87, 737, 725, 87, 724,
+ 87, 726, 736, 739, 744, 734, 727, 735, 728, 87,
+ 87, 740, 164, 738, 729, 745, 730, 87, 87, 731,
+ 732, 741, 87, 742, 87, 747, 733, 743, 748, 87,
+
+ 750, 749, 87, 87, 87, 746, 87, 754, 87, 752,
+ 87, 751, 87, 757, 87, 753, 87, 759, 87, 87,
+ 87, 763, 761, 756, 87, 755, 87, 87, 87, 760,
+ 87, 766, 87, 758, 762, 87, 767, 764, 770, 87,
+ 87, 87, 87, 87, 772, 769, 765, 768, 87, 173,
+ 775, 771, 773, 774, 776, 777, 87, 779, 780, 87,
+ 778, 87, 87, 87, 87, 87, 783, 785, 87, 87,
+ 788, 87, 789, 87, 781, 791, 784, 787, 87, 782,
+ 792, 87, 87, 87, 87, 790, 87, 794, 87, 87,
+ 87, 87, 786, 798, 793, 797, 87, 795, 87, 799,
+
+ 800, 87, 87, 796, 807, 87, 804, 801, 808, 87,
+ 802, 805, 87, 810, 803, 806, 809, 87, 87, 87,
+ 811, 87, 812, 87, 813, 87, 814, 87, 87, 87,
+ 87, 815, 87, 87, 820, 816, 819, 87, 87, 818,
+ 87, 823, 87, 87, 828, 822, 817, 821, 824, 87,
+ 87, 87, 87, 827, 87, 87, 830, 87, 834, 87,
+ 832, 826, 87, 825, 87, 87, 87, 87, 87, 841,
+ 837, 829, 831, 833, 87, 87, 87, 835, 87, 842,
+ 87, 87, 839, 87, 844, 836, 838, 87, 840, 845,
+ 843, 87, 846, 847, 87, 849, 848, 87, 850, 851,
+
+ 87, 854, 852, 856, 87, 853, 855, 87, 87, 87,
+ 858, 87, 859, 857, 87, 87, 87, 87, 863, 862,
+ 87, 864, 87, 87, 87, 87, 87, 871, 87, 867,
+ 861, 869, 87, 865, 860, 87, 868, 87, 866, 87,
+ 87, 872, 874, 87, 870, 87, 875, 87, 181, 880,
+ 882, 87, 878, 876, 873, 87, 877, 879, 87, 883,
+ 884, 87, 87, 87, 881, 87, 886, 885, 87, 87,
+ 887, 87, 87, 87, 893, 895, 891, 87, 894, 888,
+ 87, 87, 889, 890, 87, 87, 87, 896, 87, 900,
+ 898, 892, 87, 87, 901, 87, 87, 908, 87, 902,
+
+ 87, 904, 897, 87, 899, 903, 87, 910, 905, 87,
+ 913, 911, 909, 87, 87, 906, 907, 87, 87, 87,
+ 912, 914, 916, 918, 915, 919, 87, 922, 87, 87,
+ 926, 920, 923, 87, 87, 924, 87, 917, 87, 87,
+ 928, 921, 87, 925, 87, 87, 87, 87, 935, 87,
+ 87, 87, 87, 936, 87, 927, 87, 87, 87, 937,
+ 929, 933, 930, 931, 932, 87, 938, 934, 942, 945,
+ 940, 939, 87, 944, 87, 87, 941, 943, 87, 87,
+ 87, 87, 87, 87, 87, 87, 952, 87, 947, 87,
+ 948, 87, 946, 87, 87, 962, 179, 87, 949, 954,
+
+ 951, 950, 953, 955, 87, 956, 957, 961, 958, 960,
+ 959, 87, 87, 87, 87, 963, 965, 87, 87, 87,
+ 87, 87, 968, 87, 966, 87, 964, 87, 967, 87,
+ 972, 178, 973, 971, 969, 87, 974, 87, 970, 87,
+ 976, 87, 977, 978, 87, 975, 979, 87, 87, 87,
+ 980, 87, 87, 985, 987, 173, 982, 983, 981, 87,
+ 986, 984, 87, 87, 87, 87, 988, 991, 992, 87,
+ 87, 995, 87, 990, 998, 87, 996, 989, 87, 999,
+ 87, 87, 87, 993, 997, 87, 1000, 1001, 1003, 87,
+ 87, 994, 87, 87, 87, 87, 1006, 1010, 87, 1011,
+
+ 87, 1002, 1007, 87, 1004, 87, 1012, 1013, 87, 1005,
+ 87, 87, 87, 1009, 1025, 87, 87, 87, 1008, 173,
+ 87, 87, 87, 87, 87, 1027, 1014, 1024, 1028, 1030,
+ 1031, 1016, 1026, 87, 87, 1015, 87, 1033, 1017, 87,
+ 1032, 1018, 1029, 87, 1034, 1019, 87, 1035, 1020, 87,
+ 1036, 87, 1037, 1040, 87, 1021, 1022, 87, 1023, 87,
+ 87, 87, 87, 1038, 87, 1050, 87, 87, 1053, 87,
+ 1055, 1039, 87, 1041, 1042, 1051, 1043, 1049, 87, 1044,
+ 1052, 87, 87, 1057, 1045, 1054, 1056, 1059, 1058, 87,
+ 1046, 1047, 1061, 1048, 87, 1063, 1060, 1062, 87, 171,
+
+ 1064, 87, 87, 1066, 1067, 1065, 87, 87, 1069, 87,
+ 87, 1068, 87, 1071, 1070, 1073, 87, 1072, 87, 87,
+ 1074, 87, 87, 87, 87, 87, 1077, 87, 1081, 87,
+ 87, 1075, 1080, 87, 87, 1085, 87, 87, 87, 87,
+ 1076, 87, 1089, 1078, 1079, 1082, 1090, 1084, 87, 1083,
+ 1087, 1091, 87, 87, 1086, 1092, 1095, 1096, 1094, 1088,
+ 1093, 87, 87, 87, 87, 1099, 87, 87, 1101, 1102,
+ 87, 87, 1100, 87, 87, 87, 1103, 1105, 87, 1106,
+ 87, 1104, 1097, 87, 1098, 87, 87, 87, 87, 87,
+ 1111, 1108, 1110, 1107, 87, 1112, 87, 1116, 87, 87,
+
+ 1120, 87, 87, 1109, 1119, 87, 87, 1113, 1117, 1118,
+ 1114, 87, 87, 87, 87, 1115, 87, 87, 87, 87,
+ 1121, 1123, 1124, 1127, 87, 87, 1128, 1129, 87, 87,
+ 1122, 1126, 87, 1130, 87, 87, 1138, 87, 1125, 1131,
+ 1135, 1133, 1134, 87, 1132, 1136, 87, 87, 1137, 87,
+ 87, 87, 1139, 1146, 87, 87, 1141, 1144, 1147, 87,
+ 87, 87, 1140, 87, 87, 1145, 1149, 87, 1143, 1151,
+ 87, 87, 87, 1142, 87, 87, 1148, 87, 1158, 87,
+ 1161, 1150, 87, 1152, 1156, 87, 87, 1153, 87, 87,
+ 87, 1155, 1154, 87, 1162, 1157, 1160, 1159, 1164, 1167,
+
+ 1163, 87, 87, 87, 1166, 87, 1171, 87, 1165, 1168,
+ 1170, 87, 87, 87, 87, 87, 1169, 87, 87, 1182,
+ 87, 1174, 1172, 1176, 87, 87, 1183, 87, 87, 1185,
+ 87, 1173, 87, 1175, 1177, 87, 87, 1179, 169, 1178,
+ 1180, 1184, 1186, 1188, 1181, 1189, 87, 87, 87, 87,
+ 1187, 87, 1190, 87, 87, 1191, 87, 1196, 1192, 1194,
+ 87, 1197, 87, 1198, 1202, 1199, 1193, 87, 1195, 87,
+ 87, 1200, 87, 1201, 1204, 87, 87, 87, 87, 87,
+ 1211, 87, 1208, 1207, 87, 1212, 173, 87, 1214, 87,
+ 1206, 87, 1203, 87, 1205, 1209, 1213, 1210, 87, 1215,
+
+ 87, 87, 87, 87, 1218, 1219, 1223, 87, 87, 1216,
+ 87, 1217, 1220, 87, 87, 1235, 1222, 1224, 1234, 87,
+ 1225, 87, 87, 1236, 87, 1221, 1238, 87, 1226, 87,
+ 87, 1227, 87, 1240, 1241, 1228, 1237, 1229, 87, 87,
+ 87, 1230, 1305, 1231, 1242, 1243, 87, 1239, 1232, 87,
+ 1247, 1245, 1244, 1233, 1246, 1248, 87, 87, 1249, 87,
+ 87, 87, 87, 1251, 87, 87, 87, 1254, 87, 1257,
+ 168, 1250, 1256, 1259, 87, 1252, 1253, 1255, 87, 1258,
+ 87, 87, 1261, 1263, 87, 1266, 1265, 1260, 1267, 1262,
+ 1264, 87, 1268, 87, 87, 1269, 1270, 87, 87, 87,
+
+ 87, 87, 87, 87, 87, 87, 1282, 87, 87, 87,
+ 1285, 1281, 1286, 1287, 87, 87, 87, 1272, 1283, 1271,
+ 1284, 1273, 87, 1274, 87, 87, 166, 87, 1275, 1288,
+ 1276, 1294, 1289, 1291, 87, 87, 1277, 87, 1290, 1295,
+ 87, 1278, 1279, 1293, 1292, 87, 87, 1296, 1280, 87,
+ 1301, 87, 87, 87, 1304, 87, 1302, 87, 1297, 87,
+ 87, 1298, 1307, 1309, 1299, 87, 87, 1300, 87, 87,
+ 1310, 87, 1308, 1303, 1306, 87, 1315, 1312, 87, 87,
+ 1313, 87, 87, 87, 87, 1311, 1318, 1316, 87, 87,
+ 1321, 1314, 87, 87, 87, 87, 87, 87, 1317, 87,
+
+ 1326, 1324, 1320, 1319, 1322, 1323, 1325, 1328, 87, 87,
+ 1330, 87, 1327, 87, 1334, 1329, 1333, 87, 87, 87,
+ 87, 87, 87, 87, 87, 87, 1339, 1340, 1331, 1341,
+ 1342, 87, 1336, 1345, 1332, 87, 1335, 1337, 1338, 87,
+ 1343, 87, 1344, 1346, 1347, 87, 87, 87, 1351, 87,
+ 87, 87, 1353, 1352, 87, 1354, 87, 87, 87, 1349,
+ 1348, 1356, 87, 1350, 87, 1355, 87, 87, 87, 1364,
+ 1357, 1360, 87, 1366, 87, 87, 87, 1358, 1359, 87,
+ 1362, 1368, 87, 1363, 1361, 87, 1370, 87, 87, 1367,
+ 1371, 87, 1365, 87, 87, 87, 1369, 87, 1373, 1374,
+
+ 87, 87, 1377, 87, 1376, 1378, 87, 1375, 87, 1372,
+ 87, 1384, 1380, 1379, 1382, 1385, 87, 87, 87, 1381,
+ 87, 87, 87, 1389, 1388, 87, 87, 1386, 87, 87,
+ 1395, 1383, 1393, 87, 1396, 1397, 87, 87, 1387, 87,
+ 87, 87, 1398, 1390, 1399, 1391, 1394, 1400, 1392, 87,
+ 1402, 87, 87, 87, 1401, 87, 87, 1403, 1406, 87,
+ 87, 1408, 87, 87, 87, 1407, 87, 87, 1409, 1404,
+ 87, 1411, 1410, 87, 87, 1405, 1414, 1415, 87, 87,
+ 87, 87, 87, 1417, 87, 1412, 1421, 87, 1422, 1413,
+ 1416, 87, 87, 1419, 87, 87, 1424, 87, 1418, 1423,
+
+ 87, 1420, 1425, 87, 1430, 87, 1426, 87, 87, 1427,
+ 87, 87, 1428, 87, 87, 1429, 1432, 87, 1437, 87,
+ 87, 173, 1438, 1431, 87, 1439, 1436, 87, 87, 1433,
+ 87, 87, 1435, 1440, 87, 1445, 1434, 87, 1442, 1448,
+ 87, 1441, 1443, 1444, 87, 1450, 1446, 1451, 87, 1447,
+ 87, 87, 87, 87, 87, 87, 1452, 1456, 87, 1455,
+ 87, 87, 87, 1457, 1449, 1453, 87, 1460, 1454, 87,
+ 87, 87, 87, 1463, 1458, 1459, 87, 87, 1464, 1467,
+ 87, 1461, 87, 87, 87, 87, 1469, 1465, 1462, 87,
+ 87, 1468, 1470, 87, 87, 1466, 1473, 1479, 87, 1475,
+
+ 1472, 87, 1471, 87, 1480, 1483, 1481, 87, 1476, 1474,
+ 1477, 1482, 87, 1478, 87, 87, 87, 1485, 87, 87,
+ 87, 1484, 1492, 87, 1489, 1488, 87, 87, 87, 87,
+ 87, 1493, 1497, 87, 1486, 1491, 1487, 87, 87, 1490,
+ 1495, 1494, 1498, 1499, 87, 87, 87, 87, 87, 1496,
+ 1501, 1502, 87, 87, 87, 1503, 87, 1507, 87, 87,
+ 87, 87, 87, 1504, 1500, 1510, 1508, 1505, 87, 87,
+ 1518, 1509, 1506, 1511, 1515, 87, 87, 87, 1512, 87,
+ 1514, 1513, 87, 87, 1516, 87, 1517, 87, 87, 87,
+ 87, 1521, 87, 87, 87, 1528, 1530, 1519, 1522, 1520,
+
+ 1524, 87, 87, 87, 1523, 1527, 1525, 87, 1531, 87,
+ 1535, 87, 1529, 87, 1526, 1533, 1536, 1532, 1538, 87,
+ 87, 87, 87, 1539, 87, 1537, 87, 1543, 87, 1534,
+ 1552, 1553, 87, 1554, 1541, 1542, 87, 87, 1540, 87,
+ 1544, 1551, 87, 1558, 1545, 87, 1556, 1546, 1547, 87,
+ 1555, 87, 1548, 87, 87, 164, 87, 1562, 1549, 1559,
+ 1557, 1560, 1550, 87, 1561, 87, 1563, 87, 87, 1568,
+ 1564, 1569, 1565, 1566, 87, 87, 87, 87, 87, 1570,
+ 87, 87, 87, 1571, 1576, 1573, 1567, 87, 1578, 87,
+ 87, 87, 87, 1577, 87, 1574, 1579, 87, 1572, 87,
+
+ 1575, 1580, 1581, 87, 87, 87, 1588, 87, 1582, 1587,
+ 87, 1589, 87, 1583, 1592, 1584, 1593, 1585, 87, 1586,
+ 1590, 1591, 1594, 87, 87, 1595, 1598, 87, 87, 87,
+ 87, 1599, 87, 1597, 87, 1603, 1596, 1600, 1601, 87,
+ 87, 87, 87, 87, 1610, 1609, 87, 87, 1604, 1602,
+ 1605, 87, 87, 87, 1612, 87, 1608, 87, 1606, 1607,
+ 1614, 1613, 87, 87, 1611, 87, 1616, 1615, 87, 1617,
+ 1621, 87, 87, 1620, 1623, 87, 87, 87, 1625, 87,
+ 87, 1618, 1624, 1626, 1627, 87, 87, 1622, 1630, 87,
+ 1619, 87, 1632, 87, 87, 1629, 87, 1633, 87, 1634,
+
+ 87, 87, 1638, 87, 1628, 87, 87, 87, 87, 1643,
+ 1641, 1631, 87, 87, 87, 87, 1646, 1644, 87, 1635,
+ 87, 1636, 1637, 1640, 87, 1639, 87, 1645, 1642, 1648,
+ 87, 1647, 87, 87, 87, 1649, 87, 1650, 1651, 1653,
+ 1654, 1655, 87, 87, 1652, 1656, 87, 1658, 1657, 87,
+ 87, 87, 87, 87, 1659, 1664, 1665, 1661, 87, 1662,
+ 87, 87, 87, 1666, 1668, 1667, 1663, 87, 1660, 87,
+ 87, 87, 1672, 87, 87, 87, 1669, 87, 87, 87,
+ 87, 173, 1671, 1675, 87, 1681, 1682, 1677, 1670, 87,
+ 87, 87, 87, 87, 1673, 1674, 1678, 1676, 1685, 1683,
+
+ 1679, 1684, 87, 1686, 87, 87, 1691, 1680, 87, 1687,
+ 1690, 87, 87, 87, 87, 87, 1688, 87, 1696, 87,
+ 87, 87, 1689, 1693, 87, 87, 1700, 1694, 1692, 1702,
+ 87, 87, 1695, 87, 87, 1697, 1704, 87, 1699, 87,
+ 1708, 87, 1701, 87, 1698, 1709, 87, 1707, 1703, 87,
+ 1711, 1706, 1705, 87, 87, 87, 87, 1710, 1714, 87,
+ 87, 1712, 1720, 1713, 1717, 1719, 87, 1718, 1722, 1715,
+ 87, 87, 1716, 1725, 87, 1723, 87, 87, 1726, 87,
+ 1721, 1724, 87, 87, 87, 87, 87, 87, 1730, 1731,
+ 1732, 87, 87, 87, 87, 1727, 1735, 87, 87, 1740,
+
+ 1729, 87, 87, 1728, 1733, 1741, 87, 1734, 1737, 87,
+ 1744, 1738, 1736, 87, 87, 1739, 87, 87, 87, 87,
+ 1742, 1745, 87, 87, 87, 1743, 87, 87, 87, 1746,
+ 87, 1748, 1752, 1747, 1749, 1753, 87, 1750, 1756, 1757,
+ 87, 1754, 1751, 87, 1755, 87, 1759, 87, 1764, 1758,
+ 1762, 87, 1763, 1765, 87, 87, 1761, 87, 1760, 87,
+ 87, 1767, 1768, 87, 87, 87, 87, 3904, 1773, 1766,
+ 1769, 1772, 1774, 1770, 87, 1775, 87, 1776, 87, 87,
+ 1777, 87, 1780, 87, 87, 87, 1771, 87, 1781, 87,
+ 87, 87, 87, 87, 1782, 87, 1788, 87, 87, 1778,
+
+ 1787, 1779, 1784, 1785, 87, 1783, 1786, 87, 1794, 1791,
+ 87, 1792, 1789, 1795, 87, 1790, 1796, 1793, 87, 87,
+ 87, 1797, 87, 1798, 87, 1800, 87, 87, 87, 87,
+ 1799, 87, 1804, 87, 1808, 1803, 1809, 1801, 87, 1802,
+ 87, 87, 87, 87, 1814, 87, 87, 1805, 1817, 1806,
+ 87, 1807, 1816, 87, 87, 87, 1810, 1812, 87, 87,
+ 87, 1811, 87, 87, 1815, 87, 87, 1819, 87, 1813,
+ 87, 1827, 1818, 87, 1820, 87, 1828, 1824, 1821, 1822,
+ 87, 1823, 87, 1826, 87, 1829, 1825, 1832, 87, 1833,
+ 87, 87, 1831, 87, 1830, 1836, 1834, 1835, 87, 1837,
+
+ 87, 87, 87, 87, 1840, 87, 1844, 1838, 1841, 87,
+ 1845, 87, 87, 1839, 1849, 87, 87, 87, 87, 1843,
+ 1851, 1842, 1850, 87, 1846, 87, 87, 87, 1848, 1853,
+ 1854, 1847, 1855, 1852, 87, 87, 87, 87, 1856, 1857,
+ 87, 1862, 87, 1858, 87, 1861, 1865, 87, 87, 1860,
+ 1863, 87, 87, 1867, 87, 1859, 87, 1868, 1869, 87,
+ 1864, 1871, 87, 87, 87, 1866, 1872, 1873, 87, 87,
+ 87, 87, 87, 87, 1870, 1874, 1877, 87, 87, 87,
+ 1882, 1880, 87, 87, 87, 1875, 1876, 87, 87, 1888,
+ 87, 1889, 1878, 1886, 87, 87, 87, 1879, 1881, 1883,
+
+ 87, 1887, 1885, 1884, 87, 1890, 87, 87, 1895, 87,
+ 87, 87, 1891, 1900, 87, 1892, 1898, 87, 87, 87,
+ 87, 1903, 1901, 1896, 87, 87, 1894, 87, 1897, 1893,
+ 87, 87, 1899, 87, 1907, 87, 1910, 87, 1906, 1902,
+ 1909, 87, 1911, 173, 1905, 87, 1904, 1912, 87, 87,
+ 1908, 87, 1913, 87, 1914, 87, 1915, 87, 1922, 1916,
+ 87, 87, 1924, 1917, 87, 87, 87, 1918, 87, 1923,
+ 1925, 1921, 87, 1927, 1919, 1920, 87, 1931, 87, 1929,
+ 87, 87, 87, 87, 1926, 1935, 1928, 1933, 87, 1932,
+ 1937, 1930, 87, 1936, 1939, 87, 87, 87, 1942, 87,
+
+ 87, 1934, 1940, 87, 87, 87, 87, 87, 87, 1941,
+ 1945, 1947, 1938, 1946, 87, 1949, 87, 1950, 87, 87,
+ 87, 87, 1943, 1944, 1954, 87, 1955, 87, 87, 87,
+ 87, 1962, 1948, 1951, 87, 1953, 1952, 87, 87, 1963,
+ 1957, 1959, 87, 87, 1960, 1956, 1964, 87, 87, 1958,
+ 87, 1966, 1967, 1969, 1972, 1968, 1961, 1970, 87, 1973,
+ 87, 87, 1965, 87, 1975, 87, 1974, 87, 1976, 1977,
+ 87, 87, 1971, 87, 87, 87, 1978, 87, 87, 1984,
+ 1985, 1983, 1986, 1979, 87, 87, 87, 87, 87, 1987,
+ 1988, 1980, 87, 1981, 87, 87, 87, 1982, 87, 1990,
+
+ 1991, 87, 87, 1992, 87, 87, 87, 87, 87, 87,
+ 1989, 87, 1994, 1993, 87, 87, 3904, 1995, 2003, 87,
+ 1998, 1999, 2000, 1996, 87, 1997, 2004, 2001, 87, 87,
+ 87, 2007, 2010, 87, 2005, 2006, 2002, 87, 87, 87,
+ 87, 2008, 87, 2009, 87, 2015, 87, 2017, 87, 87,
+ 2019, 87, 87, 2011, 2014, 2012, 87, 2013, 2018, 87,
+ 2022, 2021, 87, 2016, 2020, 87, 2023, 2024, 87, 87,
+ 87, 87, 87, 2025, 87, 87, 87, 2028, 2030, 87,
+ 87, 2031, 87, 2038, 2032, 2029, 2026, 2027, 2039, 87,
+ 2033, 2034, 87, 2036, 2040, 87, 2035, 87, 87, 87,
+
+ 2042, 2043, 2044, 87, 2037, 2045, 87, 87, 87, 2041,
+ 87, 2047, 2048, 2049, 87, 87, 87, 87, 2046, 2051,
+ 87, 87, 87, 2061, 87, 2060, 2054, 87, 87, 2050,
+ 2056, 87, 2053, 2057, 2052, 2062, 2059, 87, 87, 2055,
+ 87, 87, 2068, 87, 87, 87, 2058, 2069, 87, 2070,
+ 87, 2064, 87, 87, 3904, 2066, 87, 2063, 2065, 2067,
+ 87, 2074, 2071, 87, 87, 2077, 2075, 87, 2076, 2084,
+ 2072, 2073, 87, 2078, 87, 2080, 2082, 2079, 87, 2083,
+ 87, 2085, 87, 87, 87, 2089, 87, 87, 87, 2081,
+ 2090, 87, 87, 2094, 2096, 87, 2086, 87, 2091, 87,
+
+ 87, 2088, 2092, 2087, 2098, 87, 2095, 87, 2093, 2099,
+ 2102, 2101, 2100, 2097, 87, 87, 87, 87, 87, 2104,
+ 2103, 2107, 87, 2111, 87, 87, 87, 87, 2109, 87,
+ 87, 87, 2106, 87, 2110, 2108, 3904, 2105, 2112, 87,
+ 87, 2116, 87, 2113, 2117, 2114, 87, 87, 87, 2118,
+ 2115, 87, 2124, 87, 2126, 2119, 2120, 2127, 87, 2121,
+ 87, 2128, 2122, 87, 87, 2123, 2130, 87, 87, 87,
+ 87, 2134, 87, 87, 2125, 2136, 87, 2129, 87, 87,
+ 87, 87, 2140, 87, 87, 87, 2135, 2132, 2131, 2133,
+ 2143, 87, 87, 3904, 2138, 2142, 87, 2139, 2137, 87,
+
+ 2141, 2145, 87, 87, 2144, 87, 2149, 2146, 2147, 87,
+ 87, 173, 87, 2153, 87, 2148, 2151, 2150, 2152, 2156,
+ 87, 87, 87, 2154, 2160, 87, 87, 2155, 87, 87,
+ 87, 2161, 87, 2157, 2158, 87, 2163, 2165, 87, 87,
+ 2159, 87, 2162, 87, 2164, 2171, 87, 2166, 87, 2167,
+ 87, 87, 2175, 87, 87, 87, 2174, 2176, 2172, 2168,
+ 2169, 2178, 87, 2170, 87, 2180, 2173, 87, 87, 2179,
+ 2183, 87, 2184, 87, 87, 2177, 87, 2182, 87, 87,
+ 2186, 87, 2181, 87, 2187, 87, 2185, 87, 87, 87,
+ 87, 87, 2192, 87, 2193, 87, 87, 87, 87, 2188,
+
+ 2194, 2197, 2195, 2190, 2198, 2189, 2191, 87, 2196, 87,
+ 87, 87, 2201, 2208, 2203, 2205, 87, 2199, 2200, 2202,
+ 2206, 87, 87, 87, 87, 2204, 87, 87, 87, 2213,
+ 87, 87, 2207, 87, 2216, 2217, 87, 2218, 87, 2211,
+ 2209, 2210, 2220, 87, 2212, 2214, 87, 2215, 2219, 87,
+ 2221, 2222, 87, 2225, 87, 87, 2227, 87, 2229, 2226,
+ 2228, 87, 87, 2231, 87, 87, 87, 2223, 87, 87,
+ 87, 2233, 87, 2224, 87, 2235, 2236, 87, 87, 2230,
+ 2239, 87, 87, 2238, 87, 2244, 87, 87, 2232, 2240,
+ 2237, 2242, 2243, 2234, 87, 2246, 87, 87, 87, 2245,
+
+ 87, 87, 87, 2241, 87, 2254, 87, 87, 2247, 2248,
+ 2249, 87, 2258, 2257, 87, 2250, 2252, 2251, 87, 87,
+ 2253, 2259, 2255, 87, 2256, 2263, 2260, 87, 2261, 87,
+ 2264, 2266, 87, 2262, 87, 87, 87, 87, 2270, 87,
+ 87, 2267, 87, 2272, 2265, 87, 87, 2275, 2276, 87,
+ 2277, 87, 87, 87, 2268, 87, 2269, 2279, 87, 87,
+ 2273, 87, 2271, 2284, 2281, 87, 87, 2274, 2282, 87,
+ 87, 87, 2278, 2288, 87, 87, 87, 87, 2280, 87,
+ 2287, 87, 2283, 2291, 2285, 87, 2286, 3904, 2292, 87,
+ 2290, 2298, 2289, 87, 2294, 2295, 87, 87, 87, 87,
+
+ 2300, 2297, 2303, 2293, 2299, 2302, 87, 2296, 87, 2301,
+ 87, 87, 2304, 2306, 2307, 87, 87, 87, 87, 87,
+ 87, 2308, 87, 87, 87, 87, 2309, 2313, 2315, 87,
+ 2305, 87, 2319, 2310, 87, 2314, 87, 2318, 87, 2321,
+ 2311, 2312, 87, 87, 87, 87, 2320, 2316, 2324, 87,
+ 87, 87, 2329, 87, 87, 87, 2328, 2317, 2323, 87,
+ 87, 87, 2322, 2334, 2325, 87, 2335, 87, 87, 2326,
+ 2338, 87, 2327, 2336, 2331, 2332, 87, 2337, 2330, 87,
+ 2333, 87, 87, 2340, 87, 2339, 2343, 87, 87, 87,
+ 87, 87, 2341, 87, 2347, 2351, 87, 2342, 2345, 87,
+
+ 87, 87, 87, 2344, 2354, 87, 2358, 2346, 2356, 87,
+ 2348, 2349, 87, 2350, 2352, 2353, 87, 2357, 2355, 87,
+ 87, 2359, 87, 2364, 87, 2365, 87, 2363, 2366, 87,
+ 2360, 2368, 2369, 2367, 87, 2361, 87, 87, 87, 87,
+ 2362, 2371, 2373, 87, 87, 87, 87, 2375, 87, 87,
+ 2377, 2372, 2379, 87, 2381, 2370, 2374, 2376, 87, 87,
+ 87, 87, 2384, 87, 87, 87, 2383, 173, 87, 87,
+ 87, 2378, 2387, 87, 2382, 2380, 2392, 87, 2391, 87,
+ 2388, 2389, 2393, 2385, 87, 2386, 87, 2394, 87, 2390,
+ 2395, 87, 87, 2396, 2397, 87, 2398, 2401, 87, 2399,
+
+ 87, 87, 87, 87, 2402, 2403, 87, 2404, 2400, 87,
+ 2407, 87, 87, 87, 2406, 2405, 2408, 87, 87, 87,
+ 2412, 2409, 87, 87, 87, 2416, 87, 87, 87, 2415,
+ 2411, 2420, 87, 2410, 2413, 2414, 2417, 2418, 87, 2421,
+ 87, 87, 87, 2419, 87, 87, 87, 87, 2428, 87,
+ 2426, 2423, 2427, 87, 87, 87, 87, 87, 87, 2433,
+ 87, 2422, 2424, 87, 2425, 2430, 87, 2429, 87, 2432,
+ 2434, 2431, 2436, 87, 2439, 2435, 87, 2437, 2441, 87,
+ 2438, 87, 87, 2445, 87, 2440, 2443, 87, 87, 87,
+ 2446, 87, 87, 87, 87, 2444, 2452, 87, 2454, 87,
+
+ 2442, 2455, 87, 87, 2447, 2448, 2451, 2449, 2450, 87,
+ 87, 2453, 2458, 87, 2460, 87, 87, 2456, 2459, 87,
+ 2461, 87, 87, 2464, 87, 87, 87, 2457, 2463, 87,
+ 87, 2466, 87, 2469, 87, 2465, 87, 2470, 87, 2462,
+ 87, 87, 87, 87, 87, 2471, 2468, 2467, 87, 2475,
+ 2473, 2472, 2474, 2476, 2480, 87, 87, 2478, 2479, 2481,
+ 87, 87, 87, 87, 87, 2483, 2484, 2482, 2477, 2485,
+ 2490, 87, 87, 2489, 87, 2487, 87, 2493, 87, 2488,
+ 2491, 2494, 2486, 2496, 2492, 87, 87, 2497, 87, 87,
+ 87, 87, 2495, 2499, 87, 87, 2500, 87, 87, 2501,
+
+ 2505, 87, 2508, 2503, 2498, 87, 87, 2504, 87, 2502,
+ 87, 87, 2510, 2512, 87, 87, 2506, 87, 87, 87,
+ 2511, 2507, 2514, 2516, 87, 2509, 2515, 87, 87, 2521,
+ 87, 87, 2517, 2518, 87, 87, 2522, 2513, 87, 2520,
+ 87, 87, 2525, 2523, 87, 87, 2519, 2526, 87, 2527,
+ 2524, 2531, 87, 2528, 2529, 87, 2530, 87, 2532, 87,
+ 2534, 2536, 87, 87, 2538, 87, 2533, 87, 2537, 2540,
+ 87, 2543, 87, 87, 87, 87, 87, 2545, 2541, 2535,
+ 87, 2546, 87, 2539, 87, 2544, 2542, 87, 87, 2548,
+ 87, 2547, 2549, 87, 2550, 2553, 2551, 2555, 87, 2552,
+
+ 87, 87, 2556, 87, 87, 87, 87, 87, 87, 2554,
+ 2557, 2562, 2559, 2558, 2560, 87, 87, 2561, 87, 87,
+ 2563, 2564, 2568, 87, 2565, 2569, 87, 2567, 87, 87,
+ 87, 87, 87, 87, 87, 2576, 2566, 2570, 87, 87,
+ 87, 87, 87, 2577, 2571, 2572, 2574, 2580, 2575, 2582,
+ 2578, 87, 87, 2573, 2579, 87, 2581, 2583, 2584, 87,
+ 87, 2586, 87, 87, 2587, 2592, 87, 87, 2594, 87,
+ 87, 2585, 2591, 87, 2588, 87, 2593, 87, 2589, 2597,
+ 87, 87, 2598, 87, 2603, 87, 173, 2590, 2595, 2605,
+ 87, 2607, 2596, 2599, 2606, 87, 2600, 87, 87, 2608,
+
+ 87, 2609, 87, 2601, 2602, 87, 87, 87, 2604, 87,
+ 2610, 2615, 87, 87, 2616, 87, 2620, 87, 87, 2621,
+ 2611, 87, 87, 2624, 2619, 87, 2612, 2614, 2617, 87,
+ 2613, 87, 87, 2622, 87, 2628, 87, 2627, 87, 2618,
+ 2623, 2629, 87, 2630, 2631, 2626, 2625, 87, 87, 87,
+ 87, 2632, 2634, 87, 87, 87, 2633, 87, 87, 2637,
+ 87, 87, 87, 2640, 87, 87, 87, 2646, 87, 2635,
+ 2639, 2644, 87, 87, 87, 87, 2642, 2647, 2636, 2641,
+ 2638, 87, 2643, 87, 87, 87, 2645, 2648, 2649, 87,
+ 2655, 2651, 2650, 2652, 87, 87, 2653, 2658, 87, 87,
+
+ 2654, 87, 2656, 2659, 87, 87, 87, 87, 87, 87,
+ 87, 2669, 2657, 2670, 87, 87, 87, 87, 2660, 87,
+ 2661, 2667, 87, 2662, 87, 2717, 2665, 2672, 2663, 2666,
+ 2664, 2668, 87, 87, 2675, 2676, 87, 2671, 2673, 2674,
+ 2677, 87, 87, 87, 87, 87, 2679, 2678, 87, 2680,
+ 87, 2684, 2685, 87, 87, 87, 2686, 2687, 87, 2682,
+ 87, 2683, 87, 87, 3904, 87, 2691, 87, 2681, 2692,
+ 2688, 2693, 87, 87, 2694, 2689, 2690, 2695, 87, 2696,
+ 87, 2699, 87, 2700, 87, 87, 87, 2703, 87, 2697,
+ 2701, 2702, 2698, 87, 2706, 87, 2707, 87, 87, 2709,
+
+ 87, 87, 2711, 87, 87, 2705, 87, 87, 2704, 2713,
+ 2714, 87, 2715, 87, 87, 87, 2718, 2708, 87, 2710,
+ 87, 2712, 2720, 87, 2719, 87, 2724, 87, 2716, 87,
+ 2723, 87, 2721, 2726, 87, 87, 87, 87, 87, 2722,
+ 2728, 2730, 2729, 87, 2731, 2733, 87, 87, 2725, 2727,
+ 87, 87, 2736, 87, 2739, 87, 2734, 2740, 87, 2732,
+ 87, 87, 2735, 87, 87, 87, 2737, 2746, 87, 2745,
+ 87, 87, 2738, 87, 87, 2742, 2748, 2749, 2741, 2744,
+ 87, 87, 2751, 87, 2743, 2753, 87, 87, 87, 2747,
+ 2755, 87, 87, 87, 2754, 2750, 2752, 87, 2761, 87,
+
+ 87, 2756, 2763, 87, 87, 2767, 2757, 2759, 2762, 2758,
+ 87, 87, 87, 2764, 87, 2768, 87, 2769, 87, 2760,
+ 87, 2770, 87, 2771, 87, 87, 3904, 2773, 2765, 2772,
+ 2766, 2775, 87, 87, 87, 87, 87, 2776, 2778, 2779,
+ 2780, 2774, 2782, 2783, 87, 87, 2784, 2786, 87, 87,
+ 2777, 2781, 87, 87, 87, 87, 87, 2787, 87, 2785,
+ 2788, 2791, 87, 87, 87, 87, 87, 2790, 87, 2798,
+ 2789, 2793, 2794, 2795, 2796, 87, 2792, 2799, 87, 87,
+ 2797, 87, 2800, 87, 87, 2804, 2805, 87, 2801, 87,
+ 2803, 2809, 87, 87, 2806, 87, 87, 2811, 2808, 2802,
+
+ 173, 87, 2807, 87, 2810, 2812, 87, 2817, 87, 87,
+ 87, 87, 87, 87, 87, 87, 87, 2822, 2821, 2815,
+ 2819, 2813, 2816, 2814, 2818, 2820, 2823, 87, 87, 2824,
+ 2825, 2827, 87, 87, 87, 2831, 87, 2828, 3904, 2826,
+ 2832, 87, 2833, 87, 87, 2834, 2830, 2835, 87, 87,
+ 87, 2838, 2836, 2829, 2839, 2837, 87, 87, 2841, 87,
+ 87, 87, 87, 2843, 87, 2840, 87, 87, 87, 2847,
+ 87, 2848, 87, 87, 3904, 2842, 2844, 87, 2850, 87,
+ 2845, 2856, 87, 2851, 2849, 2852, 2846, 2853, 87, 87,
+ 87, 87, 87, 87, 2854, 2855, 87, 2859, 2860, 87,
+
+ 2857, 87, 87, 87, 87, 87, 2862, 87, 87, 2861,
+ 87, 2867, 2858, 87, 2870, 2869, 87, 2872, 87, 2866,
+ 87, 87, 2863, 2864, 2865, 87, 2873, 2871, 2868, 87,
+ 87, 2874, 87, 2879, 87, 2877, 87, 2875, 87, 87,
+ 2883, 2884, 87, 87, 2882, 87, 87, 87, 2876, 87,
+ 2880, 2885, 2881, 2878, 87, 87, 2886, 2894, 2887, 2888,
+ 87, 2890, 87, 87, 2892, 2891, 87, 87, 87, 2889,
+ 2893, 2895, 87, 2897, 87, 2899, 87, 87, 2898, 2901,
+ 87, 87, 2903, 87, 87, 87, 2902, 87, 2900, 87,
+ 87, 87, 2896, 87, 2907, 87, 87, 2913, 87, 2905,
+
+ 2911, 2912, 2904, 2906, 2914, 87, 2915, 87, 87, 2909,
+ 87, 2917, 87, 87, 2910, 87, 2908, 87, 87, 87,
+ 2920, 2922, 87, 87, 2918, 2925, 87, 2916, 87, 87,
+ 87, 2923, 87, 3904, 2924, 2919, 2921, 2927, 2928, 2926,
+ 2929, 2932, 87, 87, 87, 2931, 87, 2930, 87, 87,
+ 87, 2933, 2934, 87, 2939, 2940, 87, 87, 87, 87,
+ 87, 87, 2935, 2936, 2937, 2941, 2945, 2938, 2943, 87,
+ 87, 2944, 2946, 87, 87, 2942, 87, 87, 87, 87,
+ 87, 2950, 87, 2947, 2953, 3904, 2949, 2948, 2954, 87,
+ 2956, 87, 2957, 87, 2959, 2955, 87, 2951, 2952, 2958,
+
+ 87, 87, 87, 2960, 87, 2963, 87, 2962, 87, 2964,
+ 87, 2965, 87, 87, 2961, 87, 87, 87, 2966, 2972,
+ 87, 87, 2974, 87, 87, 2968, 2975, 87, 87, 2977,
+ 87, 87, 2967, 2971, 87, 2969, 2978, 2970, 2979, 2976,
+ 2973, 87, 87, 87, 87, 87, 2980, 2982, 2985, 87,
+ 2987, 87, 87, 87, 2986, 87, 87, 87, 87, 87,
+ 87, 2981, 87, 2983, 2984, 173, 87, 2993, 2990, 87,
+ 2998, 2992, 2994, 2989, 87, 2999, 2996, 2997, 2988, 87,
+ 2991, 2995, 87, 87, 3003, 87, 87, 3006, 87, 87,
+ 87, 3005, 87, 3008, 3000, 87, 3904, 3001, 87, 87,
+
+ 3010, 3002, 87, 3011, 3012, 87, 3009, 3004, 3013, 87,
+ 87, 3014, 3007, 87, 3015, 87, 3016, 3017, 87, 87,
+ 87, 3019, 87, 87, 87, 87, 87, 87, 87, 3018,
+ 3027, 87, 87, 3025, 3020, 87, 3031, 87, 87, 87,
+ 3021, 3022, 3032, 3904, 3023, 3024, 3026, 3028, 87, 3029,
+ 3030, 3033, 87, 3034, 3037, 87, 87, 3036, 87, 3035,
+ 3039, 87, 87, 87, 87, 3038, 87, 87, 87, 87,
+ 87, 3043, 87, 87, 3051, 87, 3040, 3049, 87, 3050,
+ 3041, 3042, 3044, 87, 3045, 3047, 3046, 3052, 87, 3048,
+ 87, 3056, 87, 3057, 87, 87, 3055, 3058, 3053, 87,
+
+ 87, 3054, 87, 87, 87, 87, 3065, 87, 87, 87,
+ 3064, 87, 87, 3059, 87, 3061, 87, 3060, 3063, 87,
+ 87, 3062, 3073, 3069, 3072, 3070, 3074, 87, 3066, 3067,
+ 87, 3068, 3075, 3076, 87, 87, 3071, 87, 87, 87,
+ 87, 87, 87, 87, 87, 87, 3078, 3082, 3084, 87,
+ 87, 3080, 87, 3089, 3077, 3090, 87, 3079, 87, 87,
+ 3081, 3083, 3093, 87, 3085, 3087, 87, 87, 3086, 87,
+ 3088, 87, 87, 3091, 87, 3096, 87, 3092, 3094, 87,
+ 3099, 3095, 87, 3100, 3097, 3101, 87, 3098, 87, 3102,
+ 3104, 87, 87, 87, 87, 3109, 87, 3103, 87, 87,
+
+ 87, 3107, 87, 3112, 87, 3113, 3114, 87, 3105, 3111,
+ 3110, 3106, 3116, 87, 3108, 87, 87, 87, 87, 87,
+ 3117, 3115, 3122, 87, 87, 3118, 87, 3124, 87, 87,
+ 3120, 3127, 87, 3119, 87, 87, 87, 3125, 87, 3121,
+ 3161, 87, 87, 87, 87, 3123, 87, 3128, 3129, 3130,
+ 3131, 3126, 3132, 3133, 3134, 87, 87, 3136, 3135, 3137,
+ 87, 3138, 87, 87, 87, 87, 87, 3139, 87, 3141,
+ 87, 87, 87, 3142, 87, 87, 3145, 3140, 87, 3144,
+ 3147, 3150, 87, 3148, 87, 3143, 3146, 3149, 3151, 87,
+ 87, 87, 87, 3155, 87, 3152, 3154, 3156, 173, 3153,
+
+ 87, 3157, 87, 87, 87, 3158, 3904, 87, 3162, 3163,
+ 3159, 87, 3165, 87, 87, 3168, 87, 3169, 87, 3167,
+ 3160, 3164, 87, 3171, 87, 3173, 87, 87, 3166, 3172,
+ 3174, 87, 3175, 87, 87, 3170, 3178, 87, 3176, 87,
+ 87, 3179, 87, 87, 3180, 87, 87, 87, 3177, 3181,
+ 3185, 3186, 3187, 3183, 87, 87, 87, 87, 3182, 3189,
+ 87, 87, 3190, 87, 3192, 87, 3188, 3184, 3191, 87,
+ 87, 87, 87, 87, 3194, 3195, 3196, 3193, 87, 87,
+ 87, 3201, 87, 87, 87, 87, 3198, 3199, 3200, 3203,
+ 3197, 3202, 87, 3206, 87, 87, 87, 3204, 87, 87,
+
+ 3207, 3205, 87, 3208, 3212, 87, 87, 87, 3217, 3213,
+ 87, 87, 87, 87, 87, 3209, 3210, 3211, 87, 3215,
+ 3216, 87, 3219, 3221, 87, 3214, 87, 3218, 87, 3220,
+ 3226, 87, 3225, 87, 3228, 3229, 3223, 3222, 87, 3232,
+ 87, 87, 87, 3233, 87, 87, 3224, 87, 87, 87,
+ 87, 87, 87, 87, 3236, 3234, 3239, 3230, 3227, 3237,
+ 3231, 87, 87, 87, 3238, 3241, 3240, 3243, 3244, 87,
+ 3242, 87, 87, 3235, 87, 3246, 3248, 87, 87, 3250,
+ 87, 3251, 87, 3252, 87, 87, 3245, 87, 87, 3253,
+ 3247, 87, 3254, 3256, 87, 87, 87, 3255, 3260, 87,
+
+ 3258, 3249, 87, 3261, 87, 87, 87, 3904, 3259, 87,
+ 3266, 3257, 3267, 87, 3262, 3268, 87, 3269, 87, 3263,
+ 87, 87, 87, 3270, 87, 3264, 3265, 3273, 87, 87,
+ 3276, 87, 87, 3277, 3271, 3272, 3278, 87, 87, 3280,
+ 87, 87, 3274, 87, 87, 3284, 3285, 87, 87, 3275,
+ 3287, 87, 3286, 3279, 3281, 3288, 87, 87, 3283, 3290,
+ 3289, 3282, 87, 3292, 87, 87, 87, 3291, 3293, 87,
+ 87, 87, 3298, 3299, 3300, 87, 87, 3297, 87, 87,
+ 87, 87, 3303, 87, 87, 3302, 3295, 3294, 87, 3304,
+ 3296, 87, 87, 87, 3306, 3308, 3305, 87, 3309, 87,
+
+ 3301, 3307, 87, 87, 3312, 87, 3316, 87, 87, 87,
+ 3310, 3311, 87, 87, 3328, 87, 3318, 87, 87, 3315,
+ 3313, 3904, 3317, 3314, 3319, 3322, 3320, 3323, 3321, 3325,
+ 87, 3329, 3324, 87, 3326, 87, 87, 3327, 87, 3330,
+ 87, 3331, 87, 3332, 87, 3333, 87, 87, 87, 87,
+ 87, 3335, 3334, 87, 87, 87, 87, 87, 3338, 3340,
+ 3342, 87, 87, 87, 3339, 3343, 3349, 3336, 3347, 87,
+ 3348, 87, 3341, 87, 3337, 3351, 87, 3344, 87, 87,
+ 87, 3345, 3346, 87, 3352, 3353, 3355, 87, 3350, 87,
+ 3356, 3357, 87, 87, 3358, 3359, 87, 3354, 87, 3362,
+
+ 87, 87, 3360, 87, 87, 3366, 87, 3361, 3367, 87,
+ 3363, 87, 3364, 87, 87, 3368, 87, 87, 87, 3374,
+ 87, 87, 3365, 3369, 3375, 87, 87, 3371, 87, 3377,
+ 3378, 87, 3370, 3372, 3376, 87, 3380, 3373, 3381, 87,
+ 3383, 87, 87, 3379, 87, 87, 3387, 87, 87, 3382,
+ 3388, 87, 3390, 87, 87, 87, 3384, 3389, 87, 87,
+ 3393, 87, 87, 3386, 3396, 3391, 87, 87, 3394, 3385,
+ 87, 87, 3399, 87, 3397, 87, 3400, 87, 3401, 3392,
+ 3403, 3395, 3402, 87, 87, 87, 87, 3398, 87, 3408,
+ 3410, 87, 3409, 3411, 87, 3405, 87, 3404, 3406, 87,
+
+ 3407, 3412, 87, 87, 87, 3413, 87, 87, 3419, 3418,
+ 87, 87, 3422, 87, 87, 3420, 3421, 87, 87, 3414,
+ 87, 87, 87, 3415, 87, 3416, 3417, 3426, 3428, 87,
+ 3424, 3430, 87, 3431, 87, 3423, 87, 87, 87, 3427,
+ 87, 3425, 3432, 3433, 87, 3434, 87, 87, 87, 3429,
+ 3439, 87, 87, 87, 87, 3435, 87, 3444, 87, 87,
+ 3438, 3436, 3437, 3443, 87, 3440, 3441, 3442, 87, 3448,
+ 87, 87, 3445, 87, 3451, 87, 3447, 3446, 87, 87,
+ 3455, 87, 3456, 87, 3452, 87, 87, 3458, 87, 87,
+ 3449, 3450, 3459, 87, 3461, 87, 3453, 3462, 87, 87,
+
+ 3460, 3463, 87, 87, 3457, 3454, 3465, 87, 3468, 87,
+ 3464, 3466, 87, 3471, 87, 3467, 87, 3470, 87, 87,
+ 3474, 3476, 87, 87, 87, 3469, 87, 3473, 87, 3478,
+ 87, 87, 87, 3482, 87, 3483, 3472, 3479, 3485, 87,
+ 87, 87, 3475, 3477, 87, 3486, 87, 3489, 87, 3480,
+ 3481, 3484, 3490, 87, 87, 87, 3493, 87, 87, 87,
+ 87, 3487, 3498, 87, 87, 87, 87, 3496, 87, 3491,
+ 3495, 3503, 3488, 3502, 87, 3492, 3494, 3500, 3504, 87,
+ 3497, 87, 3499, 87, 3501, 87, 3506, 87, 3507, 87,
+ 3508, 87, 87, 87, 3513, 87, 3505, 87, 3512, 3509,
+
+ 87, 3514, 87, 87, 3516, 87, 3515, 3519, 87, 87,
+ 87, 3510, 3511, 3517, 3518, 87, 3521, 3522, 87, 87,
+ 3520, 3525, 87, 87, 87, 87, 3530, 87, 87, 87,
+ 3528, 3526, 87, 3534, 87, 3523, 3524, 3904, 3529, 3535,
+ 87, 3533, 3527, 3536, 87, 3532, 87, 3531, 87, 87,
+ 87, 3537, 3540, 87, 3539, 3541, 87, 3542, 87, 3543,
+ 3544, 87, 3538, 87, 87, 3547, 87, 87, 3549, 87,
+ 87, 87, 3548, 3551, 87, 87, 3545, 3552, 87, 87,
+ 87, 87, 3550, 87, 3558, 3559, 87, 87, 87, 3553,
+ 3546, 87, 87, 87, 3565, 87, 87, 3554, 87, 3556,
+
+ 3567, 3555, 3564, 3557, 3569, 3562, 87, 3561, 3566, 87,
+ 87, 87, 3563, 3560, 87, 87, 3568, 87, 3904, 3572,
+ 3573, 3575, 87, 3576, 87, 87, 3570, 87, 3579, 87,
+ 3571, 87, 3577, 87, 87, 87, 3582, 87, 3574, 3578,
+ 87, 3580, 87, 3581, 87, 3583, 3585, 87, 87, 3586,
+ 87, 3584, 87, 3587, 87, 3589, 87, 87, 87, 87,
+ 3590, 87, 3593, 87, 3591, 3594, 87, 3588, 87, 87,
+ 87, 87, 3592, 87, 3606, 87, 3603, 3595, 3604, 3596,
+ 87, 3597, 3904, 3605, 3598, 3599, 87, 3600, 3601, 3602,
+ 87, 3607, 87, 3609, 87, 3608, 3611, 87, 3612, 87,
+
+ 87, 3615, 87, 87, 3613, 3610, 87, 87, 3616, 3614,
+ 3618, 87, 3620, 87, 3621, 3622, 87, 87, 3623, 3624,
+ 3628, 87, 3619, 3625, 87, 3617, 3626, 3627, 87, 87,
+ 87, 3631, 87, 3629, 87, 87, 3634, 87, 87, 3630,
+ 87, 3635, 87, 87, 3639, 87, 87, 87, 3638, 3633,
+ 87, 87, 3632, 87, 87, 3644, 87, 3904, 3636, 87,
+ 3643, 87, 3637, 3645, 3640, 87, 87, 3641, 3648, 87,
+ 3649, 3646, 3650, 87, 87, 3642, 3657, 3647, 3651, 87,
+ 3652, 3653, 87, 3654, 87, 3655, 87, 87, 87, 3661,
+ 87, 87, 3658, 3663, 3662, 87, 3656, 3659, 87, 87,
+
+ 3660, 87, 87, 87, 3670, 87, 3665, 3667, 3668, 87,
+ 3671, 87, 3673, 87, 87, 3664, 87, 3672, 87, 3666,
+ 3669, 3674, 87, 3676, 3675, 3677, 87, 87, 3678, 3679,
+ 87, 87, 3682, 87, 3683, 87, 3680, 3684, 87, 3685,
+ 87, 3686, 87, 3687, 87, 3688, 87, 3689, 87, 3681,
+ 87, 87, 3692, 87, 3693, 87, 87, 87, 87, 87,
+ 3691, 3698, 87, 87, 87, 3694, 3700, 87, 87, 3695,
+ 87, 87, 87, 3704, 3697, 87, 3690, 87, 3696, 3701,
+ 87, 3702, 3699, 3703, 3706, 87, 87, 3705, 3708, 87,
+ 87, 3709, 3707, 3711, 87, 3713, 3712, 87, 3710, 87,
+
+ 3716, 87, 3715, 87, 87, 87, 87, 87, 87, 3718,
+ 87, 87, 87, 3722, 87, 3714, 3724, 3717, 87, 3723,
+ 3719, 87, 3726, 3720, 3721, 87, 3725, 87, 87, 87,
+ 3729, 3730, 3732, 87, 3733, 87, 3734, 87, 3728, 87,
+ 3727, 87, 3731, 3735, 87, 3738, 87, 87, 3737, 87,
+ 3736, 3742, 87, 87, 87, 87, 87, 87, 3746, 3745,
+ 87, 3748, 3740, 3741, 3744, 87, 3739, 87, 87, 87,
+ 3747, 87, 87, 87, 87, 3743, 87, 87, 3749, 3757,
+ 87, 3755, 87, 87, 3752, 87, 3750, 3751, 3754, 3756,
+ 3760, 87, 3759, 3762, 87, 87, 3753, 3758, 87, 87,
+
+ 3764, 3761, 87, 3763, 87, 3765, 3767, 87, 3768, 87,
+ 3770, 87, 3769, 87, 87, 87, 3772, 3904, 3766, 3771,
+ 3773, 87, 3774, 87, 3776, 87, 87, 3780, 3777, 87,
+ 87, 3778, 3775, 3782, 3779, 87, 87, 87, 87, 87,
+ 3786, 87, 3785, 3788, 87, 3781, 3789, 87, 3784, 3783,
+ 3790, 87, 3791, 87, 87, 87, 3794, 87, 3787, 87,
+ 87, 87, 87, 3799, 87, 87, 3800, 87, 87, 3792,
+ 3796, 3803, 3804, 87, 3793, 3795, 3801, 87, 87, 87,
+ 3798, 87, 87, 87, 87, 3797, 3802, 3805, 3808, 3809,
+ 87, 87, 3806, 3810, 87, 3814, 87, 87, 87, 87,
+
+ 3807, 87, 3816, 3811, 3812, 3813, 3818, 87, 87, 87,
+ 87, 87, 87, 3815, 3825, 87, 3823, 3824, 87, 3817,
+ 87, 3820, 3821, 87, 87, 87, 3819, 3830, 87, 3822,
+ 3831, 3832, 87, 3829, 87, 3833, 3904, 87, 3826, 3828,
+ 87, 3827, 87, 87, 3838, 3834, 87, 3835, 3836, 87,
+ 87, 3837, 3839, 87, 3840, 3841, 87, 87, 87, 87,
+ 87, 3843, 87, 3848, 3842, 87, 3845, 87, 87, 87,
+ 87, 3851, 87, 3852, 3853, 87, 87, 3844, 87, 3846,
+ 3850, 3847, 87, 3856, 3849, 3854, 87, 87, 3855, 87,
+ 3860, 3857, 3861, 87, 87, 87, 87, 3865, 3863, 3859,
+
+ 87, 3858, 87, 3867, 87, 3868, 3862, 87, 87, 87,
+ 3872, 87, 3869, 3873, 87, 3870, 87, 87, 3875, 3866,
+ 87, 3864, 3874, 3876, 87, 87, 87, 3877, 3871, 87,
+ 87, 87, 3878, 87, 3880, 3882, 87, 87, 3884, 87,
+ 87, 87, 3885, 87, 3888, 3879, 3889, 87, 87, 3881,
+ 3883, 87, 3892, 3893, 87, 87, 3895, 87, 3886, 3887,
+ 3890, 87, 3894, 3896, 87, 87, 87, 3891, 3897, 87,
+ 3898, 3899, 87, 3902, 87, 3903, 87, 3904, 3904, 3904,
+ 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3900, 3904,
+ 3904, 3901, 48, 48, 48, 48, 48, 48, 48, 53,
+
+ 53, 53, 53, 53, 53, 53, 58, 58, 58, 58,
+ 58, 58, 58, 64, 64, 64, 64, 64, 64, 64,
+ 69, 69, 69, 69, 69, 69, 69, 75, 75, 75,
+ 75, 75, 75, 75, 81, 81, 81, 81, 81, 81,
+ 81, 90, 90, 3904, 90, 90, 90, 90, 163, 163,
+ 3904, 3904, 3904, 163, 163, 165, 165, 3904, 3904, 165,
+ 3904, 165, 167, 3904, 3904, 3904, 3904, 3904, 167, 170,
+ 170, 3904, 3904, 3904, 170, 170, 172, 3904, 3904, 3904,
+ 3904, 3904, 172, 174, 174, 3904, 174, 174, 174, 174,
+ 177, 3904, 3904, 3904, 3904, 3904, 177, 180, 180, 3904,
+
+ 3904, 3904, 180, 180, 91, 91, 3904, 91, 91, 91,
+ 91, 17, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904,
+ 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904,
+ 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904,
+ 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904,
+ 3904, 3904
} ;
-static yyconst flex_int16_t yy_chk[7477] =
+static yyconst flex_int16_t yy_chk[7653] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -2529,820 +2579,840 @@ static yyconst flex_int16_t yy_chk[7477] =
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, 3823, 35,
+ 10, 10, 19, 29, 9, 33, 19, 29, 3912, 35,
10, 11, 11, 11, 11, 11, 11, 13, 13, 13,
- 13, 34, 13, 11, 35, 100, 34, 29, 38, 13,
- 51, 51, 11, 12, 12, 12, 12, 12, 12, 14,
- 14, 14, 14, 100, 14, 12, 15, 15, 15, 38,
- 23, 14, 23, 23, 12, 23, 3103, 15, 16, 16,
+ 13, 34, 13, 11, 35, 101, 34, 29, 38, 13,
+ 46, 46, 11, 12, 12, 12, 12, 12, 12, 14,
+ 14, 14, 14, 101, 14, 12, 15, 15, 15, 38,
+ 23, 14, 23, 23, 12, 23, 3156, 15, 16, 16,
16, 23, 23, 27, 27, 30, 30, 31, 31, 16,
- 25, 27, 130, 25, 25, 27, 31, 25, 27, 32,
- 30, 46, 25, 32, 25, 130, 32, 31, 40, 45,
- 45, 25, 28, 32, 45, 32, 46, 28, 45, 36,
- 36, 28, 40, 96, 28, 44, 28, 28, 36, 44,
- 37, 37, 112, 56, 36, 37, 56, 28, 36, 44,
-
- 41, 41, 96, 44, 44, 41, 67, 67, 95, 37,
- 112, 37, 39, 39, 42, 41, 41, 39, 41, 42,
- 95, 39, 42, 43, 43, 73, 43, 39, 187, 42,
- 39, 84, 84, 42, 42, 43, 187, 39, 152, 73,
- 62, 43, 62, 62, 70, 62, 70, 70, 72, 70,
- 72, 72, 79, 72, 79, 79, 70, 79, 86, 152,
- 86, 86, 87, 86, 97, 89, 87, 89, 89, 86,
- 89, 92, 102, 94, 92, 93, 89, 89, 98, 93,
- 94, 98, 99, 101, 97, 99, 102, 102, 103, 104,
- 105, 106, 101, 1199, 103, 107, 110, 108, 99, 109,
-
- 103, 107, 103, 113, 109, 114, 111, 104, 104, 114,
- 106, 108, 105, 109, 107, 115, 110, 111, 111, 116,
- 117, 113, 119, 118, 116, 111, 118, 120, 119, 118,
- 122, 121, 126, 122, 117, 115, 121, 122, 123, 126,
- 124, 125, 118, 118, 128, 125, 120, 119, 127, 129,
- 131, 128, 137, 122, 124, 132, 121, 123, 129, 132,
- 133, 127, 123, 134, 135, 139, 136, 134, 127, 141,
- 131, 136, 137, 138, 138, 136, 140, 142, 133, 143,
- 140, 136, 135, 144, 141, 139, 144, 145, 178, 140,
- 146, 150, 147, 148, 148, 140, 146, 144, 143, 146,
-
- 145, 144, 149, 142, 147, 151, 153, 150, 154, 149,
- 154, 148, 156, 155, 148, 157, 158, 156, 159, 154,
- 149, 160, 153, 159, 151, 155, 198, 157, 162, 162,
- 164, 154, 198, 164, 158, 160, 166, 174, 166, 166,
- 174, 166, 169, 169, 171, 182, 171, 171, 172, 171,
- 172, 172, 176, 172, 176, 176, 180, 176, 179, 179,
- 172, 180, 181, 182, 183, 184, 185, 186, 181, 189,
- 188, 190, 191, 193, 185, 192, 190, 181, 186, 183,
- 195, 185, 193, 216, 189, 196, 192, 194, 184, 188,
- 196, 202, 191, 194, 194, 197, 197, 199, 204, 199,
-
- 200, 216, 199, 202, 200, 195, 201, 201, 205, 200,
- 203, 208, 207, 205, 200, 203, 203, 204, 206, 199,
- 200, 200, 209, 206, 207, 210, 212, 211, 209, 210,
- 213, 208, 211, 214, 215, 217, 218, 221, 220, 222,
- 217, 218, 212, 220, 213, 230, 215, 227, 214, 215,
- 271, 209, 219, 219, 223, 222, 219, 221, 219, 225,
- 223, 224, 224, 226, 271, 225, 230, 227, 228, 226,
- 219, 225, 219, 229, 228, 231, 233, 232, 233, 229,
- 234, 231, 232, 235, 236, 241, 234, 235, 229, 237,
- 236, 237, 238, 239, 240, 242, 237, 243, 238, 244,
-
- 240, 242, 246, 245, 247, 241, 239, 248, 250, 247,
- 243, 245, 249, 251, 254, 246, 248, 253, 256, 243,
- 252, 261, 253, 244, 250, 252, 252, 249, 258, 257,
- 255, 259, 254, 251, 255, 257, 263, 260, 263, 262,
- 256, 261, 259, 260, 262, 264, 258, 258, 265, 268,
- 266, 267, 269, 270, 277, 265, 266, 267, 269, 272,
- 272, 273, 273, 274, 264, 270, 275, 279, 268, 274,
- 278, 276, 275, 276, 280, 278, 281, 277, 282, 279,
- 283, 284, 297, 285, 281, 283, 286, 274, 285, 287,
- 276, 288, 286, 280, 289, 287, 288, 290, 282, 289,
-
- 291, 293, 292, 290, 284, 294, 295, 297, 299, 296,
- 302, 299, 298, 302, 294, 291, 292, 296, 298, 293,
- 295, 300, 303, 300, 301, 301, 304, 304, 305, 305,
- 306, 308, 307, 307, 308, 309, 310, 312, 314, 309,
- 303, 311, 316, 315, 314, 310, 306, 307, 316, 317,
- 311, 317, 318, 320, 320, 319, 312, 315, 318, 319,
- 321, 322, 323, 324, 325, 321, 327, 322, 323, 326,
- 328, 328, 329, 330, 331, 329, 319, 332, 331, 327,
- 333, 335, 325, 324, 334, 334, 336, 323, 337, 336,
- 326, 330, 340, 342, 339, 338, 332, 339, 333, 335,
-
- 337, 338, 342, 343, 340, 344, 336, 341, 348, 346,
- 344, 341, 346, 353, 353, 351, 341, 347, 351, 341,
- 348, 343, 360, 360, 341, 341, 341, 341, 345, 355,
- 347, 345, 349, 345, 349, 349, 350, 352, 354, 356,
- 352, 350, 350, 357, 355, 345, 345, 345, 358, 345,
- 359, 361, 362, 362, 356, 354, 361, 358, 354, 359,
- 357, 357, 363, 363, 364, 365, 366, 367, 368, 370,
- 369, 366, 371, 372, 372, 374, 372, 375, 371, 367,
- 365, 377, 375, 380, 370, 372, 377, 368, 376, 364,
- 369, 378, 372, 381, 376, 374, 378, 380, 379, 381,
-
- 383, 379, 378, 379, 382, 384, 384, 382, 385, 383,
- 386, 386, 387, 390, 385, 391, 392, 387, 391, 393,
- 382, 177, 403, 382, 394, 382, 388, 388, 397, 388,
- 399, 392, 400, 390, 393, 388, 391, 396, 394, 388,
- 396, 400, 397, 403, 388, 399, 404, 388, 389, 389,
- 175, 389, 401, 402, 406, 405, 396, 401, 401, 402,
- 407, 411, 408, 406, 389, 404, 402, 389, 408, 389,
- 405, 389, 398, 410, 398, 398, 409, 414, 412, 407,
- 170, 411, 414, 413, 398, 398, 398, 398, 398, 413,
- 415, 398, 412, 413, 409, 416, 417, 418, 419, 410,
-
- 414, 420, 418, 419, 422, 422, 421, 423, 424, 425,
- 415, 417, 421, 426, 427, 416, 420, 428, 431, 426,
- 424, 429, 432, 425, 433, 434, 429, 423, 430, 430,
- 435, 430, 436, 428, 436, 441, 441, 444, 431, 427,
- 433, 434, 432, 437, 435, 442, 443, 438, 437, 438,
- 438, 439, 440, 444, 445, 439, 440, 447, 451, 446,
- 450, 443, 449, 451, 442, 447, 447, 438, 449, 450,
- 452, 440, 445, 446, 452, 453, 454, 447, 455, 447,
- 448, 456, 454, 460, 453, 448, 457, 456, 458, 462,
- 457, 458, 168, 448, 448, 459, 465, 448, 448, 455,
-
- 459, 448, 462, 460, 461, 461, 463, 463, 464, 465,
- 466, 466, 467, 464, 468, 470, 469, 471, 467, 468,
- 469, 472, 473, 474, 474, 475, 472, 473, 476, 477,
- 470, 478, 474, 479, 480, 481, 479, 475, 471, 482,
- 481, 483, 484, 478, 482, 483, 486, 477, 476, 485,
- 485, 486, 487, 489, 484, 480, 488, 488, 491, 492,
- 492, 494, 495, 496, 491, 497, 498, 499, 500, 501,
- 495, 503, 499, 487, 497, 489, 504, 505, 507, 506,
- 508, 501, 494, 167, 496, 506, 508, 498, 500, 503,
- 509, 503, 507, 511, 504, 510, 512, 505, 511, 509,
-
- 513, 510, 514, 515, 516, 514, 517, 518, 513, 519,
- 512, 513, 522, 518, 521, 517, 525, 515, 520, 516,
- 521, 520, 523, 524, 526, 527, 522, 523, 526, 519,
- 528, 529, 531, 532, 530, 528, 533, 525, 521, 530,
- 536, 537, 527, 538, 540, 524, 529, 539, 531, 533,
- 541, 539, 532, 534, 534, 541, 545, 165, 538, 534,
- 536, 534, 537, 540, 542, 548, 543, 534, 547, 534,
- 543, 545, 534, 534, 548, 550, 544, 546, 553, 534,
- 542, 544, 546, 549, 547, 544, 554, 547, 551, 549,
- 550, 556, 552, 558, 549, 552, 555, 555, 557, 557,
-
- 559, 553, 546, 560, 551, 562, 554, 563, 558, 561,
- 561, 565, 559, 566, 564, 567, 556, 568, 560, 564,
- 565, 571, 570, 568, 562, 571, 574, 575, 573, 563,
- 567, 570, 566, 572, 573, 576, 577, 572, 574, 578,
- 579, 580, 575, 581, 582, 578, 583, 581, 583, 584,
- 577, 588, 585, 163, 576, 579, 591, 582, 587, 580,
- 585, 586, 586, 588, 587, 589, 590, 592, 591, 593,
- 592, 589, 590, 584, 594, 595, 596, 597, 598, 596,
- 595, 620, 599, 593, 600, 620, 597, 599, 599, 594,
- 601, 601, 609, 597, 598, 604, 597, 600, 602, 602,
-
- 603, 604, 603, 605, 605, 606, 606, 607, 610, 608,
- 609, 611, 613, 607, 608, 608, 612, 613, 614, 612,
- 615, 616, 617, 611, 616, 618, 619, 617, 615, 610,
- 621, 622, 624, 626, 623, 625, 621, 614, 623, 628,
- 625, 627, 627, 629, 630, 619, 631, 626, 618, 630,
- 624, 622, 632, 633, 628, 634, 636, 635, 638, 639,
- 639, 634, 635, 637, 629, 631, 637, 640, 632, 645,
- 636, 637, 641, 633, 637, 637, 638, 642, 643, 644,
- 647, 648, 642, 643, 645, 640, 647, 650, 641, 649,
- 648, 650, 649, 644, 652, 651, 654, 653, 656, 652,
-
- 653, 654, 655, 657, 658, 660, 659, 661, 661, 663,
- 657, 659, 662, 650, 651, 664, 656, 658, 655, 665,
- 664, 662, 666, 667, 668, 660, 669, 672, 663, 670,
- 672, 671, 674, 668, 677, 670, 666, 671, 669, 667,
- 665, 673, 673, 675, 673, 676, 675, 678, 674, 679,
- 676, 680, 677, 681, 682, 686, 680, 683, 684, 688,
- 682, 678, 683, 679, 684, 685, 687, 694, 685, 690,
- 691, 687, 681, 689, 161, 688, 692, 697, 689, 689,
- 686, 692, 690, 691, 693, 695, 694, 696, 692, 708,
- 693, 708, 696, 699, 695, 692, 692, 697, 698, 698,
-
- 699, 700, 701, 702, 703, 701, 704, 705, 700, 702,
- 707, 704, 705, 705, 706, 706, 703, 709, 711, 712,
- 701, 704, 710, 713, 710, 714, 715, 716, 717, 718,
- 722, 719, 723, 718, 717, 707, 709, 712, 720, 711,
- 719, 713, 721, 714, 725, 715, 724, 716, 722, 724,
- 726, 723, 727, 720, 728, 729, 726, 721, 724, 725,
- 730, 731, 732, 741, 735, 733, 734, 729, 728, 733,
- 736, 737, 727, 738, 739, 742, 742, 741, 740, 730,
- 735, 732, 731, 740, 734, 744, 745, 743, 736, 737,
- 737, 743, 738, 739, 747, 746, 748, 749, 750, 744,
-
- 752, 748, 751, 754, 753, 745, 746, 752, 747, 753,
- 754, 755, 758, 749, 756, 751, 757, 750, 759, 756,
- 760, 757, 761, 762, 85, 759, 763, 764, 766, 760,
- 758, 766, 762, 764, 765, 755, 761, 767, 763, 765,
- 768, 767, 769, 770, 771, 772, 773, 771, 774, 774,
- 776, 769, 775, 775, 768, 776, 776, 777, 770, 772,
- 778, 775, 777, 780, 781, 782, 783, 773, 784, 778,
- 781, 785, 784, 786, 787, 788, 791, 789, 792, 793,
- 790, 788, 780, 785, 782, 789, 783, 790, 799, 804,
- 796, 799, 787, 800, 791, 804, 806, 831, 786, 793,
-
- 831, 807, 803, 792, 794, 796, 794, 807, 808, 794,
- 800, 803, 809, 794, 813, 810, 794, 808, 806, 810,
- 811, 811, 814, 794, 794, 813, 794, 815, 809, 812,
- 812, 816, 817, 823, 820, 819, 821, 823, 817, 820,
- 814, 815, 822, 824, 845, 825, 829, 827, 845, 825,
- 830, 816, 818, 818, 818, 819, 818, 821, 826, 818,
- 822, 829, 857, 826, 818, 825, 827, 824, 857, 828,
- 818, 818, 832, 818, 828, 830, 833, 832, 832, 834,
- 834, 835, 836, 833, 837, 837, 838, 836, 840, 839,
- 843, 838, 839, 840, 841, 841, 835, 842, 844, 842,
-
- 846, 848, 843, 847, 849, 849, 850, 851, 854, 848,
- 852, 853, 853, 855, 856, 859, 859, 844, 858, 865,
- 846, 850, 847, 858, 852, 855, 854, 851, 860, 864,
- 862, 863, 866, 860, 860, 862, 856, 863, 865, 867,
- 870, 868, 869, 870, 871, 867, 868, 864, 869, 872,
- 871, 875, 866, 873, 873, 874, 874, 872, 876, 877,
- 878, 880, 881, 879, 883, 878, 876, 879, 880, 875,
- 882, 884, 884, 885, 887, 887, 886, 877, 889, 888,
- 881, 890, 885, 883, 886, 888, 882, 894, 892, 893,
- 895, 901, 897, 80, 896, 900, 889, 892, 893, 896,
-
- 890, 897, 899, 898, 902, 895, 898, 899, 903, 900,
- 905, 894, 904, 902, 906, 906, 901, 904, 904, 907,
- 908, 903, 909, 910, 905, 911, 912, 916, 914, 912,
- 914, 909, 915, 915, 907, 917, 918, 912, 920, 908,
- 917, 919, 921, 911, 922, 923, 919, 910, 916, 925,
- 924, 926, 927, 75, 928, 926, 931, 918, 920, 924,
- 930, 929, 921, 932, 933, 923, 922, 929, 931, 930,
- 927, 934, 925, 928, 935, 937, 936, 938, 940, 932,
- 935, 941, 938, 933, 936, 934, 939, 939, 943, 937,
- 942, 945, 944, 946, 947, 74, 948, 940, 949, 942,
-
- 944, 941, 955, 950, 951, 952, 953, 954, 943, 950,
- 951, 945, 953, 947, 956, 946, 948, 957, 949, 952,
- 956, 954, 955, 957, 958, 959, 960, 961, 958, 962,
- 963, 963, 961, 964, 965, 967, 968, 969, 960, 964,
- 965, 970, 966, 969, 959, 966, 960, 971, 971, 968,
- 962, 972, 973, 967, 975, 974, 979, 973, 974, 975,
- 975, 970, 976, 977, 978, 978, 980, 977, 981, 972,
- 982, 974, 983, 974, 985, 982, 986, 976, 979, 987,
- 990, 989, 991, 981, 993, 1427, 980, 994, 994, 993,
- 986, 983, 995, 987, 989, 996, 995, 998, 985, 1000,
-
- 990, 997, 997, 991, 992, 1001, 1002, 992, 1427, 992,
- 996, 1002, 999, 992, 1000, 992, 999, 999, 1003, 1001,
- 992, 1004, 998, 1006, 1005, 992, 1004, 1004, 1008, 1010,
- 1007, 1011, 1003, 1005, 1007, 1009, 1011, 1006, 1012, 1014,
- 1009, 1010, 1015, 1008, 1013, 1013, 1007, 1018, 1016, 1017,
- 1009, 1025, 1012, 1018, 1017, 1020, 1015, 1016, 1019, 1021,
- 1014, 1020, 1024, 1019, 1023, 1021, 1022, 1022, 1024, 1023,
- 1026, 1029, 1027, 1025, 1030, 1032, 1033, 1033, 68, 1030,
- 1031, 1034, 1036, 1029, 1037, 1035, 1034, 1032, 1038, 1026,
- 1027, 1028, 1028, 1035, 1031, 1039, 1036, 1028, 1042, 1028,
-
- 1037, 1040, 1038, 1041, 1042, 1028, 1044, 1043, 1045, 1046,
- 1028, 1028, 1043, 1047, 1039, 1048, 1051, 1028, 1044, 1041,
- 1040, 1049, 1049, 1050, 1053, 1046, 1045, 1050, 1055, 1054,
- 1053, 1047, 1054, 1048, 1056, 1057, 1051, 1058, 1060, 1056,
- 1059, 1062, 1063, 1058, 1064, 1059, 1065, 1055, 1057, 1066,
- 1062, 1063, 1065, 1067, 1068, 1069, 1070, 1060, 1066, 1068,
- 1064, 1071, 1071, 1072, 1073, 1074, 1080, 1076, 1075, 1077,
- 1070, 1082, 1067, 1076, 1074, 1069, 1073, 1075, 1078, 1083,
- 1084, 1087, 1080, 1072, 1078, 1082, 1077, 1085, 1086, 1088,
- 1089, 1090, 1085, 1091, 1086, 63, 1092, 1095, 1091, 1083,
-
- 1087, 1092, 1095, 1088, 1096, 1084, 1090, 1097, 1089, 1096,
- 1098, 1098, 1099, 1100, 1101, 1102, 1097, 1109, 1099, 1100,
- 1103, 1105, 1106, 1101, 1111, 1108, 1108, 1106, 1106, 1108,
- 1102, 1110, 1109, 1103, 1110, 1112, 1113, 1105, 1111, 1114,
- 1115, 1116, 1117, 1118, 1119, 1120, 1114, 1121, 1122, 1118,
- 1127, 1120, 1113, 1122, 1116, 1112, 1123, 1117, 1115, 1125,
- 1125, 1130, 1121, 1126, 1119, 1131, 1126, 1128, 1129, 58,
- 1123, 1127, 1128, 1129, 1131, 1132, 1133, 1130, 1134, 1136,
- 1132, 1133, 1137, 1138, 1139, 1136, 1140, 1141, 1141, 1138,
- 1134, 1142, 1140, 1143, 1144, 1145, 1145, 1144, 1137, 1146,
-
- 1142, 1147, 1148, 1149, 1151, 1139, 1149, 1152, 1150, 1153,
- 1151, 1143, 1162, 1152, 1154, 1153, 57, 1146, 1155, 1154,
- 1147, 1150, 1148, 1155, 1156, 1161, 1157, 1158, 1170, 1160,
- 1156, 1157, 1162, 1158, 1160, 1163, 1166, 1164, 1165, 1165,
- 1167, 1163, 1164, 1161, 1169, 1166, 1168, 1170, 1173, 1167,
- 1171, 1168, 1172, 1171, 1175, 1172, 1174, 1176, 1177, 1173,
- 1178, 1174, 1169, 1180, 1179, 1183, 1178, 1184, 1181, 1176,
- 1179, 1185, 1175, 1181, 1182, 1182, 1186, 1177, 1180, 1188,
- 1189, 1184, 1187, 1185, 1183, 1190, 1187, 1191, 1193, 1189,
- 1194, 1194, 1195, 1196, 1186, 1198, 1197, 1188, 1196, 1200,
-
- 1195, 1197, 1201, 1203, 1190, 1204, 1202, 1193, 1203, 1205,
- 1206, 1206, 1191, 1200, 1204, 1198, 1207, 1201, 1202, 1208,
- 1209, 1215, 1210, 1211, 1205, 1208, 1209, 1212, 1213, 1214,
- 1213, 1216, 1212, 1217, 1214, 1215, 1207, 1210, 1217, 1211,
- 1218, 1219, 1221, 1220, 1222, 1216, 1220, 1223, 1226, 1221,
- 1225, 1225, 1227, 1228, 1229, 1218, 1227, 1230, 1231, 1222,
- 1219, 52, 1226, 1230, 1234, 1232, 1223, 1238, 1234, 1229,
- 1232, 1228, 1235, 1235, 1238, 1236, 1237, 1237, 1231, 1232,
- 1236, 1232, 1239, 1240, 1232, 1241, 1240, 1242, 1243, 1245,
- 1246, 1247, 1248, 1250, 1245, 1249, 1239, 1243, 1248, 1251,
-
- 1249, 1252, 1257, 1247, 1241, 1242, 1260, 1250, 1255, 1246,
- 1251, 1254, 1254, 1255, 1256, 1260, 1258, 1261, 1262, 1256,
- 1252, 1258, 1257, 1259, 1263, 1264, 1265, 1259, 1264, 1266,
- 1267, 1268, 1261, 1262, 1269, 1270, 1266, 1264, 1271, 1272,
- 1273, 1265, 1267, 1263, 1271, 1275, 1274, 1276, 1277, 1278,
- 1268, 1273, 1274, 1270, 1272, 1269, 1279, 1277, 1280, 1281,
- 1282, 1283, 1284, 1285, 1278, 1275, 1287, 1276, 1284, 1288,
- 1280, 1290, 1287, 1289, 1291, 1279, 1283, 1292, 1281, 1290,
- 1294, 1293, 1296, 1285, 1288, 1282, 1293, 1289, 1297, 1323,
- 1295, 1298, 1294, 1292, 1291, 1295, 1295, 1299, 1299, 1301,
-
- 1302, 1296, 1297, 1323, 1298, 1300, 1300, 1304, 1304, 1302,
- 1300, 1303, 1301, 1300, 1300, 1305, 1307, 1303, 1300, 1306,
- 1305, 1308, 1312, 1306, 1300, 1307, 1309, 1308, 1300, 1310,
- 1315, 1309, 1311, 1311, 1310, 1313, 1313, 1314, 1316, 1317,
- 1314, 1318, 1314, 1312, 1320, 1317, 1319, 1318, 1321, 1319,
- 1315, 1324, 1322, 1320, 1325, 1326, 1316, 1322, 1327, 1329,
- 1325, 1326, 1328, 1329, 1327, 1330, 1331, 1328, 1321, 1324,
- 1336, 1332, 47, 1333, 1340, 1331, 1332, 1339, 1330, 1338,
- 1331, 1336, 1331, 1338, 1331, 1341, 1331, 1333, 1334, 1334,
- 1335, 1335, 1339, 1335, 1340, 1342, 1343, 1344, 1345, 1346,
-
- 1347, 1343, 1343, 1341, 1342, 1347, 1344, 1345, 1348, 1349,
- 1350, 1351, 1352, 1353, 1354, 1354, 1355, 1356, 1349, 1353,
- 1357, 1346, 1348, 1359, 1360, 1356, 1352, 1358, 1355, 1350,
- 1351, 1361, 1358, 1360, 1357, 1362, 1363, 1359, 1361, 1364,
- 1365, 1365, 1366, 1368, 1364, 1367, 1367, 1369, 1368, 1369,
- 1372, 1371, 1373, 1362, 1371, 1372, 1374, 1366, 1375, 1375,
- 1376, 1363, 1377, 1377, 1379, 1374, 1378, 1378, 1380, 1379,
- 1381, 1373, 1382, 1383, 1383, 1384, 1386, 1385, 1387, 1386,
- 1376, 1388, 1391, 1389, 1391, 1392, 1395, 1388, 1389, 1380,
- 1390, 1381, 1396, 1382, 1385, 1384, 1398, 1394, 1387, 1390,
-
- 1394, 1395, 1397, 1392, 1399, 1396, 1400, 1397, 1401, 1399,
- 1398, 1403, 1402, 1401, 1400, 1402, 1403, 1404, 1404, 1405,
- 1406, 1407, 1408, 1409, 1405, 1411, 1412, 1407, 1413, 1408,
- 1414, 1411, 1412, 1413, 1415, 1414, 1409, 1416, 1406, 1417,
- 1415, 1418, 1419, 1419, 1420, 1422, 1416, 1423, 1425, 1424,
- 1422, 1426, 1418, 1434, 1428, 1429, 1430, 1431, 1417, 1424,
- 1428, 1429, 1430, 1425, 1420, 1423, 1433, 1434, 1431, 1435,
- 1436, 1426, 1433, 1434, 1437, 1438, 1436, 1439, 1440, 1441,
- 1441, 1442, 1443, 1445, 1444, 1446, 1448, 1438, 1445, 1435,
- 1449, 1439, 1447, 1447, 1437, 1449, 1440, 1451, 1452, 1453,
-
- 1454, 1442, 1444, 1446, 1453, 1453, 1455, 1443, 1457, 1448,
- 1458, 1456, 1452, 1459, 1461, 1455, 1451, 18, 1454, 1456,
- 1463, 1460, 1457, 1461, 1470, 1458, 1460, 1465, 1459, 1460,
- 1462, 1459, 1462, 1465, 1463, 1466, 1467, 1468, 1469, 1466,
- 1471, 1472, 1468, 1468, 1473, 1475, 1472, 1467, 1474, 1473,
- 1470, 1476, 1478, 1474, 1477, 1480, 1481, 1469, 1471, 1477,
- 1482, 1483, 1483, 1475, 1484, 1485, 1486, 1487, 1484, 1480,
- 1488, 1476, 1478, 1487, 1481, 1489, 1490, 1492, 1482, 1491,
- 1494, 1493, 1488, 1485, 1495, 1486, 1498, 1496, 1500, 1495,
- 17, 1489, 1492, 1491, 1496, 1490, 1493, 1497, 1499, 1494,
-
- 1503, 1501, 1497, 1505, 1498, 1502, 1502, 1504, 1509, 1500,
- 1501, 1507, 1499, 1506, 1506, 1503, 1504, 1507, 1508, 1510,
- 1510, 1512, 1509, 1505, 1508, 1511, 1511, 1512, 1513, 1514,
- 1515, 1516, 1517, 1518, 1525, 1515, 0, 1516, 1517, 1518,
- 1519, 1519, 1520, 1520, 1513, 1522, 1522, 1523, 1524, 1526,
- 1514, 1523, 1525, 1527, 1528, 1531, 1529, 1524, 1530, 1530,
- 1532, 1526, 1520, 1529, 1520, 1533, 1534, 1527, 1532, 1528,
- 1533, 1535, 1536, 1539, 0, 1531, 1537, 1536, 1536, 1538,
- 1534, 1537, 1537, 1538, 1540, 1540, 1541, 1542, 1543, 1544,
- 1535, 1545, 1546, 1539, 1544, 1547, 1548, 1543, 1549, 1550,
-
- 1551, 1552, 1548, 1549, 1553, 1541, 1542, 1555, 1554, 1556,
- 1545, 1565, 1546, 1547, 1554, 1556, 1552, 1550, 1557, 1558,
- 1551, 1560, 1559, 1561, 1557, 1562, 1555, 1563, 1569, 1564,
- 1553, 1559, 1565, 1566, 1567, 1567, 1568, 1570, 1558, 1568,
- 1560, 1571, 1561, 1564, 1562, 1576, 1563, 1569, 1566, 1572,
- 1572, 1573, 1573, 1571, 1574, 1577, 1570, 1575, 1576, 1574,
- 1578, 1575, 1579, 1582, 1585, 1580, 1586, 1580, 0, 1578,
- 1577, 1580, 1584, 1583, 1587, 1579, 1583, 1584, 1592, 1585,
- 1589, 1582, 1588, 1588, 1580, 1589, 1586, 1590, 1591, 1593,
- 1587, 1592, 1594, 1590, 1595, 1593, 1596, 1594, 1595, 1597,
-
- 1596, 1599, 1598, 1591, 1600, 1601, 1602, 1602, 1604, 1606,
- 1599, 1601, 1607, 1608, 1611, 1606, 1609, 1609, 1608, 1597,
- 1598, 1610, 1613, 1613, 1600, 1615, 1604, 1610, 1615, 1616,
- 1616, 1617, 1618, 1607, 1611, 1619, 1621, 1622, 1627, 1621,
- 1623, 1624, 1625, 1626, 1626, 1628, 1629, 1617, 1618, 1630,
- 1624, 1619, 1634, 1627, 1630, 1631, 1635, 1632, 1622, 1637,
- 1623, 1634, 1625, 1632, 1636, 1629, 1628, 1633, 1633, 1631,
- 1638, 1639, 1639, 1640, 1635, 1641, 1642, 1643, 1646, 1636,
- 1648, 1642, 1644, 1644, 1637, 1645, 1649, 1640, 1650, 1645,
- 1638, 1652, 1643, 1641, 1647, 1647, 1651, 1659, 1646, 1650,
-
- 1651, 1653, 1648, 1655, 1655, 1649, 1653, 1657, 1656, 1658,
- 1652, 1656, 1660, 1659, 1658, 1661, 1662, 1663, 1664, 1665,
- 1657, 1666, 1666, 1670, 1668, 1669, 0, 1667, 1665, 1661,
- 1660, 1663, 1667, 1671, 1671, 1662, 1662, 1672, 1674, 1675,
- 1678, 1675, 1670, 1664, 1668, 1669, 1672, 1673, 1676, 1677,
- 1679, 1682, 1673, 1676, 1680, 1677, 1679, 1684, 1674, 1680,
- 1678, 1683, 1683, 1685, 1686, 1682, 1688, 1689, 1690, 1690,
- 1686, 1688, 1691, 1691, 1692, 1693, 1684, 1694, 1695, 1696,
- 1696, 1695, 1685, 1697, 1698, 1699, 1707, 1703, 1692, 1701,
- 1703, 1689, 1694, 1693, 1700, 1701, 1698, 1700, 1702, 1705,
-
- 1700, 1697, 1706, 1702, 1710, 1699, 1703, 1706, 1705, 0,
- 1708, 1707, 1700, 1708, 1709, 1709, 1711, 1712, 1718, 1713,
- 1714, 1714, 1711, 1712, 1713, 1715, 1715, 1716, 1710, 1717,
- 1719, 1718, 1720, 1716, 1717, 1721, 1722, 1723, 1724, 1722,
- 1725, 1728, 1726, 1723, 1724, 1732, 1725, 1726, 1719, 1729,
- 1727, 1720, 1730, 1730, 1729, 1721, 1727, 1731, 1733, 1734,
- 1735, 1736, 1731, 1732, 1728, 1741, 1737, 1740, 1738, 1739,
- 1743, 1742, 1743, 1744, 1734, 1742, 1747, 1745, 1733, 1735,
- 1737, 1736, 1738, 1739, 1745, 1740, 1748, 1749, 1747, 1750,
- 1741, 1751, 1744, 1752, 1753, 1750, 1754, 1757, 1748, 1755,
-
- 1749, 1760, 1755, 1756, 1756, 1765, 1757, 1759, 1759, 1752,
- 1754, 1751, 1761, 1762, 1753, 1763, 1763, 1761, 1764, 1765,
- 1755, 1760, 1766, 1767, 1769, 1762, 1768, 1770, 1771, 1772,
- 1776, 1777, 1774, 1764, 1770, 1768, 0, 1771, 1785, 1769,
- 1771, 1767, 1779, 1779, 1782, 1772, 1766, 1774, 1776, 1781,
- 1778, 1785, 1774, 1778, 1780, 1780, 1777, 1783, 1784, 1784,
- 1783, 1781, 1782, 1786, 1787, 1788, 1790, 1791, 1789, 1787,
- 1788, 1789, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798,
- 1800, 1800, 1786, 1802, 1794, 1799, 1796, 1790, 1798, 1796,
- 1793, 1799, 1792, 1801, 1803, 1795, 1804, 1805, 1812, 1806,
-
- 1801, 1808, 1797, 1802, 1807, 1809, 1808, 1803, 1813, 1807,
- 1807, 1805, 1814, 1814, 1804, 1806, 1815, 1809, 1816, 1815,
- 1817, 1819, 1819, 1812, 1822, 1822, 1813, 1818, 1818, 1817,
- 1820, 1823, 1818, 1821, 1816, 1824, 1819, 1825, 1821, 1820,
- 1826, 1830, 1820, 1828, 1829, 1826, 1826, 1831, 1832, 1823,
- 1834, 1842, 1831, 1837, 1833, 1825, 1824, 1828, 1837, 1829,
- 1833, 1836, 1832, 1830, 1835, 1835, 1838, 1836, 1834, 1839,
- 1840, 1842, 1843, 1844, 1852, 1839, 1840, 1845, 1846, 1847,
- 1838, 1850, 1847, 1845, 1848, 1853, 1854, 1844, 1847, 1850,
- 1848, 1846, 1843, 1852, 1855, 1856, 1858, 1857, 1859, 1860,
-
- 1856, 1861, 1855, 1862, 1853, 1854, 1857, 1859, 1864, 1858,
- 1863, 1863, 1860, 1865, 1864, 1861, 1867, 1862, 1866, 1865,
- 1869, 1866, 1868, 1868, 1870, 1871, 1872, 1872, 1873, 1867,
- 1874, 1875, 1863, 1876, 1877, 1880, 1874, 1879, 1879, 1881,
- 1869, 1873, 1870, 1881, 1871, 1882, 1883, 1887, 1886, 1876,
- 1882, 1884, 1877, 1875, 1885, 1880, 1884, 1886, 1889, 1885,
- 1891, 1892, 1890, 1891, 1893, 1895, 1883, 1894, 1894, 1889,
- 1887, 1890, 1897, 1892, 1896, 1898, 1898, 1899, 1900, 1893,
- 1901, 1902, 1899, 1903, 1895, 1904, 1896, 1901, 1906, 1907,
- 1908, 1897, 1900, 1902, 1909, 1903, 1908, 1910, 1911, 1912,
-
- 1912, 1914, 1915, 1915, 1911, 1904, 1909, 1906, 1913, 1907,
- 1918, 1913, 1917, 1919, 1920, 1910, 1918, 1917, 1921, 1921,
- 1920, 1914, 1919, 1922, 1923, 1924, 1923, 1925, 1924, 1926,
- 1927, 1928, 1929, 1930, 1931, 1922, 1934, 1929, 1930, 1933,
- 1932, 1934, 1936, 1931, 1935, 1937, 1939, 1925, 1927, 1928,
- 1937, 1926, 1932, 1935, 1933, 1938, 1942, 1937, 1940, 1940,
- 1938, 1939, 1936, 1941, 1944, 1945, 1935, 1946, 1948, 1941,
- 1949, 1947, 1949, 1951, 1951, 1950, 1954, 1942, 1952, 1952,
- 1944, 1953, 1953, 1957, 1945, 1958, 1946, 1947, 1948, 1950,
- 1959, 1950, 1955, 1955, 1956, 1956, 1954, 1960, 1960, 1961,
-
- 1966, 1962, 1963, 1961, 1957, 1963, 1958, 1962, 1965, 1967,
- 1968, 1959, 1969, 1970, 1965, 1967, 1971, 1969, 1966, 1971,
- 1972, 1972, 1973, 1974, 1975, 1975, 1976, 1977, 1974, 1978,
- 1979, 1980, 1980, 1968, 1978, 1979, 1984, 1982, 1970, 1981,
- 1983, 1976, 1973, 1982, 1981, 1985, 1986, 1988, 1977, 1987,
- 1989, 1990, 1983, 1983, 1983, 1987, 1984, 1991, 1990, 1983,
- 2002, 1994, 1991, 1985, 1995, 1997, 1986, 1988, 1993, 1996,
- 1989, 1996, 1998, 1993, 1993, 1994, 1997, 1999, 2001, 1995,
- 2000, 2002, 2004, 1999, 2003, 2003, 2006, 1998, 2007, 2000,
- 2005, 2005, 2008, 2008, 2009, 2009, 2010, 2010, 2001, 2011,
-
- 2014, 2014, 2015, 2016, 2018, 2019, 2006, 2022, 2004, 2020,
- 2007, 2021, 2016, 2018, 2023, 2020, 2024, 2024, 2025, 2011,
- 2026, 2029, 2027, 2022, 2028, 2032, 2019, 2015, 2023, 2027,
- 2021, 2030, 2030, 2028, 2033, 2026, 2031, 2031, 2035, 2025,
- 2036, 2038, 2037, 2040, 2035, 2036, 2039, 2029, 2037, 2040,
- 2033, 2032, 2041, 2039, 2041, 2043, 2044, 2045, 2045, 2046,
- 2047, 2038, 2044, 2048, 2046, 2049, 2054, 2050, 2051, 2047,
- 2052, 2051, 2053, 2055, 2043, 2053, 2056, 2056, 2048, 2058,
- 2060, 2057, 2052, 2059, 2054, 2049, 2050, 2057, 2061, 2059,
- 2062, 2058, 2064, 2065, 2062, 2068, 2066, 2067, 2067, 2055,
-
- 2060, 2066, 2069, 2061, 2072, 2070, 0, 2073, 2074, 2074,
- 2062, 2073, 2064, 2077, 2077, 2065, 2075, 2076, 2078, 2068,
- 2070, 2069, 2075, 2072, 2079, 2080, 2076, 2078, 2079, 2081,
- 2081, 2082, 2083, 2085, 2084, 2086, 2080, 2087, 2085, 2088,
- 2090, 2080, 2089, 2093, 2092, 2091, 2083, 0, 2089, 2092,
- 2094, 2094, 2082, 2084, 2099, 2086, 2093, 2087, 2090, 2088,
- 2091, 2095, 2095, 2096, 2098, 2099, 2100, 2096, 2109, 2101,
- 2099, 2102, 2102, 2098, 2101, 2104, 2104, 2105, 2106, 2108,
- 2118, 2111, 2105, 2105, 2106, 2108, 2100, 2110, 2114, 2112,
- 2116, 2120, 2110, 2111, 2109, 2112, 2123, 2115, 2117, 2117,
-
- 2114, 2115, 2116, 2119, 2121, 2118, 2122, 2122, 2124, 2119,
- 2121, 2125, 2126, 2120, 2128, 2123, 2125, 2129, 2130, 2132,
- 2132, 2138, 2133, 2130, 2126, 2133, 2128, 2137, 2124, 2134,
- 2134, 2135, 2135, 2136, 2136, 2141, 2129, 2139, 2140, 2142,
- 2141, 2138, 2137, 2139, 2140, 2142, 2143, 2145, 2146, 2146,
- 2148, 2150, 2145, 2148, 2149, 2143, 2151, 2151, 2149, 2153,
- 2154, 2155, 2162, 2150, 2156, 2156, 2155, 2157, 2158, 2159,
- 2164, 2153, 2154, 2158, 2159, 2160, 2157, 2163, 2160, 2161,
- 2161, 2165, 2162, 2166, 2167, 2168, 2163, 2166, 2164, 2167,
- 2169, 2168, 2170, 2171, 2175, 2172, 2176, 2177, 2174, 2174,
-
- 2165, 2170, 2178, 2179, 2179, 2176, 2177, 2180, 2169, 2172,
- 2174, 2171, 2175, 2181, 2182, 2183, 2180, 2184, 2187, 2187,
- 2183, 2189, 2178, 2190, 2189, 2181, 2191, 2192, 2196, 2194,
- 2184, 2195, 2197, 2200, 2196, 2182, 2198, 2198, 2199, 2190,
- 2199, 2201, 2191, 2192, 2194, 2195, 2203, 2200, 2208, 2197,
- 2202, 2202, 2205, 2205, 2203, 2206, 2206, 2209, 2210, 2201,
- 2211, 2212, 2213, 2209, 2210, 2214, 2215, 2215, 2212, 2216,
- 2216, 2208, 2217, 2222, 2211, 2218, 2219, 2220, 2216, 2221,
- 2223, 2224, 2226, 2229, 2213, 2214, 2230, 2218, 2219, 2223,
- 2231, 2221, 2220, 2217, 2233, 2225, 2224, 2232, 2232, 2222,
-
- 2225, 2225, 2231, 2229, 2227, 2226, 2227, 2227, 2234, 2230,
- 2227, 2235, 2233, 2236, 2235, 2237, 2239, 2240, 2236, 2240,
- 2241, 2239, 2242, 2227, 2243, 2246, 2248, 2242, 2234, 2250,
- 2249, 2243, 2252, 2253, 2246, 2237, 2255, 2254, 2241, 2249,
- 2251, 2250, 2251, 2254, 2248, 2257, 2258, 2257, 2259, 2259,
- 2260, 2252, 2261, 2253, 2266, 2267, 2255, 2261, 2264, 2262,
- 2258, 2262, 2265, 2264, 2268, 2269, 2271, 2265, 2272, 2270,
- 2274, 2269, 2266, 2267, 2270, 2276, 2260, 2273, 2274, 2271,
- 2272, 2277, 2273, 2273, 2268, 2278, 2279, 2279, 2280, 2280,
- 2281, 2282, 2283, 2284, 2276, 2277, 2287, 2278, 2285, 2284,
-
- 2286, 2281, 2286, 2285, 2288, 2289, 2282, 2290, 2290, 2296,
- 2288, 2291, 2283, 2289, 2287, 2292, 2292, 2293, 2293, 2294,
- 2295, 2289, 2298, 2291, 2299, 2295, 2298, 2296, 2294, 2300,
- 2301, 2300, 2302, 2299, 2303, 2304, 2299, 2302, 2302, 0,
- 2305, 2307, 2309, 2308, 2304, 2310, 2303, 2309, 2312, 2313,
- 2310, 2301, 2305, 2314, 2307, 2308, 2316, 2313, 2315, 2315,
- 2317, 2312, 2314, 2318, 2319, 2320, 2323, 2325, 2321, 2313,
- 2322, 2323, 2326, 2327, 2316, 0, 2331, 2337, 2317, 2325,
- 2319, 2318, 2321, 2328, 2326, 2322, 2329, 2330, 2328, 2334,
- 2320, 2329, 2336, 2327, 2331, 2334, 2330, 2338, 2336, 2339,
-
- 2337, 2340, 2341, 2342, 2342, 2343, 2344, 2344, 2334, 2345,
- 2346, 2341, 2338, 2348, 2343, 2347, 2351, 2339, 2348, 2347,
- 2349, 2353, 2352, 2363, 2360, 2354, 2340, 2345, 2352, 2346,
- 2354, 2354, 2355, 2349, 2356, 2351, 2357, 2359, 2355, 2357,
- 2356, 2363, 2366, 2353, 2360, 2359, 2364, 2364, 2365, 2365,
- 2369, 2366, 2367, 2367, 2368, 2368, 2373, 2370, 2372, 2381,
- 2374, 2383, 2369, 2365, 2372, 2374, 2375, 2375, 2376, 2376,
- 2378, 2373, 2377, 2385, 2365, 2370, 2378, 2377, 2380, 2381,
- 2382, 2383, 2380, 2386, 2382, 2387, 2388, 2389, 2386, 2390,
- 2391, 2392, 2389, 2394, 2393, 2395, 2395, 2397, 2385, 2393,
-
- 2396, 2388, 2399, 2400, 2396, 2398, 2391, 2390, 2387, 2401,
- 2398, 2392, 2397, 2402, 2403, 2394, 2404, 2405, 2406, 2410,
- 2399, 2404, 2407, 2407, 2409, 2402, 2411, 2401, 2412, 2400,
- 2405, 2413, 2409, 2403, 2414, 2422, 2406, 2415, 2410, 2416,
- 2417, 2418, 2419, 2420, 2424, 2411, 2428, 2412, 2419, 2420,
- 2422, 2425, 2417, 2426, 2413, 2433, 2415, 2424, 2414, 2426,
- 2416, 2427, 2418, 2427, 2430, 2425, 2428, 2429, 2429, 2430,
- 2431, 2432, 2434, 2431, 2435, 2436, 2436, 2437, 2437, 2433,
- 2438, 2440, 2438, 2441, 2432, 0, 2434, 2435, 2439, 2439,
- 2442, 2443, 2443, 2445, 2445, 2443, 2440, 2447, 2441, 2446,
-
- 2446, 2448, 2448, 2442, 2449, 2450, 2450, 2451, 2451, 2452,
- 2454, 2455, 2447, 2449, 2452, 2454, 2449, 2456, 2457, 2458,
- 2458, 2459, 2459, 2460, 2461, 2461, 2462, 2463, 2463, 2465,
- 2457, 2455, 2464, 2474, 2465, 2466, 2466, 2456, 2467, 2467,
- 2468, 2469, 2460, 2471, 2462, 2470, 2470, 2464, 2472, 2472,
- 2469, 2473, 2474, 2476, 2468, 2477, 2477, 2478, 2476, 2480,
- 2471, 2479, 2479, 2481, 2482, 2473, 2483, 2486, 2481, 2483,
- 2482, 2484, 2484, 2485, 2485, 2487, 2478, 2480, 2488, 2490,
- 2488, 2491, 2492, 2492, 2495, 2493, 2486, 2484, 2496, 2497,
- 2487, 2493, 2498, 2499, 2490, 2500, 2500, 2499, 2501, 2504,
-
- 2491, 2502, 2508, 2496, 2495, 2503, 2502, 2498, 2511, 2503,
- 2505, 2505, 2497, 2509, 2504, 2507, 2507, 2501, 2510, 2512,
- 2509, 2513, 2508, 2514, 2516, 2505, 2511, 2515, 2515, 2517,
- 2521, 2517, 2510, 2516, 2520, 2518, 2513, 2512, 2518, 2522,
- 2520, 2523, 2521, 2524, 2522, 2525, 2523, 2526, 2524, 2514,
- 2527, 2529, 2528, 2518, 2530, 2518, 2529, 2532, 2533, 2534,
- 2526, 2528, 2532, 2533, 2534, 2538, 2535, 2536, 2537, 2539,
- 2525, 2527, 2540, 2536, 2537, 2543, 2544, 2541, 2540, 2546,
- 2530, 2535, 2541, 2542, 2539, 2547, 2538, 2545, 2542, 2544,
- 2545, 2551, 2548, 2549, 2547, 2550, 2556, 2552, 2558, 2546,
-
- 2543, 2548, 2549, 2552, 2550, 2551, 2553, 2554, 2559, 2560,
- 2560, 2554, 2553, 2561, 2562, 2562, 2556, 2559, 2558, 2561,
- 2563, 2564, 2564, 2562, 2566, 2565, 2568, 2569, 2572, 2563,
- 2565, 2570, 2570, 2571, 2573, 2575, 2576, 2572, 2577, 2573,
- 2582, 2653, 2568, 2569, 2566, 2578, 2566, 2575, 2571, 2583,
- 2581, 2580, 2576, 2577, 2580, 2581, 2653, 2578, 2584, 2584,
- 2582, 2583, 2585, 2585, 2586, 2586, 2588, 2588, 2589, 2590,
- 2591, 2589, 2592, 2593, 2590, 2595, 2591, 2598, 2592, 2594,
- 2594, 2597, 2593, 2596, 2596, 2599, 2600, 2600, 2601, 2595,
- 2603, 2598, 2602, 2597, 2601, 2603, 2605, 2612, 2606, 2610,
-
- 2605, 2606, 2607, 2607, 2599, 2608, 2602, 2609, 2610, 2611,
- 2608, 2613, 2609, 2614, 2614, 2613, 2615, 2612, 2611, 2617,
- 2618, 2619, 2620, 2621, 2617, 2623, 2622, 2624, 2625, 2615,
- 2622, 2629, 2624, 2626, 2625, 2627, 2627, 2621, 2630, 2626,
- 2618, 2619, 2620, 2628, 2628, 2623, 2631, 2632, 2633, 2629,
- 2634, 2634, 2632, 2638, 2636, 2637, 2639, 2630, 2638, 0,
- 2641, 2640, 2639, 2646, 2644, 2631, 2636, 2640, 2641, 2633,
- 2642, 2637, 2642, 2644, 2647, 2648, 2648, 2646, 2649, 2650,
- 2650, 2649, 2652, 2654, 2655, 2652, 2654, 2659, 2647, 2656,
- 2656, 2659, 2660, 2661, 2662, 2662, 2668, 2663, 2660, 2666,
-
- 2666, 2670, 2671, 2674, 2675, 2661, 2663, 2676, 2674, 2686,
- 2655, 2677, 2679, 0, 2668, 2670, 2680, 2679, 2671, 2681,
- 2681, 2680, 2683, 2683, 2688, 2676, 2689, 2685, 2692, 2686,
- 2675, 2690, 2677, 2685, 2687, 2687, 2690, 2694, 2693, 2695,
- 2688, 2693, 2696, 2696, 2698, 2699, 2700, 2692, 2689, 2694,
- 2701, 2695, 2700, 2702, 2699, 2703, 2701, 2705, 2705, 2706,
- 2698, 2707, 2706, 2707, 2708, 2709, 2712, 2712, 2710, 2714,
- 2703, 2702, 2713, 2713, 2714, 2715, 2717, 2718, 2716, 2719,
- 2720, 2719, 2718, 2708, 2709, 2709, 2710, 2716, 2721, 2717,
- 2723, 2722, 2724, 2715, 2720, 2723, 2725, 2727, 2727, 2726,
-
- 2728, 2732, 2721, 2722, 2726, 2729, 2729, 2730, 2730, 2731,
- 2731, 2734, 2724, 2732, 2743, 2728, 2725, 2733, 2735, 2733,
- 2736, 2736, 2739, 2735, 2737, 2737, 2738, 2738, 2740, 2734,
- 2741, 2742, 0, 2744, 2739, 2743, 2745, 2745, 2746, 2747,
- 2747, 2749, 2741, 2748, 2748, 2750, 2750, 2751, 2740, 2744,
- 2753, 2742, 2749, 2752, 2754, 2756, 2755, 2746, 2757, 2751,
- 2752, 2755, 2753, 2758, 2758, 2760, 2760, 2759, 2761, 2762,
- 2763, 2764, 2765, 2768, 2754, 2756, 2759, 2766, 2757, 2767,
- 2774, 2767, 2770, 2763, 2775, 2768, 2765, 2769, 2769, 2762,
- 2771, 2770, 2772, 2777, 2761, 2764, 2776, 2776, 2774, 2766,
-
- 2778, 2779, 0, 2778, 2780, 2771, 2775, 2772, 2781, 2780,
- 2782, 2782, 2790, 2781, 2791, 2779, 2777, 2783, 2783, 2784,
- 2784, 2787, 2787, 2789, 2789, 2791, 2792, 2793, 2795, 2796,
- 2790, 2797, 2798, 2803, 2799, 2800, 2801, 2802, 2801, 2819,
- 2804, 2810, 2793, 2799, 0, 2792, 2819, 2796, 2795, 2805,
- 2805, 2803, 2798, 2797, 2809, 2800, 2807, 2802, 2804, 2816,
- 2807, 2808, 2808, 2810, 2811, 2812, 2812, 2814, 2809, 2815,
- 2815, 2817, 2818, 2811, 2821, 2823, 2814, 2816, 2820, 2822,
- 2824, 2825, 2827, 2827, 2829, 2825, 0, 2826, 2830, 2817,
- 2818, 2823, 2821, 2820, 2826, 2828, 2828, 2822, 2836, 2824,
-
- 2837, 2831, 2833, 2833, 2829, 2835, 2830, 2831, 2834, 2834,
- 2838, 2835, 2839, 2840, 2841, 2843, 2836, 2844, 2837, 2841,
- 2842, 2842, 2845, 2846, 2848, 2838, 0, 2840, 2847, 2855,
- 2850, 2839, 2850, 2849, 2846, 2843, 2858, 2844, 2849, 2847,
- 2851, 2851, 2845, 2852, 2848, 2852, 2853, 2853, 2855, 2857,
- 2859, 2860, 2861, 2862, 2863, 2858, 2864, 2861, 2857, 2863,
- 2865, 2868, 2859, 2870, 2869, 2872, 2870, 2871, 2871, 2873,
- 2876, 2860, 2875, 2862, 2874, 2874, 2864, 2879, 2880, 2865,
- 2872, 2868, 2869, 2875, 2877, 2876, 2882, 2873, 2877, 2881,
- 2882, 2884, 2879, 2880, 2886, 2881, 2883, 2883, 2887, 2887,
-
- 2888, 2894, 2889, 2890, 2884, 2891, 2892, 2892, 2895, 2886,
- 2896, 2890, 2899, 2894, 2896, 2897, 2897, 2895, 2898, 2898,
- 2888, 2889, 2900, 2900, 2901, 2891, 2902, 2903, 2904, 2901,
- 2905, 2899, 2906, 2906, 2908, 2902, 2912, 2912, 2913, 2914,
- 2904, 2915, 2915, 2903, 2916, 2917, 2918, 2913, 2922, 2922,
- 2905, 2919, 2923, 2920, 2921, 2908, 2924, 2916, 2917, 2918,
- 2919, 2914, 2920, 2921, 2926, 2926, 2932, 2935, 2929, 2931,
- 2933, 2924, 2923, 2929, 2931, 2933, 2934, 2937, 2936, 2939,
- 2932, 2943, 2947, 2941, 2934, 2937, 2935, 2936, 2941, 2951,
- 2942, 2944, 2944, 2949, 2939, 2942, 2943, 2945, 2945, 2946,
-
- 2949, 2947, 2948, 2948, 2946, 2950, 2952, 2951, 2953, 0,
- 2950, 2954, 2956, 2956, 2953, 2957, 2954, 2958, 2959, 2959,
- 2960, 2960, 2958, 2963, 2952, 2964, 2964, 2966, 2965, 2967,
- 2957, 2965, 2966, 2966, 2967, 2968, 2963, 2969, 2970, 2971,
- 2968, 2972, 2974, 2971, 2970, 2973, 2972, 2975, 2976, 2980,
- 2977, 2969, 2978, 2983, 2973, 2975, 2977, 2974, 2978, 2979,
- 2983, 2980, 2981, 2981, 2979, 2984, 2987, 2989, 2985, 2976,
- 2984, 2985, 2989, 2992, 2990, 2991, 2993, 2994, 2987, 2990,
- 2991, 2995, 2996, 2996, 2997, 3002, 2994, 3007, 2998, 2993,
- 2995, 2992, 2998, 2997, 2999, 3003, 3004, 3008, 3009, 2999,
-
- 3010, 3003, 3004, 3002, 3011, 3011, 3007, 3012, 3013, 3017,
- 3017, 3015, 3016, 3018, 3012, 3019, 3020, 3008, 3009, 3010,
- 3015, 3016, 3021, 3021, 3019, 3022, 3024, 3013, 3018, 3026,
- 3027, 3020, 3028, 3028, 3027, 3029, 3030, 3031, 3032, 3034,
- 3033, 3024, 3030, 3031, 3022, 3034, 3035, 3035, 3036, 3026,
- 3037, 3041, 3040, 3046, 3038, 3049, 3036, 3032, 3033, 3038,
- 3029, 3040, 3043, 3044, 3041, 3045, 3044, 3047, 3043, 3045,
- 3049, 3046, 3048, 3048, 3052, 3037, 3051, 3051, 3054, 3054,
- 3055, 3047, 3056, 3056, 3057, 3057, 3059, 3059, 3062, 3060,
- 3061, 3066, 3052, 3060, 3068, 3061, 3067, 3062, 3064, 3064,
-
- 3070, 3067, 3069, 3055, 3072, 3073, 3068, 3069, 3069, 3074,
- 0, 3066, 3070, 3075, 3075, 3077, 3077, 3078, 3078, 3079,
- 3079, 3081, 3082, 3080, 3072, 3073, 3080, 3084, 3084, 3074,
- 3085, 3087, 3088, 3088, 3081, 3082, 3089, 3089, 3090, 3090,
- 3091, 3092, 3092, 3093, 3094, 3095, 3096, 3105, 3085, 3097,
- 3097, 3087, 3096, 3098, 3101, 3091, 3093, 3098, 3102, 3095,
- 3101, 3104, 3094, 3102, 3106, 3107, 3104, 3104, 3108, 3109,
- 3105, 3110, 3111, 3120, 3108, 3109, 3111, 3112, 3112, 3117,
- 3118, 3115, 3123, 3118, 3106, 3107, 3115, 3117, 3121, 3122,
- 3122, 3121, 3124, 3125, 3126, 3127, 3110, 3124, 3120, 3123,
-
- 3123, 3128, 3128, 3129, 3130, 3131, 3132, 3130, 3133, 3127,
- 3137, 3125, 3138, 3138, 3126, 3130, 3133, 3129, 3135, 3131,
- 3147, 3136, 3146, 3135, 3135, 3132, 3136, 3136, 3144, 3137,
- 3139, 3139, 3140, 3140, 3141, 3141, 3142, 3142, 3143, 3143,
- 3145, 3148, 3146, 3149, 3144, 3145, 3147, 3150, 3151, 3152,
- 3148, 3153, 3150, 3154, 3152, 3155, 3156, 3149, 3158, 3158,
- 3153, 3159, 3159, 3160, 3161, 3163, 3160, 3151, 3162, 3162,
- 3165, 3163, 3164, 3154, 0, 3155, 3156, 3164, 3168, 3161,
- 3167, 3167, 3169, 3169, 3170, 3168, 3172, 3172, 3165, 3170,
- 3173, 3174, 3175, 3175, 3176, 3177, 3179, 3180, 3180, 3173,
-
- 3174, 3181, 3181, 3176, 3177, 3182, 3183, 3184, 3185, 3182,
- 3186, 3187, 3188, 3191, 3179, 3183, 3190, 3188, 3188, 3185,
- 3192, 3194, 3191, 3198, 3192, 3186, 3184, 3200, 3198, 3190,
- 3203, 3187, 3199, 3199, 3202, 3202, 3194, 3204, 3205, 3207,
- 3207, 3200, 3208, 3208, 3203, 3209, 3210, 3211, 3215, 3217,
- 3216, 3219, 3210, 3222, 3209, 3216, 3205, 3220, 3217, 3211,
- 3224, 3226, 3204, 3220, 3227, 3222, 3226, 3228, 3228, 3227,
- 3229, 3219, 3231, 3215, 3232, 3233, 3240, 3231, 0, 3229,
- 3241, 3224, 3234, 3234, 3236, 3236, 3234, 3232, 3239, 3233,
- 3237, 3237, 3238, 3238, 3248, 3242, 3240, 3239, 3244, 3241,
-
- 3242, 3245, 3246, 3249, 3244, 3250, 3245, 3246, 3247, 3247,
- 3252, 3251, 3248, 3253, 3254, 3249, 3251, 3255, 3255, 3253,
- 3257, 3261, 3258, 3262, 3257, 3259, 3250, 3258, 3252, 3263,
- 3259, 3260, 3260, 3265, 3267, 3267, 3269, 3270, 3262, 3254,
- 3261, 3271, 3272, 3273, 3263, 3274, 3272, 3275, 3276, 3269,
- 3270, 3278, 3273, 3265, 3271, 3277, 3276, 3279, 3280, 3280,
- 3277, 3274, 3282, 3281, 3283, 3286, 3275, 3284, 3284, 3285,
- 3285, 3278, 3281, 3289, 3290, 3292, 3296, 3279, 3289, 3289,
- 3282, 3292, 3293, 3293, 3286, 3294, 3294, 3300, 3290, 3301,
- 3283, 3298, 3298, 3303, 3304, 3305, 3309, 3296, 3303, 3310,
-
- 3305, 3308, 3308, 3300, 3312, 3301, 3311, 3314, 3310, 3317,
- 3304, 3318, 3311, 3313, 3313, 3319, 3309, 3316, 3316, 3320,
- 3320, 3324, 3322, 3317, 3326, 3325, 3314, 3312, 3322, 3326,
- 3318, 3325, 3329, 3319, 3330, 3331, 3331, 3332, 3332, 3334,
- 3333, 3324, 3335, 3335, 3337, 3336, 3338, 3359, 3340, 3341,
- 3342, 3339, 3359, 3337, 3329, 3333, 3336, 3339, 3344, 3334,
- 3330, 3341, 3335, 3343, 3343, 3345, 3338, 3340, 3345, 3346,
- 3342, 3351, 3346, 3344, 3347, 3347, 3352, 3357, 3353, 3354,
- 3354, 3356, 3355, 3351, 3353, 3355, 3361, 3356, 3360, 3360,
- 3362, 3361, 3363, 3364, 3367, 3357, 3352, 3368, 3363, 3365,
-
- 3365, 3369, 3372, 3370, 3371, 3371, 3367, 3373, 3374, 3362,
- 3364, 3364, 3376, 3376, 3380, 3368, 3370, 3374, 3377, 3377,
- 0, 3372, 3379, 3373, 3378, 3378, 3369, 3379, 3380, 3381,
- 3382, 3382, 3383, 3383, 3381, 3384, 3384, 3385, 3386, 3386,
- 3387, 3388, 3389, 3394, 3390, 3400, 3385, 3402, 3389, 3390,
- 3393, 3393, 3403, 3387, 3396, 3396, 3397, 3397, 3404, 3394,
- 3405, 3406, 3406, 3409, 3400, 3408, 3408, 3388, 3410, 3402,
- 3411, 3413, 3414, 3421, 3403, 3415, 3415, 3404, 3416, 3416,
- 3419, 3414, 3405, 3422, 3411, 3427, 3417, 3410, 3420, 3409,
- 3417, 3413, 3423, 3421, 3420, 3424, 3431, 3423, 3419, 3432,
-
- 3424, 3431, 3422, 3428, 3428, 3433, 3427, 3430, 3430, 3434,
- 3435, 3433, 3437, 3432, 3436, 3436, 3439, 3437, 3435, 3440,
- 3439, 3434, 3441, 3442, 3440, 3443, 3444, 3445, 3447, 3448,
- 3443, 3449, 3450, 3445, 3453, 3452, 3447, 3454, 3444, 3455,
- 3456, 3458, 3441, 3442, 3459, 3456, 3458, 3463, 3448, 0,
- 3453, 3449, 3450, 3452, 3454, 3454, 3460, 3465, 3461, 0,
- 3455, 3475, 3460, 3461, 3459, 3464, 3495, 3463, 3464, 3479,
- 3465, 3469, 3469, 3470, 3470, 3471, 3475, 3477, 3477, 3471,
- 3478, 3480, 3480, 3482, 3495, 3478, 3485, 3485, 3479, 3486,
- 3486, 3490, 3486, 3487, 3487, 3490, 3487, 3493, 3482, 3488,
-
- 3488, 3489, 3489, 3492, 3489, 3496, 3493, 3501, 3492, 3494,
- 3494, 3499, 3499, 3500, 3500, 3502, 3503, 3504, 3504, 3496,
- 3505, 3503, 3506, 3509, 3510, 3511, 3513, 3501, 3512, 3511,
- 3584, 3510, 3515, 3584, 3516, 3502, 3518, 3512, 3505, 3516,
- 3522, 3513, 3506, 3517, 3517, 3518, 3519, 3519, 3509, 3527,
- 3515, 3520, 3520, 3521, 3521, 3522, 3523, 3524, 3525, 3526,
- 3528, 3523, 3529, 3525, 3525, 3526, 3524, 3530, 3531, 3524,
- 3532, 0, 3530, 3531, 3527, 3528, 3533, 3533, 3534, 3535,
- 3536, 3536, 3538, 3529, 3534, 3535, 3537, 3537, 3539, 3532,
- 3542, 3542, 3543, 3539, 3545, 3545, 3546, 3538, 3548, 3550,
-
- 3550, 3551, 3551, 3552, 3552, 3546, 3543, 3553, 3553, 3555,
- 3555, 3556, 3556, 3557, 3557, 3559, 3548, 3558, 3558, 3561,
- 3562, 3562, 3564, 3564, 3565, 3566, 3567, 3569, 3561, 3570,
- 3570, 3571, 3573, 3565, 3572, 3572, 3574, 3566, 3585, 3575,
- 3579, 3559, 3569, 3576, 3576, 3583, 3567, 3573, 3587, 3574,
- 3571, 3575, 3577, 3577, 3590, 3579, 3580, 3580, 3586, 3586,
- 3590, 3591, 3589, 3583, 3585, 3589, 3587, 3592, 3593, 3595,
- 3594, 3597, 3592, 3598, 3601, 3591, 3602, 3597, 3601, 3604,
- 3604, 3606, 3598, 3607, 3616, 3595, 3620, 3593, 3594, 3616,
- 3617, 3602, 3627, 3617, 3621, 3621, 3622, 3622, 3630, 3620,
-
- 3623, 3623, 3628, 3607, 3625, 3625, 3629, 3606, 3632, 3634,
- 3629, 3628, 3635, 3638, 3636, 3627, 3639, 3639, 3630, 3636,
- 3640, 3641, 3632, 3635, 3637, 3642, 3637, 3644, 3638, 3643,
- 3646, 3645, 3634, 3640, 3649, 3647, 3648, 3650, 3652, 3646,
- 3641, 3648, 3654, 3642, 3660, 3643, 3645, 3647, 3651, 3650,
- 3653, 3653, 3644, 3651, 3655, 3649, 3661, 3652, 3660, 3655,
- 3662, 3662, 3654, 3663, 3664, 3664, 3665, 3665, 3666, 3666,
- 3667, 3667, 3663, 3668, 3669, 3670, 3661, 3671, 3670, 3672,
- 3673, 3674, 3671, 3675, 3672, 3676, 3677, 3680, 3678, 3675,
- 3679, 3679, 3668, 3678, 3669, 3687, 3674, 3686, 3677, 3676,
-
- 3681, 3681, 3682, 3682, 3690, 3673, 3692, 3680, 3683, 3683,
- 3685, 3685, 3686, 3698, 3687, 3688, 3688, 3695, 3695, 3690,
- 3696, 3696, 3697, 3699, 3692, 3700, 3701, 3703, 3702, 3699,
- 3697, 3700, 3698, 3704, 3705, 3705, 3707, 3707, 3704, 3712,
- 3701, 3702, 3713, 3715, 3716, 3718, 3703, 3719, 3716, 3720,
- 3721, 3722, 3719, 3723, 3724, 3729, 3725, 3715, 3730, 3724,
- 3712, 3725, 3713, 3721, 3722, 3718, 3726, 3726, 3720, 3731,
- 3732, 3732, 3723, 3733, 3734, 3729, 3730, 3739, 3733, 3736,
- 3734, 3735, 3735, 3740, 3736, 3737, 3738, 3747, 3731, 3740,
- 3737, 3738, 3742, 3742, 3743, 3748, 3739, 3744, 3744, 3743,
-
- 3746, 3749, 3748, 3750, 3746, 3751, 3747, 3752, 3753, 3755,
- 3755, 3751, 3757, 3757, 3759, 3758, 3760, 3761, 3762, 3759,
- 3749, 3753, 3750, 3767, 3758, 3764, 3752, 3758, 3763, 3763,
- 3764, 3762, 3765, 3768, 3768, 3760, 3761, 3769, 3770, 3770,
- 3771, 3771, 3772, 3773, 3774, 3765, 3781, 3772, 3776, 3767,
- 3773, 3775, 3775, 3776, 3779, 3777, 3769, 3777, 3778, 3778,
- 3780, 3779, 3783, 3774, 3782, 3781, 3786, 3780, 3788, 3782,
- 3785, 3785, 3789, 3788, 3790, 3791, 3795, 3789, 3792, 3792,
- 3796, 3783, 3794, 3794, 3799, 3786, 3797, 3797, 3798, 3798,
- 3809, 3799, 3810, 3790, 3791, 3795, 3801, 3801, 3803, 3796,
-
- 3802, 3802, 3805, 3808, 0, 3803, 0, 3805, 3808, 3809,
- 0, 3810, 3811, 3811, 3812, 3812, 3816, 3816, 3816, 3816,
- 3816, 3816, 3816, 3817, 3817, 3817, 3817, 3817, 3817, 3817,
- 3818, 3818, 3818, 3818, 3818, 3818, 3818, 3819, 3819, 3819,
- 3819, 3819, 3819, 3819, 3820, 3820, 3820, 3820, 3820, 3820,
- 3820, 3821, 3821, 3821, 3821, 3821, 3821, 3821, 3822, 3822,
- 3822, 3822, 3822, 3822, 3822, 3824, 3824, 0, 3824, 3824,
- 3824, 3824, 3825, 3825, 0, 0, 0, 3825, 3825, 3826,
- 3826, 0, 0, 3826, 0, 3826, 3827, 0, 0, 0,
- 0, 0, 3827, 3828, 3828, 0, 0, 0, 3828, 3828,
-
- 3829, 0, 0, 0, 0, 0, 3829, 3830, 3830, 0,
- 3830, 3830, 3830, 3830, 3831, 0, 0, 0, 0, 0,
- 3831, 3832, 3832, 0, 0, 0, 3832, 3832, 3833, 3833,
- 0, 3833, 3833, 3833, 3833, 3815, 3815, 3815, 3815, 3815,
- 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815,
- 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815,
- 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815, 3815,
- 3815, 3815, 3815, 3815, 3815, 3815
+ 25, 27, 131, 25, 25, 27, 31, 25, 27, 32,
+ 30, 47, 25, 32, 25, 131, 32, 31, 40, 45,
+ 45, 25, 28, 32, 45, 32, 47, 28, 45, 36,
+ 36, 28, 40, 97, 28, 44, 28, 28, 36, 44,
+ 37, 37, 52, 52, 36, 37, 96, 28, 36, 44,
+
+ 41, 41, 97, 44, 44, 41, 74, 57, 96, 37,
+ 57, 37, 39, 39, 42, 41, 41, 39, 41, 42,
+ 74, 39, 42, 43, 43, 93, 43, 39, 93, 42,
+ 39, 68, 68, 42, 42, 43, 186, 39, 85, 85,
+ 63, 43, 63, 63, 71, 63, 71, 71, 73, 71,
+ 73, 73, 80, 73, 80, 80, 71, 80, 87, 186,
+ 87, 87, 88, 87, 98, 90, 88, 90, 90, 87,
+ 90, 94, 95, 102, 103, 94, 90, 90, 99, 95,
+ 100, 99, 102, 100, 98, 104, 105, 106, 103, 103,
+ 111, 104, 107, 109, 108, 116, 100, 104, 110, 104,
+
+ 108, 113, 114, 110, 105, 105, 112, 109, 1212, 106,
+ 111, 107, 110, 108, 118, 116, 117, 112, 112, 113,
+ 114, 117, 115, 120, 119, 112, 115, 119, 118, 120,
+ 119, 121, 122, 123, 124, 125, 123, 122, 126, 127,
+ 123, 128, 126, 119, 119, 129, 127, 132, 120, 125,
+ 121, 130, 129, 124, 128, 133, 123, 122, 124, 133,
+ 130, 128, 134, 136, 135, 138, 140, 132, 135, 137,
+ 139, 139, 142, 143, 137, 141, 144, 146, 137, 141,
+ 134, 136, 151, 153, 137, 138, 140, 142, 141, 145,
+ 146, 147, 145, 148, 141, 144, 152, 147, 151, 143,
+
+ 147, 149, 149, 145, 153, 148, 150, 145, 156, 154,
+ 155, 157, 155, 150, 158, 152, 157, 159, 160, 149,
+ 156, 155, 149, 160, 150, 154, 158, 161, 162, 164,
+ 164, 166, 182, 155, 166, 159, 161, 182, 168, 180,
+ 168, 168, 162, 168, 171, 171, 173, 184, 173, 173,
+ 174, 173, 174, 174, 176, 174, 178, 176, 178, 178,
+ 183, 178, 174, 181, 181, 184, 183, 185, 187, 188,
+ 189, 190, 191, 193, 192, 183, 187, 194, 189, 192,
+ 188, 197, 185, 187, 206, 195, 198, 191, 194, 196,
+ 190, 198, 179, 193, 195, 196, 196, 199, 199, 200,
+
+ 199, 204, 201, 206, 201, 200, 197, 201, 202, 203,
+ 203, 207, 202, 204, 205, 209, 207, 202, 208, 205,
+ 205, 210, 202, 208, 201, 211, 212, 209, 202, 202,
+ 212, 211, 213, 214, 215, 216, 177, 213, 218, 219,
+ 217, 210, 220, 224, 219, 223, 222, 220, 215, 214,
+ 216, 222, 217, 229, 211, 217, 218, 221, 221, 224,
+ 225, 221, 232, 221, 227, 223, 225, 226, 226, 235,
+ 227, 235, 228, 229, 230, 221, 227, 221, 228, 231,
+ 230, 233, 236, 232, 234, 231, 237, 233, 236, 234,
+ 237, 238, 240, 239, 231, 239, 241, 238, 240, 242,
+
+ 239, 243, 244, 245, 246, 242, 247, 248, 244, 241,
+ 249, 251, 253, 250, 247, 249, 245, 252, 254, 256,
+ 248, 243, 250, 254, 254, 245, 251, 257, 246, 255,
+ 258, 257, 253, 252, 255, 259, 260, 256, 261, 262,
+ 263, 259, 264, 266, 265, 262, 265, 264, 270, 261,
+ 267, 273, 258, 268, 260, 260, 272, 267, 269, 268,
+ 263, 279, 266, 271, 269, 273, 280, 270, 272, 271,
+ 274, 274, 275, 275, 276, 277, 278, 281, 278, 282,
+ 276, 277, 281, 283, 279, 284, 280, 285, 287, 286,
+ 289, 282, 288, 284, 286, 278, 289, 288, 276, 290,
+
+ 294, 291, 283, 292, 293, 290, 291, 285, 292, 295,
+ 293, 287, 296, 297, 298, 294, 299, 300, 302, 301,
+ 172, 302, 297, 295, 299, 301, 307, 303, 298, 303,
+ 296, 304, 304, 305, 305, 306, 308, 308, 306, 309,
+ 309, 310, 300, 331, 307, 311, 311, 312, 313, 314,
+ 312, 316, 313, 315, 319, 318, 331, 310, 314, 320,
+ 311, 318, 315, 322, 321, 320, 321, 323, 319, 322,
+ 316, 323, 324, 324, 325, 326, 327, 328, 329, 325,
+ 334, 326, 327, 330, 332, 332, 333, 335, 323, 333,
+ 336, 335, 337, 338, 338, 339, 329, 328, 334, 340,
+
+ 341, 327, 340, 343, 330, 342, 343, 346, 344, 336,
+ 337, 342, 341, 339, 347, 350, 346, 348, 350, 340,
+ 344, 345, 348, 351, 353, 345, 353, 353, 434, 354,
+ 345, 352, 347, 345, 354, 354, 351, 358, 345, 345,
+ 345, 345, 349, 352, 434, 349, 355, 349, 356, 355,
+ 359, 356, 357, 357, 358, 360, 361, 358, 362, 349,
+ 349, 349, 363, 349, 368, 359, 369, 362, 364, 364,
+ 360, 363, 365, 361, 361, 366, 366, 365, 367, 367,
+ 370, 369, 371, 372, 373, 370, 374, 375, 378, 368,
+ 409, 387, 379, 375, 371, 376, 376, 379, 376, 380,
+
+ 387, 374, 372, 384, 373, 380, 381, 376, 378, 409,
+ 382, 381, 170, 383, 376, 382, 383, 384, 383, 385,
+ 386, 382, 389, 386, 394, 385, 388, 388, 389, 390,
+ 390, 395, 391, 396, 395, 397, 386, 391, 408, 386,
+ 398, 386, 392, 392, 394, 392, 464, 401, 396, 464,
+ 397, 392, 395, 400, 398, 392, 400, 404, 403, 408,
+ 392, 401, 406, 392, 393, 393, 404, 393, 406, 405,
+ 411, 407, 400, 403, 405, 405, 412, 407, 410, 411,
+ 393, 414, 415, 393, 407, 393, 413, 393, 402, 416,
+ 402, 402, 413, 410, 420, 412, 417, 169, 421, 414,
+
+ 402, 402, 402, 402, 402, 418, 422, 402, 415, 416,
+ 417, 418, 419, 425, 420, 418, 426, 419, 421, 423,
+ 424, 422, 426, 428, 423, 424, 427, 427, 425, 429,
+ 430, 431, 432, 433, 435, 419, 437, 438, 432, 435,
+ 441, 429, 468, 428, 439, 431, 436, 436, 430, 436,
+ 440, 442, 448, 442, 441, 468, 437, 438, 433, 443,
+ 439, 447, 447, 449, 443, 444, 440, 444, 444, 445,
+ 446, 448, 450, 445, 446, 451, 452, 457, 449, 461,
+ 455, 485, 457, 453, 485, 444, 455, 456, 450, 446,
+ 452, 453, 453, 451, 458, 459, 456, 466, 458, 471,
+
+ 461, 460, 462, 453, 459, 453, 454, 460, 462, 463,
+ 465, 454, 471, 463, 475, 465, 167, 466, 475, 454,
+ 454, 467, 467, 454, 454, 469, 469, 454, 470, 472,
+ 472, 473, 476, 470, 474, 477, 478, 473, 479, 474,
+ 481, 478, 482, 479, 480, 480, 483, 476, 484, 486,
+ 487, 490, 481, 480, 488, 487, 477, 489, 493, 488,
+ 484, 489, 482, 490, 483, 491, 491, 492, 494, 494,
+ 486, 495, 492, 500, 497, 498, 498, 501, 502, 493,
+ 497, 503, 504, 505, 506, 501, 507, 509, 505, 512,
+ 503, 510, 511, 495, 500, 512, 513, 165, 507, 502,
+
+ 514, 518, 515, 504, 506, 509, 514, 509, 516, 510,
+ 513, 515, 511, 517, 516, 518, 519, 520, 517, 521,
+ 520, 522, 523, 524, 519, 525, 528, 519, 527, 524,
+ 531, 523, 526, 521, 527, 526, 522, 529, 530, 532,
+ 528, 533, 529, 532, 534, 525, 535, 537, 536, 534,
+ 538, 531, 527, 536, 539, 542, 543, 544, 533, 551,
+ 530, 535, 545, 537, 546, 548, 545, 539, 547, 538,
+ 540, 540, 544, 547, 551, 542, 540, 543, 540, 553,
+ 552, 548, 163, 546, 540, 552, 540, 549, 550, 540,
+ 540, 549, 554, 550, 556, 553, 540, 550, 553, 557,
+
+ 555, 554, 559, 560, 558, 552, 555, 558, 562, 556,
+ 565, 555, 561, 561, 564, 557, 563, 563, 568, 566,
+ 567, 567, 565, 560, 569, 559, 570, 571, 572, 564,
+ 573, 570, 574, 562, 566, 577, 571, 568, 574, 576,
+ 582, 583, 581, 584, 577, 573, 569, 572, 578, 579,
+ 580, 576, 578, 579, 581, 582, 580, 584, 585, 586,
+ 583, 587, 588, 589, 585, 590, 588, 590, 591, 592,
+ 593, 593, 594, 595, 586, 596, 589, 592, 594, 587,
+ 597, 596, 598, 600, 599, 595, 597, 599, 601, 603,
+ 602, 605, 591, 603, 598, 602, 604, 600, 606, 604,
+
+ 605, 86, 608, 601, 609, 609, 607, 605, 610, 610,
+ 605, 607, 607, 612, 606, 608, 611, 617, 611, 612,
+ 613, 613, 614, 614, 615, 618, 616, 619, 622, 621,
+ 615, 616, 616, 620, 621, 617, 620, 623, 624, 619,
+ 626, 624, 627, 625, 629, 623, 618, 622, 625, 628,
+ 629, 630, 631, 628, 632, 633, 631, 635, 635, 634,
+ 633, 627, 636, 626, 637, 638, 640, 639, 641, 642,
+ 638, 630, 632, 634, 643, 642, 644, 636, 646, 643,
+ 648, 645, 640, 649, 645, 637, 639, 652, 641, 645,
+ 644, 653, 645, 645, 647, 647, 646, 650, 648, 649,
+
+ 651, 652, 650, 655, 656, 651, 653, 657, 658, 655,
+ 657, 659, 658, 656, 660, 661, 662, 663, 661, 660,
+ 664, 662, 665, 666, 668, 673, 667, 669, 669, 665,
+ 659, 667, 670, 663, 658, 671, 666, 672, 664, 674,
+ 675, 670, 672, 676, 668, 677, 673, 680, 81, 678,
+ 680, 682, 676, 674, 671, 678, 675, 677, 679, 681,
+ 681, 685, 681, 683, 679, 684, 683, 682, 686, 687,
+ 684, 688, 689, 691, 690, 692, 688, 694, 691, 685,
+ 690, 692, 686, 687, 693, 695, 698, 693, 696, 697,
+ 695, 689, 699, 702, 697, 697, 700, 701, 703, 698,
+
+ 705, 700, 694, 701, 696, 699, 704, 703, 700, 706,
+ 706, 704, 702, 711, 707, 700, 700, 708, 715, 709,
+ 705, 707, 709, 710, 708, 711, 712, 713, 716, 710,
+ 716, 712, 713, 713, 714, 714, 717, 709, 718, 719,
+ 718, 712, 723, 715, 720, 721, 722, 724, 725, 726,
+ 727, 728, 730, 726, 725, 717, 729, 731, 733, 727,
+ 719, 723, 720, 721, 722, 732, 728, 724, 732, 734,
+ 730, 729, 735, 733, 736, 734, 731, 732, 737, 738,
+ 739, 740, 741, 743, 742, 744, 741, 745, 736, 746,
+ 737, 747, 735, 749, 750, 750, 76, 753, 738, 743,
+
+ 740, 739, 742, 744, 748, 745, 745, 749, 746, 748,
+ 747, 751, 752, 754, 755, 751, 753, 756, 757, 758,
+ 759, 763, 756, 760, 754, 766, 752, 761, 755, 762,
+ 760, 75, 761, 759, 757, 764, 762, 765, 758, 767,
+ 764, 768, 765, 766, 769, 763, 767, 770, 771, 772,
+ 768, 775, 779, 773, 775, 774, 770, 771, 769, 773,
+ 774, 772, 776, 777, 778, 780, 776, 779, 780, 781,
+ 782, 783, 783, 778, 785, 784, 784, 777, 787, 785,
+ 785, 786, 789, 781, 784, 791, 786, 787, 790, 792,
+ 794, 782, 793, 795, 790, 796, 793, 797, 799, 798,
+
+ 800, 789, 794, 797, 791, 798, 799, 800, 801, 792,
+ 802, 803, 806, 796, 809, 810, 813, 809, 795, 69,
+ 816, 818, 814, 817, 819, 813, 801, 806, 814, 817,
+ 818, 803, 810, 820, 824, 802, 804, 820, 804, 823,
+ 819, 804, 816, 821, 821, 804, 822, 822, 804, 825,
+ 823, 826, 824, 827, 831, 804, 804, 829, 804, 827,
+ 830, 834, 832, 825, 833, 830, 835, 840, 833, 837,
+ 835, 826, 828, 828, 828, 831, 828, 829, 836, 828,
+ 832, 839, 838, 836, 828, 834, 835, 838, 837, 845,
+ 828, 828, 840, 828, 841, 842, 839, 841, 843, 64,
+
+ 842, 842, 844, 844, 845, 843, 846, 847, 847, 848,
+ 849, 846, 850, 849, 848, 851, 851, 850, 852, 853,
+ 852, 854, 855, 856, 858, 857, 855, 859, 859, 861,
+ 860, 853, 858, 862, 863, 863, 864, 866, 865, 874,
+ 854, 868, 867, 856, 857, 860, 868, 862, 867, 861,
+ 865, 869, 869, 872, 864, 870, 873, 874, 872, 866,
+ 870, 870, 873, 875, 876, 877, 880, 878, 879, 880,
+ 881, 877, 878, 882, 879, 885, 881, 883, 883, 884,
+ 884, 882, 875, 886, 876, 887, 889, 888, 890, 891,
+ 889, 886, 888, 885, 892, 890, 893, 894, 894, 895,
+
+ 898, 896, 899, 887, 897, 897, 898, 891, 895, 896,
+ 892, 900, 902, 903, 904, 893, 905, 907, 906, 911,
+ 899, 902, 903, 906, 908, 910, 907, 908, 909, 913,
+ 900, 905, 912, 909, 915, 916, 916, 917, 904, 910,
+ 914, 912, 913, 918, 911, 914, 914, 919, 915, 920,
+ 921, 924, 917, 924, 922, 926, 919, 922, 925, 925,
+ 928, 927, 918, 930, 929, 922, 927, 931, 921, 929,
+ 932, 933, 935, 920, 936, 934, 926, 938, 936, 937,
+ 939, 928, 942, 930, 934, 940, 939, 931, 941, 943,
+ 944, 933, 932, 945, 940, 935, 938, 937, 942, 945,
+
+ 941, 946, 947, 950, 944, 948, 949, 949, 943, 946,
+ 948, 951, 952, 953, 955, 954, 947, 956, 957, 960,
+ 958, 952, 950, 954, 959, 960, 961, 962, 964, 963,
+ 965, 951, 961, 953, 955, 963, 969, 957, 59, 956,
+ 958, 962, 964, 966, 959, 967, 970, 972, 968, 966,
+ 965, 967, 968, 977, 971, 969, 973, 973, 970, 971,
+ 978, 974, 976, 975, 979, 976, 970, 974, 972, 975,
+ 979, 977, 980, 978, 981, 981, 982, 983, 984, 985,
+ 986, 987, 985, 984, 988, 986, 986, 990, 988, 992,
+ 983, 991, 980, 994, 982, 985, 987, 985, 989, 989,
+
+ 993, 996, 997, 998, 992, 993, 998, 1000, 1001, 990,
+ 1002, 991, 994, 1004, 1005, 1005, 997, 998, 1004, 1006,
+ 1000, 1007, 1009, 1006, 1011, 996, 1008, 1008, 1001, 1010,
+ 1012, 1002, 1003, 1010, 1010, 1003, 1007, 1003, 1013, 1066,
+ 1015, 1003, 1066, 1003, 1011, 1012, 1014, 1009, 1003, 1017,
+ 1016, 1014, 1013, 1003, 1015, 1016, 1016, 1018, 1017, 1019,
+ 1022, 1020, 1021, 1019, 1023, 1024, 1026, 1021, 1027, 1023,
+ 58, 1018, 1022, 1025, 1025, 1019, 1020, 1021, 1029, 1024,
+ 1028, 1031, 1027, 1029, 1030, 1032, 1031, 1026, 1033, 1028,
+ 1030, 1032, 1034, 1034, 1033, 1035, 1036, 1037, 1038, 1041,
+
+ 1035, 1042, 1036, 1039, 1043, 1047, 1042, 1046, 1044, 1045,
+ 1045, 1041, 1046, 1047, 1051, 1048, 1049, 1038, 1043, 1037,
+ 1044, 1039, 1040, 1040, 1050, 1052, 53, 1053, 1040, 1048,
+ 1040, 1054, 1049, 1051, 1055, 1056, 1040, 1054, 1050, 1055,
+ 1057, 1040, 1040, 1053, 1052, 1058, 1059, 1056, 1040, 1060,
+ 1061, 1061, 1062, 1063, 1065, 1067, 1062, 1068, 1057, 1069,
+ 1065, 1058, 1068, 1070, 1059, 1071, 1072, 1060, 1074, 1070,
+ 1071, 1075, 1069, 1063, 1067, 1076, 1077, 1074, 1078, 1079,
+ 1075, 1080, 1077, 1081, 1084, 1072, 1080, 1078, 1082, 1083,
+ 1083, 1076, 1086, 1085, 1088, 1089, 1094, 1087, 1079, 1092,
+
+ 1088, 1086, 1082, 1081, 1084, 1085, 1087, 1090, 1095, 1096,
+ 1094, 1097, 1089, 1090, 1098, 1092, 1097, 1099, 1100, 1101,
+ 1098, 1103, 1104, 1102, 1107, 1108, 1103, 1104, 1095, 1107,
+ 1108, 1109, 1100, 1111, 1096, 1113, 1099, 1101, 1102, 1111,
+ 1109, 1110, 1110, 1112, 1113, 1114, 1115, 1117, 1118, 1112,
+ 1121, 1120, 1120, 1118, 1118, 1120, 1123, 1124, 1122, 1115,
+ 1114, 1122, 1125, 1117, 1126, 1121, 1127, 1128, 1129, 1130,
+ 1123, 1126, 1131, 1132, 1133, 1130, 1134, 1124, 1125, 1132,
+ 1128, 1134, 1135, 1129, 1127, 1137, 1137, 1138, 1139, 1133,
+ 1138, 1142, 1131, 1140, 1141, 1143, 1135, 1144, 1140, 1141,
+
+ 1145, 1146, 1144, 1149, 1143, 1145, 1148, 1142, 1150, 1139,
+ 1151, 1152, 1148, 1146, 1150, 1153, 1153, 1152, 1154, 1149,
+ 1155, 1156, 1157, 1157, 1156, 1158, 1159, 1154, 1160, 1161,
+ 1163, 1151, 1161, 1162, 1164, 1165, 1163, 1166, 1155, 1167,
+ 1164, 1165, 1166, 1158, 1167, 1159, 1162, 1168, 1160, 1169,
+ 1170, 1173, 1172, 1168, 1169, 1174, 1170, 1172, 1175, 1178,
+ 1176, 1177, 1177, 1179, 1175, 1176, 1180, 1181, 1178, 1173,
+ 1182, 1180, 1179, 1183, 1184, 1174, 1183, 1184, 1186, 1185,
+ 1187, 1188, 1189, 1186, 1192, 1181, 1190, 1195, 1191, 1182,
+ 1185, 1193, 1190, 1188, 1191, 1196, 1193, 1198, 1187, 1192,
+
+ 1197, 1189, 1194, 1194, 1199, 1200, 1195, 1201, 1199, 1196,
+ 1202, 1203, 1197, 1205, 1208, 1198, 1201, 1206, 1207, 1207,
+ 1209, 1211, 1208, 1200, 1213, 1209, 1206, 1214, 1210, 1202,
+ 1216, 1215, 1205, 1210, 1218, 1216, 1203, 1217, 1213, 1219,
+ 1219, 1211, 1214, 1215, 1220, 1221, 1217, 1222, 1223, 1218,
+ 1224, 1221, 1225, 1222, 1226, 1227, 1223, 1227, 1228, 1226,
+ 1229, 1230, 1231, 1228, 1220, 1224, 1232, 1231, 1225, 1233,
+ 1234, 1235, 1236, 1234, 1229, 1230, 1237, 1240, 1235, 1239,
+ 1239, 1232, 1241, 1242, 1243, 1244, 1241, 1236, 1233, 1246,
+ 1245, 1240, 1242, 1249, 1247, 1237, 1245, 1249, 1253, 1247,
+
+ 1244, 1251, 1243, 1250, 1250, 1253, 1251, 1254, 1247, 1246,
+ 1247, 1252, 1252, 1247, 1255, 1256, 1258, 1255, 1257, 1260,
+ 1261, 1254, 1263, 1262, 1260, 1258, 1264, 1265, 1263, 1266,
+ 1267, 1264, 1269, 1269, 1256, 1262, 1257, 1270, 1271, 1261,
+ 1266, 1265, 1270, 1271, 1272, 1273, 1275, 1274, 1276, 1267,
+ 1273, 1274, 1277, 1278, 1279, 1275, 1280, 1279, 1281, 1283,
+ 1284, 1282, 1285, 1276, 1272, 1281, 1279, 1277, 1286, 1287,
+ 1289, 1280, 1278, 1282, 1286, 1288, 1289, 1290, 1283, 1291,
+ 1285, 1284, 1292, 1293, 1287, 1294, 1288, 1296, 1295, 1297,
+ 1298, 1292, 1300, 1303, 1307, 1299, 1302, 1290, 1293, 1291,
+
+ 1295, 1299, 1302, 1304, 1294, 1298, 1296, 1305, 1303, 1306,
+ 1307, 1308, 1300, 1309, 1297, 1305, 1308, 1304, 1310, 1311,
+ 1312, 1317, 1313, 1310, 1310, 1309, 1314, 1314, 1316, 1306,
+ 1317, 1318, 1319, 1319, 1312, 1313, 1327, 1318, 1311, 1315,
+ 1315, 1316, 1321, 1323, 1315, 1320, 1321, 1315, 1315, 1323,
+ 1320, 1322, 1315, 1330, 1324, 48, 1325, 1327, 1315, 1324,
+ 1322, 1325, 1315, 1326, 1326, 1328, 1328, 1329, 1331, 1332,
+ 1329, 1333, 1329, 1330, 1335, 1332, 1334, 1333, 1336, 1334,
+ 1337, 1338, 1339, 1335, 1340, 1337, 1331, 1341, 1342, 1345,
+ 1340, 1343, 1348, 1341, 1342, 1338, 1343, 1344, 1336, 1346,
+
+ 1339, 1344, 1345, 1351, 1347, 1355, 1348, 1354, 1346, 1347,
+ 1349, 1349, 1353, 1346, 1351, 1346, 1353, 1346, 1356, 1346,
+ 1350, 1350, 1354, 1350, 1357, 1355, 1358, 1361, 1359, 1360,
+ 1362, 1358, 1358, 1357, 1363, 1362, 1356, 1359, 1360, 1365,
+ 1366, 1364, 1367, 1369, 1369, 1368, 1371, 1372, 1363, 1361,
+ 1364, 1368, 1370, 1374, 1371, 1373, 1367, 1375, 1365, 1366,
+ 1373, 1372, 1376, 1377, 1370, 1378, 1375, 1374, 1379, 1376,
+ 1380, 1380, 1381, 1379, 1382, 1382, 1384, 1383, 1384, 1387,
+ 1386, 1377, 1383, 1386, 1387, 1388, 1389, 1381, 1390, 1390,
+ 1378, 1391, 1392, 1392, 1394, 1389, 1393, 1393, 1395, 1394,
+
+ 1396, 1397, 1398, 1398, 1388, 1399, 1400, 1401, 1402, 1403,
+ 1401, 1391, 1404, 1407, 1406, 1403, 1406, 1404, 1405, 1395,
+ 1410, 1396, 1397, 1400, 1411, 1399, 1409, 1405, 1402, 1409,
+ 1413, 1407, 1415, 1412, 1414, 1410, 1416, 1411, 1412, 1414,
+ 1415, 1416, 1417, 1418, 1413, 1417, 1419, 1419, 1418, 1420,
+ 1421, 1422, 1423, 1424, 1420, 1426, 1427, 1422, 1428, 1423,
+ 1429, 1426, 1427, 1428, 1430, 1429, 1424, 1431, 1421, 1432,
+ 1430, 1433, 1434, 1434, 1435, 1436, 1431, 1440, 1438, 1439,
+ 1442, 1441, 1433, 1438, 1443, 1444, 1445, 1440, 1432, 1450,
+ 1447, 1444, 1445, 1446, 1435, 1436, 1441, 1439, 1449, 1446,
+
+ 1442, 1447, 1451, 1450, 1449, 1452, 1453, 1443, 1454, 1450,
+ 1452, 1455, 1453, 1456, 1457, 1459, 1451, 1458, 1458, 1460,
+ 1461, 1462, 1451, 1455, 1463, 1465, 1462, 1456, 1454, 1464,
+ 1464, 1466, 1457, 1468, 1470, 1459, 1466, 1469, 1461, 1472,
+ 1471, 1473, 1463, 1476, 1460, 1471, 1471, 1470, 1465, 1475,
+ 1473, 1469, 1468, 1474, 1477, 18, 1479, 1472, 1476, 1478,
+ 1480, 1474, 1480, 1475, 1478, 1479, 1481, 1478, 1483, 1477,
+ 1485, 1484, 1477, 1486, 1483, 1484, 1487, 1488, 1486, 1486,
+ 1481, 1485, 1489, 1490, 1491, 1492, 1493, 1494, 1490, 1491,
+ 1492, 1495, 1496, 1499, 1498, 1487, 1495, 1500, 1501, 1501,
+
+ 1489, 1502, 1503, 1488, 1493, 1502, 1504, 1494, 1498, 1506,
+ 1505, 1499, 1496, 1507, 1508, 1500, 1505, 1509, 1518, 1510,
+ 1503, 1506, 1511, 1512, 1517, 1504, 1516, 1513, 1514, 1507,
+ 1523, 1509, 1513, 1508, 1510, 1514, 1515, 1511, 1517, 1518,
+ 1519, 1515, 1512, 1521, 1516, 1520, 1520, 1522, 1525, 1519,
+ 1523, 1524, 1524, 1526, 1525, 1527, 1522, 1531, 1521, 1526,
+ 1528, 1528, 1529, 1529, 1530, 1532, 1533, 17, 1534, 1527,
+ 1530, 1533, 1535, 1531, 1534, 1536, 1537, 1537, 1535, 1538,
+ 1538, 1536, 1540, 1540, 1541, 1542, 1532, 1543, 1541, 1545,
+ 1544, 1546, 1549, 1547, 1542, 1548, 1548, 1552, 1553, 1538,
+
+ 1547, 1538, 1544, 1545, 1551, 1543, 1546, 1550, 1554, 1551,
+ 1557, 1552, 1549, 1554, 1554, 1550, 1555, 1553, 1559, 1556,
+ 1560, 1555, 1555, 1556, 1558, 1558, 1561, 1562, 1563, 1564,
+ 1557, 1567, 1562, 1565, 1566, 1561, 1567, 1559, 1568, 1560,
+ 1566, 1569, 1570, 1571, 1572, 1573, 1574, 1563, 1575, 1564,
+ 1572, 1565, 1574, 1576, 1575, 1578, 1568, 1570, 1577, 1579,
+ 1580, 1569, 1581, 1582, 1573, 1583, 1587, 1577, 1584, 1571,
+ 1585, 1585, 1576, 1586, 1578, 1588, 1586, 1582, 1579, 1580,
+ 1589, 1581, 1594, 1584, 1595, 1587, 1583, 1590, 1590, 1591,
+ 1591, 1592, 1589, 1593, 1588, 1594, 1592, 1593, 1596, 1595,
+
+ 1597, 1600, 1598, 1601, 1598, 1602, 1601, 1596, 1598, 1603,
+ 1602, 1604, 1605, 1597, 1606, 1606, 1610, 1607, 1609, 1600,
+ 1608, 1598, 1607, 1615, 1603, 1618, 1608, 1612, 1605, 1610,
+ 1611, 1604, 1612, 1609, 1613, 1614, 1611, 1616, 1613, 1614,
+ 1617, 1619, 1622, 1615, 1625, 1618, 1624, 1619, 1626, 1617,
+ 1620, 1620, 1624, 1626, 1629, 1616, 1627, 1627, 1628, 1635,
+ 1622, 1631, 1631, 1633, 1628, 1625, 1633, 1634, 1634, 1636,
+ 1637, 1640, 1642, 1639, 1629, 1635, 1639, 1641, 1643, 1644,
+ 1644, 1642, 1646, 1647, 1645, 1636, 1637, 1649, 1648, 1650,
+ 1651, 1651, 1640, 1648, 1653, 1650, 1652, 1641, 1643, 1645,
+
+ 1654, 1649, 1647, 1646, 1655, 1652, 1656, 1657, 1657, 1658,
+ 1659, 1660, 1653, 1662, 1662, 1654, 1660, 1661, 1663, 1664,
+ 1665, 1665, 1663, 1658, 1666, 1667, 1656, 1668, 1659, 1655,
+ 1669, 1670, 1661, 1683, 1669, 1671, 1673, 1673, 1668, 1664,
+ 1671, 1676, 1674, 1678, 1667, 1679, 1666, 1674, 1674, 1675,
+ 1670, 1677, 1675, 1680, 1676, 1681, 1677, 1682, 1683, 1678,
+ 1684, 1685, 1685, 1679, 1687, 1686, 1689, 1680, 1688, 1684,
+ 1686, 1682, 1691, 1688, 1681, 1681, 1690, 1692, 1692, 1690,
+ 1693, 1695, 1694, 1696, 1687, 1696, 1689, 1694, 1697, 1693,
+ 1698, 1691, 1699, 1697, 1700, 1703, 1698, 1701, 1704, 1704,
+
+ 1700, 1695, 1701, 1705, 1706, 1707, 1710, 1708, 1711, 1703,
+ 1707, 1710, 1699, 1708, 1712, 1712, 1713, 1713, 1715, 1714,
+ 1716, 1717, 1705, 1706, 1717, 1718, 1718, 1719, 1720, 1721,
+ 1729, 1723, 1711, 1714, 1724, 1716, 1715, 1723, 1722, 1724,
+ 1720, 1722, 1727, 1725, 1722, 1719, 1725, 1728, 1732, 1721,
+ 1730, 1727, 1728, 1730, 1733, 1729, 1722, 1731, 1731, 1734,
+ 1733, 1735, 1725, 1736, 1736, 1734, 1735, 1737, 1737, 1738,
+ 1740, 1739, 1732, 1741, 1742, 1738, 1739, 1743, 1744, 1745,
+ 1746, 1744, 1747, 1740, 1748, 1745, 1746, 1750, 1747, 1748,
+ 1749, 1741, 1755, 1742, 1751, 1754, 1749, 1743, 1753, 1751,
+
+ 1752, 1752, 1756, 1753, 1757, 1758, 1759, 1760, 1761, 1762,
+ 1750, 1763, 1755, 1754, 1764, 1766, 0, 1756, 1764, 1769,
+ 1759, 1760, 1761, 1757, 1765, 1758, 1765, 1762, 1767, 1770,
+ 1771, 1769, 1772, 1773, 1766, 1767, 1763, 1775, 1772, 1774,
+ 1776, 1770, 1777, 1771, 1782, 1777, 1778, 1778, 1784, 1779,
+ 1781, 1781, 1786, 1773, 1776, 1774, 1783, 1775, 1779, 1787,
+ 1784, 1783, 1788, 1777, 1782, 1785, 1785, 1786, 1790, 1789,
+ 1791, 1792, 1793, 1787, 1794, 1798, 1796, 1790, 1792, 1799,
+ 1800, 1793, 1804, 1800, 1793, 1791, 1788, 1789, 1801, 1801,
+ 1794, 1796, 1807, 1798, 1802, 1802, 1796, 1803, 1805, 1808,
+
+ 1804, 1805, 1806, 1806, 1799, 1807, 1809, 1810, 1812, 1803,
+ 1811, 1809, 1810, 1811, 1813, 1814, 1815, 1816, 1808, 1813,
+ 1817, 1818, 1819, 1822, 1822, 1821, 1816, 1820, 1823, 1812,
+ 1818, 1821, 1815, 1818, 1814, 1823, 1820, 1824, 1825, 1817,
+ 1826, 1827, 1829, 1828, 1830, 1834, 1819, 1829, 1829, 1830,
+ 1831, 1825, 1838, 1835, 0, 1827, 1839, 1824, 1826, 1828,
+ 1836, 1836, 1831, 1837, 1843, 1839, 1837, 1842, 1838, 1843,
+ 1834, 1835, 1840, 1840, 1841, 1841, 1842, 1840, 1845, 1842,
+ 1844, 1844, 1846, 1847, 1850, 1848, 1852, 1851, 1853, 1841,
+ 1848, 1848, 1854, 1853, 1855, 1856, 1845, 1860, 1850, 1864,
+
+ 1855, 1847, 1851, 1846, 1857, 1857, 1854, 1859, 1852, 1858,
+ 1861, 1860, 1859, 1856, 1862, 1858, 1861, 1865, 1866, 1864,
+ 1862, 1867, 1868, 1870, 1874, 1869, 1875, 1867, 1869, 1870,
+ 1872, 1876, 1866, 1877, 1869, 1868, 0, 1865, 1872, 1878,
+ 1879, 1877, 1880, 1874, 1878, 1875, 1882, 1881, 1883, 1879,
+ 1876, 1884, 1885, 1885, 1886, 1880, 1881, 1887, 1888, 1882,
+ 1886, 1888, 1883, 1887, 1889, 1884, 1890, 1890, 1891, 1892,
+ 1893, 1894, 1894, 1895, 1885, 1896, 1897, 1889, 1898, 1899,
+ 1902, 1896, 1901, 1901, 1905, 1904, 1895, 1892, 1891, 1893,
+ 1904, 1903, 1909, 0, 1898, 1903, 1906, 1899, 1897, 1908,
+
+ 1902, 1906, 1907, 1911, 1905, 1913, 1911, 1907, 1908, 1914,
+ 1915, 1916, 1917, 1915, 1919, 1909, 1913, 1911, 1914, 1918,
+ 1918, 1921, 1920, 1916, 1922, 1922, 1923, 1917, 1924, 1925,
+ 1927, 1923, 1926, 1919, 1920, 1928, 1925, 1927, 1929, 1930,
+ 1921, 1932, 1924, 1933, 1926, 1934, 1935, 1928, 1936, 1929,
+ 1937, 1934, 1938, 1938, 1939, 1940, 1937, 1939, 1935, 1930,
+ 1932, 1941, 1941, 1933, 1943, 1944, 1936, 1945, 1946, 1943,
+ 1947, 1944, 1948, 1948, 1949, 1940, 1947, 1946, 1950, 1952,
+ 1950, 1951, 1945, 1953, 1951, 1954, 1949, 1956, 1955, 1957,
+ 1959, 1958, 1956, 1960, 1957, 1962, 1961, 1971, 1963, 1952,
+
+ 1958, 1961, 1959, 1954, 1962, 1953, 1955, 1964, 1960, 1965,
+ 1966, 1969, 1964, 1971, 1965, 1967, 1967, 1962, 1963, 1964,
+ 1968, 1972, 1973, 1974, 1975, 1966, 1968, 1976, 1981, 1976,
+ 1984, 1977, 1969, 1978, 1978, 1979, 1979, 1980, 1980, 1974,
+ 1972, 1973, 1982, 1982, 1975, 1977, 1985, 1977, 1981, 1983,
+ 1983, 1984, 1986, 1987, 1987, 1988, 1989, 1990, 1992, 1988,
+ 1990, 1993, 1989, 1994, 1992, 1995, 1996, 1985, 1997, 1994,
+ 2000, 1996, 1998, 1986, 2003, 1998, 1999, 1999, 2001, 1993,
+ 2002, 2002, 2004, 2001, 2007, 2007, 2005, 2006, 1995, 2003,
+ 2000, 2005, 2006, 1997, 2008, 2009, 2010, 2011, 2012, 2008,
+
+ 2013, 2009, 2015, 2004, 2016, 2014, 2017, 2018, 2010, 2010,
+ 2010, 2014, 2018, 2017, 2021, 2010, 2012, 2011, 2022, 2024,
+ 2013, 2020, 2015, 2023, 2016, 2023, 2020, 2020, 2021, 2025,
+ 2024, 2026, 2027, 2022, 2028, 2029, 2031, 2026, 2030, 2030,
+ 2033, 2027, 2032, 2032, 2025, 2034, 2035, 2035, 2036, 2036,
+ 2037, 2037, 2038, 2042, 2028, 2043, 2029, 2041, 2041, 2045,
+ 2033, 2046, 2031, 2047, 2043, 2048, 2050, 2034, 2045, 2047,
+ 2049, 2052, 2038, 2051, 2051, 2053, 2054, 2056, 2042, 2055,
+ 2050, 2059, 2046, 2054, 2048, 2060, 2049, 0, 2055, 2065,
+ 2053, 2062, 2052, 2057, 2057, 2058, 2058, 2062, 2066, 2063,
+
+ 2064, 2060, 2067, 2056, 2063, 2066, 2064, 2059, 2067, 2065,
+ 2068, 2070, 2068, 2071, 2072, 2072, 2073, 2074, 2075, 2071,
+ 2076, 2073, 2077, 2079, 2078, 2080, 2074, 2078, 2080, 2081,
+ 2070, 2082, 2084, 2075, 2085, 2079, 2083, 2083, 2084, 2086,
+ 2076, 2077, 2087, 2088, 2089, 2086, 2085, 2081, 2089, 2091,
+ 2092, 2093, 2094, 2094, 2095, 2096, 2093, 2082, 2088, 2100,
+ 2097, 2099, 2087, 2100, 2089, 2101, 2101, 2102, 2103, 2091,
+ 2104, 2104, 2092, 2102, 2096, 2097, 2105, 2103, 2095, 2106,
+ 2099, 2107, 2109, 2106, 2110, 2105, 2108, 2108, 2111, 2112,
+ 2113, 2114, 2107, 2115, 2112, 2116, 2117, 2107, 2110, 2119,
+
+ 2118, 2116, 2123, 2109, 2119, 2120, 2123, 2111, 2121, 2121,
+ 2113, 2114, 2125, 2115, 2117, 2118, 2122, 2122, 2120, 2126,
+ 2127, 2125, 2128, 2129, 2129, 2131, 2131, 2128, 2132, 2136,
+ 2126, 2133, 2135, 2132, 2132, 2126, 2137, 2133, 2135, 2138,
+ 2127, 2137, 2139, 2142, 2141, 2143, 2145, 2142, 2139, 2144,
+ 2144, 2138, 2146, 2147, 2148, 2136, 2141, 2143, 2146, 2149,
+ 2148, 2150, 2151, 2151, 2152, 2153, 2150, 2154, 2155, 2157,
+ 2158, 2145, 2154, 2159, 2149, 2147, 2161, 2161, 2159, 2162,
+ 2155, 2157, 2162, 2152, 2168, 2153, 2163, 2163, 2169, 2158,
+ 2164, 2164, 2165, 2165, 2166, 2166, 2167, 2170, 2171, 2168,
+
+ 2172, 2173, 2167, 2170, 2171, 2172, 2174, 2173, 2169, 2176,
+ 2177, 2177, 2181, 2179, 2176, 2174, 2179, 2180, 2182, 2183,
+ 2183, 2180, 2185, 2186, 2187, 2188, 2188, 2189, 2192, 2187,
+ 2182, 2192, 2190, 2181, 2185, 2186, 2189, 2190, 2191, 2193,
+ 2193, 2194, 2195, 2191, 2196, 2197, 2198, 2199, 2200, 2201,
+ 2198, 2195, 2199, 2203, 2200, 2204, 2202, 2207, 2206, 2206,
+ 2210, 2194, 2196, 2208, 2197, 2202, 2213, 2201, 2209, 2204,
+ 2206, 2203, 2208, 2211, 2211, 2207, 2212, 2209, 2213, 2214,
+ 2210, 2215, 2216, 2219, 2219, 2212, 2215, 2221, 2222, 2223,
+ 2221, 2224, 2227, 2226, 2229, 2216, 2228, 2230, 2230, 2231,
+
+ 2214, 2231, 2228, 2232, 2222, 2223, 2227, 2224, 2226, 2233,
+ 2235, 2229, 2234, 2234, 2237, 2237, 2240, 2232, 2235, 2238,
+ 2238, 2243, 2241, 2242, 2244, 2245, 2246, 2233, 2241, 2242,
+ 2249, 2244, 2247, 2247, 2252, 2243, 2248, 2248, 2250, 2240,
+ 2251, 2253, 2254, 2256, 2258, 2248, 2246, 2245, 2255, 2252,
+ 2250, 2249, 2251, 2253, 2257, 2261, 2262, 2255, 2256, 2257,
+ 2257, 2263, 2265, 2259, 2266, 2259, 2259, 2258, 2254, 2259,
+ 2264, 2264, 2269, 2263, 2267, 2261, 2268, 2267, 2271, 2262,
+ 2265, 2268, 2259, 2271, 2266, 2272, 2273, 2272, 2274, 2275,
+ 2278, 2280, 2269, 2274, 2281, 2282, 2275, 2284, 2283, 2278,
+
+ 2283, 2285, 2286, 2281, 2273, 2287, 2290, 2282, 2286, 2280,
+ 2289, 2292, 2289, 2291, 2291, 2298, 2284, 2293, 2296, 2300,
+ 2290, 2285, 2293, 2296, 2294, 2287, 2294, 2297, 2299, 2301,
+ 2303, 2302, 2297, 2298, 2308, 2301, 2302, 2292, 2304, 2300,
+ 2309, 2306, 2305, 2303, 2310, 2314, 2299, 2305, 2305, 2306,
+ 2304, 2311, 2311, 2308, 2309, 2313, 2310, 2312, 2312, 2315,
+ 2314, 2316, 2318, 2317, 2318, 2319, 2313, 2316, 2317, 2320,
+ 2321, 2322, 2322, 2323, 2328, 2320, 2324, 2324, 2321, 2315,
+ 2325, 2325, 2326, 2319, 2327, 2323, 2321, 2331, 2333, 2327,
+ 2330, 2326, 2328, 2332, 2330, 2332, 2331, 2334, 2335, 2331,
+
+ 2337, 2339, 2334, 2334, 2336, 2340, 2341, 2348, 2344, 2333,
+ 2335, 2341, 2337, 2336, 2339, 2342, 2345, 2340, 2346, 2349,
+ 2342, 2344, 2347, 2347, 2345, 2348, 2350, 2346, 2352, 2351,
+ 2355, 2357, 2353, 2354, 2359, 2355, 2345, 2349, 2358, 2363,
+ 2362, 2369, 2360, 2357, 2350, 2351, 2353, 2360, 2354, 2362,
+ 2358, 2361, 2366, 2352, 2359, 2368, 2361, 2363, 2366, 2370,
+ 2371, 2368, 2372, 2373, 2369, 2374, 2374, 2375, 2376, 2376,
+ 2377, 2366, 2373, 2378, 2370, 2379, 2375, 2380, 2371, 2379,
+ 2381, 2382, 2380, 2383, 2386, 2385, 2387, 2372, 2377, 2388,
+ 2386, 2389, 2378, 2381, 2388, 2388, 2382, 2389, 2391, 2390,
+
+ 2394, 2391, 2393, 2383, 2385, 2390, 2396, 2398, 2387, 2399,
+ 2393, 2400, 2400, 2401, 2401, 2402, 2403, 2403, 2404, 2404,
+ 2394, 2405, 2406, 2408, 2402, 2410, 2396, 2399, 2401, 2408,
+ 2398, 2409, 2411, 2405, 2412, 2412, 2418, 2411, 2414, 2401,
+ 2406, 2413, 2413, 2414, 2415, 2410, 2409, 2417, 2419, 2420,
+ 2415, 2417, 2419, 2422, 2423, 2425, 2418, 2424, 2426, 2423,
+ 2428, 2427, 2429, 2426, 2431, 2437, 2430, 2432, 2432, 2420,
+ 2425, 2430, 2434, 2433, 2436, 2438, 2428, 2433, 2422, 2427,
+ 2424, 2440, 2429, 2435, 2439, 2441, 2431, 2434, 2435, 2442,
+ 2441, 2437, 2436, 2438, 2443, 2446, 2439, 2444, 2444, 2447,
+
+ 2440, 2448, 2442, 2446, 2449, 2450, 2451, 2452, 2453, 2454,
+ 2455, 2456, 2443, 2457, 2461, 2465, 2506, 2456, 2447, 2457,
+ 2448, 2454, 2459, 2449, 2462, 2506, 2452, 2461, 2450, 2453,
+ 2451, 2455, 2464, 2463, 2464, 2465, 2469, 2459, 2462, 2463,
+ 2466, 2466, 2467, 2468, 2470, 2471, 2468, 2467, 2472, 2469,
+ 2473, 2473, 2474, 2474, 2475, 2477, 2475, 2476, 2476, 2471,
+ 2478, 2472, 2484, 2479, 0, 2480, 2480, 2492, 2470, 2480,
+ 2477, 2482, 2482, 2483, 2483, 2478, 2479, 2484, 2485, 2485,
+ 2486, 2487, 2487, 2488, 2488, 2489, 2491, 2492, 2493, 2486,
+ 2489, 2491, 2486, 2494, 2495, 2495, 2496, 2496, 2497, 2498,
+
+ 2498, 2499, 2500, 2500, 2502, 2494, 2501, 2508, 2493, 2502,
+ 2503, 2503, 2504, 2504, 2505, 2507, 2507, 2497, 2510, 2499,
+ 2511, 2501, 2509, 2509, 2508, 2513, 2514, 2514, 2505, 2515,
+ 2513, 2517, 2510, 2516, 2516, 2518, 2519, 2523, 2520, 2511,
+ 2518, 2520, 2519, 2521, 2521, 2522, 2522, 2524, 2515, 2517,
+ 2525, 2527, 2525, 2528, 2529, 2529, 2523, 2530, 2532, 2521,
+ 2533, 2534, 2524, 2530, 2535, 2536, 2527, 2537, 2537, 2536,
+ 2538, 2539, 2528, 2540, 2545, 2533, 2539, 2540, 2532, 2535,
+ 2541, 2542, 2542, 2546, 2534, 2544, 2544, 2547, 2548, 2538,
+ 2546, 2549, 2550, 2551, 2545, 2541, 2542, 2552, 2552, 2553,
+
+ 2554, 2547, 2554, 2558, 2562, 2557, 2548, 2550, 2553, 2549,
+ 2555, 2557, 2559, 2555, 2563, 2558, 2560, 2559, 2561, 2551,
+ 2564, 2560, 2565, 2561, 2567, 2575, 0, 2563, 2555, 2562,
+ 2555, 2565, 2566, 2569, 2570, 2571, 2572, 2566, 2569, 2570,
+ 2571, 2564, 2573, 2574, 2576, 2580, 2575, 2577, 2573, 2574,
+ 2567, 2572, 2578, 2577, 2581, 2579, 2583, 2578, 2582, 2576,
+ 2579, 2582, 2584, 2585, 2586, 2587, 2588, 2581, 2593, 2589,
+ 2580, 2584, 2585, 2586, 2587, 2589, 2583, 2590, 2591, 2595,
+ 2588, 2596, 2591, 2590, 2597, 2597, 2598, 2600, 2593, 2601,
+ 2596, 2601, 2598, 2599, 2599, 2602, 2603, 2603, 2600, 2595,
+
+ 2604, 2605, 2599, 2607, 2602, 2604, 2608, 2609, 2609, 2610,
+ 2613, 2611, 2614, 2617, 2616, 2618, 2612, 2614, 2613, 2607,
+ 2611, 2605, 2608, 2605, 2610, 2612, 2616, 2619, 2621, 2617,
+ 2618, 2621, 2622, 2623, 2624, 2625, 2625, 2622, 0, 2619,
+ 2626, 2626, 2627, 2627, 2628, 2628, 2624, 2630, 2630, 2631,
+ 2632, 2633, 2631, 2623, 2634, 2632, 2635, 2633, 2636, 2636,
+ 2634, 2637, 2638, 2638, 2639, 2635, 2640, 2641, 2642, 2642,
+ 2644, 2643, 2652, 2645, 0, 2637, 2639, 2643, 2645, 2647,
+ 2640, 2652, 2648, 2647, 2644, 2648, 2641, 2649, 2649, 2650,
+ 2651, 2653, 2654, 2655, 2650, 2651, 2657, 2655, 2656, 2656,
+
+ 2653, 2659, 2660, 2661, 2662, 2663, 2659, 2664, 2665, 2657,
+ 2666, 2664, 2654, 2671, 2667, 2666, 2669, 2669, 2672, 2663,
+ 2667, 2668, 2660, 2661, 2662, 2670, 2670, 2668, 2665, 2673,
+ 2674, 2671, 2675, 2676, 2676, 2674, 2679, 2672, 2678, 2680,
+ 2681, 2682, 2695, 2683, 2680, 2688, 2681, 2682, 2673, 2686,
+ 2678, 2683, 2679, 2675, 2684, 2689, 2684, 2695, 2686, 2688,
+ 2690, 2690, 2691, 2692, 2692, 2691, 2697, 2694, 2696, 2689,
+ 2694, 2696, 2698, 2698, 2701, 2702, 2703, 2705, 2701, 2704,
+ 2704, 2702, 2708, 2708, 2710, 2712, 2705, 2713, 2703, 2716,
+ 2717, 2718, 2697, 2719, 2716, 2721, 2722, 2723, 2723, 2712,
+
+ 2721, 2722, 2710, 2713, 2725, 2725, 2727, 2728, 2730, 2718,
+ 2729, 2729, 2727, 2731, 2719, 2732, 2717, 2734, 2735, 2736,
+ 2732, 2735, 2737, 2740, 2730, 2738, 2738, 2728, 2741, 2744,
+ 2745, 2736, 2742, 0, 2737, 2731, 2734, 2741, 2742, 2740,
+ 2743, 2747, 2747, 2750, 2751, 2745, 2743, 2744, 2748, 2752,
+ 2749, 2748, 2749, 2754, 2754, 2755, 2755, 2757, 2759, 2758,
+ 2756, 2760, 2750, 2751, 2751, 2756, 2760, 2752, 2758, 2762,
+ 2761, 2759, 2761, 2763, 2764, 2757, 2765, 2766, 2767, 2768,
+ 2770, 2765, 2774, 2762, 2768, 0, 2764, 2763, 2769, 2769,
+ 2771, 2771, 2772, 2772, 2774, 2770, 2776, 2766, 2767, 2773,
+
+ 2773, 2775, 2777, 2775, 2778, 2778, 2781, 2777, 2779, 2779,
+ 2780, 2780, 2782, 2783, 2776, 2784, 2785, 2786, 2781, 2787,
+ 2787, 2788, 2789, 2789, 2793, 2783, 2790, 2790, 2791, 2792,
+ 2792, 2794, 2782, 2786, 2795, 2784, 2793, 2785, 2794, 2791,
+ 2788, 2796, 2797, 2798, 2799, 2801, 2795, 2797, 2800, 2800,
+ 2802, 2802, 2803, 2804, 2801, 2805, 2806, 2807, 2808, 2810,
+ 2809, 2796, 2819, 2798, 2799, 2812, 2814, 2808, 2805, 2813,
+ 2813, 2807, 2809, 2804, 2811, 2814, 2811, 2812, 2803, 2815,
+ 2806, 2810, 2816, 2818, 2819, 2820, 2821, 2822, 2822, 2823,
+ 2824, 2821, 2825, 2824, 2815, 2826, 0, 2816, 2827, 2837,
+
+ 2826, 2818, 2839, 2827, 2828, 2828, 2825, 2820, 2829, 2829,
+ 2830, 2830, 2823, 2834, 2834, 2836, 2836, 2837, 2838, 2840,
+ 2842, 2839, 2844, 2843, 2846, 2845, 2847, 2849, 2848, 2838,
+ 2848, 2850, 2851, 2846, 2840, 2852, 2852, 2857, 2854, 2856,
+ 2842, 2843, 2854, 0, 2844, 2845, 2847, 2849, 2858, 2850,
+ 2851, 2855, 2855, 2856, 2859, 2859, 2861, 2858, 2863, 2857,
+ 2862, 2862, 2864, 2865, 2866, 2861, 2868, 2867, 2869, 2870,
+ 2871, 2866, 2873, 2872, 2874, 2874, 2863, 2872, 2876, 2873,
+ 2864, 2865, 2867, 2877, 2868, 2870, 2869, 2875, 2875, 2871,
+ 2878, 2880, 2880, 2881, 2881, 2883, 2878, 2882, 2876, 2884,
+
+ 2885, 2877, 2886, 2882, 2887, 2888, 2889, 2889, 2890, 2891,
+ 2888, 2892, 2893, 2883, 2894, 2885, 2895, 2884, 2887, 2896,
+ 2897, 2886, 2897, 2893, 2896, 2894, 2898, 2898, 2890, 2891,
+ 2899, 2892, 2899, 2900, 2900, 2902, 2895, 2904, 2905, 2906,
+ 2907, 2909, 2908, 2910, 2911, 2915, 2904, 2908, 2910, 2912,
+ 2917, 2906, 2916, 2917, 2902, 2918, 2918, 2905, 2919, 2920,
+ 2907, 2909, 2921, 2921, 2911, 2915, 2923, 2922, 2912, 2926,
+ 2916, 2924, 2927, 2919, 2928, 2924, 2931, 2920, 2922, 2929,
+ 2928, 2923, 2933, 2929, 2926, 2930, 2930, 2927, 2935, 2931,
+ 2934, 2934, 2936, 2937, 2938, 2939, 2939, 2933, 2941, 2943,
+
+ 2942, 2937, 2946, 2943, 2944, 2944, 2945, 2945, 2935, 2942,
+ 2941, 2936, 2947, 2947, 2938, 2948, 2949, 2950, 2951, 2952,
+ 2948, 2946, 2953, 2953, 2955, 2949, 2959, 2959, 2960, 2961,
+ 2951, 2962, 2962, 2950, 2963, 2964, 2965, 2960, 2970, 2952,
+ 3002, 2966, 2971, 2967, 2968, 2955, 3002, 2963, 2964, 2965,
+ 2966, 2961, 2967, 2968, 2969, 2969, 2976, 2971, 2970, 2973,
+ 2973, 2976, 2978, 2979, 2980, 2981, 2982, 2978, 2984, 2980,
+ 2983, 2986, 2990, 2981, 2996, 2988, 2984, 2979, 2989, 2983,
+ 2988, 2991, 2991, 2989, 2994, 2982, 2986, 2990, 2992, 2992,
+ 2993, 2995, 3000, 2996, 2998, 2993, 2995, 2997, 2997, 2994,
+
+ 2999, 2998, 3001, 3003, 3004, 2999, 0, 3005, 3003, 3004,
+ 3000, 3007, 3007, 3008, 3009, 3010, 3010, 3011, 3011, 3009,
+ 3001, 3005, 3014, 3015, 3015, 3017, 3016, 3018, 3008, 3016,
+ 3017, 3017, 3018, 3019, 3020, 3014, 3021, 3022, 3019, 3023,
+ 3024, 3022, 3021, 3025, 3023, 3026, 3027, 3030, 3020, 3024,
+ 3028, 3029, 3030, 3026, 3031, 3034, 3028, 3029, 3025, 3032,
+ 3032, 3036, 3034, 3035, 3036, 3038, 3031, 3027, 3035, 3040,
+ 3041, 3042, 3043, 3044, 3040, 3041, 3042, 3038, 3045, 3046,
+ 3047, 3047, 3048, 3053, 3058, 3049, 3044, 3045, 3046, 3049,
+ 3043, 3048, 3050, 3054, 3055, 3059, 3060, 3050, 3061, 3054,
+
+ 3055, 3053, 3063, 3058, 3062, 3062, 3064, 3068, 3068, 3063,
+ 3066, 3067, 3069, 3070, 3071, 3059, 3060, 3061, 3073, 3066,
+ 3067, 3075, 3070, 3072, 3072, 3064, 3077, 3069, 3078, 3071,
+ 3079, 3079, 3078, 3080, 3081, 3082, 3075, 3073, 3083, 3085,
+ 3081, 3082, 3084, 3086, 3086, 3085, 3077, 3087, 3088, 3089,
+ 3091, 3092, 3097, 3098, 3089, 3087, 3094, 3083, 3080, 3091,
+ 3084, 3096, 3094, 3095, 3092, 3096, 3095, 3098, 3099, 3099,
+ 3097, 3100, 3103, 3088, 3102, 3102, 3105, 3105, 3106, 3107,
+ 3107, 3108, 3108, 3110, 3110, 3111, 3100, 3112, 3113, 3111,
+ 3103, 3117, 3112, 3115, 3115, 3118, 3119, 3113, 3120, 3123,
+
+ 3118, 3106, 3121, 3120, 3120, 3124, 3125, 0, 3119, 3126,
+ 3126, 3117, 3128, 3128, 3121, 3129, 3129, 3130, 3130, 3123,
+ 3131, 3132, 3133, 3131, 3136, 3124, 3125, 3135, 3135, 3138,
+ 3139, 3139, 3140, 3140, 3132, 3133, 3141, 3141, 3142, 3143,
+ 3143, 3144, 3136, 3145, 3146, 3147, 3148, 3148, 3149, 3138,
+ 3152, 3147, 3149, 3142, 3144, 3152, 3152, 3153, 3146, 3154,
+ 3153, 3145, 3155, 3157, 3158, 3154, 3159, 3155, 3157, 3157,
+ 3160, 3161, 3162, 3163, 3164, 3165, 3175, 3161, 3162, 3163,
+ 3164, 3166, 3167, 3167, 3170, 3166, 3159, 3158, 3172, 3170,
+ 3160, 3173, 3176, 3178, 3173, 3176, 3172, 3177, 3177, 3179,
+
+ 3165, 3175, 3180, 3181, 3179, 3182, 3183, 3183, 3184, 3187,
+ 3178, 3178, 3186, 3185, 3193, 3193, 3185, 3188, 3192, 3182,
+ 3180, 0, 3184, 3181, 3185, 3188, 3186, 3190, 3187, 3191,
+ 3194, 3194, 3190, 3190, 3191, 3191, 3199, 3192, 3195, 3195,
+ 3196, 3196, 3197, 3197, 3198, 3198, 3200, 3201, 3202, 3203,
+ 3204, 3200, 3199, 3206, 3205, 3207, 3208, 3209, 3203, 3205,
+ 3207, 3210, 3211, 3215, 3204, 3208, 3215, 3201, 3213, 3213,
+ 3214, 3214, 3206, 3216, 3202, 3217, 3217, 3209, 3218, 3220,
+ 3219, 3210, 3211, 3223, 3218, 3219, 3222, 3222, 3216, 3225,
+ 3223, 3224, 3224, 3228, 3225, 3227, 3227, 3220, 3229, 3230,
+
+ 3230, 3231, 3228, 3232, 3234, 3235, 3235, 3229, 3236, 3236,
+ 3231, 3237, 3232, 3239, 3238, 3237, 3240, 3242, 3241, 3243,
+ 3246, 3245, 3234, 3238, 3243, 3243, 3247, 3240, 3249, 3246,
+ 3247, 3253, 3239, 3241, 3245, 3255, 3253, 3242, 3254, 3254,
+ 3257, 3257, 3258, 3249, 3259, 3260, 3262, 3262, 3264, 3255,
+ 3263, 3263, 3265, 3266, 3270, 3271, 3258, 3264, 3265, 3272,
+ 3271, 3274, 3277, 3260, 3275, 3266, 3279, 3281, 3272, 3259,
+ 3275, 3282, 3281, 3284, 3277, 3286, 3282, 3283, 3283, 3270,
+ 3286, 3274, 3284, 3287, 3289, 3290, 3291, 3279, 3292, 3292,
+ 3294, 3294, 3292, 3295, 3295, 3289, 3297, 3287, 3290, 3298,
+
+ 3291, 3296, 3296, 3299, 3302, 3297, 3300, 3301, 3304, 3302,
+ 3305, 3306, 3307, 3307, 3304, 3305, 3306, 3308, 3309, 3298,
+ 3310, 3312, 3311, 3299, 3314, 3300, 3301, 3311, 3313, 3317,
+ 3309, 3315, 3315, 3317, 3313, 3308, 3321, 3318, 3319, 3312,
+ 3325, 3310, 3318, 3319, 3320, 3320, 3322, 3323, 3333, 3314,
+ 3327, 3327, 3329, 3330, 3331, 3321, 3334, 3333, 3335, 3332,
+ 3325, 3322, 3323, 3332, 3337, 3329, 3330, 3331, 3336, 3337,
+ 3338, 3339, 3334, 3340, 3340, 3341, 3336, 3335, 3342, 3343,
+ 3344, 3344, 3345, 3345, 3341, 3346, 3350, 3349, 3352, 3356,
+ 3338, 3339, 3349, 3349, 3352, 3360, 3342, 3353, 3353, 3361,
+
+ 3350, 3354, 3354, 3363, 3346, 3343, 3358, 3358, 3363, 3364,
+ 3356, 3360, 3365, 3368, 3368, 3361, 3369, 3365, 3370, 3372,
+ 3371, 3373, 3373, 3377, 3374, 3364, 3371, 3370, 3376, 3376,
+ 3378, 3384, 3379, 3380, 3380, 3382, 3369, 3377, 3385, 3389,
+ 3386, 3382, 3372, 3374, 3385, 3386, 3390, 3391, 3391, 3378,
+ 3379, 3384, 3392, 3392, 3393, 3394, 3395, 3395, 3397, 3396,
+ 3398, 3389, 3399, 3400, 3402, 3401, 3404, 3397, 3399, 3393,
+ 3396, 3404, 3390, 3403, 3403, 3394, 3395, 3401, 3405, 3405,
+ 3398, 3406, 3400, 3407, 3402, 3408, 3407, 3413, 3408, 3409,
+ 3409, 3414, 3415, 3416, 3417, 3421, 3406, 3426, 3416, 3413,
+
+ 3417, 3418, 3418, 3419, 3420, 3433, 3419, 3424, 3424, 3423,
+ 3420, 3414, 3415, 3421, 3423, 3425, 3426, 3427, 3428, 3431,
+ 3425, 3429, 3429, 3427, 3432, 3434, 3435, 3435, 3436, 3437,
+ 3433, 3431, 3438, 3440, 3440, 3428, 3428, 0, 3434, 3441,
+ 3441, 3438, 3432, 3442, 3442, 3437, 3443, 3436, 3444, 3445,
+ 3449, 3443, 3446, 3446, 3445, 3447, 3447, 3448, 3448, 3449,
+ 3450, 3450, 3444, 3451, 3452, 3453, 3458, 3454, 3457, 3457,
+ 3464, 3453, 3454, 3460, 3460, 3466, 3451, 3461, 3461, 3467,
+ 3468, 3469, 3458, 3470, 3470, 3472, 3472, 3473, 3474, 3464,
+ 3452, 3475, 3477, 3478, 3479, 3479, 3481, 3466, 3483, 3468,
+
+ 3481, 3467, 3478, 3469, 3484, 3475, 3485, 3474, 3480, 3480,
+ 3484, 3486, 3477, 3473, 3487, 3488, 3483, 3491, 0, 3487,
+ 3488, 3492, 3492, 3494, 3494, 3496, 3485, 3495, 3497, 3498,
+ 3486, 3503, 3495, 3507, 3497, 3499, 3500, 3500, 3491, 3496,
+ 3501, 3498, 3505, 3499, 3506, 3501, 3505, 3508, 3510, 3506,
+ 3509, 3503, 3511, 3507, 3512, 3509, 3513, 3515, 3516, 3517,
+ 3510, 3518, 3513, 3527, 3511, 3515, 3520, 3508, 3523, 3521,
+ 3522, 3524, 3512, 3526, 3528, 3531, 3524, 3516, 3526, 3517,
+ 3528, 3518, 0, 3527, 3520, 3521, 3529, 3522, 3522, 3523,
+ 3532, 3529, 3533, 3532, 3543, 3531, 3537, 3537, 3538, 3538,
+
+ 3539, 3545, 3545, 3546, 3539, 3533, 3547, 3550, 3546, 3543,
+ 3548, 3548, 3553, 3553, 3554, 3554, 3558, 3554, 3555, 3555,
+ 3558, 3555, 3550, 3556, 3556, 3547, 3557, 3557, 3560, 3557,
+ 3561, 3562, 3562, 3560, 3563, 3564, 3567, 3567, 3569, 3561,
+ 3568, 3568, 3570, 3571, 3572, 3572, 3573, 3574, 3571, 3564,
+ 3577, 3579, 3563, 3578, 3580, 3579, 3581, 0, 3569, 3583,
+ 3578, 3593, 3570, 3580, 3573, 3585, 3584, 3574, 3584, 3587,
+ 3585, 3581, 3586, 3586, 3592, 3577, 3593, 3583, 3587, 3588,
+ 3588, 3589, 3589, 3590, 3590, 3591, 3591, 3594, 3595, 3596,
+ 3598, 3599, 3594, 3597, 3596, 3596, 3592, 3595, 3600, 3597,
+
+ 3595, 3603, 3601, 3602, 3604, 3604, 3599, 3601, 3602, 3609,
+ 3605, 3606, 3607, 3607, 3614, 3598, 3605, 3606, 3610, 3600,
+ 3603, 3608, 3608, 3610, 3609, 3613, 3613, 3617, 3614, 3616,
+ 3616, 3619, 3621, 3621, 3622, 3622, 3617, 3623, 3623, 3624,
+ 3624, 3626, 3626, 3627, 3627, 3628, 3628, 3629, 3629, 3619,
+ 3630, 3632, 3633, 3633, 3635, 3635, 3636, 3637, 3638, 3640,
+ 3632, 3641, 3641, 3642, 3644, 3636, 3643, 3643, 3645, 3637,
+ 3659, 3646, 3647, 3647, 3640, 3648, 3630, 3651, 3638, 3644,
+ 3657, 3645, 3642, 3646, 3649, 3649, 3656, 3648, 3652, 3652,
+ 3658, 3656, 3651, 3658, 3660, 3660, 3659, 3661, 3657, 3663,
+
+ 3664, 3667, 3663, 3665, 3666, 3668, 3664, 3671, 3669, 3666,
+ 3672, 3676, 3675, 3671, 3680, 3661, 3675, 3665, 3681, 3672,
+ 3667, 3678, 3678, 3668, 3669, 3690, 3676, 3701, 3691, 3694,
+ 3690, 3691, 3695, 3695, 3696, 3696, 3697, 3697, 3681, 3702,
+ 3680, 3703, 3694, 3699, 3699, 3703, 3704, 3705, 3702, 3707,
+ 3701, 3709, 3710, 3711, 3712, 3714, 3713, 3709, 3713, 3712,
+ 3715, 3715, 3705, 3707, 3711, 3716, 3704, 3717, 3719, 3718,
+ 3714, 3720, 3722, 3721, 3724, 3710, 3725, 3723, 3716, 3724,
+ 3726, 3722, 3728, 3730, 3719, 3727, 3717, 3718, 3721, 3723,
+ 3727, 3736, 3726, 3729, 3729, 3731, 3720, 3725, 3737, 3739,
+
+ 3731, 3728, 3751, 3730, 3747, 3736, 3738, 3738, 3739, 3740,
+ 3741, 3741, 3740, 3746, 3742, 3743, 3743, 0, 3737, 3742,
+ 3744, 3744, 3745, 3745, 3747, 3748, 3749, 3751, 3748, 3750,
+ 3752, 3749, 3746, 3753, 3750, 3754, 3755, 3756, 3758, 3753,
+ 3757, 3757, 3756, 3759, 3759, 3752, 3760, 3760, 3755, 3754,
+ 3761, 3761, 3763, 3763, 3764, 3765, 3766, 3766, 3758, 3769,
+ 3768, 3771, 3772, 3775, 3775, 3776, 3776, 3778, 3777, 3764,
+ 3769, 3779, 3780, 3781, 3765, 3768, 3777, 3779, 3780, 3782,
+ 3772, 3783, 3792, 3784, 3793, 3771, 3778, 3781, 3784, 3785,
+ 3785, 3795, 3782, 3787, 3787, 3796, 3796, 3797, 3798, 3800,
+
+ 3783, 3801, 3798, 3792, 3793, 3795, 3801, 3802, 3803, 3804,
+ 3805, 3806, 3807, 3797, 3808, 3808, 3806, 3807, 3811, 3800,
+ 3813, 3803, 3804, 3812, 3815, 3817, 3802, 3816, 3816, 3805,
+ 3817, 3818, 3823, 3815, 3819, 3819, 0, 3818, 3811, 3813,
+ 3820, 3812, 3821, 3822, 3824, 3820, 3829, 3821, 3822, 3827,
+ 3824, 3823, 3826, 3826, 3827, 3828, 3828, 3831, 3832, 3833,
+ 3834, 3831, 3835, 3836, 3829, 3837, 3833, 3838, 3842, 3836,
+ 3840, 3840, 3846, 3842, 3843, 3843, 3844, 3832, 3845, 3834,
+ 3838, 3835, 3847, 3845, 3837, 3844, 3848, 3850, 3844, 3849,
+ 3849, 3846, 3850, 3851, 3852, 3854, 3855, 3855, 3852, 3848,
+
+ 3856, 3847, 3857, 3857, 3858, 3858, 3851, 3859, 3860, 3861,
+ 3862, 3862, 3859, 3863, 3863, 3860, 3865, 3864, 3865, 3856,
+ 3867, 3854, 3864, 3866, 3866, 3868, 3869, 3867, 3861, 3870,
+ 3871, 3875, 3868, 3877, 3870, 3874, 3874, 3878, 3877, 3879,
+ 3880, 3884, 3878, 3881, 3881, 3869, 3883, 3883, 3885, 3871,
+ 3875, 3886, 3886, 3887, 3887, 3888, 3890, 3890, 3879, 3880,
+ 3884, 3892, 3888, 3891, 3891, 3894, 3897, 3885, 3892, 3898,
+ 3894, 3897, 3899, 3900, 3900, 3901, 3901, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 3898, 0,
+ 0, 3899, 3905, 3905, 3905, 3905, 3905, 3905, 3905, 3906,
+
+ 3906, 3906, 3906, 3906, 3906, 3906, 3907, 3907, 3907, 3907,
+ 3907, 3907, 3907, 3908, 3908, 3908, 3908, 3908, 3908, 3908,
+ 3909, 3909, 3909, 3909, 3909, 3909, 3909, 3910, 3910, 3910,
+ 3910, 3910, 3910, 3910, 3911, 3911, 3911, 3911, 3911, 3911,
+ 3911, 3913, 3913, 0, 3913, 3913, 3913, 3913, 3914, 3914,
+ 0, 0, 0, 3914, 3914, 3915, 3915, 0, 0, 3915,
+ 0, 3915, 3916, 0, 0, 0, 0, 0, 3916, 3917,
+ 3917, 0, 0, 0, 3917, 3917, 3918, 0, 0, 0,
+ 0, 0, 3918, 3919, 3919, 0, 3919, 3919, 3919, 3919,
+ 3920, 0, 0, 0, 0, 0, 3920, 3921, 3921, 0,
+
+ 0, 0, 3921, 3921, 3922, 3922, 0, 3922, 3922, 3922,
+ 3922, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904,
+ 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904,
+ 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904,
+ 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904, 3904,
+ 3904, 3904
} ;
static yy_state_type yy_last_accepting_state;
@@ -3557,7 +3627,7 @@ static void config_end_include(void)
#define YY_NO_INPUT 1
#endif
-#line 3559 "<stdout>"
+#line 3629 "<stdout>"
#define INITIAL 0
#define quotedstring 1
@@ -3775,7 +3845,7 @@ YY_DECL
{
#line 211 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-#line 3777 "<stdout>"
+#line 3847 "<stdout>"
while ( 1 ) /* loops until end-of-file is reached */
{
@@ -3808,13 +3878,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 >= 3816 )
+ if ( yy_current_state >= 3905 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp;
}
- while ( yy_base[yy_current_state] != 7436 );
+ while ( yy_base[yy_current_state] != 7612 );
yy_find_action:
yy_act = yy_accept[yy_current_state];
@@ -4269,122 +4339,122 @@ YY_RULE_SETUP
case 86:
YY_RULE_SETUP
#line 300 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHE_MIN_TTL) }
+{ YDVAR(1, VAR_CACHE_MIN_NEGATIVE_TTL) }
YY_BREAK
case 87:
YY_RULE_SETUP
#line 301 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_HOST_TTL) }
+{ YDVAR(1, VAR_CACHE_MIN_TTL) }
YY_BREAK
case 88:
YY_RULE_SETUP
#line 302 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_LAME_TTL) }
+{ YDVAR(1, VAR_INFRA_HOST_TTL) }
YY_BREAK
case 89:
YY_RULE_SETUP
#line 303 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_SLABS) }
+{ YDVAR(1, VAR_INFRA_LAME_TTL) }
YY_BREAK
case 90:
YY_RULE_SETUP
#line 304 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
+{ YDVAR(1, VAR_INFRA_CACHE_SLABS) }
YY_BREAK
case 91:
YY_RULE_SETUP
#line 305 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
+{ YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) }
YY_BREAK
case 92:
YY_RULE_SETUP
#line 306 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) }
+{ YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) }
YY_BREAK
case 93:
YY_RULE_SETUP
#line 307 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_CACHE_MAX_RTT) }
+{ YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) }
YY_BREAK
case 94:
YY_RULE_SETUP
#line 308 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INFRA_KEEP_PROBING) }
+{ YDVAR(1, VAR_INFRA_CACHE_MAX_RTT) }
YY_BREAK
case 95:
YY_RULE_SETUP
#line 309 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
+{ YDVAR(1, VAR_INFRA_KEEP_PROBING) }
YY_BREAK
case 96:
YY_RULE_SETUP
#line 310 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
+{ YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) }
YY_BREAK
case 97:
YY_RULE_SETUP
#line 311 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DELAY_CLOSE) }
+{ YDVAR(1, VAR_JOSTLE_TIMEOUT) }
YY_BREAK
case 98:
YY_RULE_SETUP
#line 312 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_UDP_CONNECT) }
+{ YDVAR(1, VAR_DELAY_CLOSE) }
YY_BREAK
case 99:
YY_RULE_SETUP
#line 313 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
+{ YDVAR(1, VAR_UDP_CONNECT) }
YY_BREAK
case 100:
YY_RULE_SETUP
#line 314 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
+{ YDVAR(1, VAR_TARGET_FETCH_POLICY) }
YY_BREAK
case 101:
YY_RULE_SETUP
#line 315 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
+{ YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) }
YY_BREAK
case 102:
YY_RULE_SETUP
#line 316 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_GLUE) }
+{ YDVAR(1, VAR_HARDEN_LARGE_QUERIES) }
YY_BREAK
case 103:
YY_RULE_SETUP
#line 317 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
+{ YDVAR(1, VAR_HARDEN_GLUE) }
YY_BREAK
case 104:
YY_RULE_SETUP
#line 318 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
+{ YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) }
YY_BREAK
case 105:
YY_RULE_SETUP
#line 319 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
+{ YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) }
YY_BREAK
case 106:
YY_RULE_SETUP
#line 320 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) }
+{ YDVAR(1, VAR_HARDEN_REFERRAL_PATH) }
YY_BREAK
case 107:
YY_RULE_SETUP
#line 321 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HARDEN_UNKNOWN_ADDITIONAL) }
+{ YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) }
YY_BREAK
case 108:
YY_RULE_SETUP
#line 322 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
+{ YDVAR(1, VAR_HARDEN_UNKNOWN_ADDITIONAL) }
YY_BREAK
case 109:
YY_RULE_SETUP
#line 323 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CAPS_WHITELIST) }
+{ YDVAR(1, VAR_USE_CAPS_FOR_ID) }
YY_BREAK
case 110:
YY_RULE_SETUP
@@ -4394,72 +4464,72 @@ YY_RULE_SETUP
case 111:
YY_RULE_SETUP
#line 325 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
+{ YDVAR(1, VAR_CAPS_WHITELIST) }
YY_BREAK
case 112:
YY_RULE_SETUP
#line 326 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
+{ YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) }
YY_BREAK
case 113:
YY_RULE_SETUP
#line 327 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
+{ YDVAR(1, VAR_PRIVATE_ADDRESS) }
YY_BREAK
case 114:
YY_RULE_SETUP
#line 328 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH_KEY) }
+{ YDVAR(1, VAR_PRIVATE_DOMAIN) }
YY_BREAK
case 115:
YY_RULE_SETUP
#line 329 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PREFETCH) }
+{ YDVAR(1, VAR_PREFETCH_KEY) }
YY_BREAK
case 116:
YY_RULE_SETUP
#line 330 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DENY_ANY) }
+{ YDVAR(1, VAR_PREFETCH) }
YY_BREAK
case 117:
YY_RULE_SETUP
#line 331 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_STUB_ZONE) }
+{ YDVAR(1, VAR_DENY_ANY) }
YY_BREAK
case 118:
YY_RULE_SETUP
#line 332 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_NAME) }
+{ YDVAR(0, VAR_STUB_ZONE) }
YY_BREAK
case 119:
YY_RULE_SETUP
#line 333 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_ADDR) }
+{ YDVAR(1, VAR_NAME) }
YY_BREAK
case 120:
YY_RULE_SETUP
#line 334 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_HOST) }
+{ YDVAR(1, VAR_STUB_ADDR) }
YY_BREAK
case 121:
YY_RULE_SETUP
#line 335 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_PRIME) }
+{ YDVAR(1, VAR_STUB_HOST) }
YY_BREAK
case 122:
YY_RULE_SETUP
#line 336 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_FIRST) }
+{ YDVAR(1, VAR_STUB_PRIME) }
YY_BREAK
case 123:
YY_RULE_SETUP
#line 337 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_NO_CACHE) }
+{ YDVAR(1, VAR_STUB_FIRST) }
YY_BREAK
case 124:
YY_RULE_SETUP
#line 338 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) }
+{ YDVAR(1, VAR_STUB_NO_CACHE) }
YY_BREAK
case 125:
YY_RULE_SETUP
@@ -4469,37 +4539,37 @@ YY_RULE_SETUP
case 126:
YY_RULE_SETUP
#line 340 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STUB_TCP_UPSTREAM) }
+{ YDVAR(1, VAR_STUB_SSL_UPSTREAM) }
YY_BREAK
case 127:
YY_RULE_SETUP
#line 341 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_FORWARD_ZONE) }
+{ YDVAR(1, VAR_STUB_TCP_UPSTREAM) }
YY_BREAK
case 128:
YY_RULE_SETUP
#line 342 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_ADDR) }
+{ YDVAR(0, VAR_FORWARD_ZONE) }
YY_BREAK
case 129:
YY_RULE_SETUP
#line 343 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_HOST) }
+{ YDVAR(1, VAR_FORWARD_ADDR) }
YY_BREAK
case 130:
YY_RULE_SETUP
#line 344 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_FIRST) }
+{ YDVAR(1, VAR_FORWARD_HOST) }
YY_BREAK
case 131:
YY_RULE_SETUP
#line 345 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_NO_CACHE) }
+{ YDVAR(1, VAR_FORWARD_FIRST) }
YY_BREAK
case 132:
YY_RULE_SETUP
#line 346 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) }
+{ YDVAR(1, VAR_FORWARD_NO_CACHE) }
YY_BREAK
case 133:
YY_RULE_SETUP
@@ -4509,57 +4579,57 @@ YY_RULE_SETUP
case 134:
YY_RULE_SETUP
#line 348 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FORWARD_TCP_UPSTREAM) }
+{ YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) }
YY_BREAK
case 135:
YY_RULE_SETUP
#line 349 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_AUTH_ZONE) }
+{ YDVAR(1, VAR_FORWARD_TCP_UPSTREAM) }
YY_BREAK
case 136:
YY_RULE_SETUP
#line 350 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_RPZ) }
+{ YDVAR(0, VAR_AUTH_ZONE) }
YY_BREAK
case 137:
YY_RULE_SETUP
#line 351 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_TAGS) }
+{ YDVAR(0, VAR_RPZ) }
YY_BREAK
case 138:
YY_RULE_SETUP
#line 352 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) }
+{ YDVAR(1, VAR_TAGS) }
YY_BREAK
case 139:
YY_RULE_SETUP
#line 353 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) }
+{ YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) }
YY_BREAK
case 140:
YY_RULE_SETUP
#line 354 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RPZ_LOG) }
+{ YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) }
YY_BREAK
case 141:
YY_RULE_SETUP
#line 355 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RPZ_LOG_NAME) }
+{ YDVAR(1, VAR_RPZ_LOG) }
YY_BREAK
case 142:
YY_RULE_SETUP
#line 356 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RPZ_SIGNAL_NXDOMAIN_RA) }
+{ YDVAR(1, VAR_RPZ_LOG_NAME) }
YY_BREAK
case 143:
YY_RULE_SETUP
#line 357 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_ZONEFILE) }
+{ YDVAR(1, VAR_RPZ_SIGNAL_NXDOMAIN_RA) }
YY_BREAK
case 144:
YY_RULE_SETUP
#line 358 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MASTER) }
+{ YDVAR(1, VAR_ZONEFILE) }
YY_BREAK
case 145:
YY_RULE_SETUP
@@ -4569,1104 +4639,1139 @@ YY_RULE_SETUP
case 146:
YY_RULE_SETUP
#line 360 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_URL) }
+{ YDVAR(1, VAR_MASTER) }
YY_BREAK
case 147:
YY_RULE_SETUP
#line 361 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_ALLOW_NOTIFY) }
+{ YDVAR(1, VAR_URL) }
YY_BREAK
case 148:
YY_RULE_SETUP
#line 362 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FOR_DOWNSTREAM) }
+{ YDVAR(1, VAR_ALLOW_NOTIFY) }
YY_BREAK
case 149:
YY_RULE_SETUP
#line 363 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FOR_UPSTREAM) }
+{ YDVAR(1, VAR_FOR_DOWNSTREAM) }
YY_BREAK
case 150:
YY_RULE_SETUP
#line 364 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FALLBACK_ENABLED) }
+{ YDVAR(1, VAR_FOR_UPSTREAM) }
YY_BREAK
case 151:
YY_RULE_SETUP
#line 365 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_VIEW) }
+{ YDVAR(1, VAR_FALLBACK_ENABLED) }
YY_BREAK
case 152:
YY_RULE_SETUP
#line 366 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VIEW_FIRST) }
+{ YDVAR(0, VAR_VIEW) }
YY_BREAK
case 153:
YY_RULE_SETUP
#line 367 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
+{ YDVAR(1, VAR_VIEW_FIRST) }
YY_BREAK
case 154:
YY_RULE_SETUP
#line 368 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) }
YY_BREAK
case 155:
YY_RULE_SETUP
#line 369 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL) }
+{ YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) }
YY_BREAK
case 156:
YY_RULE_SETUP
#line 370 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_INTERFACE_ACTION) }
+{ YDVAR(2, VAR_ACCESS_CONTROL) }
YY_BREAK
case 157:
YY_RULE_SETUP
#line 371 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) }
+{ YDVAR(2, VAR_INTERFACE_ACTION) }
YY_BREAK
case 158:
YY_RULE_SETUP
#line 372 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) }
+{ YDVAR(1, VAR_SEND_CLIENT_SUBNET) }
YY_BREAK
case 159:
YY_RULE_SETUP
#line 373 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) }
+{ YDVAR(1, VAR_CLIENT_SUBNET_ZONE) }
YY_BREAK
case 160:
YY_RULE_SETUP
#line 374 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) }
+{ YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) }
YY_BREAK
case 161:
YY_RULE_SETUP
#line 375 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) }
+{ YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) }
YY_BREAK
case 162:
YY_RULE_SETUP
#line 376 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) }
+{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) }
YY_BREAK
case 163:
YY_RULE_SETUP
#line 377 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) }
+{ YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) }
YY_BREAK
case 164:
YY_RULE_SETUP
#line 378 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) }
+{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) }
YY_BREAK
case 165:
YY_RULE_SETUP
#line 379 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) }
+{ YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) }
YY_BREAK
case 166:
YY_RULE_SETUP
#line 380 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) }
+{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) }
YY_BREAK
case 167:
YY_RULE_SETUP
#line 381 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_IDENTITY) }
+{ YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) }
YY_BREAK
case 168:
YY_RULE_SETUP
#line 382 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_VERSION) }
+{ YDVAR(1, VAR_HIDE_IDENTITY) }
YY_BREAK
case 169:
YY_RULE_SETUP
#line 383 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) }
+{ YDVAR(1, VAR_HIDE_VERSION) }
YY_BREAK
case 170:
YY_RULE_SETUP
#line 384 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) }
+{ YDVAR(1, VAR_HIDE_TRUSTANCHOR) }
YY_BREAK
case 171:
YY_RULE_SETUP
#line 385 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IDENTITY) }
+{ YDVAR(1, VAR_HIDE_HTTP_USER_AGENT) }
YY_BREAK
case 172:
YY_RULE_SETUP
#line 386 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VERSION) }
+{ YDVAR(1, VAR_IDENTITY) }
YY_BREAK
case 173:
YY_RULE_SETUP
#line 387 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_HTTP_USER_AGENT) }
+{ YDVAR(1, VAR_VERSION) }
YY_BREAK
case 174:
YY_RULE_SETUP
#line 388 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MODULE_CONF) }
+{ YDVAR(1, VAR_HTTP_USER_AGENT) }
YY_BREAK
case 175:
YY_RULE_SETUP
#line 389 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR) }
+{ YDVAR(1, VAR_MODULE_CONF) }
YY_BREAK
case 176:
YY_RULE_SETUP
#line 390 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR) }
YY_BREAK
case 177:
YY_RULE_SETUP
#line 391 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_DLV_ANCHOR_FILE) }
YY_BREAK
case 178:
YY_RULE_SETUP
#line 392 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
+{ YDVAR(1, VAR_TRUST_ANCHOR_FILE) }
YY_BREAK
case 179:
YY_RULE_SETUP
#line 393 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
+{ YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) }
YY_BREAK
case 180:
YY_RULE_SETUP
#line 394 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR) }
+{ YDVAR(1, VAR_TRUSTED_KEYS_FILE) }
YY_BREAK
case 181:
YY_RULE_SETUP
#line 395 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) }
+{ YDVAR(1, VAR_TRUST_ANCHOR) }
YY_BREAK
case 182:
YY_RULE_SETUP
#line 396 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) }
+{ YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) }
YY_BREAK
case 183:
YY_RULE_SETUP
#line 397 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
+{ YDVAR(1, VAR_ROOT_KEY_SENTINEL) }
YY_BREAK
case 184:
YY_RULE_SETUP
#line 398 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
+{ YDVAR(1, VAR_VAL_OVERRIDE_DATE) }
YY_BREAK
case 185:
YY_RULE_SETUP
#line 399 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MIN) }
YY_BREAK
case 186:
YY_RULE_SETUP
#line 400 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_MAX_RESTART) }
+{ YDVAR(1, VAR_VAL_SIG_SKEW_MAX) }
YY_BREAK
case 187:
YY_RULE_SETUP
#line 401 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_BOGUS_TTL) }
+{ YDVAR(1, VAR_VAL_MAX_RESTART) }
YY_BREAK
case 188:
YY_RULE_SETUP
#line 402 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
+{ YDVAR(1, VAR_BOGUS_TTL) }
YY_BREAK
case 189:
YY_RULE_SETUP
#line 403 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
+{ YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) }
YY_BREAK
case 190:
YY_RULE_SETUP
#line 404 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_AGGRESSIVE_NSEC) }
+{ YDVAR(1, VAR_VAL_PERMISSIVE_MODE) }
YY_BREAK
case 191:
YY_RULE_SETUP
#line 405 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
+{ YDVAR(1, VAR_AGGRESSIVE_NSEC) }
YY_BREAK
case 192:
YY_RULE_SETUP
#line 406 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DISABLE_EDNS_DO) }
+{ YDVAR(1, VAR_IGNORE_CD_FLAG) }
YY_BREAK
case 193:
YY_RULE_SETUP
#line 407 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_EXPIRED) }
+{ YDVAR(1, VAR_DISABLE_EDNS_DO) }
YY_BREAK
case 194:
YY_RULE_SETUP
#line 408 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) }
+{ YDVAR(1, VAR_SERVE_EXPIRED) }
YY_BREAK
case 195:
YY_RULE_SETUP
#line 409 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) }
+{ YDVAR(1, VAR_SERVE_EXPIRED_TTL) }
YY_BREAK
case 196:
YY_RULE_SETUP
#line 410 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) }
+{ YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) }
YY_BREAK
case 197:
YY_RULE_SETUP
#line 411 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) }
+{ YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) }
YY_BREAK
case 198:
YY_RULE_SETUP
#line 412 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_EDE_SERVE_EXPIRED) }
+{ YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) }
YY_BREAK
case 199:
YY_RULE_SETUP
#line 413 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) }
+{ YDVAR(1, VAR_EDE_SERVE_EXPIRED) }
YY_BREAK
case 200:
YY_RULE_SETUP
#line 414 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FAKE_DSA) }
+{ YDVAR(1, VAR_SERVE_ORIGINAL_TTL) }
YY_BREAK
case 201:
YY_RULE_SETUP
#line 415 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FAKE_SHA1) }
+{ YDVAR(1, VAR_FAKE_DSA) }
YY_BREAK
case 202:
YY_RULE_SETUP
#line 416 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
+{ YDVAR(1, VAR_FAKE_SHA1) }
YY_BREAK
case 203:
YY_RULE_SETUP
#line 417 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
+{ YDVAR(1, VAR_VAL_LOG_LEVEL) }
YY_BREAK
case 204:
YY_RULE_SETUP
#line 418 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
+{ YDVAR(1, VAR_KEY_CACHE_SIZE) }
YY_BREAK
case 205:
YY_RULE_SETUP
#line 419 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
+{ YDVAR(1, VAR_KEY_CACHE_SLABS) }
YY_BREAK
case 206:
YY_RULE_SETUP
#line 420 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
+{ YDVAR(1, VAR_NEG_CACHE_SIZE) }
YY_BREAK
case 207:
YY_RULE_SETUP
-#line 422 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) }
+#line 421 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
YY_BREAK
case 208:
YY_RULE_SETUP
#line 423 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_ZONEMD_CHECK) }
+{ YDVAR(1, VAR_ZONEMD_PERMISSIVE_MODE) }
YY_BREAK
case 209:
YY_RULE_SETUP
#line 424 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) }
+{ YDVAR(1, VAR_ZONEMD_CHECK) }
YY_BREAK
case 210:
YY_RULE_SETUP
#line 425 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_ADD_HOLDDOWN) }
+{ YDVAR(1, VAR_ZONEMD_REJECT_ABSENCE) }
YY_BREAK
case 211:
YY_RULE_SETUP
#line 426 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DEL_HOLDDOWN) }
+{ YDVAR(1, VAR_ADD_HOLDDOWN) }
YY_BREAK
case 212:
YY_RULE_SETUP
#line 427 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_KEEP_MISSING) }
+{ YDVAR(1, VAR_DEL_HOLDDOWN) }
YY_BREAK
case 213:
YY_RULE_SETUP
#line 428 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) }
+{ YDVAR(1, VAR_KEEP_MISSING) }
YY_BREAK
case 214:
YY_RULE_SETUP
#line 429 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_USE_SYSLOG) }
+{ YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) }
YY_BREAK
case 215:
YY_RULE_SETUP
#line 430 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_IDENTITY) }
+{ YDVAR(1, VAR_USE_SYSLOG) }
YY_BREAK
case 216:
YY_RULE_SETUP
#line 431 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TIME_ASCII) }
+{ YDVAR(1, VAR_LOG_IDENTITY) }
YY_BREAK
case 217:
YY_RULE_SETUP
#line 432 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_QUERIES) }
+{ YDVAR(1, VAR_LOG_TIME_ASCII) }
YY_BREAK
case 218:
YY_RULE_SETUP
#line 433 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_REPLIES) }
+{ YDVAR(1, VAR_LOG_QUERIES) }
YY_BREAK
case 219:
YY_RULE_SETUP
#line 434 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) }
+{ YDVAR(1, VAR_LOG_REPLIES) }
YY_BREAK
case 220:
YY_RULE_SETUP
#line 435 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) }
+{ YDVAR(1, VAR_LOG_TAG_QUERYREPLY) }
YY_BREAK
case 221:
YY_RULE_SETUP
#line 436 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_SERVFAIL) }
+{ YDVAR(1, VAR_LOG_LOCAL_ACTIONS) }
YY_BREAK
case 222:
YY_RULE_SETUP
#line 437 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOG_DESTADDR) }
+{ YDVAR(1, VAR_LOG_SERVFAIL) }
YY_BREAK
case 223:
YY_RULE_SETUP
#line 438 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE) }
+{ YDVAR(1, VAR_LOG_DESTADDR) }
YY_BREAK
case 224:
YY_RULE_SETUP
#line 439 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA) }
+{ YDVAR(2, VAR_LOCAL_ZONE) }
YY_BREAK
case 225:
YY_RULE_SETUP
#line 440 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
+{ YDVAR(1, VAR_LOCAL_DATA) }
YY_BREAK
case 226:
YY_RULE_SETUP
#line 441 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
+{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
YY_BREAK
case 227:
YY_RULE_SETUP
#line 442 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_INSECURE_LAN_ZONES) }
+{ YDVAR(1, VAR_UNBLOCK_LAN_ZONES) }
YY_BREAK
case 228:
YY_RULE_SETUP
#line 443 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
+{ YDVAR(1, VAR_INSECURE_LAN_ZONES) }
YY_BREAK
case 229:
YY_RULE_SETUP
#line 444 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
+{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
YY_BREAK
case 230:
YY_RULE_SETUP
#line 445 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
+{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
YY_BREAK
case 231:
YY_RULE_SETUP
#line 446 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_INHIBIT_ZERO) }
+{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
YY_BREAK
case 232:
YY_RULE_SETUP
#line 447 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SHM_ENABLE) }
+{ YDVAR(1, VAR_STATISTICS_INHIBIT_ZERO) }
YY_BREAK
case 233:
YY_RULE_SETUP
#line 448 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SHM_KEY) }
+{ YDVAR(1, VAR_SHM_ENABLE) }
YY_BREAK
case 234:
YY_RULE_SETUP
#line 449 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_REMOTE_CONTROL) }
+{ YDVAR(1, VAR_SHM_KEY) }
YY_BREAK
case 235:
YY_RULE_SETUP
#line 450 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_ENABLE) }
+{ YDVAR(0, VAR_REMOTE_CONTROL) }
YY_BREAK
case 236:
YY_RULE_SETUP
#line 451 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_INTERFACE) }
+{ YDVAR(1, VAR_CONTROL_ENABLE) }
YY_BREAK
case 237:
YY_RULE_SETUP
#line 452 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_PORT) }
+{ YDVAR(1, VAR_CONTROL_INTERFACE) }
YY_BREAK
case 238:
YY_RULE_SETUP
#line 453 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_USE_CERT) }
+{ YDVAR(1, VAR_CONTROL_PORT) }
YY_BREAK
case 239:
YY_RULE_SETUP
#line 454 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_KEY_FILE) }
+{ YDVAR(1, VAR_CONTROL_USE_CERT) }
YY_BREAK
case 240:
YY_RULE_SETUP
#line 455 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_CERT_FILE) }
+{ YDVAR(1, VAR_SERVER_KEY_FILE) }
YY_BREAK
case 241:
YY_RULE_SETUP
#line 456 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
+{ YDVAR(1, VAR_SERVER_CERT_FILE) }
YY_BREAK
case 242:
YY_RULE_SETUP
#line 457 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
+{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
YY_BREAK
case 243:
YY_RULE_SETUP
#line 458 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PYTHON_SCRIPT) }
+{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
YY_BREAK
case 244:
YY_RULE_SETUP
#line 459 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_PYTHON) }
+{ YDVAR(1, VAR_PYTHON_SCRIPT) }
YY_BREAK
case 245:
YY_RULE_SETUP
#line 460 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DYNLIB_FILE) }
+{ YDVAR(0, VAR_PYTHON) }
YY_BREAK
case 246:
YY_RULE_SETUP
#line 461 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_DYNLIB) }
+{ YDVAR(1, VAR_DYNLIB_FILE) }
YY_BREAK
case 247:
YY_RULE_SETUP
#line 462 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DOMAIN_INSECURE) }
+{ YDVAR(0, VAR_DYNLIB) }
YY_BREAK
case 248:
YY_RULE_SETUP
#line 463 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
+{ YDVAR(1, VAR_DOMAIN_INSECURE) }
YY_BREAK
case 249:
YY_RULE_SETUP
#line 464 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
+{ YDVAR(1, VAR_MINIMAL_RESPONSES) }
YY_BREAK
case 250:
YY_RULE_SETUP
#line 465 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) }
+{ YDVAR(1, VAR_RRSET_ROUNDROBIN) }
YY_BREAK
case 251:
YY_RULE_SETUP
#line 466 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_UDP_SIZE) }
+{ YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) }
YY_BREAK
case 252:
YY_RULE_SETUP
#line 467 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_PREFIX) }
+{ YDVAR(1, VAR_DISCARD_TIMEOUT) }
YY_BREAK
case 253:
YY_RULE_SETUP
#line 468 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_SYNTHALL) }
+{ YDVAR(1, VAR_WAIT_LIMIT) }
YY_BREAK
case 254:
YY_RULE_SETUP
#line 469 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) }
+{ YDVAR(1, VAR_WAIT_LIMIT_COOKIE) }
YY_BREAK
case 255:
YY_RULE_SETUP
#line 470 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_NAT64_PREFIX) }
+{ YDVAR(1, VAR_WAIT_LIMIT_NETBLOCK) }
YY_BREAK
case 256:
YY_RULE_SETUP
#line 471 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DEFINE_TAG) }
+{ YDVAR(1, VAR_WAIT_LIMIT_COOKIE_NETBLOCK) }
YY_BREAK
case 257:
YY_RULE_SETUP
#line 472 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE_TAG) }
+{ YDVAR(1, VAR_MAX_UDP_SIZE) }
YY_BREAK
case 258:
YY_RULE_SETUP
#line 473 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) }
+{ YDVAR(1, VAR_DNS64_PREFIX) }
YY_BREAK
case 259:
YY_RULE_SETUP
#line 474 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) }
+{ YDVAR(1, VAR_DNS64_SYNTHALL) }
YY_BREAK
case 260:
YY_RULE_SETUP
#line 475 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) }
+{ YDVAR(1, VAR_DNS64_IGNORE_AAAA) }
YY_BREAK
case 261:
YY_RULE_SETUP
#line 476 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) }
+{ YDVAR(1, VAR_NAT64_PREFIX) }
YY_BREAK
case 262:
YY_RULE_SETUP
#line 477 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_INTERFACE_TAG) }
+{ YDVAR(1, VAR_DEFINE_TAG) }
YY_BREAK
case 263:
YY_RULE_SETUP
#line 478 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(3, VAR_INTERFACE_TAG_ACTION) }
+{ YDVAR(2, VAR_LOCAL_ZONE_TAG) }
YY_BREAK
case 264:
YY_RULE_SETUP
#line 479 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(3, VAR_INTERFACE_TAG_DATA) }
+{ YDVAR(2, VAR_ACCESS_CONTROL_TAG) }
YY_BREAK
case 265:
YY_RULE_SETUP
#line 480 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_INTERFACE_VIEW) }
+{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) }
YY_BREAK
case 266:
YY_RULE_SETUP
#line 481 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) }
+{ YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) }
YY_BREAK
case 267:
YY_RULE_SETUP
#line 482 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_DNSTAP) }
+{ YDVAR(2, VAR_ACCESS_CONTROL_VIEW) }
YY_BREAK
case 268:
YY_RULE_SETUP
#line 483 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_ENABLE) }
+{ YDVAR(2, VAR_INTERFACE_TAG) }
YY_BREAK
case 269:
YY_RULE_SETUP
#line 484 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) }
+{ YDVAR(3, VAR_INTERFACE_TAG_ACTION) }
YY_BREAK
case 270:
YY_RULE_SETUP
#line 485 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
+{ YDVAR(3, VAR_INTERFACE_TAG_DATA) }
YY_BREAK
case 271:
YY_RULE_SETUP
#line 486 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_IP) }
+{ YDVAR(2, VAR_INTERFACE_VIEW) }
YY_BREAK
case 272:
YY_RULE_SETUP
#line 487 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_TLS) }
+{ YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) }
YY_BREAK
case 273:
YY_RULE_SETUP
#line 488 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) }
+{ YDVAR(0, VAR_DNSTAP) }
YY_BREAK
case 274:
YY_RULE_SETUP
#line 489 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) }
+{ YDVAR(1, VAR_DNSTAP_ENABLE) }
YY_BREAK
case 275:
YY_RULE_SETUP
#line 490 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) }
+{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) }
YY_BREAK
case 276:
YY_RULE_SETUP
-#line 492 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) }
+#line 491 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) }
YY_BREAK
case 277:
YY_RULE_SETUP
-#line 494 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
+#line 492 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSTAP_IP) }
YY_BREAK
case 278:
YY_RULE_SETUP
-#line 495 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
+#line 493 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSTAP_TLS) }
YY_BREAK
case 279:
YY_RULE_SETUP
-#line 496 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
+#line 494 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) }
YY_BREAK
case 280:
YY_RULE_SETUP
-#line 497 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSTAP_VERSION) }
+#line 495 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) }
YY_BREAK
case 281:
YY_RULE_SETUP
-#line 498 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 496 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
- YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
+ YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) }
YY_BREAK
case 282:
YY_RULE_SETUP
-#line 500 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 498 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
- YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
+ YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) }
YY_BREAK
case 283:
YY_RULE_SETUP
-#line 502 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
+#line 500 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) }
YY_BREAK
case 284:
YY_RULE_SETUP
-#line 504 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
+#line 501 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) }
YY_BREAK
case 285:
YY_RULE_SETUP
-#line 506 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
+#line 502 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSTAP_IDENTITY) }
YY_BREAK
case 286:
YY_RULE_SETUP
-#line 508 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
+#line 503 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSTAP_VERSION) }
YY_BREAK
case 287:
YY_RULE_SETUP
-#line 510 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) }
+#line 504 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) }
YY_BREAK
case 288:
YY_RULE_SETUP
-#line 511 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT) }
+#line 506 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) }
YY_BREAK
case 289:
YY_RULE_SETUP
-#line 512 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_COOKIE) }
+#line 508 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) }
YY_BREAK
case 290:
YY_RULE_SETUP
-#line 513 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT) }
+#line 510 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) }
YY_BREAK
case 291:
YY_RULE_SETUP
-#line 514 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) }
+#line 512 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) }
YY_BREAK
case 292:
YY_RULE_SETUP
-#line 515 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SLABS) }
+#line 514 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) }
YY_BREAK
case 293:
YY_RULE_SETUP
#line 516 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) }
+{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) }
YY_BREAK
case 294:
YY_RULE_SETUP
#line 517 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_SIZE) }
+{ YDVAR(1, VAR_IP_RATELIMIT) }
YY_BREAK
case 295:
YY_RULE_SETUP
#line 518 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
+{ YDVAR(1, VAR_IP_RATELIMIT_COOKIE) }
YY_BREAK
case 296:
YY_RULE_SETUP
#line 519 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
+{ YDVAR(1, VAR_RATELIMIT) }
YY_BREAK
case 297:
YY_RULE_SETUP
#line 520 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) }
+{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) }
YY_BREAK
case 298:
YY_RULE_SETUP
#line 521 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
+{ YDVAR(1, VAR_RATELIMIT_SLABS) }
YY_BREAK
case 299:
YY_RULE_SETUP
#line 522 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) }
+{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) }
YY_BREAK
case 300:
YY_RULE_SETUP
#line 523 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_RATELIMIT_BACKOFF) }
+{ YDVAR(1, VAR_RATELIMIT_SIZE) }
YY_BREAK
case 301:
YY_RULE_SETUP
#line 524 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) }
+{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) }
YY_BREAK
case 302:
YY_RULE_SETUP
#line 525 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_SENT_COUNT) }
+{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) }
YY_BREAK
case 303:
YY_RULE_SETUP
#line 526 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_MAX_QUERY_RESTARTS) }
+{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) }
YY_BREAK
case 304:
YY_RULE_SETUP
#line 527 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_LOW_RTT) }
+{ YDVAR(1, VAR_RATELIMIT_FACTOR) }
YY_BREAK
case 305:
YY_RULE_SETUP
#line 528 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FAST_SERVER_NUM) }
+{ YDVAR(1, VAR_IP_RATELIMIT_BACKOFF) }
YY_BREAK
case 306:
YY_RULE_SETUP
#line 529 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
+{ YDVAR(1, VAR_RATELIMIT_BACKOFF) }
YY_BREAK
case 307:
YY_RULE_SETUP
#line 530 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
+{ YDVAR(1, VAR_OUTBOUND_MSG_RETRY) }
YY_BREAK
case 308:
YY_RULE_SETUP
#line 531 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
+{ YDVAR(1, VAR_MAX_SENT_COUNT) }
YY_BREAK
case 309:
YY_RULE_SETUP
#line 532 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP_TAG) }
+{ YDVAR(1, VAR_MAX_QUERY_RESTARTS) }
YY_BREAK
case 310:
YY_RULE_SETUP
#line 533 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP) }
+{ YDVAR(1, VAR_LOW_RTT) }
YY_BREAK
case 311:
YY_RULE_SETUP
#line 534 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_RESPONSE_IP_DATA) }
+{ YDVAR(1, VAR_FAST_SERVER_NUM) }
YY_BREAK
case 312:
YY_RULE_SETUP
#line 535 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_DNSCRYPT) }
+{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
YY_BREAK
case 313:
YY_RULE_SETUP
#line 536 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_ENABLE) }
+{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
YY_BREAK
case 314:
YY_RULE_SETUP
#line 537 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PORT) }
+{ YDVAR(1, VAR_FAST_SERVER_PERMIL) }
YY_BREAK
case 315:
YY_RULE_SETUP
#line 538 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) }
+{ YDVAR(2, VAR_RESPONSE_IP_TAG) }
YY_BREAK
case 316:
YY_RULE_SETUP
#line 539 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) }
+{ YDVAR(2, VAR_RESPONSE_IP) }
YY_BREAK
case 317:
YY_RULE_SETUP
#line 540 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) }
+{ YDVAR(2, VAR_RESPONSE_IP_DATA) }
YY_BREAK
case 318:
YY_RULE_SETUP
#line 541 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) }
+{ YDVAR(0, VAR_DNSCRYPT) }
YY_BREAK
case 319:
YY_RULE_SETUP
#line 542 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) }
+{ YDVAR(1, VAR_DNSCRYPT_ENABLE) }
YY_BREAK
case 320:
YY_RULE_SETUP
-#line 544 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{
- YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) }
+#line 543 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSCRYPT_PORT) }
YY_BREAK
case 321:
YY_RULE_SETUP
-#line 546 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) }
+#line 544 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) }
YY_BREAK
case 322:
YY_RULE_SETUP
-#line 547 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) }
+#line 545 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) }
YY_BREAK
case 323:
YY_RULE_SETUP
-#line 548 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PAD_RESPONSES) }
+#line 546 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) }
YY_BREAK
case 324:
YY_RULE_SETUP
-#line 549 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) }
+#line 547 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) }
YY_BREAK
case 325:
YY_RULE_SETUP
-#line 550 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PAD_QUERIES) }
+#line 548 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) }
YY_BREAK
case 326:
YY_RULE_SETUP
-#line 551 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) }
+#line 550 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{
+ YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) }
YY_BREAK
case 327:
YY_RULE_SETUP
#line 552 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_ENABLED) }
+{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) }
YY_BREAK
case 328:
YY_RULE_SETUP
#line 553 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) }
+{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) }
YY_BREAK
case 329:
YY_RULE_SETUP
#line 554 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_HOOK) }
+{ YDVAR(1, VAR_PAD_RESPONSES) }
YY_BREAK
case 330:
YY_RULE_SETUP
#line 555 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) }
+{ YDVAR(1, VAR_PAD_RESPONSES_BLOCK_SIZE) }
YY_BREAK
case 331:
YY_RULE_SETUP
#line 556 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
+{ YDVAR(1, VAR_PAD_QUERIES) }
YY_BREAK
case 332:
YY_RULE_SETUP
#line 557 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
+{ YDVAR(1, VAR_PAD_QUERIES_BLOCK_SIZE) }
YY_BREAK
case 333:
YY_RULE_SETUP
#line 558 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSECMOD_STRICT) }
+{ YDVAR(1, VAR_IPSECMOD_ENABLED) }
YY_BREAK
case 334:
YY_RULE_SETUP
#line 559 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_CACHEDB) }
+{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) }
YY_BREAK
case 335:
YY_RULE_SETUP
#line 560 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_BACKEND) }
+{ YDVAR(1, VAR_IPSECMOD_HOOK) }
YY_BREAK
case 336:
YY_RULE_SETUP
#line 561 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_SECRETSEED) }
+{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) }
YY_BREAK
case 337:
YY_RULE_SETUP
#line 562 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_NO_STORE) }
+{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
YY_BREAK
case 338:
YY_RULE_SETUP
#line 563 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISHOST) }
+{ YDVAR(1, VAR_IPSECMOD_WHITELIST) }
YY_BREAK
case 339:
YY_RULE_SETUP
#line 564 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISPORT) }
+{ YDVAR(1, VAR_IPSECMOD_STRICT) }
YY_BREAK
case 340:
YY_RULE_SETUP
#line 565 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISPATH) }
+{ YDVAR(0, VAR_CACHEDB) }
YY_BREAK
case 341:
YY_RULE_SETUP
#line 566 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISPASSWORD) }
+{ YDVAR(1, VAR_CACHEDB_BACKEND) }
YY_BREAK
case 342:
YY_RULE_SETUP
#line 567 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) }
+{ YDVAR(1, VAR_CACHEDB_SECRETSEED) }
YY_BREAK
case 343:
YY_RULE_SETUP
#line 568 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) }
+{ YDVAR(1, VAR_CACHEDB_NO_STORE) }
YY_BREAK
case 344:
YY_RULE_SETUP
#line 569 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_CACHEDB_REDISLOGICALDB) }
+{ YDVAR(1, VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED) }
YY_BREAK
case 345:
YY_RULE_SETUP
#line 570 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(0, VAR_IPSET) }
+{ YDVAR(1, VAR_CACHEDB_REDISHOST) }
YY_BREAK
case 346:
YY_RULE_SETUP
#line 571 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSET_NAME_V4) }
+{ YDVAR(1, VAR_CACHEDB_REDISPORT) }
YY_BREAK
case 347:
YY_RULE_SETUP
#line 572 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_IPSET_NAME_V6) }
+{ YDVAR(1, VAR_CACHEDB_REDISPATH) }
YY_BREAK
case 348:
YY_RULE_SETUP
#line 573 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) }
+{ YDVAR(1, VAR_CACHEDB_REDISPASSWORD) }
YY_BREAK
case 349:
YY_RULE_SETUP
#line 574 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) }
+{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) }
YY_BREAK
case 350:
YY_RULE_SETUP
#line 575 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_ANSWER_COOKIE ) }
+{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) }
YY_BREAK
case 351:
YY_RULE_SETUP
#line 576 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_COOKIE_SECRET) }
+{ YDVAR(1, VAR_CACHEDB_REDISLOGICALDB) }
YY_BREAK
case 352:
YY_RULE_SETUP
#line 577 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(2, VAR_EDNS_CLIENT_STRING) }
+{ YDVAR(0, VAR_IPSET) }
YY_BREAK
case 353:
YY_RULE_SETUP
#line 578 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) }
+{ YDVAR(1, VAR_IPSET_NAME_V4) }
YY_BREAK
case 354:
YY_RULE_SETUP
#line 579 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_NSID ) }
+{ YDVAR(1, VAR_IPSET_NAME_V6) }
YY_BREAK
case 355:
YY_RULE_SETUP
#line 580 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_EDE ) }
+{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) }
YY_BREAK
case 356:
YY_RULE_SETUP
#line 581 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ YDVAR(1, VAR_PROXY_PROTOCOL_PORT) }
+{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) }
YY_BREAK
case 357:
-/* rule 357 can match eol */
YY_RULE_SETUP
#line 582 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++; }
+{ YDVAR(1, VAR_ANSWER_COOKIE ) }
YY_BREAK
-/* Quoted strings. Strip leading and ending quotes */
case 358:
YY_RULE_SETUP
+#line 583 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_COOKIE_SECRET) }
+ YY_BREAK
+case 359:
+YY_RULE_SETUP
+#line 584 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(2, VAR_EDNS_CLIENT_STRING) }
+ YY_BREAK
+case 360:
+YY_RULE_SETUP
#line 585 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_EDNS_CLIENT_STRING_OPCODE) }
+ YY_BREAK
+case 361:
+YY_RULE_SETUP
+#line 586 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_NSID ) }
+ YY_BREAK
+case 362:
+YY_RULE_SETUP
+#line 587 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_EDE ) }
+ YY_BREAK
+case 363:
+YY_RULE_SETUP
+#line 588 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ YDVAR(1, VAR_PROXY_PROTOCOL_PORT) }
+ YY_BREAK
+case 364:
+/* rule 364 can match eol */
+YY_RULE_SETUP
+#line 589 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+{ LEXOUT(("NL\n")); cfg_parser->line++; }
+ YY_BREAK
+/* Quoted strings. Strip leading and ending quotes */
+case 365:
+YY_RULE_SETUP
+#line 592 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ BEGIN(quotedstring); LEXOUT(("QS ")); }
YY_BREAK
case YY_STATE_EOF(quotedstring):
-#line 586 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 593 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
yyerror("EOF inside quoted string");
if(--num_args == 0) { BEGIN(INITIAL); }
else { BEGIN(val); }
}
YY_BREAK
-case 359:
+case 366:
YY_RULE_SETUP
-#line 591 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 598 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("STR(%s) ", yytext)); yymore(); }
YY_BREAK
-case 360:
-/* rule 360 can match eol */
+case 367:
+/* rule 367 can match eol */
YY_RULE_SETUP
-#line 592 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 599 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ yyerror("newline inside quoted string, no end \"");
cfg_parser->line++; BEGIN(INITIAL); }
YY_BREAK
-case 361:
+case 368:
YY_RULE_SETUP
-#line 594 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 601 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("QE "));
if(--num_args == 0) { BEGIN(INITIAL); }
@@ -5679,34 +5784,34 @@ YY_RULE_SETUP
}
YY_BREAK
/* Single Quoted strings. Strip leading and ending quotes */
-case 362:
+case 369:
YY_RULE_SETUP
-#line 606 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 613 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
YY_BREAK
case YY_STATE_EOF(singlequotedstr):
-#line 607 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 614 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
yyerror("EOF inside quoted string");
if(--num_args == 0) { BEGIN(INITIAL); }
else { BEGIN(val); }
}
YY_BREAK
-case 363:
+case 370:
YY_RULE_SETUP
-#line 612 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 619 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("STR(%s) ", yytext)); yymore(); }
YY_BREAK
-case 364:
-/* rule 364 can match eol */
+case 371:
+/* rule 371 can match eol */
YY_RULE_SETUP
-#line 613 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 620 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ yyerror("newline inside quoted string, no end '");
cfg_parser->line++; BEGIN(INITIAL); }
YY_BREAK
-case 365:
+case 372:
YY_RULE_SETUP
-#line 615 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 622 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("SQE "));
if(--num_args == 0) { BEGIN(INITIAL); }
@@ -5719,38 +5824,38 @@ YY_RULE_SETUP
}
YY_BREAK
/* include: directive */
-case 366:
+case 373:
YY_RULE_SETUP
-#line 627 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 634 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
YY_BREAK
case YY_STATE_EOF(include):
-#line 629 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 636 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
yyerror("EOF inside include directive");
BEGIN(inc_prev);
}
YY_BREAK
-case 367:
+case 374:
YY_RULE_SETUP
-#line 633 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 640 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("ISP ")); /* ignore */ }
YY_BREAK
-case 368:
-/* rule 368 can match eol */
+case 375:
+/* rule 375 can match eol */
YY_RULE_SETUP
-#line 634 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 641 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("NL\n")); cfg_parser->line++;}
YY_BREAK
-case 369:
+case 376:
YY_RULE_SETUP
-#line 635 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 642 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
YY_BREAK
-case 370:
+case 377:
YY_RULE_SETUP
-#line 636 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 643 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("Iunquotedstr(%s) ", yytext));
config_start_include_glob(yytext, 0);
@@ -5758,27 +5863,27 @@ YY_RULE_SETUP
}
YY_BREAK
case YY_STATE_EOF(include_quoted):
-#line 641 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 648 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
yyerror("EOF inside quoted string");
BEGIN(inc_prev);
}
YY_BREAK
-case 371:
+case 378:
YY_RULE_SETUP
-#line 645 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 652 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
YY_BREAK
-case 372:
-/* rule 372 can match eol */
+case 379:
+/* rule 379 can match eol */
YY_RULE_SETUP
-#line 646 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 653 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ yyerror("newline before \" in include name");
cfg_parser->line++; BEGIN(inc_prev); }
YY_BREAK
-case 373:
+case 380:
YY_RULE_SETUP
-#line 648 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 655 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("IQE "));
yytext[yyleng - 1] = '\0';
@@ -5788,7 +5893,7 @@ YY_RULE_SETUP
YY_BREAK
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(val):
-#line 654 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 661 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("LEXEOF "));
yy_set_bol(1); /* Set beginning of line, so "^" rules match. */
@@ -5803,39 +5908,39 @@ case YY_STATE_EOF(val):
}
YY_BREAK
/* include-toplevel: directive */
-case 374:
+case 381:
YY_RULE_SETUP
-#line 668 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 675 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel);
}
YY_BREAK
case YY_STATE_EOF(include_toplevel):
-#line 671 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 678 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
yyerror("EOF inside include_toplevel directive");
BEGIN(inc_prev);
}
YY_BREAK
-case 375:
+case 382:
YY_RULE_SETUP
-#line 675 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 682 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("ITSP ")); /* ignore */ }
YY_BREAK
-case 376:
-/* rule 376 can match eol */
+case 383:
+/* rule 383 can match eol */
YY_RULE_SETUP
-#line 676 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 683 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("NL\n")); cfg_parser->line++; }
YY_BREAK
-case 377:
+case 384:
YY_RULE_SETUP
-#line 677 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 684 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); }
YY_BREAK
-case 378:
+case 385:
YY_RULE_SETUP
-#line 678 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 685 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("ITunquotedstr(%s) ", yytext));
config_start_include_glob(yytext, 1);
@@ -5844,29 +5949,29 @@ YY_RULE_SETUP
}
YY_BREAK
case YY_STATE_EOF(include_toplevel_quoted):
-#line 684 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 691 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
yyerror("EOF inside quoted string");
BEGIN(inc_prev);
}
YY_BREAK
-case 379:
+case 386:
YY_RULE_SETUP
-#line 688 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 695 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); }
YY_BREAK
-case 380:
-/* rule 380 can match eol */
+case 387:
+/* rule 387 can match eol */
YY_RULE_SETUP
-#line 689 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 696 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
yyerror("newline before \" in include name");
cfg_parser->line++; BEGIN(inc_prev);
}
YY_BREAK
-case 381:
+case 388:
YY_RULE_SETUP
-#line 693 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 700 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
LEXOUT(("ITQE "));
yytext[yyleng - 1] = '\0';
@@ -5875,33 +5980,33 @@ YY_RULE_SETUP
return (VAR_FORCE_TOPLEVEL);
}
YY_BREAK
-case 382:
+case 389:
YY_RULE_SETUP
-#line 701 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 708 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{ LEXOUT(("unquotedstr(%s) ", yytext));
if(--num_args == 0) { BEGIN(INITIAL); }
yylval.str = strdup(yytext); return STRING_ARG; }
YY_BREAK
-case 383:
+case 390:
YY_RULE_SETUP
-#line 705 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 712 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
ub_c_error_msg("unknown keyword '%s'", yytext);
}
YY_BREAK
-case 384:
+case 391:
YY_RULE_SETUP
-#line 709 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 716 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
{
ub_c_error_msg("stray '%s'", yytext);
}
YY_BREAK
-case 385:
+case 392:
YY_RULE_SETUP
-#line 713 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 720 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
ECHO;
YY_BREAK
-#line 5903 "<stdout>"
+#line 6008 "<stdout>"
case YY_END_OF_BUFFER:
{
@@ -6194,7 +6299,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 >= 3816 )
+ if ( yy_current_state >= 3905 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -6222,11 +6327,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 >= 3816 )
+ if ( yy_current_state >= 3905 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 3815);
+ yy_is_jam = (yy_current_state == 3904);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -6859,7 +6964,7 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 713 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
+#line 720 "/usr/src/usr.sbin/unbound/util/configlexer.lex"
diff --git a/sbin/unwind/libunbound/util/configlexer.lex b/sbin/unwind/libunbound/util/configlexer.lex
index e1ab76e2556..7ae1b8c38f4 100644
--- a/sbin/unwind/libunbound/util/configlexer.lex
+++ b/sbin/unwind/libunbound/util/configlexer.lex
@@ -297,6 +297,7 @@ rrset-cache-size{COLON} { YDVAR(1, VAR_RRSET_CACHE_SIZE) }
rrset-cache-slabs{COLON} { YDVAR(1, VAR_RRSET_CACHE_SLABS) }
cache-max-ttl{COLON} { YDVAR(1, VAR_CACHE_MAX_TTL) }
cache-max-negative-ttl{COLON} { YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) }
+cache-min-negative-ttl{COLON} { YDVAR(1, VAR_CACHE_MIN_NEGATIVE_TTL) }
cache-min-ttl{COLON} { YDVAR(1, VAR_CACHE_MIN_TTL) }
infra-host-ttl{COLON} { YDVAR(1, VAR_INFRA_HOST_TTL) }
infra-lame-ttl{COLON} { YDVAR(1, VAR_INFRA_LAME_TTL) }
@@ -463,6 +464,11 @@ domain-insecure{COLON} { YDVAR(1, VAR_DOMAIN_INSECURE) }
minimal-responses{COLON} { YDVAR(1, VAR_MINIMAL_RESPONSES) }
rrset-roundrobin{COLON} { YDVAR(1, VAR_RRSET_ROUNDROBIN) }
unknown-server-time-limit{COLON} { YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) }
+discard-timeout{COLON} { YDVAR(1, VAR_DISCARD_TIMEOUT) }
+wait-limit{COLON} { YDVAR(1, VAR_WAIT_LIMIT) }
+wait-limit-cookie{COLON} { YDVAR(1, VAR_WAIT_LIMIT_COOKIE) }
+wait-limit-netblock{COLON} { YDVAR(1, VAR_WAIT_LIMIT_NETBLOCK) }
+wait-limit-cookie-netblock{COLON} { YDVAR(1, VAR_WAIT_LIMIT_COOKIE_NETBLOCK) }
max-udp-size{COLON} { YDVAR(1, VAR_MAX_UDP_SIZE) }
dns64-prefix{COLON} { YDVAR(1, VAR_DNS64_PREFIX) }
dns64-synthall{COLON} { YDVAR(1, VAR_DNS64_SYNTHALL) }
@@ -560,6 +566,7 @@ cachedb{COLON} { YDVAR(0, VAR_CACHEDB) }
backend{COLON} { YDVAR(1, VAR_CACHEDB_BACKEND) }
secret-seed{COLON} { YDVAR(1, VAR_CACHEDB_SECRETSEED) }
cachedb-no-store{COLON} { YDVAR(1, VAR_CACHEDB_NO_STORE) }
+cachedb-check-when-serve-expired{COLON} { YDVAR(1, VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED) }
redis-server-host{COLON} { YDVAR(1, VAR_CACHEDB_REDISHOST) }
redis-server-port{COLON} { YDVAR(1, VAR_CACHEDB_REDISPORT) }
redis-server-path{COLON} { YDVAR(1, VAR_CACHEDB_REDISPATH) }
diff --git a/sbin/unwind/libunbound/util/configparser.h b/sbin/unwind/libunbound/util/configparser.h
index e611d8b3dc8..a6eb58aaa5a 100644
--- a/sbin/unwind/libunbound/util/configparser.h
+++ b/sbin/unwind/libunbound/util/configparser.h
@@ -222,129 +222,136 @@
#define VAR_CAPS_WHITELIST 478
#define VAR_CACHE_MAX_NEGATIVE_TTL 479
#define VAR_PERMIT_SMALL_HOLDDOWN 480
-#define VAR_QNAME_MINIMISATION 481
-#define VAR_QNAME_MINIMISATION_STRICT 482
-#define VAR_IP_FREEBIND 483
-#define VAR_DEFINE_TAG 484
-#define VAR_LOCAL_ZONE_TAG 485
-#define VAR_ACCESS_CONTROL_TAG 486
-#define VAR_LOCAL_ZONE_OVERRIDE 487
-#define VAR_ACCESS_CONTROL_TAG_ACTION 488
-#define VAR_ACCESS_CONTROL_TAG_DATA 489
-#define VAR_VIEW 490
-#define VAR_ACCESS_CONTROL_VIEW 491
-#define VAR_VIEW_FIRST 492
-#define VAR_SERVE_EXPIRED 493
-#define VAR_SERVE_EXPIRED_TTL 494
-#define VAR_SERVE_EXPIRED_TTL_RESET 495
-#define VAR_SERVE_EXPIRED_REPLY_TTL 496
-#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 497
-#define VAR_EDE_SERVE_EXPIRED 498
-#define VAR_SERVE_ORIGINAL_TTL 499
-#define VAR_FAKE_DSA 500
-#define VAR_FAKE_SHA1 501
-#define VAR_LOG_IDENTITY 502
-#define VAR_HIDE_TRUSTANCHOR 503
-#define VAR_HIDE_HTTP_USER_AGENT 504
-#define VAR_HTTP_USER_AGENT 505
-#define VAR_TRUST_ANCHOR_SIGNALING 506
-#define VAR_AGGRESSIVE_NSEC 507
-#define VAR_USE_SYSTEMD 508
-#define VAR_SHM_ENABLE 509
-#define VAR_SHM_KEY 510
-#define VAR_ROOT_KEY_SENTINEL 511
-#define VAR_DNSCRYPT 512
-#define VAR_DNSCRYPT_ENABLE 513
-#define VAR_DNSCRYPT_PORT 514
-#define VAR_DNSCRYPT_PROVIDER 515
-#define VAR_DNSCRYPT_SECRET_KEY 516
-#define VAR_DNSCRYPT_PROVIDER_CERT 517
-#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 518
-#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 519
-#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 520
-#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 521
-#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 522
-#define VAR_PAD_RESPONSES 523
-#define VAR_PAD_RESPONSES_BLOCK_SIZE 524
-#define VAR_PAD_QUERIES 525
-#define VAR_PAD_QUERIES_BLOCK_SIZE 526
-#define VAR_IPSECMOD_ENABLED 527
-#define VAR_IPSECMOD_HOOK 528
-#define VAR_IPSECMOD_IGNORE_BOGUS 529
-#define VAR_IPSECMOD_MAX_TTL 530
-#define VAR_IPSECMOD_WHITELIST 531
-#define VAR_IPSECMOD_STRICT 532
-#define VAR_CACHEDB 533
-#define VAR_CACHEDB_BACKEND 534
-#define VAR_CACHEDB_SECRETSEED 535
-#define VAR_CACHEDB_REDISHOST 536
-#define VAR_CACHEDB_REDISPORT 537
-#define VAR_CACHEDB_REDISTIMEOUT 538
-#define VAR_CACHEDB_REDISEXPIRERECORDS 539
-#define VAR_CACHEDB_REDISPATH 540
-#define VAR_CACHEDB_REDISPASSWORD 541
-#define VAR_CACHEDB_REDISLOGICALDB 542
-#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 543
-#define VAR_FOR_UPSTREAM 544
-#define VAR_AUTH_ZONE 545
-#define VAR_ZONEFILE 546
-#define VAR_MASTER 547
-#define VAR_URL 548
-#define VAR_FOR_DOWNSTREAM 549
-#define VAR_FALLBACK_ENABLED 550
-#define VAR_TLS_ADDITIONAL_PORT 551
-#define VAR_LOW_RTT 552
-#define VAR_LOW_RTT_PERMIL 553
-#define VAR_FAST_SERVER_PERMIL 554
-#define VAR_FAST_SERVER_NUM 555
-#define VAR_ALLOW_NOTIFY 556
-#define VAR_TLS_WIN_CERT 557
-#define VAR_TCP_CONNECTION_LIMIT 558
-#define VAR_ANSWER_COOKIE 559
-#define VAR_COOKIE_SECRET 560
-#define VAR_IP_RATELIMIT_COOKIE 561
-#define VAR_FORWARD_NO_CACHE 562
-#define VAR_STUB_NO_CACHE 563
-#define VAR_LOG_SERVFAIL 564
-#define VAR_DENY_ANY 565
-#define VAR_UNKNOWN_SERVER_TIME_LIMIT 566
-#define VAR_LOG_TAG_QUERYREPLY 567
-#define VAR_STREAM_WAIT_SIZE 568
-#define VAR_TLS_CIPHERS 569
-#define VAR_TLS_CIPHERSUITES 570
-#define VAR_TLS_USE_SNI 571
-#define VAR_IPSET 572
-#define VAR_IPSET_NAME_V4 573
-#define VAR_IPSET_NAME_V6 574
-#define VAR_TLS_SESSION_TICKET_KEYS 575
-#define VAR_RPZ 576
-#define VAR_TAGS 577
-#define VAR_RPZ_ACTION_OVERRIDE 578
-#define VAR_RPZ_CNAME_OVERRIDE 579
-#define VAR_RPZ_LOG 580
-#define VAR_RPZ_LOG_NAME 581
-#define VAR_DYNLIB 582
-#define VAR_DYNLIB_FILE 583
-#define VAR_EDNS_CLIENT_STRING 584
-#define VAR_EDNS_CLIENT_STRING_OPCODE 585
-#define VAR_NSID 586
-#define VAR_ZONEMD_PERMISSIVE_MODE 587
-#define VAR_ZONEMD_CHECK 588
-#define VAR_ZONEMD_REJECT_ABSENCE 589
-#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 590
-#define VAR_INTERFACE_AUTOMATIC_PORTS 591
-#define VAR_EDE 592
-#define VAR_INTERFACE_ACTION 593
-#define VAR_INTERFACE_VIEW 594
-#define VAR_INTERFACE_TAG 595
-#define VAR_INTERFACE_TAG_ACTION 596
-#define VAR_INTERFACE_TAG_DATA 597
-#define VAR_PROXY_PROTOCOL_PORT 598
-#define VAR_STATISTICS_INHIBIT_ZERO 599
-#define VAR_HARDEN_UNKNOWN_ADDITIONAL 600
-#define VAR_DISABLE_EDNS_DO 601
-#define VAR_CACHEDB_NO_STORE 602
-#define VAR_LOG_DESTADDR 603
+#define VAR_CACHE_MIN_NEGATIVE_TTL 481
+#define VAR_QNAME_MINIMISATION 482
+#define VAR_QNAME_MINIMISATION_STRICT 483
+#define VAR_IP_FREEBIND 484
+#define VAR_DEFINE_TAG 485
+#define VAR_LOCAL_ZONE_TAG 486
+#define VAR_ACCESS_CONTROL_TAG 487
+#define VAR_LOCAL_ZONE_OVERRIDE 488
+#define VAR_ACCESS_CONTROL_TAG_ACTION 489
+#define VAR_ACCESS_CONTROL_TAG_DATA 490
+#define VAR_VIEW 491
+#define VAR_ACCESS_CONTROL_VIEW 492
+#define VAR_VIEW_FIRST 493
+#define VAR_SERVE_EXPIRED 494
+#define VAR_SERVE_EXPIRED_TTL 495
+#define VAR_SERVE_EXPIRED_TTL_RESET 496
+#define VAR_SERVE_EXPIRED_REPLY_TTL 497
+#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 498
+#define VAR_EDE_SERVE_EXPIRED 499
+#define VAR_SERVE_ORIGINAL_TTL 500
+#define VAR_FAKE_DSA 501
+#define VAR_FAKE_SHA1 502
+#define VAR_LOG_IDENTITY 503
+#define VAR_HIDE_TRUSTANCHOR 504
+#define VAR_HIDE_HTTP_USER_AGENT 505
+#define VAR_HTTP_USER_AGENT 506
+#define VAR_TRUST_ANCHOR_SIGNALING 507
+#define VAR_AGGRESSIVE_NSEC 508
+#define VAR_USE_SYSTEMD 509
+#define VAR_SHM_ENABLE 510
+#define VAR_SHM_KEY 511
+#define VAR_ROOT_KEY_SENTINEL 512
+#define VAR_DNSCRYPT 513
+#define VAR_DNSCRYPT_ENABLE 514
+#define VAR_DNSCRYPT_PORT 515
+#define VAR_DNSCRYPT_PROVIDER 516
+#define VAR_DNSCRYPT_SECRET_KEY 517
+#define VAR_DNSCRYPT_PROVIDER_CERT 518
+#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 519
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 520
+#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 521
+#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 522
+#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 523
+#define VAR_PAD_RESPONSES 524
+#define VAR_PAD_RESPONSES_BLOCK_SIZE 525
+#define VAR_PAD_QUERIES 526
+#define VAR_PAD_QUERIES_BLOCK_SIZE 527
+#define VAR_IPSECMOD_ENABLED 528
+#define VAR_IPSECMOD_HOOK 529
+#define VAR_IPSECMOD_IGNORE_BOGUS 530
+#define VAR_IPSECMOD_MAX_TTL 531
+#define VAR_IPSECMOD_WHITELIST 532
+#define VAR_IPSECMOD_STRICT 533
+#define VAR_CACHEDB 534
+#define VAR_CACHEDB_BACKEND 535
+#define VAR_CACHEDB_SECRETSEED 536
+#define VAR_CACHEDB_REDISHOST 537
+#define VAR_CACHEDB_REDISPORT 538
+#define VAR_CACHEDB_REDISTIMEOUT 539
+#define VAR_CACHEDB_REDISEXPIRERECORDS 540
+#define VAR_CACHEDB_REDISPATH 541
+#define VAR_CACHEDB_REDISPASSWORD 542
+#define VAR_CACHEDB_REDISLOGICALDB 543
+#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 544
+#define VAR_FOR_UPSTREAM 545
+#define VAR_AUTH_ZONE 546
+#define VAR_ZONEFILE 547
+#define VAR_MASTER 548
+#define VAR_URL 549
+#define VAR_FOR_DOWNSTREAM 550
+#define VAR_FALLBACK_ENABLED 551
+#define VAR_TLS_ADDITIONAL_PORT 552
+#define VAR_LOW_RTT 553
+#define VAR_LOW_RTT_PERMIL 554
+#define VAR_FAST_SERVER_PERMIL 555
+#define VAR_FAST_SERVER_NUM 556
+#define VAR_ALLOW_NOTIFY 557
+#define VAR_TLS_WIN_CERT 558
+#define VAR_TCP_CONNECTION_LIMIT 559
+#define VAR_ANSWER_COOKIE 560
+#define VAR_COOKIE_SECRET 561
+#define VAR_IP_RATELIMIT_COOKIE 562
+#define VAR_FORWARD_NO_CACHE 563
+#define VAR_STUB_NO_CACHE 564
+#define VAR_LOG_SERVFAIL 565
+#define VAR_DENY_ANY 566
+#define VAR_UNKNOWN_SERVER_TIME_LIMIT 567
+#define VAR_LOG_TAG_QUERYREPLY 568
+#define VAR_DISCARD_TIMEOUT 569
+#define VAR_WAIT_LIMIT 570
+#define VAR_WAIT_LIMIT_COOKIE 571
+#define VAR_WAIT_LIMIT_NETBLOCK 572
+#define VAR_WAIT_LIMIT_COOKIE_NETBLOCK 573
+#define VAR_STREAM_WAIT_SIZE 574
+#define VAR_TLS_CIPHERS 575
+#define VAR_TLS_CIPHERSUITES 576
+#define VAR_TLS_USE_SNI 577
+#define VAR_IPSET 578
+#define VAR_IPSET_NAME_V4 579
+#define VAR_IPSET_NAME_V6 580
+#define VAR_TLS_SESSION_TICKET_KEYS 581
+#define VAR_RPZ 582
+#define VAR_TAGS 583
+#define VAR_RPZ_ACTION_OVERRIDE 584
+#define VAR_RPZ_CNAME_OVERRIDE 585
+#define VAR_RPZ_LOG 586
+#define VAR_RPZ_LOG_NAME 587
+#define VAR_DYNLIB 588
+#define VAR_DYNLIB_FILE 589
+#define VAR_EDNS_CLIENT_STRING 590
+#define VAR_EDNS_CLIENT_STRING_OPCODE 591
+#define VAR_NSID 592
+#define VAR_ZONEMD_PERMISSIVE_MODE 593
+#define VAR_ZONEMD_CHECK 594
+#define VAR_ZONEMD_REJECT_ABSENCE 595
+#define VAR_RPZ_SIGNAL_NXDOMAIN_RA 596
+#define VAR_INTERFACE_AUTOMATIC_PORTS 597
+#define VAR_EDE 598
+#define VAR_INTERFACE_ACTION 599
+#define VAR_INTERFACE_VIEW 600
+#define VAR_INTERFACE_TAG 601
+#define VAR_INTERFACE_TAG_ACTION 602
+#define VAR_INTERFACE_TAG_DATA 603
+#define VAR_PROXY_PROTOCOL_PORT 604
+#define VAR_STATISTICS_INHIBIT_ZERO 605
+#define VAR_HARDEN_UNKNOWN_ADDITIONAL 606
+#define VAR_DISABLE_EDNS_DO 607
+#define VAR_CACHEDB_NO_STORE 608
+#define VAR_LOG_DESTADDR 609
+#define VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED 610
#ifndef YYSTYPE_DEFINED
#define YYSTYPE_DEFINED
typedef union {
diff --git a/sbin/unwind/libunbound/util/configparser.y b/sbin/unwind/libunbound/util/configparser.y
index 0e4cd5960a2..0feeb61b168 100644
--- a/sbin/unwind/libunbound/util/configparser.y
+++ b/sbin/unwind/libunbound/util/configparser.y
@@ -153,6 +153,7 @@ extern struct config_parser_state* cfg_parser;
%token VAR_MIN_CLIENT_SUBNET_IPV4 VAR_MIN_CLIENT_SUBNET_IPV6
%token VAR_MAX_ECS_TREE_SIZE_IPV4 VAR_MAX_ECS_TREE_SIZE_IPV6
%token VAR_CAPS_WHITELIST VAR_CACHE_MAX_NEGATIVE_TTL VAR_PERMIT_SMALL_HOLDDOWN
+%token VAR_CACHE_MIN_NEGATIVE_TTL
%token VAR_QNAME_MINIMISATION VAR_QNAME_MINIMISATION_STRICT VAR_IP_FREEBIND
%token VAR_DEFINE_TAG VAR_LOCAL_ZONE_TAG VAR_ACCESS_CONTROL_TAG
%token VAR_LOCAL_ZONE_OVERRIDE VAR_ACCESS_CONTROL_TAG_ACTION
@@ -188,6 +189,8 @@ extern struct config_parser_state* cfg_parser;
%token VAR_ANSWER_COOKIE VAR_COOKIE_SECRET VAR_IP_RATELIMIT_COOKIE
%token VAR_FORWARD_NO_CACHE VAR_STUB_NO_CACHE VAR_LOG_SERVFAIL VAR_DENY_ANY
%token VAR_UNKNOWN_SERVER_TIME_LIMIT VAR_LOG_TAG_QUERYREPLY
+%token VAR_DISCARD_TIMEOUT VAR_WAIT_LIMIT VAR_WAIT_LIMIT_COOKIE
+%token VAR_WAIT_LIMIT_NETBLOCK VAR_WAIT_LIMIT_COOKIE_NETBLOCK
%token VAR_STREAM_WAIT_SIZE VAR_TLS_CIPHERS VAR_TLS_CIPHERSUITES VAR_TLS_USE_SNI
%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
@@ -200,7 +203,7 @@ extern struct config_parser_state* cfg_parser;
%token VAR_INTERFACE_TAG_ACTION VAR_INTERFACE_TAG_DATA
%token VAR_PROXY_PROTOCOL_PORT VAR_STATISTICS_INHIBIT_ZERO
%token VAR_HARDEN_UNKNOWN_ADDITIONAL VAR_DISABLE_EDNS_DO VAR_CACHEDB_NO_STORE
-%token VAR_LOG_DESTADDR
+%token VAR_LOG_DESTADDR VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED
%%
toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -298,6 +301,7 @@ content_server: server_num_threads | server_verbosity | server_port |
server_min_client_subnet_ipv4 | server_min_client_subnet_ipv6 |
server_max_ecs_tree_size_ipv4 | server_max_ecs_tree_size_ipv6 |
server_caps_whitelist | server_cache_max_negative_ttl |
+ server_cache_min_negative_ttl |
server_permit_small_holddown | server_qname_minimisation |
server_ip_freebind | server_define_tag | server_local_zone_tag |
server_disable_dnssec_lame_check | server_access_control_tag |
@@ -325,6 +329,8 @@ content_server: server_num_threads | server_verbosity | server_port |
server_fast_server_permil | server_fast_server_num | server_tls_win_cert |
server_tcp_connection_limit | server_log_servfail | server_deny_any |
server_unknown_server_time_limit | server_log_tag_queryreply |
+ server_discard_timeout | server_wait_limit | server_wait_limit_cookie |
+ server_wait_limit_netblock | server_wait_limit_cookie_netblock |
server_stream_wait_size | server_tls_ciphers |
server_tls_ciphersuites | server_tls_session_ticket_keys |
server_answer_cookie | server_cookie_secret | server_ip_ratelimit_cookie |
@@ -2014,6 +2020,15 @@ server_cache_max_negative_ttl: VAR_CACHE_MAX_NEGATIVE_TTL STRING_ARG
free($2);
}
;
+server_cache_min_negative_ttl: VAR_CACHE_MIN_NEGATIVE_TTL STRING_ARG
+ {
+ OUTYY(("P(server_cache_min_negative_ttl:%s)\n", $2));
+ if(atoi($2) == 0 && strcmp($2, "0") != 0)
+ yyerror("number expected");
+ else cfg_parser->cfg->min_negative_ttl = atoi($2);
+ free($2);
+ }
+ ;
server_cache_min_ttl: VAR_CACHE_MIN_TTL STRING_ARG
{
OUTYY(("P(server_cache_min_ttl:%s)\n", $2));
@@ -2366,6 +2381,57 @@ server_unknown_server_time_limit: VAR_UNKNOWN_SERVER_TIME_LIMIT STRING_ARG
free($2);
}
;
+server_discard_timeout: VAR_DISCARD_TIMEOUT STRING_ARG
+ {
+ OUTYY(("P(server_discard_timeout:%s)\n", $2));
+ cfg_parser->cfg->discard_timeout = atoi($2);
+ free($2);
+ }
+ ;
+server_wait_limit: VAR_WAIT_LIMIT STRING_ARG
+ {
+ OUTYY(("P(server_wait_limit:%s)\n", $2));
+ cfg_parser->cfg->wait_limit = atoi($2);
+ free($2);
+ }
+ ;
+server_wait_limit_cookie: VAR_WAIT_LIMIT_COOKIE STRING_ARG
+ {
+ OUTYY(("P(server_wait_limit_cookie:%s)\n", $2));
+ cfg_parser->cfg->wait_limit_cookie = atoi($2);
+ free($2);
+ }
+ ;
+server_wait_limit_netblock: VAR_WAIT_LIMIT_NETBLOCK STRING_ARG STRING_ARG
+ {
+ OUTYY(("P(server_wait_limit_netblock:%s %s)\n", $2, $3));
+ if(atoi($3) == 0 && strcmp($3, "0") != 0) {
+ yyerror("number expected");
+ free($2);
+ free($3);
+ } else {
+ if(!cfg_str2list_insert(&cfg_parser->cfg->
+ wait_limit_netblock, $2, $3))
+ fatal_exit("out of memory adding "
+ "wait-limit-netblock");
+ }
+ }
+ ;
+server_wait_limit_cookie_netblock: VAR_WAIT_LIMIT_COOKIE_NETBLOCK STRING_ARG STRING_ARG
+ {
+ OUTYY(("P(server_wait_limit_cookie_netblock:%s %s)\n", $2, $3));
+ if(atoi($3) == 0 && strcmp($3, "0") != 0) {
+ yyerror("number expected");
+ free($2);
+ free($3);
+ } else {
+ if(!cfg_str2list_insert(&cfg_parser->cfg->
+ wait_limit_cookie_netblock, $2, $3))
+ fatal_exit("out of memory adding "
+ "wait-limit-cookie-netblock");
+ }
+ }
+ ;
server_max_udp_size: VAR_MAX_UDP_SIZE STRING_ARG
{
OUTYY(("P(server_max_udp_size:%s)\n", $2));
@@ -3723,7 +3789,7 @@ contents_cachedb: contents_cachedb content_cachedb
content_cachedb: cachedb_backend_name | cachedb_secret_seed |
redis_server_host | redis_server_port | redis_timeout |
redis_expire_records | redis_server_path | redis_server_password |
- cachedb_no_store | redis_logical_db
+ cachedb_no_store | redis_logical_db | cachedb_check_when_serve_expired
;
cachedb_backend_name: VAR_CACHEDB_BACKEND STRING_ARG
{
@@ -3762,6 +3828,19 @@ cachedb_no_store: VAR_CACHEDB_NO_STORE STRING_ARG
free($2);
}
;
+cachedb_check_when_serve_expired: VAR_CACHEDB_CHECK_WHEN_SERVE_EXPIRED STRING_ARG
+ {
+ #ifdef USE_CACHEDB
+ OUTYY(("P(cachedb_check_when_serve_expired:%s)\n", $2));
+ if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+ yyerror("expected yes or no.");
+ else cfg_parser->cfg->cachedb_check_when_serve_expired = (strcmp($2, "yes")==0);
+ #else
+ OUTYY(("P(Compiled without cachedb, ignoring)\n"));
+ #endif
+ free($2);
+ }
+ ;
redis_server_host: VAR_CACHEDB_REDISHOST STRING_ARG
{
#if defined(USE_CACHEDB) && defined(USE_REDIS)
diff --git a/sbin/unwind/libunbound/util/data/msgparse.h b/sbin/unwind/libunbound/util/data/msgparse.h
index 8e5c94a28cb..656e0d285dc 100644
--- a/sbin/unwind/libunbound/util/data/msgparse.h
+++ b/sbin/unwind/libunbound/util/data/msgparse.h
@@ -82,6 +82,8 @@ extern time_t MAX_TTL;
extern time_t MIN_TTL;
/** Maximum Negative TTL that is allowed */
extern time_t MAX_NEG_TTL;
+/** Minimum Negative TTL that is allowed */
+extern time_t MIN_NEG_TTL;
/** If we serve expired entries and prefetch them */
extern int SERVE_EXPIRED;
/** Time to serve records after expiration */
diff --git a/sbin/unwind/libunbound/util/data/msgreply.c b/sbin/unwind/libunbound/util/data/msgreply.c
index 2286d46bc3f..c9d7bbf3ad4 100644
--- a/sbin/unwind/libunbound/util/data/msgreply.c
+++ b/sbin/unwind/libunbound/util/data/msgreply.c
@@ -61,6 +61,8 @@ time_t MAX_TTL = 3600 * 24 * 10; /* ten days */
time_t MIN_TTL = 0;
/** MAX Negative TTL, for SOA records in authority section */
time_t MAX_NEG_TTL = 3600; /* one hour */
+/** MIN Negative TTL, for SOA records in authority section */
+time_t MIN_NEG_TTL = 0;
/** If we serve expired entries and prefetch them */
int SERVE_EXPIRED = 0;
/** Time to serve records after expiration */
@@ -223,18 +225,25 @@ rdata_copy(sldns_buffer* pkt, struct packed_rrset_data* data, uint8_t* to,
if(type == LDNS_RR_TYPE_SOA && section == LDNS_SECTION_AUTHORITY) {
/* negative response. see if TTL of SOA record larger than the
* minimum-ttl in the rdata of the SOA record */
- if(*rr_ttl > soa_find_minttl(rr))
- *rr_ttl = soa_find_minttl(rr);
- }
- if(!SERVE_ORIGINAL_TTL && (*rr_ttl < MIN_TTL))
- *rr_ttl = MIN_TTL;
- if(!SERVE_ORIGINAL_TTL && (*rr_ttl > MAX_TTL))
- *rr_ttl = MAX_TTL;
- if(type == LDNS_RR_TYPE_SOA && section == LDNS_SECTION_AUTHORITY) {
- /* max neg ttl overrides the min and max ttl of everything
- * else, it is for a more specific record */
- if(*rr_ttl > MAX_NEG_TTL)
- *rr_ttl = MAX_NEG_TTL;
+ if(*rr_ttl > soa_find_minttl(rr)) *rr_ttl = soa_find_minttl(rr);
+ if(!SERVE_ORIGINAL_TTL) {
+ /* If MIN_NEG_TTL is configured skip setting MIN_TTL */
+ if(MIN_NEG_TTL <= 0 && *rr_ttl < MIN_TTL) {
+ *rr_ttl = MIN_TTL;
+ }
+ if(*rr_ttl > MAX_TTL) *rr_ttl = MAX_TTL;
+ }
+ /* MAX_NEG_TTL overrides the min and max ttl of everything
+ * else; it is for a more specific record */
+ if(*rr_ttl > MAX_NEG_TTL) *rr_ttl = MAX_NEG_TTL;
+ /* MIN_NEG_TTL overrides the min and max ttl of everything
+ * else if configured; it is for a more specific record */
+ if(MIN_NEG_TTL > 0 && *rr_ttl < MIN_NEG_TTL) {
+ *rr_ttl = MIN_NEG_TTL;
+ }
+ } else if(!SERVE_ORIGINAL_TTL) {
+ if(*rr_ttl < MIN_TTL) *rr_ttl = MIN_TTL;
+ if(*rr_ttl > MAX_TTL) *rr_ttl = MAX_TTL;
}
if(*rr_ttl < data->ttl)
data->ttl = *rr_ttl;
diff --git a/sbin/unwind/libunbound/util/module.c b/sbin/unwind/libunbound/util/module.c
index 62e5de4a05b..90a155b5e8a 100644
--- a/sbin/unwind/libunbound/util/module.c
+++ b/sbin/unwind/libunbound/util/module.c
@@ -129,7 +129,7 @@ void errinf_origin(struct module_qstate* qstate, struct sock_list *origin)
}
}
-char* errinf_to_str_bogus(struct module_qstate* qstate)
+char* errinf_to_str_bogus(struct module_qstate* qstate, struct regional* region)
{
char buf[20480];
char* p = buf;
@@ -148,7 +148,10 @@ char* errinf_to_str_bogus(struct module_qstate* qstate)
snprintf(p, left, " %s", s->str);
left -= strlen(p); p += strlen(p);
}
- p = strdup(buf);
+ if(region)
+ p = regional_strdup(region, buf);
+ else
+ p = strdup(buf);
if(!p)
log_err("malloc failure in errinf_to_str");
return p;
@@ -188,7 +191,7 @@ char* errinf_to_str_servfail(struct module_qstate* qstate)
snprintf(p, left, " %s", s->str);
left -= strlen(p); p += strlen(p);
}
- p = strdup(buf);
+ p = regional_strdup(qstate->region, buf);
if(!p)
log_err("malloc failure in errinf_to_str");
return p;
@@ -206,7 +209,7 @@ char* errinf_to_str_misc(struct module_qstate* qstate)
snprintf(p, left, "%s%s", (s==qstate->errinf?"":" "), s->str);
left -= strlen(p); p += strlen(p);
}
- p = strdup(buf);
+ p = regional_strdup(qstate->region, buf);
if(!p)
log_err("malloc failure in errinf_to_str");
return p;
diff --git a/sbin/unwind/libunbound/util/module.h b/sbin/unwind/libunbound/util/module.h
index 8a9da3f931a..c9df7462491 100644
--- a/sbin/unwind/libunbound/util/module.h
+++ b/sbin/unwind/libunbound/util/module.h
@@ -180,6 +180,7 @@ struct iter_hints;
struct respip_set;
struct respip_client_info;
struct respip_addr_info;
+struct module_stack;
/** Maximum number of modules in operation */
#define MAX_MODULE 16
@@ -511,10 +512,10 @@ struct module_env {
/** auth zones */
struct auth_zones* auth_zones;
/** Mapping of forwarding zones to targets.
- * iterator forwarder information. per-thread, created by worker */
+ * iterator forwarder information. */
struct iter_forwards* fwds;
/**
- * iterator forwarder information. per-thread, created by worker.
+ * iterator stub information.
* The hints -- these aren't stored in the cache because they don't
* expire. The hints are always used to "prime" the cache. Note
* that both root hints and stub zone "hints" are stored in this
@@ -537,6 +538,12 @@ struct module_env {
/** EDNS client string information */
struct edns_strings* edns_strings;
+ /** module stack */
+ struct module_stack* modstack;
+#ifdef USE_CACHEDB
+ /** the cachedb enabled value, copied and stored here. */
+ int cachedb_enabled;
+#endif
/* Make every mesh state unique, do not aggregate mesh states. */
int unique_mesh;
};
@@ -824,10 +831,11 @@ void errinf_dname(struct module_qstate* qstate, const char* str,
/**
* Create error info in string. For validation failures.
* @param qstate: query state.
+ * @param region: the region for the result or NULL for malloced result.
* @return string or NULL on malloc failure (already logged).
- * This string is malloced and has to be freed by caller.
+ * This string is malloced if region is NULL and has to be freed by caller.
*/
-char* errinf_to_str_bogus(struct module_qstate* qstate);
+char* errinf_to_str_bogus(struct module_qstate* qstate, struct regional* region);
/**
* Check the sldns_ede_code of the qstate->errinf.
@@ -840,7 +848,6 @@ sldns_ede_code errinf_to_reason_bogus(struct module_qstate* qstate);
* Create error info in string. For other servfails.
* @param qstate: query state.
* @return string or NULL on malloc failure (already logged).
- * This string is malloced and has to be freed by caller.
*/
char* errinf_to_str_servfail(struct module_qstate* qstate);
@@ -848,7 +855,6 @@ char* errinf_to_str_servfail(struct module_qstate* qstate);
* Create error info in string. For misc failures that are not servfail.
* @param qstate: query state.
* @return string or NULL on malloc failure (already logged).
- * This string is malloced and has to be freed by caller.
*/
char* errinf_to_str_misc(struct module_qstate* qstate);
diff --git a/sbin/unwind/libunbound/util/net_help.c b/sbin/unwind/libunbound/util/net_help.c
index 8970247926d..d2218ea8833 100644
--- a/sbin/unwind/libunbound/util/net_help.c
+++ b/sbin/unwind/libunbound/util/net_help.c
@@ -77,6 +77,8 @@
/** max length of an IP address (the address portion) that we allow */
#define MAX_ADDR_STRLEN 128 /* characters */
+/** max length of a hostname (with port and tls name) that we allow */
+#define MAX_HOST_STRLEN (LDNS_MAX_DOMAINLEN * 3) /* characters */
/** default value for EDNS ADVERTISED size */
uint16_t EDNS_ADVERTISED_SIZE = 4096;
@@ -486,28 +488,38 @@ uint8_t* authextstrtodname(char* str, int* port, char** auth_name)
*port = UNBOUND_DNS_PORT;
*auth_name = NULL;
if((s=strchr(str, '@'))) {
+ char buf[MAX_HOST_STRLEN];
+ size_t len = (size_t)(s-str);
char* hash = strchr(s+1, '#');
if(hash) {
*auth_name = hash+1;
} else {
*auth_name = NULL;
}
+ if(len >= MAX_HOST_STRLEN) {
+ return NULL;
+ }
+ (void)strlcpy(buf, str, sizeof(buf));
+ buf[len] = 0;
*port = atoi(s+1);
if(*port == 0) {
if(!hash && strcmp(s+1,"0")!=0)
- return 0;
+ return NULL;
if(hash && strncmp(s+1,"0#",2)!=0)
- return 0;
+ return NULL;
}
- *s = 0;
- dname = sldns_str2wire_dname(str, &dname_len);
- *s = '@';
+ dname = sldns_str2wire_dname(buf, &dname_len);
} else if((s=strchr(str, '#'))) {
+ char buf[MAX_HOST_STRLEN];
+ size_t len = (size_t)(s-str);
+ if(len >= MAX_HOST_STRLEN) {
+ return NULL;
+ }
+ (void)strlcpy(buf, str, sizeof(buf));
+ buf[len] = 0;
*port = UNBOUND_DNS_OVER_TLS_PORT;
*auth_name = s+1;
- *s = 0;
- dname = sldns_str2wire_dname(str, &dname_len);
- *s = '#';
+ dname = sldns_str2wire_dname(buf, &dname_len);
} else {
dname = sldns_str2wire_dname(str, &dname_len);
}
@@ -1026,11 +1038,11 @@ static void log_crypto_err_io_code_arg(const char* str, int r,
} else {
if(print_errno) {
if(errno == 0)
- log_err("str: syscall error with errno %s",
- strerror(errno));
- else log_err("str: %s", strerror(errno));
+ log_err("%s: syscall error with errno %s",
+ str, strerror(errno));
+ else log_err("%s: %s", str, strerror(errno));
} else {
- log_err("str: %s", inf);
+ log_err("%s: %s", str, inf);
}
}
}
diff --git a/sbin/unwind/libunbound/util/netevent.c b/sbin/unwind/libunbound/util/netevent.c
index 1fc8c6b8658..980829d087e 100644
--- a/sbin/unwind/libunbound/util/netevent.c
+++ b/sbin/unwind/libunbound/util/netevent.c
@@ -4772,9 +4772,9 @@ comm_point_send_reply(struct comm_reply *repinfo)
* sending src (client)/dst (local service) addresses over DNSTAP from udp callback
*/
if(repinfo->c->dtenv != NULL && repinfo->c->dtenv->log_client_response_messages) {
- log_addr(VERB_ALGO, "from local addr", (void*)repinfo->c->socket->addr->ai_addr, repinfo->c->socket->addr->ai_addrlen);
+ log_addr(VERB_ALGO, "from local addr", (void*)repinfo->c->socket->addr, repinfo->c->socket->addrlen);
log_addr(VERB_ALGO, "response to client", &repinfo->client_addr, repinfo->client_addrlen);
- dt_msg_send_client_response(repinfo->c->dtenv, &repinfo->client_addr, (void*)repinfo->c->socket->addr->ai_addr, repinfo->c->type, repinfo->c->ssl, repinfo->c->buffer);
+ dt_msg_send_client_response(repinfo->c->dtenv, &repinfo->client_addr, (void*)repinfo->c->socket->addr, repinfo->c->type, repinfo->c->ssl, repinfo->c->buffer);
}
#endif
} else {
@@ -4783,9 +4783,9 @@ comm_point_send_reply(struct comm_reply *repinfo)
* sending src (client)/dst (local service) addresses over DNSTAP from TCP callback
*/
if(repinfo->c->tcp_parent->dtenv != NULL && repinfo->c->tcp_parent->dtenv->log_client_response_messages) {
- log_addr(VERB_ALGO, "from local addr", (void*)repinfo->c->socket->addr->ai_addr, repinfo->c->socket->addr->ai_addrlen);
+ log_addr(VERB_ALGO, "from local addr", (void*)repinfo->c->socket->addr, repinfo->c->socket->addrlen);
log_addr(VERB_ALGO, "response to client", &repinfo->client_addr, repinfo->client_addrlen);
- dt_msg_send_client_response(repinfo->c->tcp_parent->dtenv, &repinfo->client_addr, (void*)repinfo->c->socket->addr->ai_addr, repinfo->c->type, repinfo->c->ssl,
+ dt_msg_send_client_response(repinfo->c->tcp_parent->dtenv, &repinfo->client_addr, (void*)repinfo->c->socket->addr, repinfo->c->type, repinfo->c->ssl,
( repinfo->c->tcp_req_info? repinfo->c->tcp_req_info->spool_buffer: repinfo->c->buffer ));
}
#endif
diff --git a/sbin/unwind/libunbound/util/netevent.h b/sbin/unwind/libunbound/util/netevent.h
index dc9619c163b..1e4a13f9b7e 100644
--- a/sbin/unwind/libunbound/util/netevent.h
+++ b/sbin/unwind/libunbound/util/netevent.h
@@ -181,6 +181,8 @@ struct comm_point {
/** if the event is added or not */
int event_added;
+ /** Reference to struct that is part of the listening ports,
+ * where for listening ports information is kept about the address. */
struct unbound_socket* socket;
/** file descriptor for communication point */
diff --git a/sbin/unwind/libunbound/util/storage/lookup3.c b/sbin/unwind/libunbound/util/storage/lookup3.c
index c4026626c6d..f2a48f413da 100644
--- a/sbin/unwind/libunbound/util/storage/lookup3.c
+++ b/sbin/unwind/libunbound/util/storage/lookup3.c
@@ -89,7 +89,7 @@ on 1 byte), but shoehorning those bytes into integers efficiently is messy.
# if (defined(__BYTE_ORDER) && defined(__LITTLE_ENDIAN) && \
__BYTE_ORDER == __LITTLE_ENDIAN) || \
(defined(i386) || defined(__i386__) || defined(__i486__) || \
- defined(__i586__) || defined(__i686__) || defined(vax) || defined(MIPSEL) || defined(__x86))
+ defined(__i586__) || defined(__i686__) || defined(vax) || defined(MIPSEL) || defined(__x86) || defined(__loongarch__))
# define HASH_LITTLE_ENDIAN 1
# define HASH_BIG_ENDIAN 0
# elif (defined(__BYTE_ORDER) && defined(__BIG_ENDIAN) && \
diff --git a/sbin/unwind/libunbound/util/storage/lruhash.c b/sbin/unwind/libunbound/util/storage/lruhash.c
index e17b180db8b..aba9fcc1d83 100644
--- a/sbin/unwind/libunbound/util/storage/lruhash.c
+++ b/sbin/unwind/libunbound/util/storage/lruhash.c
@@ -528,6 +528,40 @@ lruhash_setmarkdel(struct lruhash* table, lruhash_markdelfunc_type md)
lock_quick_unlock(&table->lock);
}
+void
+lruhash_update_space_used(struct lruhash* table, void* cb_arg, int diff_size)
+{
+ struct lruhash_entry *reclaimlist = NULL;
+
+ fptr_ok(fptr_whitelist_hash_sizefunc(table->sizefunc));
+ fptr_ok(fptr_whitelist_hash_delkeyfunc(table->delkeyfunc));
+ fptr_ok(fptr_whitelist_hash_deldatafunc(table->deldatafunc));
+ fptr_ok(fptr_whitelist_hash_markdelfunc(table->markdelfunc));
+
+ if(cb_arg == NULL) cb_arg = table->cb_arg;
+
+ /* update space used */
+ lock_quick_lock(&table->lock);
+
+ if((int)table->space_used + diff_size < 0)
+ table->space_used = 0;
+ else table->space_used = (size_t)((int)table->space_used + diff_size);
+
+ if(table->space_used > table->space_max)
+ reclaim_space(table, &reclaimlist);
+
+ lock_quick_unlock(&table->lock);
+
+ /* finish reclaim if any (outside of critical region) */
+ while(reclaimlist) {
+ struct lruhash_entry* n = reclaimlist->overflow_next;
+ void* d = reclaimlist->data;
+ (*table->delkeyfunc)(reclaimlist->key, cb_arg);
+ (*table->deldatafunc)(d, cb_arg);
+ reclaimlist = n;
+ }
+}
+
void
lruhash_traverse(struct lruhash* h, int wr,
void (*func)(struct lruhash_entry*, void*), void* arg)
diff --git a/sbin/unwind/libunbound/util/storage/lruhash.h b/sbin/unwind/libunbound/util/storage/lruhash.h
index 2086e4dec93..5ab488beb50 100644
--- a/sbin/unwind/libunbound/util/storage/lruhash.h
+++ b/sbin/unwind/libunbound/util/storage/lruhash.h
@@ -303,6 +303,17 @@ void lru_touch(struct lruhash* table, struct lruhash_entry* entry);
*/
void lruhash_setmarkdel(struct lruhash* table, lruhash_markdelfunc_type md);
+/**
+ * Update the size of an element in the hashtable.
+ *
+ * @param table: hash table.
+ * @param cb_override: if not NULL overrides the cb_arg for deletefunc.
+ * @param diff_size: difference in size to the hash table storage.
+ * This is newsize - oldsize, a positive number uses more space.
+ */
+void lruhash_update_space_used(struct lruhash* table, void* cb_override,
+ int diff_size);
+
/************************* getdns functions ************************/
/*** these are used by getdns only and not by unbound. ***/
diff --git a/sbin/unwind/libunbound/util/storage/slabhash.c b/sbin/unwind/libunbound/util/storage/slabhash.c
index 7d376c4d684..62396e16a82 100644
--- a/sbin/unwind/libunbound/util/storage/slabhash.c
+++ b/sbin/unwind/libunbound/util/storage/slabhash.c
@@ -166,6 +166,13 @@ int slabhash_is_size(struct slabhash* sl, size_t size, size_t slabs)
return 0;
}
+void slabhash_update_space_used(struct slabhash* sl, hashvalue_type hash,
+ void* cb_arg, int diff_size)
+{
+ lruhash_update_space_used(sl->array[slab_idx(sl, hash)], cb_arg,
+ diff_size);
+}
+
size_t slabhash_get_mem(struct slabhash* sl)
{
size_t i, total = sizeof(*sl);
diff --git a/sbin/unwind/libunbound/util/storage/slabhash.h b/sbin/unwind/libunbound/util/storage/slabhash.h
index dc5fc360329..089847d9359 100644
--- a/sbin/unwind/libunbound/util/storage/slabhash.h
+++ b/sbin/unwind/libunbound/util/storage/slabhash.h
@@ -162,6 +162,18 @@ size_t slabhash_get_size(struct slabhash* table);
int slabhash_is_size(struct slabhash* table, size_t size, size_t slabs);
/**
+ * Update the size of an element in the hashtable, uses
+ * lruhash_update_space_used.
+ *
+ * @param table: hash table.
+ * @param hash: hash value. User calculates the hash.
+ * @param cb_override: if not NULL overrides the cb_arg for deletefunc.
+ * @param diff_size: difference in size to the hash table storage.
+ */
+void slabhash_update_space_used(struct slabhash* table, hashvalue_type hash,
+ void* cb_override, int diff_size);
+
+/**
* Retrieve slab hash current memory use.
* @param table: hash table.
* @return memory in use.
diff --git a/sbin/unwind/libunbound/validator/val_utils.c b/sbin/unwind/libunbound/validator/val_utils.c
index c316183a9d9..a7db41dadc3 100644
--- a/sbin/unwind/libunbound/validator/val_utils.c
+++ b/sbin/unwind/libunbound/validator/val_utils.c
@@ -118,7 +118,30 @@ val_classify_response(uint16_t query_flags, struct query_info* origqinf,
* ANY responses are validated differently. */
if(rcode == LDNS_RCODE_NOERROR && qinf->qtype == LDNS_RR_TYPE_ANY)
return VAL_CLASS_ANY;
-
+
+ /* For the query type DNAME, the name matters. Equal name is the
+ * answer looked for, but a subdomain redirects the query. */
+ if(qinf->qtype == LDNS_RR_TYPE_DNAME) {
+ for(i=skip; i<rep->an_numrrsets; i++) {
+ if(rcode == LDNS_RCODE_NOERROR &&
+ ntohs(rep->rrsets[i]->rk.type)
+ == LDNS_RR_TYPE_DNAME &&
+ query_dname_compare(qinf->qname,
+ rep->rrsets[i]->rk.dname) == 0) {
+ /* type is DNAME and name is equal, it is
+ * the answer. For the query name a subdomain
+ * of the rrset.dname it would redirect. */
+ return VAL_CLASS_POSITIVE;
+ }
+ if(ntohs(rep->rrsets[i]->rk.type)
+ == LDNS_RR_TYPE_CNAME)
+ return VAL_CLASS_CNAME;
+ }
+ log_dns_msg("validator: error. failed to classify response message: ",
+ qinf, rep);
+ return VAL_CLASS_UNKNOWN;
+ }
+
/* Note that DNAMEs will be ignored here, unless qtype=DNAME. Unless
* qtype=CNAME, this will yield a CNAME response. */
for(i=skip; i<rep->an_numrrsets; i++) {
@@ -231,6 +254,21 @@ val_find_signer(enum val_classification subtype, struct query_info* qinf,
rep->rrsets[i]->rk.dname) == 0) {
val_find_rrset_signer(rep->rrsets[i],
signer_name, signer_len);
+ /* If there was no signer, and the query
+ * was for type CNAME, and this is a CNAME,
+ * and the previous is a DNAME, then this
+ * is the synthesized CNAME, use the signer
+ * of the DNAME record. */
+ if(*signer_name == NULL &&
+ qinf->qtype == LDNS_RR_TYPE_CNAME &&
+ ntohs(rep->rrsets[i]->rk.type) ==
+ LDNS_RR_TYPE_CNAME && i > skip &&
+ ntohs(rep->rrsets[i-1]->rk.type) ==
+ LDNS_RR_TYPE_DNAME &&
+ dname_strict_subdomain_c(rep->rrsets[i]->rk.dname, rep->rrsets[i-1]->rk.dname)) {
+ val_find_rrset_signer(rep->rrsets[i-1],
+ signer_name, signer_len);
+ }
return;
}
}
diff --git a/sbin/unwind/libunbound/validator/validator.c b/sbin/unwind/libunbound/validator/validator.c
index aa71df9cbf5..3cf291658e7 100644
--- a/sbin/unwind/libunbound/validator/validator.c
+++ b/sbin/unwind/libunbound/validator/validator.c
@@ -621,7 +621,6 @@ prime_trust_anchor(struct module_qstate* qstate, struct val_qstate* vq,
* @param vq: validator query state.
* @param env: module env for verify.
* @param ve: validator env for verify.
- * @param qchase: query that was made.
* @param chase_reply: answer to validate.
* @param key_entry: the key entry, which is trusted, and which matches
* the signer of the answer. The key entry isgood().
@@ -632,7 +631,7 @@ prime_trust_anchor(struct module_qstate* qstate, struct val_qstate* vq,
*/
static int
validate_msg_signatures(struct module_qstate* qstate, struct val_qstate* vq,
- struct module_env* env, struct val_env* ve, struct query_info* qchase,
+ struct module_env* env, struct val_env* ve,
struct reply_info* chase_reply, struct key_entry_key* key_entry,
int* suspend)
{
@@ -640,7 +639,7 @@ validate_msg_signatures(struct module_qstate* qstate, struct val_qstate* vq,
size_t i, slen;
struct ub_packed_rrset_key* s;
enum sec_status sec;
- int dname_seen = 0, num_verifies = 0, verified, have_state = 0;
+ int num_verifies = 0, verified, have_state = 0;
char* reason = NULL;
sldns_ede_code reason_bogus = LDNS_EDE_DNSSEC_BOGUS;
*suspend = 0;
@@ -658,9 +657,13 @@ validate_msg_signatures(struct module_qstate* qstate, struct val_qstate* vq,
/* Skip the CNAME following a (validated) DNAME.
* Because of the normalization routines in the iterator,
* there will always be an unsigned CNAME following a DNAME
- * (unless qtype=DNAME). */
- if(dname_seen && ntohs(s->rk.type) == LDNS_RR_TYPE_CNAME) {
- dname_seen = 0;
+ * (unless qtype=DNAME in the answer part). */
+ if(i>0 && ntohs(chase_reply->rrsets[i-1]->rk.type) ==
+ LDNS_RR_TYPE_DNAME &&
+ ntohs(s->rk.type) == LDNS_RR_TYPE_CNAME &&
+ ((struct packed_rrset_data*)chase_reply->rrsets[i-1]->entry.data)->security == sec_status_secure &&
+ dname_strict_subdomain_c(s->rk.dname, chase_reply->rrsets[i-1]->rk.dname)
+ ) {
/* CNAME was synthesized by our own iterator */
/* since the DNAME verified, mark the CNAME as secure */
((struct packed_rrset_data*)s->entry.data)->security =
@@ -691,12 +694,6 @@ validate_msg_signatures(struct module_qstate* qstate, struct val_qstate* vq,
return 0;
}
- /* Notice a DNAME that should be followed by an unsigned
- * CNAME. */
- if(qchase->qtype != LDNS_RR_TYPE_DNAME &&
- ntohs(s->rk.type) == LDNS_RR_TYPE_DNAME) {
- dname_seen = 1;
- }
num_verifies += verified;
if(num_verifies > MAX_VALIDATE_AT_ONCE &&
i+1 < (env->cfg->val_clean_additional?
@@ -2186,7 +2183,7 @@ processValidate(struct module_qstate* qstate, struct val_qstate* vq,
/* check signatures in the message;
* answer and authority must be valid, additional is only checked. */
- if(!validate_msg_signatures(qstate, vq, qstate->env, ve, &vq->qchase,
+ if(!validate_msg_signatures(qstate, vq, qstate->env, ve,
vq->chase_reply, vq->key_entry, &suspend)) {
if(suspend) {
if(!validate_suspend_setup_timer(qstate, vq,
@@ -2456,19 +2453,12 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq,
log_query_info(NO_VERBOSE, "validation failure",
&qstate->qinfo);
else {
- char* err_str = errinf_to_str_bogus(qstate);
+ char* err_str = errinf_to_str_bogus(qstate,
+ qstate->region);
if(err_str) {
- size_t err_str_len = strlen(err_str);
log_info("%s", err_str);
- /* allocate space and store the error
- * string */
- vq->orig_msg->rep->reason_bogus_str = regional_alloc(
- qstate->region,
- sizeof(char) * (err_str_len+1));
- memcpy(vq->orig_msg->rep->reason_bogus_str,
- err_str, err_str_len+1);
+ vq->orig_msg->rep->reason_bogus_str = err_str;
}
- free(err_str);
}
}
/*