From 1bd4dbf302da6e3b83c41284bc4f98e057b52f7a Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 29 Apr 2020 11:23:12 +0200 Subject: [PATCH 01/81] - New include directive 'include-toplevel:'. It closes the previous clause (if any) and requires that all included files explicitly start a clause. --- doc/example.conf.in | 6 +- doc/unbound.conf.5.in | 6 + .../04-checkconf.tdir/bad.include-toplevel.1 | 3 + .../04-checkconf.tdir/bad.include-toplevel.2 | 5 + .../04-checkconf.tdir/bad.include-toplevel.3 | 6 + .../04-checkconf.tdir/bad.include-toplevel.4 | 7 + .../04-checkconf.tdir/bad.include-toplevel.5 | 8 + .../04-checkconf.tdir/bad.include-toplevel.6 | 10 + .../04-checkconf.tdir/bad.include-toplevel.7 | 11 + .../04-checkconf.tdir/good.include-toplevel | 12 + .../include.include.withclauses.1 | 1 + .../include.include.withclauses.2 | 1 + .../include.include.withclauses.3 | 1 + .../include.include.withoutclauses.1 | 1 + .../include.include.withoutclauses.2 | 1 + .../include.include.withoutclauses.3 | 1 + .../include.includetop.withclauses.1 | 1 + .../include.includetop.withclauses.2 | 1 + .../include.includetop.withclauses.3 | 1 + .../include.includetop.withoutclauses.1 | 1 + .../include.includetop.withoutclauses.2 | 1 + .../include.includetop.withoutclauses.3 | 1 + .../04-checkconf.tdir/include.withclauses.1 | 1 + .../04-checkconf.tdir/include.withclauses.2 | 1 + .../04-checkconf.tdir/include.withclauses.3 | 1 + .../include.withoutclauses.1 | 1 + .../include.withoutclauses.2 | 1 + .../include.withoutclauses.3 | 1 + .../include.withsomeclauses.1 | 1 + .../include.withsomeclauses.2 | 1 + .../include.withsomeclauses.3 | 1 + util/configlexer.c | 5065 +++++++++-------- util/configlexer.lex | 61 +- util/configparser.c | 3793 ++++++------ util/configparser.h | 1112 ++-- util/configparser.y | 13 +- 36 files changed, 5208 insertions(+), 4931 deletions(-) create mode 100644 testdata/04-checkconf.tdir/bad.include-toplevel.1 create mode 100644 testdata/04-checkconf.tdir/bad.include-toplevel.2 create mode 100644 testdata/04-checkconf.tdir/bad.include-toplevel.3 create mode 100644 testdata/04-checkconf.tdir/bad.include-toplevel.4 create mode 100644 testdata/04-checkconf.tdir/bad.include-toplevel.5 create mode 100644 testdata/04-checkconf.tdir/bad.include-toplevel.6 create mode 100644 testdata/04-checkconf.tdir/bad.include-toplevel.7 create mode 100644 testdata/04-checkconf.tdir/good.include-toplevel create mode 100644 testdata/04-checkconf.tdir/include.include.withclauses.1 create mode 100644 testdata/04-checkconf.tdir/include.include.withclauses.2 create mode 100644 testdata/04-checkconf.tdir/include.include.withclauses.3 create mode 100644 testdata/04-checkconf.tdir/include.include.withoutclauses.1 create mode 100644 testdata/04-checkconf.tdir/include.include.withoutclauses.2 create mode 100644 testdata/04-checkconf.tdir/include.include.withoutclauses.3 create mode 100644 testdata/04-checkconf.tdir/include.includetop.withclauses.1 create mode 100644 testdata/04-checkconf.tdir/include.includetop.withclauses.2 create mode 100644 testdata/04-checkconf.tdir/include.includetop.withclauses.3 create mode 100644 testdata/04-checkconf.tdir/include.includetop.withoutclauses.1 create mode 100644 testdata/04-checkconf.tdir/include.includetop.withoutclauses.2 create mode 100644 testdata/04-checkconf.tdir/include.includetop.withoutclauses.3 create mode 100644 testdata/04-checkconf.tdir/include.withclauses.1 create mode 100644 testdata/04-checkconf.tdir/include.withclauses.2 create mode 100644 testdata/04-checkconf.tdir/include.withclauses.3 create mode 100644 testdata/04-checkconf.tdir/include.withoutclauses.1 create mode 100644 testdata/04-checkconf.tdir/include.withoutclauses.2 create mode 100644 testdata/04-checkconf.tdir/include.withoutclauses.3 create mode 100644 testdata/04-checkconf.tdir/include.withsomeclauses.1 create mode 100644 testdata/04-checkconf.tdir/include.withsomeclauses.2 create mode 100644 testdata/04-checkconf.tdir/include.withsomeclauses.3 diff --git a/doc/example.conf.in b/doc/example.conf.in index a1a687422..2e92a90d1 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -5,9 +5,13 @@ # # this is a comment. -#Use this to include other text into the file. +# Use this anywhere in the file to include other text into this file. #include: "otherfile.conf" +# Use this anywhere in the file to include other text, that explicitly starts a +# clause, into this file. Text after this directive needs to start a clause. +#include-toplevel: "otherfile.conf" + # The server clause sets the main parameters. server: # whitespace is not necessary, but looks cleaner. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 37692db5e..b9ad4705b 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -77,6 +77,12 @@ for the included files works, relative pathnames for the included names work if the directory where the daemon is started equals its chroot/working directory or is specified before the include statement with directory: dir. Wildcards can be used to include multiple files, see \fIglob\fR(7). +.P +For a more structural include option, the +.B include\-toplevel: +directive can be used. This closes whatever clause is currently active (if any) +and forces the use of clauses in the included files and right after this +directive. .SS "Server Options" These options are part of the .B server: diff --git a/testdata/04-checkconf.tdir/bad.include-toplevel.1 b/testdata/04-checkconf.tdir/bad.include-toplevel.1 new file mode 100644 index 000000000..e45efbc25 --- /dev/null +++ b/testdata/04-checkconf.tdir/bad.include-toplevel.1 @@ -0,0 +1,3 @@ +include-toplevel: include.withoutclauses.* +server: + identity: "top 1" diff --git a/testdata/04-checkconf.tdir/bad.include-toplevel.2 b/testdata/04-checkconf.tdir/bad.include-toplevel.2 new file mode 100644 index 000000000..fc274fd5d --- /dev/null +++ b/testdata/04-checkconf.tdir/bad.include-toplevel.2 @@ -0,0 +1,5 @@ +include-toplevel: include.withclauses.* +server: + identity: "top 1" + include: include.withoutclauses.* + include-toplevel: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/bad.include-toplevel.3 b/testdata/04-checkconf.tdir/bad.include-toplevel.3 new file mode 100644 index 000000000..3a219a8a2 --- /dev/null +++ b/testdata/04-checkconf.tdir/bad.include-toplevel.3 @@ -0,0 +1,6 @@ +include-toplevel: include.withclauses.* +server: + identity: "top 1" + include: include.withoutclauses.* + include-toplevel: include.withclauses.* +include: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/bad.include-toplevel.4 b/testdata/04-checkconf.tdir/bad.include-toplevel.4 new file mode 100644 index 000000000..8dd4555b6 --- /dev/null +++ b/testdata/04-checkconf.tdir/bad.include-toplevel.4 @@ -0,0 +1,7 @@ +include-toplevel: include.withclauses.* +server: + identity: "top 1" + include: include.withoutclauses.* + include-toplevel: include.withclauses.* +include: include.withclauses.* +include-toplevel: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/bad.include-toplevel.5 b/testdata/04-checkconf.tdir/bad.include-toplevel.5 new file mode 100644 index 000000000..b2c0eae82 --- /dev/null +++ b/testdata/04-checkconf.tdir/bad.include-toplevel.5 @@ -0,0 +1,8 @@ +include-toplevel: include.withclauses.* +server: + identity: "top 1" + include: include.withoutclauses.* + include-toplevel: include.withsomeclauses.* +include: include.withclauses.* +include-toplevel: include.withclauses.* +server: identity: "top 2" diff --git a/testdata/04-checkconf.tdir/bad.include-toplevel.6 b/testdata/04-checkconf.tdir/bad.include-toplevel.6 new file mode 100644 index 000000000..4f578f5cf --- /dev/null +++ b/testdata/04-checkconf.tdir/bad.include-toplevel.6 @@ -0,0 +1,10 @@ +include-toplevel: include.withclauses.* +include-toplevel: include.withclauses.* +server: + identity: "top 1" + include: include.withoutclauses.* + include-toplevel: include.withclauses.* +include: include.withclauses.* +include-toplevel: include.withclauses.* +server: identity: "top 2" +include-toplevel: include.includetop.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/bad.include-toplevel.7 b/testdata/04-checkconf.tdir/bad.include-toplevel.7 new file mode 100644 index 000000000..386f0166e --- /dev/null +++ b/testdata/04-checkconf.tdir/bad.include-toplevel.7 @@ -0,0 +1,11 @@ +include-toplevel: include.withclauses.* +include-toplevel: include.withclauses.* +server: + identity: "top 1" + include: include.withoutclauses.* + include-toplevel: include.withclauses.* +include: include.withclauses.* +include-toplevel: include.withclauses.* +server: identity: "top 2" +include-toplevel: include.includetop.withclauses.* +include-toplevel: include.include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/good.include-toplevel b/testdata/04-checkconf.tdir/good.include-toplevel new file mode 100644 index 000000000..91dc6980a --- /dev/null +++ b/testdata/04-checkconf.tdir/good.include-toplevel @@ -0,0 +1,12 @@ +include-toplevel: include.withclauses.* +include-toplevel: include.withclauses.* +server: + identity: "top 1" + include: include.withoutclauses.* + include-toplevel: include.withclauses.* +include: include.withclauses.* +include-toplevel: include.withclauses.* +server: identity: "top 2" +include-toplevel: include.includetop.withclauses.* +include-toplevel: include.include.withclauses.* +include-toplevel: include.include.withclauses.* diff --git a/testdata/04-checkconf.tdir/include.include.withclauses.1 b/testdata/04-checkconf.tdir/include.include.withclauses.1 new file mode 100644 index 000000000..49c88fe8c --- /dev/null +++ b/testdata/04-checkconf.tdir/include.include.withclauses.1 @@ -0,0 +1 @@ +include: include.withclauses.* diff --git a/testdata/04-checkconf.tdir/include.include.withclauses.2 b/testdata/04-checkconf.tdir/include.include.withclauses.2 new file mode 100644 index 000000000..49c88fe8c --- /dev/null +++ b/testdata/04-checkconf.tdir/include.include.withclauses.2 @@ -0,0 +1 @@ +include: include.withclauses.* diff --git a/testdata/04-checkconf.tdir/include.include.withclauses.3 b/testdata/04-checkconf.tdir/include.include.withclauses.3 new file mode 100644 index 000000000..49c88fe8c --- /dev/null +++ b/testdata/04-checkconf.tdir/include.include.withclauses.3 @@ -0,0 +1 @@ +include: include.withclauses.* diff --git a/testdata/04-checkconf.tdir/include.include.withoutclauses.1 b/testdata/04-checkconf.tdir/include.include.withoutclauses.1 new file mode 100644 index 000000000..3552d769c --- /dev/null +++ b/testdata/04-checkconf.tdir/include.include.withoutclauses.1 @@ -0,0 +1 @@ +include: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/include.include.withoutclauses.2 b/testdata/04-checkconf.tdir/include.include.withoutclauses.2 new file mode 100644 index 000000000..3552d769c --- /dev/null +++ b/testdata/04-checkconf.tdir/include.include.withoutclauses.2 @@ -0,0 +1 @@ +include: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/include.include.withoutclauses.3 b/testdata/04-checkconf.tdir/include.include.withoutclauses.3 new file mode 100644 index 000000000..3552d769c --- /dev/null +++ b/testdata/04-checkconf.tdir/include.include.withoutclauses.3 @@ -0,0 +1 @@ +include: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/include.includetop.withclauses.1 b/testdata/04-checkconf.tdir/include.includetop.withclauses.1 new file mode 100644 index 000000000..5e296548f --- /dev/null +++ b/testdata/04-checkconf.tdir/include.includetop.withclauses.1 @@ -0,0 +1 @@ +include-toplevel: include.withclauses.* diff --git a/testdata/04-checkconf.tdir/include.includetop.withclauses.2 b/testdata/04-checkconf.tdir/include.includetop.withclauses.2 new file mode 100644 index 000000000..5e296548f --- /dev/null +++ b/testdata/04-checkconf.tdir/include.includetop.withclauses.2 @@ -0,0 +1 @@ +include-toplevel: include.withclauses.* diff --git a/testdata/04-checkconf.tdir/include.includetop.withclauses.3 b/testdata/04-checkconf.tdir/include.includetop.withclauses.3 new file mode 100644 index 000000000..5e296548f --- /dev/null +++ b/testdata/04-checkconf.tdir/include.includetop.withclauses.3 @@ -0,0 +1 @@ +include-toplevel: include.withclauses.* diff --git a/testdata/04-checkconf.tdir/include.includetop.withoutclauses.1 b/testdata/04-checkconf.tdir/include.includetop.withoutclauses.1 new file mode 100644 index 000000000..a411f7b52 --- /dev/null +++ b/testdata/04-checkconf.tdir/include.includetop.withoutclauses.1 @@ -0,0 +1 @@ +include-toplevel: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/include.includetop.withoutclauses.2 b/testdata/04-checkconf.tdir/include.includetop.withoutclauses.2 new file mode 100644 index 000000000..a411f7b52 --- /dev/null +++ b/testdata/04-checkconf.tdir/include.includetop.withoutclauses.2 @@ -0,0 +1 @@ +include-toplevel: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/include.includetop.withoutclauses.3 b/testdata/04-checkconf.tdir/include.includetop.withoutclauses.3 new file mode 100644 index 000000000..a411f7b52 --- /dev/null +++ b/testdata/04-checkconf.tdir/include.includetop.withoutclauses.3 @@ -0,0 +1 @@ +include-toplevel: include.withoutclauses.* diff --git a/testdata/04-checkconf.tdir/include.withclauses.1 b/testdata/04-checkconf.tdir/include.withclauses.1 new file mode 100644 index 000000000..d67920e06 --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withclauses.1 @@ -0,0 +1 @@ +server: identity: "withclauses1" diff --git a/testdata/04-checkconf.tdir/include.withclauses.2 b/testdata/04-checkconf.tdir/include.withclauses.2 new file mode 100644 index 000000000..3537974c0 --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withclauses.2 @@ -0,0 +1 @@ +server: identity: "withclauses2" diff --git a/testdata/04-checkconf.tdir/include.withclauses.3 b/testdata/04-checkconf.tdir/include.withclauses.3 new file mode 100644 index 000000000..5e19c54ef --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withclauses.3 @@ -0,0 +1 @@ +server: identity: "withclauses3" diff --git a/testdata/04-checkconf.tdir/include.withoutclauses.1 b/testdata/04-checkconf.tdir/include.withoutclauses.1 new file mode 100644 index 000000000..3b3b6f48b --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withoutclauses.1 @@ -0,0 +1 @@ +identity: "withoutclauses1" diff --git a/testdata/04-checkconf.tdir/include.withoutclauses.2 b/testdata/04-checkconf.tdir/include.withoutclauses.2 new file mode 100644 index 000000000..fec8b2002 --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withoutclauses.2 @@ -0,0 +1 @@ +identity: "withoutclauses2" diff --git a/testdata/04-checkconf.tdir/include.withoutclauses.3 b/testdata/04-checkconf.tdir/include.withoutclauses.3 new file mode 100644 index 000000000..e34a4b12d --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withoutclauses.3 @@ -0,0 +1 @@ +identity: "withoutclauses3" diff --git a/testdata/04-checkconf.tdir/include.withsomeclauses.1 b/testdata/04-checkconf.tdir/include.withsomeclauses.1 new file mode 100644 index 000000000..d719a44f7 --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withsomeclauses.1 @@ -0,0 +1 @@ +server: identity: "withsomeclauses1" diff --git a/testdata/04-checkconf.tdir/include.withsomeclauses.2 b/testdata/04-checkconf.tdir/include.withsomeclauses.2 new file mode 100644 index 000000000..ec910e1a8 --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withsomeclauses.2 @@ -0,0 +1 @@ +identity: "withsomeclauses2" diff --git a/testdata/04-checkconf.tdir/include.withsomeclauses.3 b/testdata/04-checkconf.tdir/include.withsomeclauses.3 new file mode 100644 index 000000000..dbb696eeb --- /dev/null +++ b/testdata/04-checkconf.tdir/include.withsomeclauses.3 @@ -0,0 +1 @@ +identity: "withsomeclauses3" diff --git a/util/configlexer.c b/util/configlexer.c index 09fd4b003..f5922759e 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 312 -#define YY_END_OF_BUFFER 313 +#define YY_NUM_RULES 320 +#define YY_END_OF_BUFFER 321 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,345 +363,350 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3071] = +static const flex_int16_t yy_accept[3111] = { 0, 1, 1, 294, 294, 298, 298, 302, 302, 306, 306, - 1, 1, 313, 310, 1, 292, 292, 311, 2, 311, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 294, 295, 295, 296, 311, 298, 299, 299, - 300, 311, 305, 302, 303, 303, 304, 311, 306, 307, - 307, 308, 311, 309, 293, 2, 297, 311, 309, 310, - 0, 1, 2, 2, 2, 2, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 1, 1, 310, 310, 314, 314, 321, 318, 1, 292, + 292, 319, 2, 319, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 294, 295, 295, 296, + 319, 298, 299, 299, 300, 319, 305, 302, 303, 303, + 304, 319, 306, 307, 307, 308, 319, 317, 293, 2, + 297, 319, 317, 313, 310, 311, 311, 312, 319, 314, + 315, 315, 316, 319, 318, 0, 1, 2, 2, 2, + 2, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 294, 0, 298, 0, 305, 0, 302, 306, 0, 309, - 0, 2, 2, 309, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 294, 0, 298, 0, 305, + 0, 302, 306, 0, 317, 0, 2, 2, 317, 313, + 0, 310, 314, 0, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 309, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 317, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 115, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 123, 310, 310, 310, - 310, 310, 310, 310, 309, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 115, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 123, 318, 318, 318, + 318, 318, 318, 318, 317, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 99, 310, 310, 310, 310, 310, 310, 8, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 116, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 128, 310, 309, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 99, 318, 318, 318, 318, 318, 318, 8, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 116, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 287, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 128, 318, 317, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 287, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 309, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 57, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 225, 310, 14, 15, 310, - 19, 18, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 317, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 57, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 122, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 209, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 3, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 225, 318, 14, 15, 318, + 19, 18, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 122, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 209, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 3, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 309, 310, 310, 310, 310, 310, 310, 310, 281, 310, - 310, 280, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 301, 310, 310, - 310, 310, 310, 310, 310, 56, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 317, 318, 318, 318, 318, 318, 318, 318, 281, 318, + 318, 280, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 60, 310, 255, 310, 310, 310, 310, 310, - 310, 310, 310, 288, 289, 310, 310, 310, 310, 310, - 61, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 119, 310, 310, - 310, 310, 310, 310, 310, 310, 198, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 21, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 301, 318, + 318, 318, 318, 318, 318, 318, 56, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 60, 318, 255, 318, 318, 318, 318, + 318, 318, 318, 318, 288, 289, 318, 318, 318, 318, + 318, 61, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 119, 318, + 318, 318, 318, 318, 318, 318, 318, 198, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 21, 318, - 310, 310, 310, 310, 310, 310, 147, 310, 310, 301, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 97, 310, 310, 310, 310, 310, 310, 310, 263, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 170, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 146, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 147, 318, 318, + 317, 301, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 97, 318, 318, 318, 318, 318, 318, 318, + 263, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 170, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 146, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 96, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 32, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 33, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 58, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 121, 310, 310, 310, 310, 310, 114, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 96, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 32, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 33, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 59, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 228, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 171, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 47, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 58, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 121, 317, 318, 318, 318, 318, 318, + 114, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 59, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 228, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 171, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 47, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 246, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 51, 310, 52, 310, 310, 310, 310, - 310, 100, 310, 101, 310, 310, 310, 310, 98, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 7, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 218, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 246, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 51, 318, + 52, 318, 318, 318, 318, 318, 100, 318, 101, 318, + 318, 318, 318, 98, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 149, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 229, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 48, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 190, 310, 189, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 16, 17, 310, 310, + 318, 318, 7, 318, 317, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 218, 318, 318, 318, 318, 149, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 229, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 48, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 190, 318, 189, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 62, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 197, 310, 310, 310, 310, 310, 310, - 103, 310, 102, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 181, 310, 310, 310, 310, 310, - 310, 310, 310, 129, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 81, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 16, 17, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 62, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 197, 318, 318, 318, 318, 318, 318, 103, 318, 102, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 181, 318, 318, 318, 318, 318, 318, 318, 318, + 129, 317, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 85, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 55, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 184, 185, 310, - 310, 310, 257, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 6, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 261, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 81, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 85, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 55, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 184, 185, 318, 318, + 318, 257, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 282, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 42, 310, 310, 310, 310, - 44, 310, 310, 310, 310, 310, 310, 310, 310, 45, - 310, 310, 310, 310, 310, 310, 310, 310, 177, 310, - 310, 310, 124, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 202, 310, 178, 310, 310, 310, 215, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 46, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 126, + 318, 318, 318, 318, 6, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 261, 318, 318, 318, + 318, 318, 318, 282, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 42, 318, 318, 318, 318, 44, + 318, 318, 318, 318, 318, 318, 318, 318, 45, 318, + 318, 318, 318, 318, 318, 318, 317, 318, 177, 318, + 318, 318, 124, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 202, 318, 178, 318, 318, 318, 215, - 108, 310, 109, 310, 310, 310, 107, 310, 310, 310, - 310, 310, 310, 310, 310, 144, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 245, 310, 310, - 310, 310, 310, 310, 310, 310, 179, 310, 310, 310, - 310, 310, 182, 310, 188, 310, 310, 310, 310, 310, - 214, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 95, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 120, 310, 310, 310, 310, 310, - 310, 53, 310, 310, 310, 26, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 46, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 126, + 108, 318, 109, 318, 318, 318, 107, 318, 318, 318, + 318, 318, 318, 318, 318, 144, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 245, 318, + 318, 318, 318, 318, 318, 318, 318, 179, 318, 318, + 318, 318, 318, 182, 318, 188, 318, 318, 318, 318, + 318, 214, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 95, 318, 318, 318, - 310, 310, 310, 310, 310, 20, 310, 310, 310, 310, - 310, 310, 27, 36, 310, 154, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 70, 72, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 265, 310, 310, 310, 226, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 110, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 143, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 120, 318, 318, 318, 318, + 318, 318, 53, 318, 318, 318, 26, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 20, 318, 318, 318, + 318, 318, 318, 27, 36, 318, 154, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 317, 318, 318, 318, 318, 318, 318, 70, 72, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 265, 318, 318, 318, 226, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 276, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 148, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 208, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 285, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 165, 310, 310, - 310, 310, 310, 310, 310, 310, 104, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 160, 310, 172, 310, - 310, 310, 310, 310, 132, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 110, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 143, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 276, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 148, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 208, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 285, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 165, 318, 318, 318, 318, 318, 318, 318, 318, 104, - 91, 310, 310, 310, 310, 200, 310, 310, 310, 310, - 310, 310, 216, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 237, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 125, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 164, - 310, 310, 310, 310, 310, 73, 74, 310, 310, 310, - 310, 310, 54, 310, 310, 310, 310, 310, 80, 173, - 310, 191, 310, 219, 310, 310, 183, 258, 310, 310, - 310, 310, 310, 66, 310, 175, 310, 310, 310, 310, - 310, 9, 310, 310, 310, 94, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 160, + 318, 172, 318, 318, 318, 318, 317, 318, 132, 318, + 318, 318, 318, 318, 91, 318, 318, 318, 318, 200, + 318, 318, 318, 318, 318, 318, 216, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 237, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 125, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 164, 318, 318, 318, 318, 318, 318, + 73, 74, 318, 318, 318, 318, 318, 54, 318, 318, - 250, 310, 310, 310, 310, 199, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 163, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 150, 310, 264, 310, - 310, 310, 310, 236, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 210, 310, 310, 310, 310, - 256, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 80, 173, 318, 191, 318, 219, 318, + 318, 183, 258, 318, 318, 318, 318, 318, 66, 318, + 175, 318, 318, 318, 318, 318, 9, 318, 318, 318, + 94, 318, 318, 318, 318, 250, 318, 318, 318, 318, + 199, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 317, 318, 318, 318, + 318, 163, 318, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 279, 310, 174, 310, 310, - 310, 310, 310, 310, 310, 65, 67, 310, 310, 310, - 310, 310, 310, 310, 93, 310, 310, 310, 310, 248, - 310, 310, 310, 310, 260, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 204, 34, 28, 30, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 35, - 310, 29, 31, 310, 310, 310, 310, 310, 310, 310, - 310, 90, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 206, + 318, 318, 150, 318, 264, 318, 318, 318, 318, 236, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 210, 318, 318, 318, 318, 256, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 279, 318, 174, 318, 318, 318, 318, 318, + 318, 318, 65, 67, 318, 318, 318, 318, 318, 318, + 318, 93, 318, 318, 318, 318, 248, 318, 318, 318, + 318, 260, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 204, 34, 28, 30, 318, 318, 318, - 203, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 64, 310, - 310, 127, 310, 111, 310, 310, 310, 310, 310, 310, - 310, 310, 145, 13, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 274, 310, 277, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 12, 310, 310, 22, - 310, 310, 310, 254, 310, 310, 310, 310, 262, 310, - 310, 310, 68, 310, 212, 310, 310, 310, 310, 205, - 310, 310, 63, 310, 310, 310, 310, 23, 310, 43, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, + 318, 318, 318, 318, 318, 318, 35, 318, 29, 31, + 318, 318, 318, 318, 318, 318, 318, 318, 90, 318, + 318, 318, 318, 318, 318, 317, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 206, 203, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 64, 318, 318, 127, + 318, 111, 318, 318, 318, 318, 318, 318, 318, 318, + 145, 309, 13, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 274, 318, 277, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 12, 318, 318, 22, 318, - 310, 310, 159, 158, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 207, 201, 310, 217, 310, 310, 266, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 75, 310, 310, - 310, 249, 310, 310, 310, 310, 187, 310, 310, 310, - 310, 211, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 283, 284, 156, 310, 310, 69, 310, 310, 310, - 310, 166, 310, 310, 105, 106, 310, 310, 310, 310, - 151, 310, 153, 310, 192, 310, 310, 310, 310, 157, + 318, 318, 254, 318, 318, 318, 318, 262, 318, 318, + 318, 68, 318, 212, 318, 318, 318, 318, 205, 318, + 318, 63, 318, 318, 318, 318, 23, 318, 43, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 159, 158, 309, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 207, 201, 318, 217, 318, 318, 266, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 75, 318, 318, + 318, 249, 318, 318, 318, 318, 187, 318, 318, 318, - 310, 310, 220, 310, 310, 310, 310, 310, 310, 310, - 134, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 227, 310, 310, 310, 310, 310, 310, 310, - 24, 310, 259, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 193, 310, 310, 247, 310, 278, - 310, 186, 310, 310, 310, 310, 49, 310, 310, 310, - 310, 4, 310, 310, 310, 310, 118, 133, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 223, 37, 38, 310, - 310, 310, 310, 310, 310, 310, 267, 310, 310, 310, + 318, 211, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 283, 284, 156, 318, 318, 69, 318, 318, 318, + 318, 166, 318, 318, 105, 106, 318, 318, 318, 318, + 151, 318, 153, 318, 192, 318, 318, 318, 318, 157, + 318, 318, 220, 318, 318, 318, 318, 318, 318, 318, + 134, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 227, 318, 318, 318, 318, 318, 318, 318, + 24, 318, 259, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 193, 318, 318, 247, 318, 278, + 318, 186, 318, 318, 318, 318, 49, 318, 318, 318, - 310, 310, 310, 235, 310, 310, 310, 310, 310, 310, - 310, 196, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 78, 310, 50, 253, 310, 224, 310, 310, 310, - 310, 11, 310, 310, 310, 310, 310, 310, 117, 310, - 310, 310, 310, 194, 82, 310, 40, 310, 310, 310, - 310, 310, 310, 310, 310, 162, 310, 310, 310, 310, - 310, 136, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 234, 310, 310, 310, 310, 130, 310, 310, 112, - 113, 310, 310, 310, 84, 88, 83, 310, 76, 310, - 310, 310, 310, 310, 10, 310, 310, 310, 251, 286, + 318, 4, 318, 318, 318, 318, 118, 133, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 223, 37, 38, 318, + 318, 318, 318, 318, 318, 318, 267, 318, 318, 318, + 318, 318, 318, 235, 318, 318, 318, 318, 318, 318, + 318, 196, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 78, 318, 50, 253, 318, 224, 318, 318, 318, + 318, 11, 318, 318, 318, 318, 318, 318, 117, 318, + 318, 318, 318, 194, 82, 318, 40, 318, 318, 318, + 318, 318, 318, 318, 318, 162, 318, 318, 318, 318, - 310, 310, 310, 310, 291, 39, 310, 310, 310, 310, - 310, 161, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 89, 87, 310, 77, 275, 310, - 310, 310, 310, 310, 310, 310, 180, 310, 310, 310, - 310, 310, 195, 310, 310, 310, 310, 310, 310, 310, - 310, 152, 71, 310, 310, 310, 310, 310, 268, 310, - 310, 310, 310, 310, 310, 310, 231, 310, 310, 230, - 131, 310, 86, 137, 138, 141, 142, 139, 140, 79, - 310, 252, 310, 310, 310, 310, 155, 310, 310, 310, + 318, 136, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 234, 318, 318, 318, 318, 130, 318, 318, 112, + 113, 318, 318, 318, 84, 88, 83, 318, 76, 318, + 318, 318, 318, 318, 10, 318, 318, 318, 251, 286, + 318, 318, 318, 318, 291, 39, 318, 318, 318, 318, + 318, 161, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 89, 87, 318, 77, 275, 318, + 318, 318, 318, 318, 318, 318, 180, 318, 318, 318, + 318, 318, 195, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 222, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 168, 167, 41, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 92, 310, 221, - 310, 244, 272, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 5, 310, 310, 213, 310, - 310, 273, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 232, 25, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 233, 310, 310, 310, 135, + 318, 152, 71, 318, 318, 318, 318, 318, 268, 318, + 318, 318, 318, 318, 318, 318, 231, 318, 318, 230, + 131, 318, 86, 137, 138, 141, 142, 139, 140, 79, + 318, 252, 318, 318, 318, 318, 155, 318, 318, 318, + 318, 318, 222, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 168, 167, 41, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 92, 318, 221, + 318, 244, 272, 318, 318, 318, 318, 318, 318, 318, - 310, 310, 310, 310, 310, 310, 310, 310, 169, 310, - 176, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 269, 310, 310, 310, 310, 310, 310, 310, 310, 310, - 310, 310, 310, 310, 310, 310, 310, 310, 290, 310, - 310, 240, 310, 310, 310, 310, 310, 270, 310, 310, - 310, 310, 310, 310, 271, 310, 310, 310, 238, 310, - 241, 242, 310, 310, 310, 310, 310, 239, 243, 0 + 318, 318, 318, 318, 318, 5, 318, 318, 213, 318, + 318, 273, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 232, 25, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 233, 318, 318, 318, 135, + 318, 318, 318, 318, 318, 318, 318, 318, 169, 318, + 176, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 269, 318, 318, 318, 318, 318, 318, 318, 318, 318, + 318, 318, 318, 318, 318, 318, 318, 318, 290, 318, + 318, 240, 318, 318, 318, 318, 318, 270, 318, 318, + 318, 318, 318, 318, 271, 318, 318, 318, 238, 318, + + 241, 242, 318, 318, 318, 318, 318, 239, 243, 0 } ; static const YY_CHAR yy_ec[256] = @@ -744,2024 +749,2056 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3085] = +static const flex_int16_t yy_base[3129] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 2197, 2057, 81, 5988, 5988, 5988, 96, 52, - 106, 63, 107, 111, 70, 128, 130, 133, 57, 88, - 76, 135, 141, 117, 148, 145, 160, 164, 185, 177, - 189, 152, 1959, 5988, 5988, 5988, 107, 1846, 5988, 5988, - 5988, 165, 1569, 1315, 5988, 5988, 5988, 211, 1269, 5988, - 5988, 5988, 180, 948, 5988, 217, 5988, 221, 168, 767, - 225, 231, 0, 237, 0, 0, 226, 231, 85, 180, - 114, 238, 239, 156, 234, 206, 240, 232, 200, 132, - 253, 244, 245, 248, 256, 257, 264, 271, 249, 277, + 90, 112, 96, 118, 124, 136, 3388, 3249, 81, 6084, + 6084, 6084, 129, 52, 130, 63, 131, 135, 70, 152, + 154, 157, 57, 88, 76, 159, 165, 95, 172, 148, + 183, 195, 193, 202, 208, 123, 3208, 6084, 6084, 6084, + 107, 3022, 6084, 6084, 6084, 186, 2951, 2430, 6084, 6084, + 6084, 234, 2178, 6084, 6084, 6084, 201, 2141, 6084, 238, + 6084, 242, 175, 2042, 1968, 6084, 6084, 6084, 246, 1893, + 6084, 6084, 6084, 228, 1818, 252, 153, 0, 256, 0, + 0, 182, 248, 250, 241, 254, 204, 259, 92, 258, - 279, 262, 282, 285, 270, 272, 291, 293, 290, 299, - 301, 284, 302, 305, 310, 312, 311, 315, 313, 319, - 322, 318, 324, 327, 326, 193, 221, 334, 329, 340, - 342, 325, 348, 349, 350, 353, 354, 357, 363, 359, - 723, 379, 595, 381, 503, 388, 450, 365, 392, 278, - 396, 400, 0, 377, 392, 401, 367, 394, 396, 402, - 261, 398, 399, 403, 405, 406, 418, 407, 416, 422, - 426, 430, 427, 434, 424, 437, 439, 440, 429, 451, - 453, 454, 446, 455, 456, 458, 461, 462, 477, 464, - 465, 463, 486, 472, 488, 490, 487, 498, 499, 475, + 263, 264, 261, 158, 265, 272, 268, 269, 281, 273, + 283, 286, 294, 288, 303, 310, 295, 307, 308, 297, + 305, 313, 318, 156, 320, 324, 326, 330, 334, 333, + 335, 336, 341, 339, 345, 328, 347, 350, 352, 354, + 363, 353, 360, 368, 271, 371, 362, 372, 374, 377, + 379, 380, 382, 391, 387, 1666, 403, 1656, 405, 1607, + 414, 1575, 1327, 418, 1162, 422, 426, 0, 403, 874, + 430, 636, 516, 434, 422, 434, 411, 430, 431, 212, + 432, 433, 435, 436, 437, 438, 448, 444, 451, 453, + 461, 460, 462, 464, 459, 467, 468, 474, 470, 481, - 506, 504, 511, 516, 512, 489, 514, 501, 517, 491, - 518, 515, 522, 524, 525, 529, 530, 537, 534, 535, - 538, 532, 547, 543, 552, 544, 551, 555, 548, 558, - 566, 569, 549, 576, 559, 572, 573, 578, 581, 585, - 582, 580, 583, 590, 587, 589, 591, 593, 592, 600, - 610, 607, 608, 620, 609, 605, 616, 617, 618, 596, - 628, 627, 623, 632, 638, 629, 636, 639, 641, 643, - 642, 644, 646, 656, 649, 659, 652, 666, 661, 667, - 664, 676, 651, 662, 672, 673, 674, 678, 677, 679, - 684, 687, 688, 690, 691, 685, 698, 696, 700, 713, + 484, 487, 477, 479, 485, 489, 493, 496, 502, 505, + 495, 509, 517, 512, 524, 527, 499, 529, 532, 514, + 534, 531, 539, 543, 538, 540, 542, 544, 546, 547, + 549, 550, 551, 558, 555, 559, 554, 566, 568, 561, + 572, 562, 577, 578, 586, 581, 582, 296, 583, 585, + 594, 595, 590, 599, 591, 598, 604, 607, 614, 616, + 611, 600, 615, 617, 618, 619, 621, 626, 622, 634, + 639, 635, 638, 642, 644, 646, 647, 648, 649, 625, + 658, 651, 653, 663, 669, 656, 667, 670, 661, 672, + 673, 675, 680, 684, 681, 688, 683, 692, 690, 696, - 701, 702, 704, 714, 715, 716, 724, 737, 727, 738, - 728, 734, 742, 743, 707, 750, 746, 744, 753, 754, - 756, 757, 761, 768, 769, 5988, 760, 773, 771, 774, - 782, 783, 784, 789, 785, 763, 796, 800, 797, 803, - 825, 791, 801, 804, 814, 795, 5988, 815, 807, 849, - 817, 827, 839, 831, 835, 823, 830, 850, 843, 853, - 840, 854, 855, 873, 857, 858, 870, 860, 871, 872, - 885, 881, 883, 884, 886, 894, 889, 891, 892, 901, - 893, 895, 902, 905, 904, 908, 916, 909, 915, 917, - 921, 922, 925, 927, 929, 923, 926, 933, 950, 931, + 693, 705, 700, 691, 701, 702, 703, 707, 706, 708, + 713, 716, 717, 719, 723, 721, 731, 727, 728, 744, + 729, 736, 741, 745, 739, 747, 755, 749, 771, 769, + 757, 758, 759, 775, 779, 776, 782, 780, 785, 786, + 787, 788, 789, 797, 793, 6084, 792, 802, 809, 810, + 811, 814, 799, 818, 820, 800, 830, 826, 823, 832, + 854, 827, 714, 831, 833, 836, 6084, 840, 838, 878, + 849, 842, 862, 860, 844, 863, 868, 858, 869, 885, + 872, 871, 886, 895, 884, 876, 901, 887, 903, 904, + 911, 909, 906, 912, 913, 920, 915, 916, 917, 931, - 945, 953, 943, 954, 941, 955, 958, 963, 960, 964, - 966, 974, 969, 970, 972, 975, 976, 978, 982, 983, - 984, 986, 988, 992, 989, 999, 990, 997, 1004, 1006, - 5988, 1007, 1009, 1011, 1012, 1013, 1010, 5988, 1014, 1015, - 1017, 1026, 1016, 1029, 1036, 1024, 1037, 1039, 1040, 1043, - 1050, 1027, 1046, 1057, 1052, 1055, 1056, 1053, 1059, 1062, - 1061, 1064, 1065, 1068, 1070, 1088, 5988, 1071, 1077, 1080, - 1079, 1085, 1082, 1090, 1097, 1100, 1103, 1106, 1116, 1093, - 1117, 1111, 1113, 1072, 1118, 1123, 1125, 1126, 1127, 1128, - 1129, 1130, 1132, 1131, 1137, 1139, 5988, 1144, 1154, 1155, + 918, 923, 925, 930, 933, 942, 943, 936, 945, 934, + 950, 951, 954, 952, 948, 955, 959, 956, 973, 958, + 970, 971, 977, 978, 981, 984, 982, 987, 988, 989, + 990, 998, 996, 994, 997, 999, 1003, 1005, 1007, 1010, + 1011, 1012, 1013, 1017, 1015, 1022, 1020, 1026, 1031, 1028, + 6084, 1033, 1035, 1036, 1037, 1038, 1039, 6084, 1041, 1040, + 1043, 1048, 1045, 1055, 1062, 1052, 1063, 1065, 1064, 1069, + 1076, 1053, 1072, 1083, 1079, 1080, 1081, 1086, 1087, 1089, + 1082, 1090, 1088, 1092, 1096, 1112, 6084, 1099, 1100, 1098, + 1105, 1106, 1110, 1116, 1108, 1129, 1117, 1130, 1141, 1127, - 1136, 1146, 1156, 1157, 1159, 1160, 1162, 1163, 1165, 1164, - 1169, 1179, 1170, 1183, 1180, 1181, 1185, 1186, 1188, 1187, - 1189, 1191, 1203, 1196, 1195, 1211, 1206, 1213, 1215, 1222, - 1204, 1217, 1218, 1219, 1221, 1224, 1226, 1228, 1230, 1232, - 1239, 1237, 1234, 1235, 1242, 1250, 1243, 1245, 1253, 1246, - 1254, 1257, 1247, 1266, 1267, 1260, 1258, 5988, 1276, 1268, - 1278, 1279, 1280, 1284, 1286, 1282, 1288, 813, 1289, 1290, - 1292, 1294, 1299, 1296, 1297, 1300, 1304, 1307, 1311, 1318, - 1322, 1323, 1324, 1310, 1325, 1333, 1330, 1337, 1338, 1340, - 1348, 1336, 1343, 1346, 1350, 1334, 1352, 1354, 1355, 1357, + 1137, 1142, 1144, 1147, 1145, 1149, 1151, 1155, 1153, 1152, + 1154, 1156, 1160, 1158, 1157, 1173, 6084, 1174, 1159, 1181, + 1178, 1180, 1182, 1184, 1185, 1186, 1187, 1189, 1192, 1188, + 1206, 1199, 1197, 1213, 1203, 1208, 1210, 1212, 1214, 1217, + 1216, 1218, 1229, 1226, 1222, 1231, 1242, 1238, 1241, 1249, + 1233, 1244, 1245, 1246, 1248, 1252, 1253, 1251, 1257, 1259, + 1266, 1264, 1261, 1262, 1269, 1277, 1270, 1272, 1280, 1273, + 1281, 1278, 1284, 1285, 1293, 1287, 1294, 6084, 1303, 1295, + 1299, 1306, 1307, 1305, 1311, 1313, 1315, 1314, 1317, 1318, + 1319, 1325, 1322, 1326, 1320, 1328, 1334, 1341, 1338, 1340, - 1360, 1368, 1369, 1362, 1372, 1379, 1380, 1364, 1382, 1376, - 1383, 1314, 1370, 1387, 1390, 1391, 1398, 1393, 1394, 1399, - 1400, 1401, 1402, 1396, 1407, 1410, 1406, 1412, 1413, 1416, - 1423, 1418, 1417, 1425, 1426, 1428, 1429, 1437, 1430, 1438, - 1439, 1441, 1440, 1448, 1446, 1449, 1450, 1457, 1455, 1459, - 1456, 1465, 1467, 1469, 1471, 1472, 1473, 1475, 1474, 1478, - 1484, 1477, 1483, 1489, 1493, 1490, 1495, 1496, 1499, 1500, - 5988, 1501, 1508, 1503, 1506, 1512, 1513, 1514, 1521, 1517, - 1519, 1516, 1518, 1522, 1544, 5988, 1530, 5988, 5988, 1529, - 5988, 5988, 1527, 1531, 1535, 1548, 1539, 1554, 1547, 1541, + 1350, 1349, 1351, 1342, 1353, 1361, 1354, 1363, 1362, 1364, + 1372, 1368, 1370, 1373, 1380, 1358, 1375, 1382, 1376, 1385, + 1388, 1391, 1403, 1389, 1399, 1406, 1407, 1390, 1410, 1379, + 1411, 1402, 1414, 1416, 1417, 1418, 1425, 1422, 1421, 1424, + 1427, 1423, 1428, 1431, 1429, 1446, 1435, 1433, 1437, 1448, + 1450, 1451, 1452, 1453, 1455, 1457, 1458, 1461, 1459, 1462, + 1464, 1470, 1465, 1472, 1478, 1480, 1482, 1484, 1485, 1486, + 1487, 1496, 1488, 1497, 1489, 1500, 1502, 1503, 1505, 1509, + 1513, 1507, 1516, 1508, 1518, 1519, 1527, 1528, 1531, 1524, + 6084, 1520, 1541, 1522, 1534, 1536, 1543, 1544, 1551, 1546, - 1557, 1550, 1567, 1572, 1528, 1560, 1562, 1568, 1575, 1583, - 1585, 1586, 1588, 1594, 1596, 1597, 1599, 1606, 1607, 1565, - 1589, 1598, 1610, 1612, 1611, 1613, 1617, 1615, 1620, 1616, - 1623, 1618, 1628, 1633, 1625, 1642, 5988, 1639, 1643, 1651, - 1647, 1654, 1646, 1650, 1653, 1627, 1658, 1655, 1659, 1660, - 1662, 1664, 1667, 1670, 1668, 1678, 1671, 5988, 1673, 1675, - 1674, 1680, 1686, 1688, 1687, 1689, 1681, 1693, 1694, 1705, - 1696, 1700, 1701, 1708, 1709, 1710, 5988, 1712, 1719, 1711, - 1722, 1716, 1723, 1724, 1725, 1726, 1729, 1728, 1730, 1731, - 1735, 1742, 1739, 1740, 1741, 1745, 1750, 1753, 1757, 1764, + 1549, 1547, 1550, 1552, 1576, 6084, 1555, 6084, 6084, 1557, + 6084, 6084, 1558, 1553, 1561, 1560, 1578, 1582, 1569, 1566, + 1573, 1571, 1592, 1599, 1589, 1593, 1590, 1597, 1602, 1610, + 1612, 1615, 1613, 1620, 1624, 1623, 1625, 1632, 1633, 1627, + 1634, 1636, 1637, 1641, 1638, 1642, 1644, 1647, 1648, 1645, + 1650, 1651, 1658, 1664, 1655, 1671, 6084, 1667, 1674, 1681, + 1677, 1684, 1676, 1680, 1683, 1688, 1690, 1685, 1692, 1694, + 1695, 1696, 1698, 1700, 1703, 1707, 1704, 6084, 1705, 1708, + 1706, 1713, 1712, 1716, 1720, 1722, 1724, 1726, 1727, 1734, + 1731, 1729, 1737, 1738, 1739, 1742, 6084, 1741, 1751, 1746, - 1755, 1761, 1758, 1765, 1766, 1768, 1769, 1771, 1780, 1782, - 1779, 1783, 1772, 1787, 1795, 1794, 1784, 1785, 1796, 1799, - 1806, 1808, 1809, 1800, 1804, 1816, 1811, 1814, 1815, 1819, - 1822, 1823, 1825, 1826, 1828, 1832, 1830, 1834, 5988, 1836, - 1837, 5988, 1839, 1840, 1862, 1841, 1843, 1848, 1845, 1849, - 1854, 1855, 1866, 1864, 1868, 1885, 1872, 1877, 1875, 1887, - 1876, 1889, 1891, 1895, 1896, 1897, 1904, 1906, 1857, 1912, - 1914, 1899, 1901, 1909, 1928, 1911, 1913, 1917, 1925, 1932, - 1919, 1922, 1926, 1938, 1939, 1944, 1941, 5988, 1952, 1950, - 1949, 1951, 1961, 1960, 1956, 5988, 1962, 1963, 1966, 1973, + 1752, 1748, 1754, 1755, 1758, 1759, 1761, 1760, 1762, 1764, + 1765, 1777, 1772, 1773, 1768, 1776, 1786, 1788, 1789, 1796, + 1778, 1791, 1793, 1797, 1799, 1801, 1803, 1804, 1812, 1814, + 1807, 1815, 1810, 1817, 1826, 1825, 1816, 1827, 1828, 1831, + 1836, 1838, 1840, 1841, 1842, 1850, 1834, 1846, 1848, 1851, + 1863, 1849, 1861, 1867, 1853, 1858, 1869, 1860, 6084, 1870, + 1871, 6084, 1872, 1876, 1898, 1880, 1873, 1884, 1883, 1886, + 1887, 1889, 1888, 1890, 1896, 1906, 1908, 1912, 1915, 1918, + 1913, 1921, 1917, 1920, 1924, 1929, 1940, 1942, 1944, 1932, + 1945, 1937, 1946, 1948, 1967, 1949, 1947, 1950, 1951, 1953, - 1969, 1970, 1974, 1915, 1976, 1977, 1980, 1984, 1985, 1981, - 1983, 2001, 5988, 1986, 5988, 1991, 1988, 1996, 1998, 1999, - 2003, 2004, 2006, 5988, 5988, 2014, 2007, 2020, 2028, 2010, - 5988, 2013, 2031, 2032, 2024, 2026, 2034, 2035, 2037, 2039, - 2038, 2047, 2042, 2049, 2044, 2045, 2046, 5988, 2058, 2048, - 2063, 2065, 2056, 2066, 2073, 2064, 5988, 2074, 2067, 2075, - 2085, 2087, 2082, 2077, 2089, 2093, 2084, 2088, 2090, 2096, - 2098, 2103, 2106, 2104, 2108, 2112, 2120, 5988, 2101, 2105, - 2121, 2118, 2127, 2122, 2124, 2116, 2128, 2129, 2135, 2130, - 2136, 2137, 2139, 2146, 2148, 2144, 2145, 2152, 2143, 2153, + 1955, 1962, 1957, 1958, 1969, 1979, 1972, 1974, 6084, 1989, + 1982, 1980, 1984, 1996, 1995, 1991, 6084, 1992, 1998, 2002, + 2009, 2004, 2005, 2006, 2008, 2012, 2014, 2015, 2016, 2020, + 2017, 2019, 2037, 6084, 2022, 6084, 2021, 2030, 2032, 2033, + 2039, 2040, 2041, 2043, 6084, 6084, 2044, 2045, 2052, 2062, + 2058, 6084, 2059, 2066, 2063, 2069, 2068, 2061, 2070, 2073, + 2074, 2077, 2084, 2076, 2085, 2080, 2083, 2089, 6084, 2090, + 2094, 2097, 2099, 2098, 2100, 2101, 2107, 6084, 2110, 2108, + 2111, 2118, 2121, 2113, 2109, 2123, 2128, 2125, 2130, 2131, + 2132, 2133, 2140, 2142, 2139, 2145, 2147, 2154, 6084, 2137, - 2156, 2161, 2155, 2160, 2163, 2164, 5988, 2165, 2171, 124, - 2166, 2172, 2174, 2176, 2179, 2178, 2175, 2191, 2196, 2192, - 2198, 2194, 2193, 2201, 2203, 2202, 2204, 2205, 2206, 2209, - 5988, 2211, 2213, 2214, 2216, 2218, 2219, 2229, 5988, 2225, - 2230, 2237, 2233, 2238, 2241, 2242, 2246, 2247, 2249, 2250, - 2253, 2251, 2255, 5988, 2260, 2263, 2265, 2257, 2266, 2272, - 2273, 2275, 2278, 2267, 2279, 2280, 2281, 2284, 2283, 2285, - 2287, 2292, 2289, 2294, 2297, 2299, 5988, 2307, 2309, 2303, - 2300, 2310, 2312, 2319, 2316, 2322, 2321, 2325, 2337, 2327, - 2329, 2339, 2330, 2343, 2332, 2353, 2344, 2352, 2354, 2351, + 2138, 2159, 2156, 2163, 2157, 2160, 2164, 2165, 2167, 2168, + 2172, 2173, 2174, 2175, 2185, 2187, 2177, 2188, 2190, 2176, + 2196, 2197, 2202, 2199, 2203, 2200, 2180, 6084, 2201, 2207, + 2204, 399, 2208, 2211, 2213, 2216, 2214, 2228, 2215, 2236, + 2237, 2229, 2238, 2239, 2218, 2233, 2241, 2242, 2243, 2245, + 2248, 2249, 6084, 2251, 2253, 2254, 2255, 2258, 2256, 2261, + 6084, 2259, 2269, 2279, 2281, 2271, 2283, 2265, 2273, 2287, + 2289, 2282, 2290, 2292, 2293, 6084, 2298, 2299, 2300, 2302, + 2306, 2309, 2307, 2308, 2310, 2314, 2315, 2317, 2319, 2318, + 2320, 2321, 2328, 2329, 2334, 2324, 2331, 2336, 6084, 2343, - 2358, 2361, 2362, 2363, 2365, 2367, 2368, 2369, 2370, 2377, - 2384, 2375, 2385, 2386, 2390, 2396, 2392, 5988, 2397, 2398, - 2399, 2405, 2416, 2409, 2407, 2419, 2408, 2411, 2412, 2421, - 2423, 2432, 2427, 2425, 2430, 2434, 2435, 2436, 2438, 2441, - 2442, 2451, 2443, 2453, 2220, 5988, 2376, 2454, 2446, 2448, - 2461, 2455, 2463, 2467, 2464, 2470, 2471, 2473, 2474, 2476, - 2477, 2478, 2480, 2482, 2481, 5988, 2485, 2486, 2490, 2493, - 2498, 2496, 2500, 2506, 2508, 2510, 2502, 2512, 2514, 2513, - 5988, 2522, 2523, 2519, 2531, 2527, 2528, 2529, 2533, 2530, - 5988, 2534, 2535, 2543, 2544, 2539, 5988, 2548, 2541, 2546, + 2338, 2340, 2347, 2341, 2352, 2348, 2364, 2350, 2356, 2359, + 2365, 2373, 2362, 2367, 2374, 2379, 2383, 2384, 2377, 2385, + 2389, 2397, 2387, 2399, 2401, 2391, 2395, 2403, 2402, 2405, + 2407, 2409, 2420, 2423, 2419, 2425, 2426, 2415, 2433, 2428, + 6084, 2432, 2434, 2437, 2438, 2451, 2443, 2441, 2448, 2454, + 2456, 2457, 2458, 2459, 2466, 2461, 2464, 2467, 2469, 2470, + 2471, 2475, 2478, 2482, 2486, 2479, 2489, 2490, 6084, 2495, + 2491, 2483, 2497, 2500, 2501, 2505, 2507, 2509, 2510, 2511, + 2513, 2515, 2516, 2517, 2518, 2520, 2522, 2525, 6084, 2527, + 2526, 2528, 2534, 2539, 2538, 2540, 2542, 2549, 2551, 2536, - 2551, 2553, 2552, 2556, 2549, 2559, 2560, 2568, 2565, 2562, - 2571, 5988, 2572, 2580, 2575, 2577, 2581, 2582, 2583, 2587, - 2592, 2588, 2594, 5988, 2601, 2599, 2604, 2612, 2607, 2609, - 2610, 2613, 2614, 2616, 2617, 5988, 2619, 2620, 2622, 2623, - 2625, 2627, 2630, 2642, 2631, 2634, 2641, 2639, 2644, 2646, - 2647, 2650, 2651, 2648, 2658, 2660, 2662, 2663, 2664, 2668, - 2676, 2678, 2674, 2679, 5988, 2682, 2683, 2684, 2671, 2686, - 2688, 2690, 2691, 2694, 2696, 2701, 2695, 2698, 2708, 2711, - 2699, 2712, 2715, 2716, 2718, 2720, 2721, 2722, 2723, 2730, - 2726, 2728, 2738, 2729, 2733, 2743, 2736, 2744, 2745, 2746, + 2552, 2553, 2555, 6084, 2563, 2565, 2561, 2570, 2562, 2567, + 2569, 2573, 2574, 6084, 2575, 2576, 2577, 2584, 2585, 2581, + 6084, 2588, 2583, 2589, 2592, 2591, 2593, 2598, 2595, 2601, + 2602, 2607, 2614, 2606, 2616, 6084, 2608, 2623, 2610, 2624, + 2630, 2618, 2619, 2625, 2631, 2635, 2641, 6084, 2648, 2645, + 2646, 2653, 2644, 2650, 2651, 2654, 2656, 2660, 2658, 6084, + 2661, 2662, 2664, 2666, 2668, 2670, 2671, 2679, 2677, 2681, + 2683, 2684, 2686, 2685, 2687, 2691, 2702, 2693, 2694, 2695, + 2705, 2706, 2708, 2709, 2710, 2719, 2722, 2717, 2725, 6084, + 2728, 2729, 2714, 2721, 2731, 2732, 2734, 2735, 2737, 2738, - 2747, 2749, 2751, 2752, 2756, 2750, 2758, 2768, 2769, 2771, - 2760, 2772, 2776, 2777, 5988, 2780, 2782, 2778, 2784, 2785, - 2791, 2792, 2794, 2795, 2786, 2800, 2802, 2803, 2808, 2809, - 2811, 2818, 2814, 5988, 2815, 5988, 2816, 2817, 2819, 2829, - 2821, 5988, 2825, 5988, 2832, 2839, 2826, 2830, 5988, 2840, - 2834, 2836, 2847, 2844, 2849, 2850, 2851, 2852, 2857, 2853, - 2855, 2860, 2861, 2863, 2865, 2867, 2871, 2868, 2878, 2880, - 2872, 2881, 2874, 2887, 2889, 2888, 2890, 5988, 2900, 2891, - 2894, 2897, 2901, 2902, 2903, 2905, 2906, 2911, 2912, 2913, - 2914, 2920, 2919, 2929, 2925, 2936, 5988, 2928, 2933, 2935, + 2743, 2740, 2742, 2750, 2759, 2751, 2755, 2760, 2762, 2763, + 2764, 2765, 2766, 2752, 2773, 2775, 2768, 2782, 2774, 2777, + 2791, 2778, 2787, 2788, 2789, 2790, 2792, 2795, 2798, 2800, + 2802, 2812, 2816, 2796, 2805, 2817, 2818, 2819, 2820, 6084, + 2823, 2824, 2821, 2825, 2828, 2834, 2835, 2837, 2838, 2842, + 2843, 2846, 2847, 2849, 2852, 2854, 2862, 2858, 6084, 2859, + 6084, 2860, 2861, 2863, 2871, 2867, 6084, 2873, 6084, 2875, + 2880, 2868, 2876, 6084, 2882, 2883, 2886, 2888, 2890, 2891, + 2894, 2893, 2896, 2899, 2897, 2901, 2902, 2904, 2907, 2909, + 2914, 2911, 2915, 2921, 2918, 2924, 2925, 2927, 2928, 2931, - 2937, 5988, 2939, 2938, 2940, 2946, 2949, 2948, 2950, 2952, - 2956, 2958, 2951, 2961, 2959, 2968, 2969, 5988, 2974, 2975, - 2960, 2978, 2982, 2984, 2986, 2990, 2998, 2994, 2993, 2977, - 2996, 2997, 3000, 3007, 3008, 3004, 3011, 3010, 3013, 3020, - 3016, 3012, 3014, 3022, 3023, 3024, 3027, 3028, 3031, 3026, - 3029, 3036, 3032, 5988, 3044, 3035, 3040, 3047, 3051, 3054, - 3052, 3056, 3058, 3057, 3062, 3061, 3059, 5988, 3063, 5988, - 3060, 3077, 3065, 3082, 3079, 3071, 3084, 3093, 3086, 3088, - 3090, 3096, 3094, 3098, 3097, 3100, 3103, 3102, 3110, 3109, - 3105, 3116, 3117, 3118, 3120, 3121, 5988, 5988, 3122, 3123, + 2933, 2936, 6084, 2938, 2934, 2940, 2942, 2943, 2945, 2946, + 2947, 2955, 2953, 2954, 2957, 2964, 2961, 2965, 2970, 2978, + 2968, 2982, 6084, 2977, 2980, 2983, 2984, 6084, 2987, 2985, + 2993, 2995, 2986, 2989, 2997, 2998, 3003, 2999, 3005, 3010, + 3014, 3015, 3018, 6084, 3017, 3019, 3006, 3027, 3029, 3033, + 3034, 3039, 3042, 3041, 3032, 3043, 3044, 3047, 3048, 3055, + 3056, 3052, 3059, 3054, 3060, 3069, 3066, 3058, 3062, 3064, + 3072, 3073, 3078, 3079, 3070, 3080, 3075, 3081, 3085, 3088, + 6084, 3093, 3094, 3097, 3103, 3096, 3098, 3089, 3100, 3106, + 3105, 3110, 3107, 3108, 6084, 3121, 6084, 3122, 3123, 3128, - 3126, 3124, 3128, 3134, 3130, 3142, 3138, 3144, 3146, 3148, - 3156, 5988, 3149, 3153, 3152, 3159, 3171, 3157, 3161, 3176, - 3172, 3179, 3178, 5988, 3169, 3180, 3187, 3182, 3183, 3191, - 5988, 3188, 5988, 3190, 3193, 3197, 3198, 3200, 3201, 3202, - 3203, 3211, 3221, 3224, 3206, 3223, 3208, 3220, 3225, 3226, - 3233, 3229, 3230, 3231, 5988, 3235, 3236, 3237, 3199, 3240, - 3242, 3243, 3248, 5988, 3250, 3254, 3255, 3257, 3258, 3260, - 3261, 3263, 3264, 3266, 3262, 3267, 3279, 3268, 3272, 3282, - 3284, 3286, 3292, 5988, 3293, 3285, 3301, 3297, 3299, 3300, - 3303, 3304, 3305, 3307, 3308, 3309, 3310, 3316, 3315, 3312, + 3130, 3125, 3131, 3132, 3134, 3138, 3139, 3140, 3143, 3142, + 3144, 3146, 3150, 3153, 3154, 3170, 3157, 3152, 3166, 3159, + 3167, 3168, 3171, 6084, 6084, 3173, 3174, 3175, 3178, 3180, + 3182, 3185, 3190, 3188, 3191, 3195, 3196, 3207, 6084, 3197, + 3203, 3204, 3205, 3219, 3212, 3221, 3223, 3222, 3231, 3228, + 6084, 3215, 3224, 3239, 3229, 3237, 3247, 6084, 3236, 6084, + 3232, 3243, 3245, 3248, 3250, 3252, 3254, 3255, 3259, 3266, + 3267, 3264, 3271, 3256, 3272, 3273, 3274, 3281, 3278, 3279, + 3283, 6084, 3285, 3282, 3289, 3286, 3294, 3298, 3288, 3296, + 6084, 3304, 3305, 3307, 3308, 3309, 3310, 3312, 3314, 3315, - 3313, 3318, 3329, 3331, 3332, 3321, 3339, 3323, 3337, 3342, - 3340, 3343, 3348, 3349, 3352, 3354, 3346, 3368, 3369, 3355, - 3357, 3372, 3359, 3379, 3374, 5988, 3381, 3365, 3386, 3382, - 3384, 3389, 3390, 3398, 3396, 3385, 3393, 3400, 3397, 5988, - 3412, 3402, 3399, 3403, 3404, 3424, 3420, 3421, 3422, 3426, - 3423, 3427, 3430, 3431, 3432, 3435, 3436, 5988, 5988, 3438, - 3439, 3442, 5988, 3445, 3440, 3452, 3448, 3444, 3455, 3459, - 3458, 3457, 3462, 3460, 3468, 5988, 3469, 3477, 3472, 3473, - 3481, 3482, 3479, 3485, 3487, 3488, 3491, 3489, 3494, 3493, - 3495, 3498, 3506, 3509, 3502, 3504, 3512, 5988, 3505, 3507, + 3313, 3318, 3317, 3323, 3332, 3333, 3324, 3331, 3335, 3338, + 3340, 6084, 3344, 3346, 3353, 3351, 3348, 3352, 3356, 3357, + 3358, 3361, 3363, 3362, 3364, 3366, 3368, 3365, 3375, 3369, + 3382, 3371, 3385, 3391, 3392, 3372, 3388, 3395, 3396, 3399, + 3398, 3402, 3405, 3409, 3406, 3418, 3419, 3410, 3413, 3422, + 3423, 3430, 3425, 6084, 3435, 3415, 3438, 3436, 3437, 3442, + 3443, 3445, 3452, 3451, 3439, 3447, 3454, 3449, 6084, 3472, + 3460, 3453, 3457, 3458, 3462, 3475, 3476, 3477, 3479, 3480, + 3481, 3483, 3485, 3486, 3489, 3490, 6084, 6084, 3492, 3493, + 3495, 6084, 3499, 3494, 3511, 3501, 3502, 3497, 3509, 3513, - 3513, 3515, 3517, 3520, 5988, 3523, 3524, 3527, 3530, 3538, - 3540, 3534, 3547, 3531, 3541, 3543, 3548, 3549, 3551, 3560, - 3557, 3556, 3559, 3563, 3566, 5988, 3565, 3567, 3568, 3576, - 5988, 3580, 3587, 3590, 3591, 3573, 3577, 3589, 3598, 5988, - 3593, 3596, 3594, 3595, 3603, 3602, 3610, 3607, 5988, 3609, - 3608, 3611, 5988, 3612, 3613, 3618, 3623, 3625, 3632, 3628, - 3630, 3631, 3629, 5988, 3636, 5988, 3639, 3640, 3643, 5988, - 3646, 3647, 3648, 3650, 3651, 3656, 3657, 3655, 3663, 3664, - 3666, 3667, 3665, 3670, 3674, 3671, 3672, 3676, 3677, 5988, - 3678, 3680, 3687, 3692, 3688, 3695, 3682, 3699, 3700, 5988, + 3514, 3519, 3517, 3521, 6084, 3524, 3531, 3526, 3527, 3536, + 3538, 3542, 3528, 3535, 3539, 3545, 3548, 3547, 3549, 3551, + 3552, 3561, 3562, 3554, 3557, 3565, 6084, 3558, 3566, 3563, + 3571, 3573, 3575, 6084, 3576, 3579, 3580, 3582, 3594, 3596, + 3587, 3602, 3584, 3597, 3589, 3599, 3606, 3607, 3615, 3610, + 3612, 3614, 3618, 3616, 6084, 3621, 3622, 3623, 3629, 6084, + 3632, 3640, 3641, 3642, 3624, 3644, 3645, 3652, 6084, 3647, + 3651, 3648, 3637, 3664, 3653, 3667, 3663, 3654, 6084, 3665, + 3669, 3671, 6084, 3670, 3678, 3681, 3683, 3672, 3690, 3685, + 3689, 3687, 3686, 6084, 3696, 6084, 3697, 3698, 3702, 6084, - 5988, 3702, 5988, 3705, 3706, 3709, 5988, 3711, 3710, 3718, - 3714, 3715, 3717, 3721, 3727, 5988, 3723, 3728, 3732, 3729, - 3734, 3737, 3739, 3740, 3736, 3741, 3744, 5988, 3745, 3742, - 3747, 3743, 3753, 3757, 3759, 3758, 5988, 3766, 3767, 3768, - 3770, 3772, 5988, 3774, 5988, 3776, 3780, 3781, 3782, 3777, - 5988, 3785, 3788, 3791, 3792, 3795, 3797, 3798, 3801, 3804, - 3805, 3813, 3809, 3808, 3811, 5988, 3810, 3812, 3816, 3823, - 3817, 3820, 3833, 3830, 3834, 3828, 3831, 3838, 3841, 3842, - 3844, 3848, 3849, 3850, 5988, 3851, 3856, 3852, 3865, 3861, - 3855, 5988, 3862, 3866, 3872, 5988, 3869, 3875, 3876, 3879, + 3699, 3704, 3707, 3706, 3708, 3709, 3713, 3720, 3715, 3721, + 3656, 3722, 3723, 3724, 3731, 3726, 3728, 3732, 3733, 6084, + 3739, 3734, 3736, 3742, 3746, 3748, 3738, 3749, 3753, 6084, + 6084, 3757, 6084, 3758, 3762, 3763, 6084, 3765, 3767, 3770, + 3768, 3771, 3773, 3777, 3774, 6084, 3783, 3769, 3784, 3786, + 3788, 3789, 3793, 3794, 3795, 3792, 3796, 3802, 6084, 3799, + 3800, 3814, 3798, 3803, 3817, 3822, 3809, 6084, 3825, 3824, + 3815, 3831, 3828, 6084, 3832, 6084, 3834, 3837, 3838, 3840, + 3839, 6084, 3843, 3847, 3849, 3844, 3851, 3853, 3854, 3857, + 3860, 3863, 3871, 3864, 3866, 3867, 6084, 3868, 3872, 3874, - 3880, 3881, 3884, 3883, 3886, 5988, 3890, 3891, 3887, 3888, - 3889, 3896, 5988, 5988, 3904, 5988, 3906, 3892, 3909, 3908, - 3911, 3913, 3917, 3918, 3920, 3914, 3921, 3929, 3928, 3938, - 3945, 3946, 3944, 3935, 3930, 5988, 5988, 3949, 3951, 3953, - 3955, 3956, 3958, 3942, 3965, 3963, 3971, 3974, 3964, 3967, - 5988, 3975, 3976, 3978, 5988, 3980, 3981, 3983, 3984, 3985, - 3989, 3987, 3988, 3992, 3991, 3994, 3998, 3995, 4004, 4000, - 4011, 4001, 4012, 4014, 4015, 4019, 5988, 4016, 4021, 4022, - 4025, 4028, 4030, 4029, 4031, 4032, 5988, 4036, 4035, 4039, - 4044, 4045, 4047, 4037, 4055, 4062, 4056, 4063, 4064, 4058, + 3876, 3880, 3881, 3888, 3884, 3890, 3885, 3891, 3894, 3896, + 3897, 3904, 3900, 3906, 3902, 6084, 3910, 3912, 3913, 3924, + 3916, 3915, 6084, 3917, 3921, 3928, 6084, 3930, 3931, 3932, + 3936, 3937, 3938, 3942, 3939, 3944, 6084, 3940, 3945, 3946, + 3949, 3960, 3961, 6084, 6084, 3962, 6084, 3963, 3948, 3964, + 3967, 3947, 3973, 3975, 3977, 3984, 3976, 3987, 3988, 3989, + 3978, 3998, 3996, 4005, 4001, 4003, 3994, 6084, 6084, 4007, + 4008, 4010, 4013, 4015, 4017, 4018, 4026, 4022, 4024, 4031, + 4028, 4038, 6084, 4035, 4021, 4040, 6084, 4037, 4042, 4043, + 4045, 4046, 4049, 4048, 4050, 4052, 4053, 4055, 4059, 4056, - 4069, 4072, 5988, 4073, 4046, 4074, 4075, 4080, 4082, 4083, - 4085, 4086, 4089, 4090, 4091, 4093, 4098, 4095, 4099, 4100, - 4101, 5988, 4106, 4113, 4103, 4116, 4107, 4117, 4118, 4126, - 4129, 4119, 4124, 4130, 4132, 5988, 4133, 4134, 4135, 4136, - 4144, 4137, 4141, 4145, 4147, 5988, 4152, 4148, 4154, 4155, - 4158, 4159, 4163, 4164, 4166, 4170, 4178, 5988, 4167, 4180, - 4182, 4174, 4171, 4173, 4183, 4186, 5988, 4190, 4192, 4191, - 4207, 4193, 4208, 4200, 4204, 4203, 4210, 4213, 4211, 4215, - 4217, 4218, 4219, 4231, 4235, 4230, 5988, 4221, 5988, 4236, - 4237, 4246, 4242, 4232, 5988, 4239, 4244, 4248, 4249, 4250, + 4068, 4058, 4065, 4061, 4069, 4072, 4076, 4079, 6084, 4081, + 4082, 4083, 4086, 4087, 4088, 4091, 4092, 4093, 6084, 4090, + 4096, 4098, 4097, 4106, 4099, 4108, 4115, 4118, 4123, 4110, + 4120, 4126, 4128, 4130, 4131, 6084, 4134, 4124, 4132, 4135, + 4142, 4146, 4138, 4149, 4143, 4151, 4153, 4154, 4156, 4163, + 4158, 4160, 4164, 4165, 6084, 4166, 4174, 4167, 4176, 4170, + 4177, 4179, 4180, 4190, 4185, 4187, 4191, 4193, 6084, 4194, + 4195, 4197, 4199, 4201, 4198, 4206, 4205, 4207, 6084, 4209, + 4213, 4216, 4215, 4219, 4221, 4224, 4225, 4227, 4228, 4231, + 6084, 4232, 4235, 4238, 4241, 4242, 4246, 4247, 4245, 6084, - 5988, 4253, 4256, 4258, 4257, 5988, 4263, 4262, 4261, 4268, - 4271, 4274, 5988, 4277, 4279, 4278, 4290, 4291, 4287, 4288, - 4292, 4289, 4294, 4295, 4296, 4304, 4299, 4300, 5988, 4303, - 4306, 4311, 4312, 4315, 4316, 4318, 4320, 4321, 5988, 4323, - 4325, 4326, 4327, 4329, 4330, 4332, 4344, 4342, 4331, 5988, - 4335, 4347, 4359, 4354, 4355, 5988, 5988, 4356, 4339, 4358, - 4343, 4363, 5988, 4367, 4366, 4365, 4373, 4374, 5988, 5988, - 4376, 5988, 4368, 5988, 4378, 4379, 5988, 5988, 4380, 4381, - 4382, 4384, 4391, 5988, 4394, 5988, 4402, 4397, 4388, 4399, - 4400, 5988, 4401, 4403, 4409, 5988, 4410, 4412, 4411, 4413, + 4248, 4254, 4257, 4262, 4258, 4269, 4260, 4268, 4261, 4264, + 4275, 4274, 4276, 4280, 4281, 4270, 4288, 4293, 4291, 6084, + 4292, 6084, 4294, 4296, 4304, 4299, 4301, 4302, 6084, 4305, + 4307, 4310, 4311, 4316, 6084, 4315, 4313, 4317, 4318, 6084, + 4328, 4314, 4320, 4333, 4335, 4336, 6084, 4339, 4341, 4342, + 4349, 4352, 4351, 4348, 4353, 4355, 4356, 4357, 4358, 4366, + 4361, 4363, 6084, 4365, 4371, 4373, 4377, 4378, 4364, 4379, + 4381, 4385, 6084, 4386, 4388, 4389, 4390, 4392, 4393, 4394, + 4401, 4397, 4400, 6084, 4402, 4405, 4406, 4416, 4407, 4417, + 6084, 6084, 4412, 4422, 4424, 4420, 4428, 6084, 4430, 4431, - 5988, 4417, 4422, 4414, 4418, 5988, 4423, 4427, 4430, 4431, - 4432, 4434, 4438, 4437, 4442, 4443, 4445, 4444, 4447, 4454, - 4458, 4460, 4462, 4463, 4448, 4465, 4467, 4471, 4469, 4473, - 4474, 4476, 4478, 4479, 4483, 4487, 4480, 4484, 4488, 4489, - 4490, 4497, 4493, 4499, 4504, 4500, 4505, 4506, 4507, 4508, - 4511, 4514, 4512, 4518, 4522, 5988, 4516, 4517, 4523, 4524, - 4528, 4530, 4536, 4544, 4548, 4549, 5988, 4551, 5988, 4553, - 4538, 4529, 4545, 5988, 4555, 4558, 4557, 4560, 4559, 4561, - 4563, 4562, 4566, 4567, 4569, 5988, 4572, 4573, 4574, 4578, - 5988, 4587, 4589, 4586, 4590, 4591, 4592, 4593, 4594, 4597, + 4432, 4436, 4433, 6084, 6084, 4438, 6084, 4439, 6084, 4440, + 4443, 6084, 6084, 4445, 4441, 4447, 4448, 4456, 6084, 4461, + 6084, 4464, 4462, 4449, 4451, 4466, 6084, 4468, 4469, 4475, + 6084, 4470, 4478, 4476, 4477, 6084, 4483, 4485, 4480, 4484, + 6084, 4489, 4496, 4486, 4493, 4497, 4498, 4505, 4500, 4501, + 4504, 4508, 4509, 4512, 4519, 4521, 4523, 4525, 4526, 4510, + 4527, 4530, 4533, 4535, 4536, 4537, 4539, 4541, 4542, 4544, + 4546, 4549, 4550, 4551, 4552, 4553, 4554, 4556, 4563, 4566, + 4568, 4567, 4569, 4571, 4570, 4572, 4575, 4578, 4581, 4580, + 4582, 6084, 4574, 4585, 4588, 4596, 4591, 4598, 4601, 4609, - 4599, 4601, 4603, 4615, 4605, 4606, 4610, 4614, 4616, 4617, - 4620, 4622, 4627, 4628, 4632, 5988, 4633, 5988, 4634, 4635, - 4638, 4639, 4640, 4641, 4644, 5988, 5988, 4642, 4646, 4648, - 4651, 4653, 4656, 4660, 5988, 4657, 4665, 4668, 4670, 5988, - 4658, 4674, 4675, 4677, 5988, 4678, 4679, 4680, 4682, 4685, - 4687, 4691, 4689, 4692, 4693, 4700, 5988, 5988, 5988, 5988, - 4701, 4697, 4707, 4703, 4709, 4711, 4712, 4714, 4710, 5988, - 4718, 5988, 5988, 4723, 4724, 4726, 4727, 4730, 4715, 4733, - 4731, 5988, 4735, 4736, 4743, 4737, 4745, 4747, 4749, 4753, - 4751, 4754, 4761, 4757, 4759, 4763, 4765, 4767, 4774, 5988, + 4613, 4614, 6084, 4616, 6084, 4618, 4602, 4610, 4604, 6084, + 4622, 4625, 4624, 4627, 4626, 4628, 4629, 4630, 4633, 4634, + 4636, 6084, 4639, 4632, 4640, 4645, 6084, 4653, 4656, 4641, + 4657, 4658, 4661, 4660, 4663, 4664, 4666, 4668, 4670, 4672, + 4679, 4674, 4682, 4677, 4683, 4684, 4686, 4689, 4691, 4699, + 4700, 4708, 6084, 4690, 6084, 4701, 4695, 4703, 4705, 4711, + 4712, 4717, 6084, 6084, 4713, 4718, 4720, 4722, 4723, 4727, + 4724, 6084, 4729, 4730, 4739, 4735, 6084, 4731, 4740, 4742, + 4750, 6084, 4743, 4745, 4747, 4753, 4756, 4758, 4759, 4761, + 4763, 4765, 4767, 6084, 6084, 6084, 6084, 4768, 4771, 4773, - 5988, 4764, 4776, 4768, 4785, 4781, 4782, 4789, 4788, 4790, - 4791, 4793, 4794, 4780, 4803, 4804, 4805, 4799, 5988, 4807, - 4806, 5988, 4813, 5988, 4814, 4815, 4816, 4817, 4818, 4822, - 4823, 4826, 5988, 5988, 4821, 4828, 4832, 4837, 4833, 4829, - 4839, 4842, 4843, 5988, 4844, 5988, 4845, 4846, 4856, 4847, - 4863, 4864, 4866, 4868, 4853, 4869, 5988, 4870, 4871, 5988, - 4873, 4875, 4876, 5988, 4880, 4878, 4883, 4886, 5988, 4888, - 4890, 4892, 5988, 4899, 5988, 4893, 4895, 4902, 4907, 5988, - 4903, 4904, 5988, 4909, 4911, 4912, 4916, 5988, 4917, 5988, - 4918, 4920, 4921, 4925, 4926, 4928, 4930, 4931, 4932, 4939, + 4774, 4776, 4781, 4782, 4784, 4780, 6084, 4786, 6084, 6084, + 4792, 4794, 4788, 4796, 4798, 4800, 4803, 4805, 6084, 4807, + 4804, 4810, 4808, 4817, 4821, 4825, 4811, 4826, 4814, 4827, + 4834, 4830, 4836, 4829, 4833, 4840, 4842, 6084, 6084, 4843, + 4847, 4848, 4855, 4852, 4853, 4865, 4860, 4861, 4862, 4863, + 4867, 4868, 4876, 4879, 4869, 4872, 6084, 4877, 4880, 6084, + 4881, 6084, 4885, 4886, 4887, 4888, 4894, 4895, 4896, 4898, + 6084, 6084, 6084, 4892, 4899, 4902, 4909, 4906, 4913, 4900, + 4917, 4910, 6084, 4912, 6084, 4914, 4920, 4931, 4918, 4932, + 4939, 4941, 4937, 4938, 4923, 6084, 4940, 4942, 6084, 4944, - 4937, 4940, 5988, 5988, 4948, 4934, 4945, 4950, 4952, 4959, - 4951, 4956, 4955, 5988, 5988, 4961, 5988, 4963, 4964, 5988, - 4962, 4969, 4968, 4973, 4974, 4975, 4977, 4980, 4982, 4990, - 4983, 4981, 4994, 5004, 4988, 5006, 5008, 5010, 5012, 5014, - 5016, 4984, 4999, 5017, 5018, 5020, 5021, 5988, 5023, 5025, - 5024, 5988, 5030, 5026, 5035, 5031, 5988, 5038, 5039, 5044, - 5045, 5988, 5046, 5050, 5047, 5052, 5055, 5063, 5056, 5058, - 5068, 5988, 5988, 5988, 5060, 5074, 5988, 5076, 5066, 5059, - 5071, 5988, 5077, 5078, 5988, 5988, 5079, 5082, 5081, 5093, - 5988, 5083, 5988, 5085, 5988, 5092, 5094, 5102, 5096, 5988, + 4945, 4947, 6084, 4950, 4952, 4954, 4957, 6084, 4961, 4963, + 4964, 6084, 4966, 6084, 4958, 4968, 4971, 4980, 6084, 4972, + 4975, 6084, 4982, 4985, 4986, 4977, 6084, 4987, 6084, 4988, + 4994, 4995, 4998, 4991, 5000, 5001, 5002, 5003, 5010, 5012, + 5009, 6084, 6084, 260, 5022, 5007, 5015, 5018, 5019, 5029, + 5024, 5027, 5033, 6084, 6084, 5034, 6084, 5028, 5037, 6084, + 5026, 5041, 5042, 5043, 5045, 5046, 5047, 5053, 5050, 5054, + 5055, 5056, 5062, 5073, 5058, 5079, 5080, 5082, 5084, 5086, + 5074, 5071, 5068, 5089, 5091, 5092, 5093, 6084, 5095, 5096, + 5098, 6084, 5102, 5097, 5106, 5103, 6084, 5110, 5111, 5114, - 5107, 5109, 5988, 5115, 5117, 5119, 5111, 5088, 5121, 5122, - 5988, 5129, 5125, 5126, 5133, 5124, 5128, 5134, 5135, 5143, - 5136, 5145, 5988, 5146, 5147, 5151, 5154, 5138, 5148, 5158, - 5988, 5160, 5988, 5162, 5164, 5165, 5167, 5166, 5168, 5171, - 5180, 5170, 5173, 5174, 5988, 5184, 5189, 5988, 5181, 5988, - 5191, 5988, 5192, 5194, 5195, 5198, 5988, 5200, 5186, 5197, - 5204, 5988, 5212, 5201, 5205, 5217, 5988, 5988, 5207, 5225, - 5209, 5218, 5222, 5229, 5226, 5231, 5232, 5233, 5234, 5241, - 5236, 5237, 5238, 5245, 5248, 5252, 5988, 5988, 5988, 5247, - 5256, 5263, 5261, 5262, 5270, 5266, 5988, 5267, 5268, 5269, + 5117, 6084, 5107, 5119, 5124, 5121, 5122, 5133, 5129, 5131, + 5134, 6084, 6084, 6084, 5136, 5144, 6084, 5146, 5135, 5139, + 5147, 6084, 5148, 5150, 6084, 6084, 5151, 5152, 5153, 5160, + 6084, 5155, 6084, 5156, 6084, 5158, 5166, 5168, 5170, 6084, + 5175, 5181, 6084, 5184, 5187, 5189, 5190, 5172, 5159, 5191, + 6084, 5200, 5193, 5197, 5204, 5195, 5201, 5205, 5206, 5214, + 5207, 5212, 6084, 5215, 5216, 5218, 5225, 5209, 5220, 5217, + 6084, 5230, 6084, 5227, 5231, 5234, 5233, 5236, 5239, 5241, + 5243, 5245, 5247, 5250, 6084, 5254, 5256, 6084, 5251, 6084, + 5260, 6084, 5257, 5261, 5262, 5263, 6084, 5265, 5266, 5267, - 5277, 5274, 5279, 5988, 5275, 5280, 5281, 5282, 5286, 5283, - 5290, 5988, 5294, 5297, 5300, 5289, 5304, 5308, 5311, 5313, - 5314, 5988, 5316, 5988, 5988, 5301, 5988, 5317, 5318, 5321, - 5322, 5988, 5325, 5327, 5326, 5328, 5330, 5332, 5988, 5342, - 5333, 5335, 5344, 5988, 5988, 5348, 5988, 5351, 5352, 5345, - 5361, 5356, 5358, 5363, 5360, 5988, 5364, 5367, 5369, 5370, - 5371, 5988, 5372, 5373, 5375, 5376, 5379, 5378, 5381, 5383, - 5385, 5988, 5386, 5388, 5406, 5402, 5988, 5389, 5401, 5988, - 5988, 5411, 5413, 5334, 5988, 5988, 5988, 5416, 5988, 5418, - 5422, 5426, 5430, 5421, 5988, 5432, 5429, 5434, 5988, 5988, + 5270, 6084, 5274, 5279, 5276, 5281, 6084, 6084, 5282, 5291, + 5283, 5284, 5297, 5299, 5287, 5301, 5292, 5304, 5294, 5311, + 5308, 5309, 5310, 5316, 5319, 5317, 6084, 6084, 6084, 5312, + 5323, 5331, 5329, 5332, 5339, 5326, 6084, 5336, 5337, 5334, + 5346, 5338, 5348, 6084, 5345, 5349, 5350, 5351, 5359, 5352, + 5354, 6084, 5361, 5366, 5368, 5362, 5369, 5378, 5380, 5382, + 5383, 6084, 5385, 6084, 6084, 5370, 6084, 5372, 5386, 5387, + 5390, 6084, 5393, 5396, 5395, 5397, 5399, 5401, 6084, 5411, + 5402, 5404, 5407, 6084, 6084, 5414, 6084, 5417, 5419, 5418, + 5426, 5421, 5427, 5429, 5425, 6084, 5431, 5434, 5436, 5437, - 5433, 5435, 5436, 5438, 5988, 5988, 5439, 5442, 5440, 5443, - 5445, 5988, 5450, 5454, 5456, 5459, 5462, 5451, 5465, 5467, - 5475, 5477, 5472, 5473, 5478, 5480, 5481, 5482, 5484, 5493, - 5489, 5491, 5503, 5500, 5988, 5988, 5507, 5988, 5988, 5509, - 5511, 5513, 5515, 5517, 5519, 5521, 5988, 5522, 5524, 5525, - 5393, 5526, 5988, 5528, 5530, 5527, 5532, 5492, 5535, 5533, - 5538, 5988, 5988, 5539, 5540, 5541, 5549, 5544, 5988, 5551, - 5558, 5555, 5556, 5553, 5559, 5560, 5988, 5564, 5565, 5988, - 5988, 5563, 5988, 5988, 5988, 5988, 5988, 5988, 5988, 5988, - 5568, 5988, 5566, 5581, 5583, 5585, 5988, 5573, 5586, 5494, + 5438, 6084, 5439, 5440, 5442, 5443, 5446, 5445, 5448, 5450, + 5452, 6084, 5453, 5455, 5473, 5469, 6084, 5456, 5468, 6084, + 6084, 5478, 5480, 5482, 6084, 6084, 6084, 5484, 6084, 5488, + 5492, 5496, 5500, 5491, 6084, 5502, 5485, 5499, 6084, 6084, + 5504, 5505, 5506, 5508, 6084, 6084, 5509, 5510, 5512, 5514, + 5515, 6084, 5518, 5519, 5520, 5527, 5532, 5522, 5533, 5535, + 5546, 5548, 5529, 5541, 5539, 5550, 5552, 5543, 5559, 5567, + 5563, 5565, 5571, 5568, 6084, 6084, 5575, 6084, 6084, 5577, + 5579, 5581, 5583, 5585, 5587, 5589, 6084, 5590, 5592, 5593, + 5460, 5594, 6084, 5553, 5596, 5551, 5597, 5600, 5603, 5598, - 5587, 5575, 5988, 5588, 5590, 5592, 5098, 5591, 5593, 5599, - 5598, 5600, 5603, 5602, 5605, 5604, 5609, 5608, 5610, 5623, - 5988, 5988, 5988, 5622, 5614, 5616, 5624, 5626, 5631, 5638, - 5640, 5635, 5641, 5642, 5643, 5644, 5646, 5647, 5656, 5651, - 5652, 5653, 5655, 5660, 5657, 5663, 5667, 5988, 5668, 5988, - 5669, 5988, 5988, 5674, 5676, 5670, 5679, 5686, 5690, 5681, - 5688, 5685, 5689, 5692, 5697, 5988, 5693, 5699, 5988, 5702, - 5703, 5988, 5700, 5705, 5706, 5708, 5709, 5711, 5712, 5713, - 5724, 5988, 5988, 5715, 5726, 5727, 5729, 5731, 5738, 5733, - 5737, 5740, 5743, 5739, 5747, 5988, 5750, 5751, 5753, 5988, + 5606, 6084, 6084, 5601, 5608, 5607, 5615, 5609, 6084, 5617, + 5624, 5621, 5623, 5622, 5625, 5626, 6084, 5630, 5629, 6084, + 6084, 5631, 6084, 6084, 6084, 6084, 6084, 6084, 6084, 6084, + 5634, 6084, 5632, 5640, 5648, 5650, 6084, 5644, 5651, 5652, + 5653, 5654, 6084, 5655, 5658, 5657, 5659, 5664, 5665, 5663, + 5670, 5672, 5671, 5674, 5677, 5675, 5681, 5680, 5682, 5683, + 6084, 6084, 6084, 5686, 5685, 5695, 5697, 5704, 5707, 5710, + 5712, 5696, 5698, 5713, 5714, 5717, 5720, 5721, 5729, 5724, + 5725, 5726, 5727, 5733, 5728, 5730, 5735, 6084, 5739, 6084, + 5740, 6084, 6084, 5742, 5750, 5744, 5746, 5759, 5761, 5748, - 5755, 5754, 5757, 5760, 5761, 5768, 5763, 5765, 5988, 5766, - 5988, 5770, 5772, 5771, 5774, 5775, 5777, 5785, 5783, 5787, - 5988, 5789, 5791, 5795, 5796, 5798, 5801, 5802, 5803, 5805, - 5807, 5808, 5817, 5811, 5813, 5819, 5821, 5823, 5988, 5825, - 5827, 5988, 5828, 5829, 5830, 5831, 5835, 5988, 5840, 5832, - 5837, 5843, 5848, 5845, 5988, 5854, 5858, 5855, 5988, 5859, - 5988, 5988, 5860, 5861, 5863, 5867, 5869, 5988, 5988, 5988, - 5896, 5903, 5910, 5917, 5924, 88, 5931, 5938, 5945, 5952, - 5959, 5966, 5973, 5980 + 5756, 5757, 5763, 5767, 5771, 6084, 5760, 5764, 6084, 5772, + 5773, 6084, 5774, 5775, 5778, 5779, 5782, 5783, 5785, 5788, + 5799, 6084, 6084, 5787, 5791, 5789, 5801, 5805, 5812, 5803, + 5811, 5813, 5814, 5796, 5823, 6084, 5821, 5822, 5825, 6084, + 5826, 5828, 5829, 5831, 5832, 5839, 5834, 5835, 6084, 5837, + 6084, 5841, 5843, 5844, 5842, 5845, 5846, 5856, 5858, 5854, + 6084, 5860, 5865, 5862, 5868, 5870, 5872, 5873, 5874, 5876, + 5878, 5882, 5888, 5885, 5889, 5879, 5890, 5891, 6084, 5900, + 5894, 6084, 5897, 5901, 5903, 5904, 5907, 6084, 5912, 5905, + 5909, 5914, 5917, 5918, 6084, 5920, 5927, 5929, 6084, 5930, + + 6084, 6084, 5932, 5921, 5931, 5934, 5939, 6084, 6084, 6084, + 5964, 5971, 5978, 5985, 5992, 5999, 6006, 88, 6013, 6020, + 6027, 6034, 6041, 6048, 6055, 6062, 6069, 6076 } ; -static const flex_int16_t yy_def[3085] = +static const flex_int16_t yy_def[3129] = { 0, - 3070, 1, 3071, 3071, 3072, 3072, 3073, 3073, 3074, 3074, - 3075, 3075, 3070, 3076, 3070, 3070, 3070, 3070, 3077, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3078, 3070, 3070, 3070, 3078, 3079, 3070, 3070, - 3070, 3079, 3080, 3070, 3070, 3070, 3070, 3080, 3081, 3070, - 3070, 3070, 3081, 3082, 3070, 3083, 3070, 3082, 3082, 3076, - 3076, 3070, 3084, 3077, 3084, 3077, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3110, 1, 3111, 3111, 3112, 3112, 3113, 3113, 3114, 3114, + 3115, 3115, 3116, 3116, 3117, 3117, 3110, 3118, 3110, 3110, + 3110, 3110, 3119, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3120, 3110, 3110, 3110, + 3120, 3121, 3110, 3110, 3110, 3121, 3122, 3110, 3110, 3110, + 3110, 3122, 3123, 3110, 3110, 3110, 3123, 3124, 3110, 3125, + 3110, 3124, 3124, 3126, 3110, 3110, 3110, 3110, 3126, 3127, + 3110, 3110, 3110, 3127, 3118, 3118, 3110, 3128, 3119, 3128, + 3119, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3078, 3078, 3079, 3079, 3080, 3080, 3070, 3081, 3081, 3082, - 3082, 3083, 3083, 3082, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3120, 3120, 3121, 3121, 3122, + 3122, 3110, 3123, 3123, 3124, 3124, 3125, 3125, 3124, 3126, + 3126, 3110, 3127, 3127, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3082, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3124, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3082, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3124, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3082, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3124, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3082, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3070, 3076, - 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3124, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3110, 3110, 3118, + 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3082, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3124, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3110, 3110, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3082, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3124, 3124, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3124, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3110, 3118, + 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, + 3118, 3118, 3110, 3118, 3124, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3124, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3110, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, + 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3124, 3118, 3110, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3110, - 3070, 3076, 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, + 3110, 3118, 3110, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3110, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3124, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, - 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3070, - 3076, 3070, 3076, 3070, 3076, 3076, 3070, 3070, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, + 3118, 3110, 3118, 3118, 3118, 3118, 3124, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, - 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3076, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3110, 3110, 3118, 3110, 3118, 3110, 3118, + 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3124, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3070, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, + 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3110, 3110, 3110, 3118, 3118, 3118, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3070, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3110, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3124, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, 3118, - 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3070, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3070, 3070, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, - 3070, 3076, 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3070, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3110, 3124, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3110, 3118, 3110, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, 3076, 3070, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3110, 3110, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3110, 3110, 3118, 3118, 3118, 3118, + 3110, 3118, 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3110, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, 3118, 3110, + 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, - 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3070, 3070, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, - 3070, 3076, 3076, 3076, 3070, 3070, 3070, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3070, 3070, + 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3110, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3110, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3110, 3110, 3118, 3110, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3110, 3110, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3076, 3076, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3070, 3076, 3070, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, - 3070, 3076, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3076, 3070, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, + 3110, 3118, 3118, 3118, 3110, 3110, 3110, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3110, 3110, + 3118, 3118, 3118, 3118, 3110, 3110, 3118, 3118, 3118, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3110, 3110, 3118, 3110, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3070, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3070, + 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, + 3110, 3118, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + 3118, 3110, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, + 3118, 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3110, + 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3070, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, - 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3076, 3070, 3076, - 3076, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3076, 3076, - 3076, 3076, 3076, 3076, 3070, 3076, 3076, 3076, 3070, 3076, - 3070, 3070, 3076, 3076, 3076, 3076, 3076, 3070, 3070, 0, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070 + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3110, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3110, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3110, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, + 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3118, 3110, 3118, + 3118, 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3118, 3118, + 3118, 3118, 3118, 3118, 3110, 3118, 3118, 3118, 3110, 3118, + + 3110, 3110, 3118, 3118, 3118, 3118, 3118, 3110, 3110, 0, + 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110 } ; -static const flex_int16_t yy_nxt[6029] = +static const flex_int16_t yy_nxt[6125] = { 0, - 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, - 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, - 14, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 14, 14, 14, 42, - 44, 45, 46, 44, 45, 46, 49, 50, 49, 50, - 51, 47, 51, 70, 47, 70, 70, 52, 70, 52, - 54, 55, 56, 57, 70, 18, 54, 55, 56, 57, - 71, 18, 58, 60, 61, 62, 71, 82, 58, 60, - 61, 62, 72, 71, 63, 102, 73, 92, 70, 71, - 63, 15, 16, 17, 65, 66, 67, 75, 71, 75, + 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, + 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, + 18, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 18, 18, 18, 46, + 48, 49, 50, 48, 49, 50, 53, 54, 53, 54, + 55, 51, 55, 85, 51, 85, 85, 56, 85, 56, + 58, 59, 60, 61, 85, 22, 58, 59, 60, 61, + 86, 22, 62, 64, 65, 66, 86, 97, 62, 64, + 65, 66, 87, 86, 67, 117, 88, 107, 85, 86, + 67, 19, 20, 21, 69, 70, 71, 75, 76, 77, - 75, 71, 75, 68, 104, 157, 103, 93, 75, 76, - 141, 141, 69, 15, 16, 17, 65, 66, 67, 71, - 71, 83, 77, 78, 71, 68, 79, 71, 84, 87, - 71, 80, 85, 88, 69, 86, 89, 151, 90, 91, - 81, 71, 94, 71, 96, 71, 71, 159, 71, 105, - 98, 112, 97, 99, 71, 109, 95, 106, 71, 110, - 100, 71, 101, 107, 172, 71, 113, 108, 143, 71, - 114, 143, 118, 71, 119, 111, 115, 71, 120, 116, - 140, 151, 124, 148, 148, 125, 117, 163, 121, 122, - 71, 123, 126, 71, 133, 154, 127, 128, 71, 129, + 78, 86, 22, 72, 119, 86, 118, 108, 86, 79, + 156, 156, 73, 19, 20, 21, 69, 70, 71, 75, + 76, 77, 78, 183, 22, 72, 81, 82, 83, 127, + 90, 79, 90, 90, 73, 90, 86, 84, 81, 82, + 83, 90, 91, 86, 86, 98, 92, 93, 86, 84, + 94, 155, 99, 102, 87, 95, 100, 103, 88, 101, + 104, 86, 105, 106, 96, 86, 109, 86, 111, 86, + 86, 86, 86, 120, 113, 133, 112, 114, 86, 124, + 110, 121, 222, 125, 115, 86, 116, 122, 166, 158, + 128, 123, 158, 191, 129, 86, 86, 134, 175, 126, - 224, 130, 71, 137, 134, 158, 71, 138, 135, 136, - 131, 139, 145, 71, 145, 145, 132, 145, 75, 71, - 75, 75, 150, 75, 150, 150, 70, 150, 70, 70, - 153, 70, 72, 165, 71, 171, 73, 70, 75, 71, - 75, 75, 155, 75, 71, 71, 225, 71, 156, 75, - 76, 71, 71, 71, 160, 161, 164, 71, 71, 166, - 173, 71, 71, 169, 170, 167, 71, 168, 162, 71, - 71, 175, 177, 178, 71, 71, 184, 71, 176, 174, - 179, 182, 253, 71, 71, 71, 189, 180, 181, 183, - 71, 151, 71, 185, 191, 71, 186, 71, 71, 199, + 130, 135, 169, 131, 163, 163, 86, 144, 86, 145, + 132, 136, 137, 139, 138, 86, 140, 86, 146, 148, + 180, 86, 152, 141, 147, 86, 153, 142, 143, 149, + 154, 173, 173, 150, 151, 160, 272, 160, 160, 90, + 160, 90, 90, 165, 90, 165, 165, 170, 165, 170, + 170, 168, 170, 85, 86, 85, 85, 90, 85, 90, + 90, 86, 90, 86, 85, 176, 178, 86, 90, 91, + 177, 86, 86, 166, 86, 181, 86, 86, 86, 193, + 184, 86, 86, 186, 86, 86, 86, 179, 182, 187, + 185, 188, 189, 190, 86, 195, 86, 192, 194, 86, - 192, 194, 197, 71, 71, 195, 71, 198, 200, 187, - 188, 190, 71, 201, 71, 71, 202, 205, 71, 203, - 193, 196, 207, 71, 71, 71, 71, 204, 71, 212, - 209, 71, 71, 206, 210, 71, 214, 71, 71, 71, - 71, 208, 71, 220, 211, 215, 213, 71, 226, 229, - 217, 216, 223, 71, 221, 71, 219, 218, 222, 233, - 230, 71, 71, 71, 235, 227, 71, 71, 228, 231, - 71, 239, 71, 236, 232, 238, 71, 234, 149, 240, - 71, 242, 141, 141, 143, 237, 243, 143, 241, 145, - 151, 145, 145, 244, 145, 148, 148, 150, 248, 150, + 251, 86, 196, 202, 200, 197, 198, 86, 86, 86, + 86, 357, 203, 199, 201, 204, 86, 209, 86, 205, + 86, 86, 206, 86, 214, 212, 86, 211, 215, 217, + 220, 86, 219, 86, 218, 207, 208, 86, 221, 86, + 223, 86, 210, 86, 216, 213, 86, 86, 86, 86, + 224, 227, 86, 229, 86, 232, 237, 230, 86, 225, + 86, 226, 234, 86, 228, 86, 86, 86, 240, 231, + 244, 235, 233, 86, 246, 86, 86, 236, 245, 241, + 243, 86, 239, 242, 86, 86, 238, 86, 249, 255, + 86, 247, 86, 86, 248, 86, 253, 259, 256, 250, - 150, 75, 150, 75, 75, 71, 75, 71, 246, 71, - 245, 71, 71, 153, 71, 71, 71, 250, 71, 71, - 71, 256, 249, 247, 251, 259, 252, 255, 258, 71, - 254, 71, 260, 264, 262, 71, 263, 71, 257, 71, - 71, 265, 71, 71, 268, 261, 266, 71, 273, 269, - 71, 147, 71, 71, 270, 275, 274, 276, 279, 71, - 271, 272, 278, 267, 71, 277, 71, 71, 71, 71, - 281, 71, 282, 283, 71, 71, 71, 71, 71, 288, - 289, 285, 295, 284, 286, 71, 299, 280, 71, 287, - 71, 290, 297, 298, 291, 300, 292, 302, 296, 71, + 86, 254, 258, 252, 86, 260, 156, 156, 158, 262, + 257, 158, 166, 261, 263, 160, 166, 160, 160, 264, + 160, 163, 163, 165, 86, 165, 165, 90, 165, 90, + 90, 170, 90, 170, 170, 86, 170, 173, 173, 168, + 265, 266, 268, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 270, 273, 276, 279, 267, 86, 269, 271, + 278, 86, 280, 275, 86, 274, 86, 283, 284, 282, + 277, 285, 86, 86, 86, 86, 286, 86, 293, 288, + 86, 86, 281, 86, 289, 295, 296, 86, 299, 290, + 86, 294, 86, 287, 86, 291, 292, 86, 86, 297, - 71, 71, 71, 71, 71, 304, 305, 301, 293, 307, - 294, 71, 71, 308, 71, 313, 146, 71, 310, 71, - 303, 306, 309, 311, 71, 71, 317, 71, 71, 71, - 71, 71, 312, 314, 315, 71, 316, 71, 71, 318, - 320, 319, 71, 71, 325, 71, 321, 71, 71, 326, - 71, 71, 327, 322, 331, 329, 71, 71, 323, 334, - 71, 71, 71, 324, 71, 71, 328, 330, 71, 336, - 337, 71, 71, 340, 332, 333, 341, 335, 339, 71, - 338, 342, 71, 343, 344, 71, 71, 346, 348, 71, - 347, 71, 350, 71, 71, 71, 71, 351, 71, 345, + 86, 301, 86, 298, 303, 302, 86, 304, 86, 86, + 305, 308, 86, 306, 309, 86, 310, 300, 86, 311, + 307, 312, 86, 315, 318, 86, 319, 86, 316, 174, + 86, 320, 323, 313, 322, 314, 324, 86, 317, 325, + 86, 328, 86, 321, 86, 86, 330, 86, 327, 329, + 331, 86, 86, 86, 326, 86, 86, 86, 332, 86, + 86, 334, 86, 86, 86, 336, 333, 86, 86, 340, + 338, 86, 86, 345, 86, 86, 339, 335, 346, 86, + 341, 86, 337, 342, 351, 86, 347, 344, 343, 349, + 86, 86, 348, 354, 86, 86, 86, 350, 86, 86, - 71, 354, 71, 151, 71, 71, 71, 361, 144, 71, - 357, 359, 349, 71, 352, 355, 353, 362, 71, 356, - 71, 71, 71, 71, 358, 363, 364, 365, 360, 71, - 71, 71, 367, 71, 371, 372, 71, 366, 374, 370, - 71, 71, 71, 373, 369, 71, 375, 368, 376, 71, - 378, 71, 71, 379, 71, 71, 71, 71, 382, 71, - 377, 383, 71, 385, 71, 71, 387, 388, 384, 71, - 380, 381, 71, 389, 71, 71, 386, 71, 390, 71, - 71, 392, 393, 394, 395, 71, 71, 71, 399, 71, - 71, 71, 71, 396, 400, 391, 402, 71, 71, 398, + 356, 360, 361, 86, 86, 359, 363, 86, 86, 352, + 353, 86, 86, 86, 355, 358, 364, 86, 366, 367, + 86, 368, 362, 370, 86, 365, 371, 86, 86, 86, + 166, 86, 86, 374, 86, 86, 373, 172, 86, 86, + 377, 381, 375, 372, 379, 369, 382, 86, 86, 385, + 376, 86, 86, 383, 378, 86, 384, 86, 380, 86, + 86, 86, 86, 391, 86, 392, 86, 393, 394, 86, + 390, 86, 386, 387, 86, 389, 86, 395, 388, 396, + 86, 398, 86, 86, 399, 86, 86, 397, 86, 402, + 400, 405, 403, 86, 86, 407, 86, 86, 408, 409, - 71, 71, 405, 71, 71, 410, 397, 407, 401, 71, - 409, 71, 411, 71, 71, 71, 403, 71, 404, 438, - 71, 406, 421, 419, 408, 412, 71, 71, 71, 71, - 422, 425, 423, 420, 430, 413, 142, 71, 414, 431, - 71, 71, 426, 415, 416, 417, 418, 71, 424, 427, - 71, 71, 428, 429, 432, 71, 71, 71, 433, 71, - 440, 434, 435, 71, 436, 437, 71, 71, 439, 71, - 71, 442, 441, 71, 71, 447, 71, 465, 453, 443, - 71, 71, 71, 448, 71, 449, 71, 71, 444, 446, - 445, 452, 454, 451, 450, 71, 71, 71, 71, 457, + 401, 86, 404, 86, 86, 86, 86, 410, 406, 86, + 412, 413, 414, 86, 86, 86, 86, 419, 86, 86, + 86, 86, 416, 420, 411, 422, 86, 86, 418, 86, + 86, 425, 86, 415, 86, 417, 86, 421, 430, 427, + 86, 86, 86, 431, 86, 423, 429, 424, 500, 86, + 426, 439, 86, 432, 86, 445, 428, 86, 86, 441, + 86, 442, 86, 443, 448, 449, 433, 440, 86, 434, + 86, 86, 86, 446, 435, 436, 437, 438, 450, 444, + 447, 456, 86, 451, 86, 452, 455, 453, 86, 86, + 454, 458, 86, 86, 459, 86, 460, 457, 86, 86, - 455, 458, 71, 466, 71, 460, 456, 464, 71, 71, - 71, 459, 467, 71, 71, 468, 71, 71, 461, 469, - 71, 462, 483, 463, 479, 470, 71, 71, 71, 471, - 71, 484, 481, 733, 486, 480, 71, 472, 71, 473, - 71, 474, 482, 71, 71, 494, 496, 485, 151, 495, - 498, 497, 71, 71, 475, 500, 71, 476, 501, 477, - 504, 478, 71, 71, 487, 488, 71, 71, 71, 499, - 71, 71, 502, 71, 489, 503, 490, 491, 492, 505, - 508, 493, 507, 71, 71, 71, 71, 506, 513, 514, - 509, 511, 516, 510, 71, 517, 71, 71, 71, 71, + 86, 86, 86, 462, 467, 86, 86, 468, 461, 469, + 86, 463, 86, 86, 485, 86, 473, 466, 470, 464, + 472, 465, 86, 86, 86, 471, 479, 86, 474, 475, + 477, 86, 478, 86, 480, 476, 86, 486, 487, 86, + 86, 488, 484, 86, 86, 86, 86, 481, 489, 86, + 482, 86, 483, 86, 490, 86, 504, 166, 491, 501, + 499, 502, 86, 503, 515, 506, 492, 86, 493, 516, + 494, 86, 505, 86, 517, 86, 86, 514, 519, 518, + 522, 86, 86, 495, 86, 86, 496, 171, 497, 86, + 498, 86, 524, 507, 508, 520, 521, 86, 86, 86, - 515, 521, 71, 512, 71, 71, 71, 71, 71, 519, - 524, 525, 526, 520, 71, 71, 518, 71, 71, 531, - 523, 71, 71, 536, 528, 533, 527, 522, 71, 71, - 71, 529, 530, 534, 71, 71, 71, 532, 71, 71, - 71, 546, 71, 547, 71, 538, 71, 537, 535, 542, - 539, 545, 541, 540, 71, 548, 71, 549, 71, 553, - 543, 151, 544, 71, 551, 550, 71, 71, 71, 556, - 552, 71, 554, 71, 555, 558, 71, 71, 559, 71, - 561, 562, 71, 71, 557, 71, 563, 71, 71, 71, - 560, 71, 568, 566, 567, 71, 71, 71, 564, 71, + 86, 523, 528, 509, 526, 510, 511, 512, 86, 531, + 513, 525, 529, 527, 86, 533, 86, 86, 536, 86, + 530, 534, 86, 537, 86, 86, 86, 541, 86, 86, + 86, 86, 535, 86, 532, 544, 86, 539, 86, 538, + 540, 545, 546, 86, 86, 543, 86, 86, 551, 86, + 556, 547, 548, 542, 549, 86, 86, 550, 86, 553, + 554, 86, 558, 86, 86, 86, 552, 86, 86, 86, + 565, 86, 86, 566, 562, 555, 567, 557, 568, 559, + 569, 561, 560, 86, 86, 563, 86, 564, 572, 571, + 86, 86, 570, 573, 86, 86, 574, 86, 576, 578, - 569, 71, 71, 71, 574, 71, 565, 570, 578, 575, - 71, 573, 71, 577, 576, 572, 571, 71, 580, 71, - 71, 582, 71, 71, 71, 71, 71, 71, 71, 71, - 71, 579, 584, 592, 585, 587, 594, 71, 593, 71, - 71, 581, 71, 583, 591, 588, 586, 589, 590, 71, - 71, 596, 71, 71, 595, 599, 71, 602, 597, 71, - 603, 598, 604, 71, 605, 71, 71, 600, 71, 71, - 71, 601, 71, 608, 71, 71, 611, 71, 71, 607, - 612, 71, 614, 71, 71, 71, 645, 610, 606, 613, - 71, 609, 71, 71, 615, 71, 617, 628, 71, 631, + 86, 86, 86, 86, 581, 582, 579, 86, 577, 86, + 86, 86, 86, 583, 575, 580, 86, 586, 86, 588, + 86, 587, 584, 86, 86, 86, 86, 589, 86, 594, + 86, 585, 590, 86, 595, 86, 597, 593, 598, 86, + 596, 86, 592, 591, 86, 600, 86, 602, 86, 86, + 86, 86, 86, 86, 86, 612, 86, 604, 86, 605, + 599, 86, 614, 601, 607, 86, 86, 613, 86, 603, + 611, 606, 608, 610, 609, 86, 86, 86, 86, 616, + 615, 619, 86, 622, 617, 86, 623, 618, 624, 86, + 625, 620, 86, 86, 86, 86, 86, 621, 628, 86, - 616, 71, 618, 71, 626, 627, 71, 619, 632, 620, - 71, 629, 633, 71, 630, 621, 71, 622, 635, 71, - 623, 624, 641, 639, 71, 634, 71, 625, 638, 71, - 71, 71, 636, 642, 640, 637, 71, 647, 71, 71, - 71, 71, 71, 71, 71, 71, 644, 643, 653, 71, - 71, 649, 71, 648, 654, 650, 646, 71, 657, 71, - 651, 661, 660, 655, 652, 656, 658, 151, 71, 71, - 71, 659, 71, 71, 662, 71, 71, 71, 71, 667, - 669, 671, 71, 71, 664, 670, 672, 665, 663, 668, - 674, 666, 71, 71, 71, 673, 71, 676, 71, 71, + 86, 86, 86, 86, 631, 86, 627, 632, 634, 86, + 633, 86, 86, 86, 626, 648, 629, 635, 86, 86, + 630, 86, 637, 86, 636, 86, 638, 651, 647, 86, + 86, 639, 646, 640, 652, 650, 654, 649, 653, 641, + 86, 642, 86, 86, 643, 644, 656, 655, 659, 657, + 86, 645, 658, 662, 86, 86, 661, 86, 86, 660, + 86, 665, 86, 667, 86, 86, 86, 86, 86, 86, + 86, 86, 166, 86, 673, 166, 679, 664, 663, 668, + 669, 670, 674, 666, 671, 676, 86, 86, 680, 672, + 675, 86, 677, 86, 86, 86, 678, 86, 86, 86, - 71, 71, 71, 680, 71, 675, 679, 688, 71, 71, - 685, 681, 677, 690, 678, 686, 71, 71, 682, 71, - 684, 683, 687, 689, 71, 691, 71, 692, 71, 693, - 71, 71, 71, 695, 71, 71, 696, 71, 694, 71, - 699, 71, 698, 71, 700, 71, 704, 71, 71, 703, - 71, 697, 71, 707, 705, 71, 71, 709, 71, 71, - 71, 710, 702, 71, 701, 706, 71, 71, 716, 712, - 71, 71, 711, 71, 713, 708, 718, 715, 714, 71, - 71, 71, 149, 723, 719, 720, 722, 721, 717, 71, - 724, 71, 71, 71, 725, 71, 726, 71, 728, 71, + 86, 86, 86, 681, 687, 86, 692, 689, 682, 690, + 86, 684, 86, 685, 683, 688, 86, 686, 691, 86, + 694, 86, 693, 86, 696, 86, 86, 86, 695, 86, + 86, 86, 699, 700, 708, 86, 705, 697, 701, 86, + 698, 706, 86, 709, 86, 702, 86, 704, 703, 710, + 711, 86, 707, 712, 86, 86, 713, 86, 86, 86, + 715, 86, 86, 716, 86, 86, 86, 714, 719, 718, + 86, 720, 86, 724, 86, 86, 723, 86, 717, 86, + 727, 725, 86, 86, 729, 86, 86, 721, 730, 722, + 86, 86, 726, 86, 86, 736, 732, 86, 86, 731, - 729, 71, 71, 71, 730, 71, 737, 71, 735, 71, - 71, 731, 71, 71, 743, 734, 147, 71, 727, 732, - 71, 738, 741, 71, 71, 736, 740, 71, 739, 742, - 744, 71, 746, 747, 745, 71, 71, 71, 71, 748, - 752, 750, 749, 71, 754, 783, 71, 71, 753, 71, - 71, 71, 751, 71, 755, 757, 71, 764, 756, 71, - 758, 71, 759, 71, 761, 71, 765, 71, 71, 760, - 71, 769, 767, 71, 766, 71, 773, 71, 762, 763, - 770, 71, 71, 71, 771, 71, 776, 774, 768, 71, - 775, 777, 71, 71, 778, 71, 71, 780, 782, 772, + 86, 733, 728, 739, 735, 734, 86, 86, 86, 737, + 743, 740, 86, 738, 741, 745, 86, 744, 86, 86, + 86, 749, 742, 746, 86, 748, 86, 86, 86, 750, + 86, 86, 86, 86, 753, 86, 755, 757, 86, 86, + 164, 86, 751, 754, 758, 747, 752, 86, 763, 760, + 761, 86, 756, 86, 86, 86, 765, 764, 759, 762, + 766, 767, 86, 86, 86, 768, 86, 86, 772, 769, + 774, 86, 773, 770, 86, 86, 86, 86, 775, 777, + 771, 86, 776, 86, 778, 86, 86, 784, 86, 86, + 785, 781, 86, 86, 779, 86, 780, 786, 86, 789, - 71, 784, 779, 71, 71, 788, 71, 71, 781, 71, - 789, 71, 71, 71, 71, 71, 790, 797, 785, 71, - 71, 795, 786, 71, 787, 71, 71, 791, 792, 71, - 71, 71, 793, 798, 794, 796, 71, 799, 71, 71, - 802, 71, 71, 71, 811, 800, 804, 809, 801, 803, - 71, 71, 71, 71, 71, 812, 805, 806, 807, 71, - 808, 71, 71, 71, 810, 814, 816, 815, 71, 71, - 71, 813, 71, 821, 823, 817, 819, 820, 71, 822, - 71, 818, 71, 824, 71, 71, 71, 151, 71, 826, - 71, 71, 831, 827, 832, 829, 71, 71, 825, 828, + 787, 86, 86, 86, 86, 782, 783, 791, 790, 788, + 793, 801, 86, 796, 794, 86, 86, 795, 797, 86, + 86, 798, 792, 86, 86, 800, 802, 86, 799, 86, + 86, 86, 808, 803, 86, 86, 86, 86, 86, 809, + 86, 86, 86, 810, 86, 804, 86, 805, 86, 806, + 86, 807, 811, 817, 813, 812, 815, 816, 819, 86, + 814, 86, 818, 86, 86, 86, 86, 822, 86, 820, + 86, 86, 86, 831, 86, 86, 829, 86, 86, 832, + 821, 824, 823, 86, 825, 86, 826, 827, 830, 828, + 836, 86, 835, 86, 834, 86, 833, 86, 86, 86, - 830, 833, 71, 71, 834, 835, 71, 839, 71, 71, - 840, 842, 71, 71, 71, 845, 71, 836, 841, 71, - 837, 71, 843, 847, 838, 71, 71, 71, 851, 71, - 71, 71, 71, 844, 71, 71, 846, 848, 852, 853, - 71, 71, 71, 71, 71, 850, 883, 854, 71, 865, - 866, 849, 71, 869, 71, 856, 855, 71, 863, 864, - 71, 71, 857, 71, 867, 868, 858, 71, 870, 859, - 71, 871, 872, 71, 875, 71, 860, 861, 71, 862, - 71, 71, 146, 874, 873, 71, 876, 877, 71, 878, - 898, 887, 879, 885, 884, 888, 71, 880, 71, 71, + 86, 86, 86, 841, 840, 843, 842, 837, 839, 86, + 86, 847, 838, 86, 844, 86, 86, 846, 166, 845, + 86, 86, 86, 851, 849, 852, 86, 848, 850, 86, + 853, 86, 86, 86, 854, 86, 856, 86, 855, 859, + 86, 86, 860, 862, 86, 857, 863, 86, 865, 86, + 861, 867, 864, 858, 86, 866, 86, 86, 871, 86, + 86, 868, 86, 86, 86, 86, 86, 872, 86, 873, + 86, 86, 886, 86, 86, 870, 162, 888, 874, 86, + 885, 869, 86, 883, 86, 876, 86, 884, 875, 86, + 887, 86, 889, 891, 877, 86, 890, 892, 878, 895, - 890, 71, 71, 881, 882, 889, 886, 71, 892, 71, - 71, 71, 71, 894, 893, 900, 891, 895, 896, 71, - 71, 899, 897, 71, 71, 71, 71, 904, 71, 71, - 71, 71, 903, 71, 907, 911, 71, 913, 71, 924, - 71, 71, 906, 901, 902, 905, 71, 908, 909, 914, - 917, 912, 71, 910, 915, 71, 71, 916, 918, 71, - 71, 920, 921, 71, 71, 919, 71, 71, 71, 922, - 925, 71, 71, 71, 923, 71, 926, 71, 928, 931, - 71, 71, 929, 71, 71, 934, 71, 71, 71, 933, - 927, 71, 932, 71, 71, 936, 930, 937, 939, 71, + 893, 879, 86, 86, 894, 86, 86, 903, 880, 881, + 86, 882, 86, 896, 897, 86, 898, 908, 907, 899, + 161, 905, 909, 86, 900, 86, 86, 904, 86, 911, + 901, 902, 910, 86, 913, 906, 86, 86, 86, 915, + 86, 912, 914, 916, 917, 86, 86, 86, 918, 86, + 86, 86, 919, 921, 86, 86, 925, 86, 86, 924, + 86, 86, 928, 86, 86, 932, 920, 934, 86, 159, + 922, 86, 926, 923, 927, 930, 929, 86, 935, 157, + 86, 938, 933, 936, 86, 937, 931, 86, 939, 86, + 86, 941, 942, 86, 86, 940, 86, 86, 86, 943, - 71, 71, 71, 935, 941, 942, 71, 71, 940, 71, - 949, 938, 947, 71, 71, 945, 943, 948, 71, 944, - 946, 71, 71, 71, 71, 71, 954, 956, 950, 71, - 952, 957, 71, 951, 955, 71, 71, 71, 71, 71, - 959, 71, 71, 71, 71, 958, 953, 967, 71, 970, - 960, 965, 71, 71, 71, 71, 961, 962, 71, 964, - 963, 971, 968, 71, 966, 972, 71, 969, 71, 975, - 71, 71, 974, 973, 71, 977, 978, 71, 71, 71, - 976, 71, 71, 980, 71, 71, 982, 987, 979, 988, - 990, 981, 71, 71, 992, 71, 71, 71, 71, 983, + 945, 86, 946, 86, 944, 86, 947, 86, 86, 86, + 952, 86, 949, 86, 955, 950, 86, 86, 86, 86, + 86, 86, 953, 948, 954, 86, 86, 957, 951, 86, + 958, 960, 962, 86, 961, 86, 956, 86, 963, 86, + 86, 968, 86, 959, 86, 970, 969, 86, 966, 964, + 86, 86, 86, 967, 86, 86, 977, 971, 975, 86, + 973, 86, 965, 978, 86, 86, 976, 86, 86, 972, + 980, 86, 86, 86, 86, 86, 974, 86, 86, 988, + 979, 86, 981, 986, 991, 86, 86, 982, 983, 86, + 86, 86, 985, 984, 992, 989, 987, 990, 993, 86, - 71, 985, 993, 984, 986, 991, 989, 71, 71, 71, - 996, 994, 71, 71, 998, 1001, 995, 71, 997, 71, - 1000, 71, 71, 1005, 71, 1002, 1007, 71, 71, 71, - 1004, 1003, 71, 999, 1010, 151, 71, 1009, 71, 71, - 1013, 71, 1012, 71, 1006, 71, 1008, 71, 1016, 71, - 71, 1011, 71, 71, 71, 1028, 71, 1031, 71, 144, - 1029, 71, 71, 1014, 1019, 1015, 1017, 71, 71, 1054, - 71, 1033, 1020, 1018, 1021, 71, 1030, 71, 1022, 71, - 1023, 71, 1036, 1034, 1024, 71, 1025, 1032, 71, 71, - 71, 1026, 1038, 1035, 1041, 1037, 1027, 1039, 71, 1040, + 994, 86, 86, 995, 86, 996, 86, 998, 999, 86, + 86, 1000, 86, 1001, 86, 997, 86, 86, 1003, 1008, + 86, 1009, 1011, 86, 1013, 86, 1002, 86, 86, 86, + 86, 86, 1004, 1014, 1010, 1006, 1005, 1007, 86, 86, + 86, 86, 1015, 1012, 86, 1022, 1019, 86, 1016, 86, + 1021, 86, 1017, 86, 86, 86, 1023, 1026, 1028, 86, + 1018, 86, 86, 86, 86, 1020, 86, 1027, 1025, 1030, + 1031, 86, 1024, 86, 86, 1032, 166, 1033, 1034, 1029, + 86, 1035, 86, 86, 86, 86, 86, 1038, 1036, 86, + 1051, 1037, 1039, 86, 1050, 1053, 86, 86, 1041, 86, - 71, 1046, 71, 1043, 71, 1044, 1042, 1047, 71, 71, - 71, 1052, 71, 1053, 71, 1045, 1051, 71, 1048, 71, - 1055, 1056, 71, 1050, 71, 71, 71, 71, 71, 1049, - 71, 1068, 71, 1058, 1057, 71, 1067, 1072, 71, 71, - 1059, 71, 1060, 1073, 1069, 71, 1071, 1061, 1093, 1062, - 1070, 71, 71, 1074, 71, 1063, 1077, 71, 1078, 1079, - 1064, 1065, 71, 71, 71, 71, 1080, 1066, 1083, 71, - 1075, 1076, 142, 71, 71, 71, 71, 1082, 1084, 71, - 1089, 1081, 71, 71, 1086, 1087, 71, 71, 1085, 71, - 71, 1090, 1092, 71, 71, 1088, 71, 71, 71, 71, + 86, 86, 86, 86, 1055, 1042, 174, 1040, 1058, 86, + 1043, 86, 1052, 1060, 1044, 1057, 1045, 1056, 1061, 86, + 1046, 86, 1047, 1059, 1054, 86, 86, 1048, 86, 1063, + 86, 86, 1049, 86, 86, 1062, 1066, 86, 1068, 1069, + 1077, 1064, 86, 1065, 1070, 86, 1067, 1074, 1073, 1075, + 86, 1072, 1078, 86, 1071, 86, 1076, 86, 86, 86, + 86, 86, 86, 86, 86, 1090, 86, 1093, 86, 172, + 86, 86, 1079, 1094, 1089, 86, 1092, 1091, 1080, 1081, + 86, 1082, 86, 1095, 1096, 86, 1083, 86, 1084, 1100, + 1097, 1099, 86, 86, 1085, 86, 1102, 86, 1103, 1086, - 1099, 71, 1091, 1094, 71, 1096, 1097, 1098, 1101, 71, - 1095, 71, 71, 1100, 71, 1102, 71, 71, 1103, 71, - 71, 1104, 1109, 71, 1110, 1106, 71, 71, 1105, 1112, - 1107, 1108, 1111, 71, 1113, 1114, 1115, 71, 1117, 71, - 1121, 71, 1116, 1118, 71, 71, 1119, 71, 71, 1120, - 71, 71, 71, 1122, 1128, 71, 1130, 71, 71, 71, - 71, 71, 71, 1132, 1124, 1126, 1127, 1123, 1125, 71, - 71, 71, 1131, 1133, 1134, 1129, 71, 71, 71, 71, - 71, 1136, 1135, 1137, 1139, 1138, 71, 71, 71, 1141, - 71, 1140, 1145, 1142, 1144, 71, 1143, 71, 71, 1146, + 1087, 1098, 86, 1106, 86, 86, 1088, 1101, 86, 86, + 1105, 86, 1104, 1107, 1109, 86, 1112, 86, 86, 86, + 1110, 86, 86, 1108, 1115, 86, 1113, 86, 86, 86, + 86, 1111, 86, 86, 86, 86, 1122, 1114, 1120, 1117, + 1119, 1116, 1121, 86, 1124, 86, 86, 1118, 1126, 1123, + 86, 1125, 86, 86, 86, 171, 86, 86, 86, 1132, + 1129, 1133, 1134, 1127, 1128, 86, 1136, 1135, 1131, 1137, + 1130, 86, 86, 1140, 86, 86, 86, 1142, 1141, 86, + 1143, 86, 86, 86, 1138, 1144, 86, 86, 1139, 86, + 86, 1151, 1153, 86, 1146, 1145, 86, 86, 86, 1147, - 71, 71, 71, 71, 1147, 1149, 71, 1150, 1148, 71, - 1156, 71, 1154, 1157, 71, 1151, 71, 71, 71, 71, - 1152, 71, 1158, 1153, 1155, 71, 1159, 1161, 1164, 71, - 1160, 71, 1162, 71, 71, 71, 1165, 71, 1163, 1166, - 71, 71, 71, 71, 1167, 1171, 1168, 1169, 71, 71, - 71, 1172, 71, 1177, 1173, 1178, 71, 71, 71, 71, - 1170, 71, 1175, 1180, 1181, 71, 71, 1174, 71, 71, - 1185, 1176, 1179, 71, 71, 1182, 71, 71, 71, 71, - 1183, 1184, 1187, 1191, 71, 71, 1186, 71, 71, 71, - 1197, 71, 71, 1192, 1195, 1188, 3070, 1190, 1199, 1194, + 1149, 1155, 86, 86, 1148, 1150, 1157, 86, 1154, 1152, + 86, 86, 86, 86, 86, 1159, 1156, 1160, 1162, 1163, + 86, 86, 86, 86, 86, 1168, 86, 1161, 1158, 1165, + 1167, 86, 1164, 1169, 86, 1170, 86, 1166, 86, 1172, + 1171, 86, 1173, 86, 86, 86, 86, 1179, 1177, 1180, + 86, 86, 86, 86, 166, 86, 1174, 1181, 86, 1178, + 86, 1184, 1175, 1182, 1176, 1183, 1187, 86, 1185, 86, + 86, 1186, 86, 86, 1188, 1189, 86, 86, 86, 1190, + 86, 86, 1191, 1194, 1195, 86, 86, 86, 86, 86, + 86, 164, 1200, 86, 1201, 1192, 1196, 1193, 86, 1198, - 1193, 1196, 1189, 1200, 71, 71, 71, 71, 1198, 71, - 1201, 71, 1203, 1202, 71, 71, 71, 71, 71, 71, - 1204, 1206, 71, 1212, 71, 1209, 71, 71, 1205, 71, - 1207, 71, 71, 71, 1210, 1337, 1208, 1216, 71, 1222, - 1213, 1211, 71, 71, 1215, 1214, 71, 1218, 1223, 1224, - 71, 71, 1217, 1225, 71, 71, 1219, 1227, 1220, 71, - 71, 1221, 71, 71, 71, 1226, 71, 1231, 71, 1230, - 71, 1233, 1236, 71, 1228, 1234, 71, 1229, 71, 71, - 71, 1237, 1232, 1238, 1240, 71, 71, 1235, 71, 1241, - 1239, 71, 71, 71, 71, 1242, 71, 71, 71, 1245, + 86, 86, 1204, 86, 1197, 1202, 1203, 1199, 1205, 86, + 86, 1208, 86, 86, 86, 86, 86, 166, 1212, 1214, + 86, 86, 1207, 1206, 86, 1210, 86, 86, 86, 86, + 1209, 86, 1211, 1213, 1219, 1216, 1220, 1215, 1218, 1217, + 1221, 86, 86, 1223, 1224, 1228, 86, 1225, 1222, 86, + 86, 86, 86, 1226, 86, 86, 86, 1227, 86, 1230, + 1229, 86, 86, 1236, 86, 1233, 86, 86, 86, 86, + 1231, 86, 86, 1246, 86, 1232, 1234, 1240, 86, 1242, + 1237, 1235, 86, 1239, 86, 1238, 86, 1247, 1243, 1241, + 1244, 1248, 86, 1245, 86, 86, 86, 1252, 1250, 1251, - 71, 1248, 71, 1243, 1246, 71, 1244, 71, 1247, 1249, - 71, 1253, 71, 71, 1258, 1250, 71, 1254, 1252, 1251, - 71, 1257, 71, 71, 1260, 71, 1264, 1255, 1262, 71, - 1256, 1265, 71, 1261, 71, 71, 1259, 1263, 71, 1269, - 71, 3070, 71, 71, 1279, 71, 1278, 1268, 1266, 1267, - 71, 1277, 71, 1276, 1281, 1270, 71, 71, 1271, 1272, - 1282, 1280, 1283, 1273, 71, 71, 71, 71, 1285, 1274, - 1284, 71, 1287, 1275, 71, 71, 71, 1288, 71, 1289, - 71, 71, 71, 71, 1297, 1286, 1294, 1292, 71, 71, - 71, 1298, 1338, 1299, 1291, 1290, 1295, 71, 71, 71, + 86, 1249, 86, 86, 1253, 86, 86, 1255, 1257, 1254, + 1260, 86, 86, 86, 1256, 86, 1258, 1261, 1262, 86, + 86, 86, 86, 86, 1264, 1259, 1265, 86, 86, 1266, + 86, 86, 86, 86, 86, 1263, 1267, 86, 1268, 1272, + 1270, 86, 86, 1273, 86, 1271, 1269, 86, 1277, 86, + 1282, 86, 1274, 86, 86, 1275, 86, 1279, 1281, 1276, + 86, 86, 1278, 86, 1280, 86, 1283, 1284, 1285, 86, + 1287, 1289, 86, 1288, 1286, 86, 1290, 86, 86, 1294, + 86, 1303, 1291, 1292, 1307, 1293, 86, 86, 1301, 1302, + 86, 1295, 86, 1304, 1296, 1297, 86, 86, 86, 1298, - 1293, 1296, 1300, 71, 1306, 71, 1307, 1308, 1301, 71, - 71, 71, 71, 1302, 1310, 1303, 1309, 1304, 71, 1305, - 71, 71, 71, 1314, 71, 71, 1311, 1313, 1315, 71, - 1312, 1316, 71, 1320, 71, 1319, 71, 1318, 71, 1324, - 71, 1325, 1317, 71, 1321, 71, 1326, 71, 71, 71, - 1323, 71, 1328, 1322, 71, 71, 71, 1327, 1330, 71, - 1333, 71, 1329, 1334, 71, 1336, 71, 71, 71, 1331, - 1341, 1335, 1339, 1342, 71, 1344, 71, 71, 1340, 1332, - 71, 1345, 1346, 71, 71, 1349, 71, 71, 1343, 71, - 71, 71, 1351, 71, 71, 71, 1353, 1355, 71, 71, + 86, 1305, 86, 1308, 86, 1299, 1306, 1309, 86, 1300, + 86, 1310, 86, 1312, 86, 86, 86, 1313, 86, 1314, + 86, 1311, 86, 1319, 1315, 1317, 1316, 1322, 86, 1331, + 1323, 162, 86, 86, 1320, 1318, 86, 1324, 86, 86, + 1321, 86, 1325, 1332, 1333, 86, 86, 86, 1326, 1335, + 86, 86, 1334, 1327, 86, 1328, 86, 1329, 1339, 1330, + 1338, 86, 1336, 1340, 86, 1341, 1343, 86, 1337, 86, + 86, 86, 86, 1349, 86, 1350, 1342, 86, 1345, 86, + 86, 1344, 86, 86, 86, 1351, 1348, 1353, 86, 1346, + 1347, 86, 86, 1355, 1352, 86, 86, 1354, 1359, 86, - 3070, 1357, 1354, 71, 1347, 1348, 71, 1350, 1359, 71, - 1352, 71, 1356, 71, 1358, 71, 1361, 1362, 1363, 71, - 1360, 71, 1365, 71, 1364, 71, 71, 71, 1366, 1371, - 1372, 1368, 71, 1367, 1369, 71, 71, 1373, 1374, 1370, - 71, 71, 71, 71, 71, 1378, 71, 71, 71, 1375, - 1382, 1383, 71, 1377, 71, 1385, 71, 71, 1384, 71, - 1376, 71, 71, 1379, 71, 71, 71, 1380, 1386, 71, - 1392, 1381, 71, 71, 1387, 71, 1389, 1397, 71, 1388, - 1390, 71, 1393, 1391, 71, 71, 1396, 1401, 71, 1399, - 71, 1395, 1402, 71, 71, 71, 71, 1394, 1398, 1404, + 1358, 1361, 86, 86, 86, 1362, 1356, 1360, 86, 1364, + 86, 1363, 1367, 86, 86, 1365, 1357, 1369, 86, 1366, + 86, 1370, 86, 86, 86, 1374, 86, 1371, 86, 86, + 86, 86, 1376, 86, 1368, 86, 1378, 1380, 86, 86, + 86, 86, 1379, 1382, 1372, 1373, 1384, 86, 1375, 86, + 1377, 86, 86, 86, 1383, 86, 1381, 1386, 1388, 1387, + 1389, 1385, 86, 1390, 86, 86, 86, 1392, 86, 1391, + 1396, 1393, 1397, 1394, 86, 86, 86, 1399, 86, 1398, + 86, 1395, 86, 86, 1400, 1403, 86, 86, 166, 86, + 86, 1408, 1409, 1402, 86, 1411, 86, 86, 86, 1401, - 71, 71, 1405, 1412, 1400, 71, 1403, 71, 1414, 1406, - 1410, 1407, 71, 1411, 71, 1408, 1415, 71, 1409, 1417, - 71, 1413, 71, 71, 1418, 71, 71, 71, 1416, 71, - 71, 1422, 71, 71, 1424, 71, 71, 1429, 71, 1419, - 71, 1421, 1430, 71, 71, 1423, 1426, 71, 1420, 1433, - 1425, 1427, 71, 1428, 71, 71, 1434, 71, 1431, 71, - 71, 71, 1432, 71, 71, 1440, 1435, 1437, 1436, 1442, - 1441, 71, 1438, 71, 1445, 71, 71, 71, 1439, 1443, - 1444, 71, 1447, 1450, 71, 1451, 1449, 71, 1452, 71, - 1446, 71, 71, 1453, 1454, 71, 71, 71, 1448, 71, + 1410, 86, 86, 1405, 86, 86, 86, 1404, 86, 1406, + 1412, 86, 1418, 1407, 86, 86, 1413, 1415, 1416, 86, + 86, 86, 1414, 86, 1417, 1422, 1423, 86, 1419, 86, + 1427, 86, 86, 1421, 1425, 1428, 86, 86, 86, 1420, + 1426, 1429, 1424, 86, 86, 1432, 1430, 1433, 86, 1436, + 1438, 1431, 1437, 1434, 86, 1440, 1435, 86, 86, 86, + 1443, 86, 1441, 86, 86, 1444, 86, 86, 1439, 86, + 1442, 86, 1448, 86, 86, 86, 1445, 86, 1450, 86, + 1455, 86, 1447, 86, 86, 1456, 1459, 1449, 1452, 1446, + 86, 1451, 86, 1453, 86, 1454, 86, 86, 86, 86, - 1455, 71, 1457, 71, 71, 1461, 1456, 71, 71, 71, - 1460, 71, 71, 1458, 71, 1467, 1459, 1463, 1469, 1464, - 1468, 71, 1465, 1470, 71, 71, 1472, 1462, 71, 71, - 1466, 71, 1471, 71, 71, 71, 71, 1480, 1476, 71, - 1475, 71, 71, 71, 1481, 1483, 71, 1473, 1474, 71, - 1486, 71, 1485, 1477, 1479, 1478, 71, 71, 71, 71, - 71, 1484, 71, 71, 71, 71, 1494, 1482, 1487, 71, - 1497, 71, 1495, 71, 1491, 1496, 1488, 1489, 1490, 1493, - 1498, 71, 71, 1492, 71, 71, 1501, 1499, 1500, 71, - 71, 71, 1504, 71, 1502, 71, 1505, 71, 71, 71, + 86, 1457, 1460, 1458, 86, 1466, 86, 86, 86, 1471, + 1462, 1467, 1463, 1461, 1464, 86, 1470, 1465, 86, 86, + 1468, 86, 86, 86, 1469, 1473, 1477, 86, 1476, 1478, + 86, 1479, 86, 1472, 86, 86, 1483, 1474, 86, 1480, + 1481, 86, 86, 1475, 86, 86, 1482, 86, 86, 1488, + 86, 86, 1484, 86, 1487, 86, 86, 1494, 1485, 1490, + 1486, 1491, 1495, 86, 86, 86, 1496, 1492, 86, 1499, + 1489, 1497, 86, 86, 1493, 86, 86, 86, 86, 86, + 1507, 86, 1503, 1506, 1498, 1502, 86, 86, 86, 1510, + 86, 86, 1500, 1508, 1501, 86, 1512, 1504, 1513, 1505, - 1508, 1514, 1503, 1512, 71, 71, 1509, 71, 71, 1506, - 1513, 1507, 1516, 71, 1511, 71, 71, 1510, 1517, 1518, - 1519, 71, 71, 1515, 71, 1523, 1524, 71, 71, 71, - 71, 71, 71, 1528, 71, 1527, 1529, 1531, 71, 71, - 1521, 1520, 71, 71, 1522, 71, 1525, 71, 1532, 71, - 1526, 1533, 71, 71, 1530, 1534, 1536, 71, 1538, 1535, - 71, 1539, 71, 71, 71, 71, 71, 1537, 71, 1543, - 71, 1545, 1540, 71, 71, 1546, 71, 1550, 71, 1544, - 71, 71, 1542, 1541, 71, 71, 1547, 71, 1548, 1553, - 1555, 71, 1551, 71, 71, 1558, 1554, 1556, 1552, 1549, + 86, 86, 86, 86, 86, 86, 1511, 1509, 86, 86, + 1514, 86, 1521, 86, 1526, 86, 1522, 1518, 86, 1515, + 1516, 1517, 1527, 1520, 1524, 86, 1519, 1523, 1525, 86, + 86, 86, 86, 86, 86, 1531, 86, 86, 86, 1532, + 1529, 86, 1535, 1528, 1541, 1530, 1539, 86, 86, 1536, + 86, 86, 1533, 1540, 1534, 86, 86, 1538, 1537, 86, + 86, 1544, 86, 1545, 1546, 86, 1542, 86, 1543, 1550, + 1551, 86, 86, 86, 86, 86, 86, 1555, 1556, 1554, + 86, 86, 1547, 1548, 86, 1558, 86, 1549, 86, 86, + 1552, 1559, 1560, 86, 1553, 86, 86, 1561, 1563, 86, - 71, 71, 71, 71, 71, 1557, 1561, 71, 1563, 1559, - 71, 1560, 1564, 71, 71, 71, 71, 1571, 71, 71, - 1562, 1566, 1565, 1572, 71, 71, 71, 71, 1569, 1567, - 1568, 1576, 71, 71, 1575, 1578, 1580, 1579, 71, 1573, - 1570, 71, 71, 1582, 1574, 1584, 71, 1577, 71, 71, - 71, 71, 71, 71, 1589, 1583, 1586, 1587, 1581, 71, - 1590, 71, 71, 71, 71, 71, 1601, 1585, 1594, 71, - 1595, 71, 71, 71, 71, 1588, 1591, 1598, 1593, 1592, - 1599, 71, 71, 1596, 1597, 1603, 1602, 71, 71, 1609, - 71, 71, 1600, 1606, 1608, 71, 1605, 71, 1607, 71, + 1557, 86, 1566, 86, 86, 1562, 86, 86, 1565, 86, + 86, 1570, 86, 1572, 86, 86, 1564, 86, 1567, 1573, + 86, 1577, 86, 1571, 86, 1568, 1569, 86, 86, 1580, + 1575, 86, 1574, 1582, 86, 1583, 1578, 86, 86, 1585, + 86, 86, 1576, 1581, 86, 1579, 86, 166, 1588, 86, + 1591, 86, 1587, 86, 1590, 86, 86, 1584, 86, 86, + 86, 1599, 1586, 1592, 161, 1589, 86, 86, 86, 1594, + 86, 1593, 1597, 1600, 86, 1595, 1596, 86, 86, 1603, + 1606, 86, 1604, 86, 1598, 1608, 1601, 1602, 1607, 1610, + 86, 86, 1612, 86, 1605, 86, 86, 86, 86, 86, - 1611, 1604, 1610, 71, 1612, 1613, 71, 71, 1616, 71, - 71, 71, 1614, 71, 1620, 1621, 1619, 71, 1623, 1615, - 71, 71, 1622, 71, 71, 71, 71, 71, 1617, 71, - 1618, 1625, 1626, 71, 1627, 71, 71, 71, 1635, 71, - 71, 71, 71, 1628, 71, 71, 1624, 1629, 71, 71, - 1631, 1632, 1633, 71, 1634, 1630, 1640, 71, 1642, 1636, - 71, 1643, 1637, 1638, 71, 71, 1639, 71, 1641, 71, - 71, 71, 71, 71, 71, 71, 71, 1658, 71, 1644, - 1648, 1645, 1650, 1651, 71, 1649, 1652, 1647, 1653, 1646, - 71, 1654, 71, 1657, 1659, 71, 1655, 71, 1656, 71, + 86, 1609, 86, 1614, 1611, 1615, 86, 1617, 86, 1618, + 86, 86, 86, 1619, 1622, 1613, 86, 1623, 86, 86, + 1620, 1629, 1616, 86, 1624, 1621, 1626, 86, 86, 1627, + 86, 86, 86, 1630, 1631, 159, 1637, 1634, 1625, 1633, + 86, 1628, 86, 1636, 1635, 86, 86, 86, 1639, 1641, + 1632, 1638, 86, 1640, 86, 86, 86, 86, 1643, 1642, + 86, 86, 1648, 1649, 1647, 86, 1651, 86, 86, 86, + 1650, 86, 86, 86, 1644, 86, 1645, 86, 1653, 86, + 1646, 1654, 86, 86, 1655, 86, 86, 1664, 86, 1656, + 1652, 86, 86, 86, 86, 1657, 1663, 1658, 86, 1659, - 1662, 71, 1661, 71, 1660, 1663, 71, 71, 1666, 71, - 71, 71, 1664, 71, 1667, 71, 71, 1675, 71, 1670, - 1665, 1676, 71, 71, 1674, 1672, 1668, 1669, 1673, 71, - 71, 71, 1671, 71, 71, 71, 71, 71, 1677, 71, - 1685, 71, 1678, 71, 1689, 1680, 1682, 71, 1679, 1681, - 1687, 71, 1688, 1686, 1684, 71, 1693, 71, 1690, 71, - 1683, 71, 71, 1697, 1691, 71, 71, 1692, 1698, 71, - 71, 3070, 71, 1705, 71, 1694, 1699, 1702, 1703, 1696, - 1695, 1700, 71, 1706, 71, 71, 1708, 1701, 1704, 71, - 1707, 71, 71, 71, 1712, 71, 71, 1709, 1716, 1714, + 1660, 86, 86, 1661, 1662, 1669, 86, 86, 1665, 86, + 86, 86, 1667, 86, 1666, 1671, 86, 1672, 86, 86, + 86, 86, 1668, 86, 1673, 1674, 1675, 1670, 1677, 1680, + 1679, 1676, 1681, 1678, 86, 86, 86, 1682, 86, 1686, + 1687, 86, 1688, 86, 86, 86, 1692, 86, 1691, 1683, + 1689, 86, 86, 86, 1684, 86, 86, 86, 1695, 86, + 1685, 1696, 1690, 86, 1693, 86, 86, 86, 1699, 1705, + 86, 1694, 86, 1698, 1697, 1701, 1703, 1704, 1702, 86, + 86, 86, 1700, 86, 86, 1706, 86, 86, 86, 1714, + 1708, 86, 1707, 86, 1709, 86, 1711, 1710, 86, 1718, - 71, 71, 1710, 71, 71, 1715, 71, 1711, 1713, 1717, - 71, 71, 71, 71, 71, 71, 71, 1743, 1720, 71, - 1721, 71, 1718, 1726, 71, 1719, 1722, 1723, 1728, 1724, - 1725, 1729, 1730, 71, 71, 1731, 71, 71, 71, 71, - 1736, 1732, 71, 71, 71, 1727, 71, 1740, 71, 71, - 71, 1733, 1735, 71, 1742, 71, 71, 1734, 1744, 1738, - 1745, 71, 1739, 71, 1737, 1746, 1749, 71, 71, 1741, - 71, 71, 1753, 71, 71, 71, 71, 71, 1748, 71, - 71, 71, 1751, 1755, 1747, 71, 1760, 1750, 1754, 1756, - 1752, 1757, 71, 1761, 1758, 71, 1764, 71, 71, 71, + 1717, 86, 1716, 86, 86, 1713, 1722, 1715, 86, 86, + 86, 1712, 1720, 1719, 1726, 1721, 86, 86, 86, 1727, + 86, 157, 1723, 1731, 1728, 86, 1732, 1725, 86, 1724, + 1735, 1729, 86, 1734, 86, 86, 86, 86, 1737, 1730, + 1736, 86, 86, 1733, 86, 86, 1741, 1738, 1739, 86, + 86, 1740, 86, 1743, 1745, 1742, 86, 1746, 86, 1744, + 86, 86, 86, 86, 1747, 86, 1749, 86, 86, 86, + 1750, 1755, 86, 1757, 1758, 1748, 1751, 86, 1752, 86, + 86, 1753, 1754, 1760, 86, 86, 86, 86, 1765, 1761, + 1759, 86, 86, 1756, 86, 86, 86, 1769, 86, 86, - 1759, 1763, 1765, 1762, 1766, 71, 71, 1768, 1769, 1770, - 71, 1767, 71, 71, 71, 1772, 71, 71, 71, 1773, - 71, 71, 71, 71, 1771, 71, 71, 1778, 71, 71, - 1782, 71, 1779, 1790, 71, 1783, 71, 1774, 1776, 1777, - 1775, 1780, 71, 1781, 71, 71, 1791, 1786, 1784, 1788, - 71, 1785, 71, 71, 1787, 71, 71, 1792, 1796, 71, - 1789, 71, 71, 1799, 1800, 71, 1801, 71, 71, 1793, - 71, 1794, 71, 1795, 3070, 1797, 1808, 1798, 71, 1802, - 1803, 71, 71, 1804, 1807, 71, 1809, 71, 1811, 1805, - 1810, 1806, 71, 1813, 71, 71, 1812, 71, 71, 71, + 1764, 86, 86, 1762, 1772, 1763, 1771, 86, 1767, 86, + 1775, 86, 1773, 1766, 1768, 1770, 1774, 166, 86, 1779, + 86, 86, 86, 86, 1783, 86, 86, 86, 86, 1777, + 86, 86, 1776, 1778, 1781, 1785, 86, 86, 1786, 1790, + 1780, 1784, 1782, 1787, 86, 86, 86, 1794, 86, 1788, + 1793, 86, 1796, 86, 1795, 1792, 1789, 86, 1791, 86, + 1799, 86, 1797, 1800, 86, 86, 86, 1802, 1798, 86, + 86, 86, 1803, 1801, 86, 86, 86, 86, 86, 86, + 1808, 86, 86, 1812, 86, 86, 1809, 3110, 86, 1818, + 1804, 1810, 1806, 1805, 1807, 86, 1811, 1813, 86, 1821, - 1815, 1816, 71, 71, 1817, 1818, 71, 1825, 3070, 71, - 71, 71, 71, 71, 1830, 71, 71, 71, 1823, 1827, - 1814, 1819, 1820, 1821, 1828, 71, 1824, 1831, 1822, 1829, - 1826, 1833, 1832, 71, 71, 71, 71, 71, 1837, 71, - 71, 1839, 1834, 71, 71, 71, 1842, 1843, 71, 71, - 1845, 71, 71, 71, 1835, 71, 1836, 71, 71, 1850, - 1851, 71, 1838, 1840, 1847, 71, 1841, 1848, 71, 1844, - 71, 71, 71, 71, 1849, 71, 1857, 1846, 1852, 1854, - 1855, 71, 71, 1853, 1861, 71, 71, 1860, 1864, 1865, - 71, 1866, 71, 1863, 71, 71, 1856, 1859, 71, 1858, + 1816, 86, 1815, 1820, 86, 86, 1822, 1817, 86, 86, + 1814, 86, 86, 1819, 1826, 86, 1829, 1830, 86, 86, + 1823, 1831, 86, 86, 1824, 1827, 86, 1828, 86, 1825, + 1833, 86, 86, 1834, 1837, 86, 86, 1839, 86, 1832, + 1838, 1840, 1841, 86, 1835, 1843, 1842, 1836, 86, 86, + 86, 86, 86, 1845, 1846, 86, 86, 1847, 86, 1849, + 86, 1856, 86, 1848, 86, 86, 86, 86, 1861, 1864, + 86, 86, 1854, 86, 1844, 86, 1850, 1851, 1852, 1858, + 1855, 1862, 1857, 1853, 1859, 86, 1863, 1860, 86, 86, + 86, 1868, 86, 86, 86, 1870, 86, 1865, 86, 86, - 71, 71, 71, 1867, 71, 1862, 71, 71, 71, 1868, - 1872, 71, 1875, 1876, 1871, 71, 1877, 71, 71, 71, - 71, 1869, 71, 1870, 1873, 71, 71, 1885, 71, 1880, - 71, 1884, 1879, 71, 1874, 1878, 71, 71, 1882, 3070, - 71, 1889, 1883, 71, 71, 1881, 1890, 71, 1887, 1886, - 1892, 71, 1891, 71, 71, 1888, 71, 1893, 1894, 1896, - 71, 71, 71, 1895, 71, 1897, 1900, 1903, 1898, 71, - 71, 1906, 71, 71, 1905, 1899, 71, 1907, 71, 71, - 71, 71, 1901, 1908, 1902, 1904, 71, 1909, 1913, 71, - 71, 1910, 1914, 71, 1915, 1920, 1911, 1917, 1918, 1916, + 1873, 1874, 86, 86, 1876, 86, 86, 86, 86, 1866, + 86, 1867, 86, 1882, 86, 86, 1871, 1878, 1881, 1869, + 1872, 1879, 86, 1875, 86, 1884, 86, 86, 1880, 1885, + 86, 1877, 86, 1888, 86, 1886, 1883, 86, 1892, 86, + 86, 86, 1891, 1895, 86, 1896, 1898, 1894, 86, 86, + 1890, 86, 86, 1887, 1897, 86, 1889, 1899, 86, 1893, + 86, 86, 86, 1903, 86, 86, 1906, 86, 1907, 1908, + 86, 86, 1900, 1902, 86, 86, 86, 1901, 86, 86, + 1904, 1915, 1911, 1916, 86, 1910, 86, 1909, 86, 86, + 1905, 1913, 86, 86, 3110, 86, 1920, 86, 1912, 1921, - 71, 1912, 71, 71, 71, 1922, 71, 71, 71, 71, - 1927, 71, 1919, 1924, 1921, 71, 71, 1929, 1923, 1925, - 71, 71, 71, 71, 71, 71, 71, 1935, 1934, 1933, - 1936, 71, 1930, 1926, 1931, 1937, 71, 1928, 71, 1939, - 1932, 71, 71, 71, 71, 71, 3070, 1940, 1941, 71, - 1942, 1943, 71, 71, 1944, 1945, 71, 1947, 1938, 71, - 71, 71, 1951, 71, 71, 1946, 1950, 1955, 71, 71, - 71, 1948, 1949, 1952, 1953, 1954, 71, 71, 71, 71, - 71, 1962, 1960, 71, 71, 71, 1957, 71, 1961, 71, - 71, 71, 1967, 71, 1964, 71, 1956, 1958, 3070, 1959, + 86, 1914, 86, 1918, 1922, 1917, 1923, 86, 1919, 86, + 86, 1925, 86, 1924, 1927, 86, 1926, 1931, 1928, 86, + 86, 1930, 1934, 86, 1929, 86, 1937, 86, 86, 86, + 1936, 86, 1938, 1939, 86, 86, 86, 86, 1935, 1932, + 1933, 1944, 86, 1940, 1945, 86, 1941, 1946, 1948, 1949, + 86, 1942, 1947, 86, 86, 86, 1943, 86, 86, 1953, + 86, 86, 1951, 1950, 86, 86, 86, 86, 1955, 86, + 1952, 1958, 1954, 1956, 1960, 1957, 166, 86, 86, 1962, + 86, 1961, 86, 86, 86, 86, 1966, 1990, 1959, 1965, + 1963, 86, 1967, 1968, 86, 1969, 86, 1971, 86, 86, - 71, 71, 1963, 1968, 1966, 71, 1971, 1965, 71, 1970, - 1972, 1969, 71, 71, 1977, 71, 1974, 1975, 71, 71, - 1973, 1978, 71, 71, 71, 1983, 1976, 71, 71, 1985, - 71, 71, 1986, 1987, 71, 1979, 71, 1982, 1980, 1981, - 71, 71, 71, 1989, 1984, 71, 1991, 71, 1988, 71, - 71, 1992, 71, 71, 71, 71, 71, 71, 71, 2003, - 71, 1990, 1994, 1999, 1995, 1996, 71, 2002, 1993, 1998, - 71, 71, 71, 2006, 2004, 1997, 2000, 2007, 2001, 71, - 71, 71, 2010, 71, 2009, 71, 2005, 71, 2012, 71, - 71, 2008, 2013, 71, 71, 71, 2014, 2018, 71, 2011, + 86, 1964, 86, 86, 1972, 1970, 1974, 1973, 1975, 86, + 86, 86, 86, 1977, 1976, 86, 1979, 86, 1983, 86, + 86, 86, 86, 1978, 1980, 1982, 86, 1985, 86, 1981, + 1984, 1986, 1987, 86, 86, 86, 86, 86, 1994, 86, + 1992, 86, 1993, 1989, 86, 86, 86, 86, 1988, 86, + 1996, 86, 86, 1999, 1991, 86, 2003, 1995, 2002, 86, + 1998, 86, 86, 1997, 2000, 2001, 86, 2007, 2004, 2009, + 86, 86, 2006, 2005, 2010, 86, 86, 2015, 86, 2008, + 86, 86, 86, 86, 86, 2017, 86, 86, 2018, 2019, + 86, 2011, 2012, 2013, 2014, 2020, 86, 86, 2016, 86, - 2020, 71, 2016, 2022, 71, 71, 2017, 2015, 71, 2019, - 71, 71, 2025, 2024, 71, 2021, 2026, 71, 71, 2027, - 2030, 71, 71, 71, 71, 71, 71, 2031, 2036, 71, - 71, 2023, 2033, 71, 2032, 2028, 71, 2037, 2029, 2035, - 2040, 71, 2034, 71, 71, 2038, 71, 71, 2041, 2042, - 2046, 71, 2044, 2039, 71, 71, 2048, 71, 2049, 2043, - 2045, 71, 71, 71, 71, 71, 2047, 2051, 71, 71, - 2050, 2055, 2057, 2053, 71, 71, 2054, 2058, 71, 71, - 2060, 2052, 71, 2059, 2062, 71, 2056, 2061, 71, 71, - 2063, 2067, 71, 71, 71, 2064, 71, 71, 2066, 71, + 2024, 86, 86, 2021, 2022, 86, 86, 86, 86, 86, + 2025, 86, 86, 86, 3110, 86, 86, 2023, 2027, 2028, + 2029, 2032, 86, 2026, 2031, 2035, 2036, 86, 86, 2037, + 86, 2030, 2034, 2039, 2033, 86, 2038, 86, 86, 2043, + 2040, 86, 2041, 2042, 86, 86, 2044, 86, 2046, 2045, + 86, 86, 86, 86, 2047, 2051, 86, 86, 2053, 2049, + 86, 2055, 86, 2050, 86, 2048, 86, 86, 2058, 2057, + 86, 2052, 2059, 86, 2054, 2060, 86, 86, 2063, 86, + 86, 86, 2064, 2056, 86, 86, 2069, 86, 2066, 86, + 2070, 2061, 2065, 86, 86, 2073, 2062, 86, 86, 2068, - 71, 71, 71, 71, 71, 71, 2076, 2077, 2065, 71, - 2071, 2068, 2069, 2070, 2072, 2073, 2074, 71, 2078, 71, - 2075, 71, 71, 2079, 71, 2081, 71, 71, 2082, 2087, - 71, 71, 2089, 71, 71, 2086, 2080, 2083, 2091, 2084, - 2088, 71, 71, 71, 3070, 2094, 2090, 2092, 71, 2085, - 2095, 71, 2096, 2097, 2093, 71, 2099, 71, 71, 71, - 2098, 2101, 71, 2100, 71, 2102, 71, 2106, 71, 71, - 2107, 71, 2110, 2109, 2115, 2105, 71, 71, 71, 2103, - 71, 2111, 2114, 2108, 71, 2112, 2113, 71, 71, 71, - 2104, 71, 2116, 71, 71, 2118, 71, 71, 71, 2120, + 2067, 86, 2074, 86, 86, 2075, 2079, 86, 2071, 86, + 86, 2081, 2077, 86, 2072, 86, 2076, 86, 2082, 86, + 2078, 2080, 2083, 86, 2084, 86, 86, 2088, 86, 86, + 86, 2090, 2086, 2085, 86, 2087, 2091, 86, 2092, 2095, + 2093, 86, 2094, 86, 86, 86, 2096, 2089, 2100, 86, + 86, 86, 86, 86, 2099, 86, 2097, 86, 86, 86, + 86, 86, 86, 3110, 2098, 2106, 2104, 2109, 2101, 2102, + 2107, 2103, 2105, 86, 86, 86, 86, 86, 2110, 2108, + 86, 2112, 2114, 2111, 2115, 2118, 86, 2120, 86, 86, + 86, 166, 2116, 3110, 2113, 2119, 2122, 86, 2117, 2121, - 71, 71, 71, 2123, 71, 71, 2129, 71, 71, 2117, - 2127, 71, 2122, 71, 71, 2130, 2125, 71, 2119, 2121, - 2124, 2126, 2132, 2131, 71, 71, 2128, 71, 71, 71, - 2136, 2139, 71, 2135, 71, 71, 2134, 2140, 71, 2133, - 2137, 71, 71, 71, 71, 71, 2138, 2150, 71, 71, - 71, 2155, 71, 2141, 2142, 2151, 2147, 71, 71, 71, - 71, 2143, 2145, 2146, 2149, 2144, 2148, 2156, 71, 71, - 2152, 71, 2153, 2154, 2157, 71, 71, 71, 2160, 2166, - 2161, 2163, 71, 2162, 2158, 71, 71, 71, 71, 2159, - 2164, 2165, 2169, 71, 2170, 71, 71, 2172, 71, 71, + 86, 86, 86, 2130, 2124, 2128, 2125, 86, 2123, 86, + 2129, 86, 2131, 2127, 86, 2126, 86, 2132, 86, 2135, + 86, 86, 2136, 86, 2133, 2140, 86, 2134, 86, 2141, + 86, 86, 2139, 2144, 86, 86, 2137, 86, 2146, 86, + 2145, 86, 2142, 2147, 86, 2149, 2148, 2138, 86, 2143, + 86, 86, 2150, 86, 2151, 86, 86, 2152, 86, 86, + 2154, 86, 86, 86, 2157, 86, 86, 2163, 86, 86, + 2161, 86, 86, 2156, 86, 2153, 2164, 2159, 86, 2155, + 2158, 86, 86, 2160, 2165, 86, 2166, 2170, 2162, 86, + 2168, 2173, 86, 2169, 86, 86, 86, 2167, 2171, 86, - 2168, 2174, 71, 71, 71, 2177, 71, 2167, 71, 2176, - 2178, 71, 71, 71, 71, 2171, 71, 2173, 2175, 71, - 71, 2180, 2179, 3070, 2183, 2184, 71, 2181, 2186, 71, - 71, 71, 71, 2182, 2189, 2185, 2188, 71, 2187, 71, - 2190, 2192, 71, 71, 2196, 71, 71, 71, 71, 71, - 71, 2193, 2194, 2200, 71, 2191, 2201, 71, 71, 2203, - 71, 71, 2195, 2199, 2206, 71, 2197, 71, 71, 2202, - 2198, 71, 71, 2204, 2208, 2205, 71, 71, 2213, 71, - 71, 2207, 2209, 71, 71, 2215, 71, 71, 2214, 2210, - 2211, 71, 2219, 71, 2216, 71, 71, 2223, 2220, 71, + 86, 86, 2174, 86, 86, 86, 86, 2172, 2184, 86, + 86, 86, 86, 2186, 2175, 2176, 2185, 2181, 2183, 86, + 2179, 86, 2177, 86, 2178, 2180, 2188, 2182, 86, 2190, + 2191, 86, 2187, 86, 2189, 2192, 86, 86, 2193, 86, + 2195, 86, 2198, 86, 86, 86, 2194, 86, 86, 2199, + 2196, 86, 2200, 2197, 2204, 86, 86, 2201, 2205, 86, + 2203, 2207, 86, 2209, 86, 2202, 86, 86, 2212, 86, + 2206, 86, 2211, 86, 2208, 2213, 86, 86, 86, 86, + 86, 2210, 2215, 86, 2218, 2214, 2219, 86, 2221, 86, + 86, 2216, 86, 86, 2225, 2224, 2223, 2217, 86, 2220, - 2221, 2225, 2212, 71, 71, 71, 71, 2224, 2227, 2217, - 2228, 2218, 2222, 71, 2230, 2232, 71, 71, 2233, 2229, - 71, 71, 2234, 71, 71, 2226, 71, 2231, 71, 2237, - 71, 71, 71, 2238, 71, 3070, 2236, 2239, 2243, 2240, - 2241, 2235, 2244, 71, 71, 71, 2242, 2245, 71, 71, - 71, 2248, 71, 2249, 2246, 71, 2250, 71, 2247, 71, - 2256, 71, 71, 71, 2251, 2252, 71, 2253, 2254, 71, - 71, 71, 2258, 2255, 71, 71, 71, 2257, 2259, 2263, - 2264, 71, 2262, 2267, 71, 2260, 2261, 71, 2268, 2269, - 71, 71, 71, 2266, 2265, 2270, 2271, 2272, 2273, 2274, + 86, 2222, 2227, 86, 86, 2231, 86, 86, 86, 2226, + 86, 86, 86, 2236, 86, 2229, 2235, 2228, 86, 86, + 86, 2241, 86, 2230, 2238, 2234, 86, 2232, 86, 86, + 2237, 2233, 86, 2239, 86, 2240, 2243, 86, 86, 2248, + 86, 86, 2244, 2250, 86, 86, 2242, 2251, 86, 2249, + 2245, 86, 2246, 2255, 86, 86, 2256, 2254, 86, 86, + 86, 86, 2252, 2247, 2253, 2260, 2262, 86, 2258, 2265, + 86, 86, 2263, 86, 86, 86, 2267, 86, 2268, 2257, + 2259, 86, 86, 86, 2261, 2264, 2269, 86, 86, 86, + 2271, 2272, 2266, 86, 86, 2278, 2273, 2277, 2274, 2270, - 71, 71, 71, 71, 71, 71, 2276, 71, 71, 71, - 2280, 2281, 71, 71, 2277, 2275, 71, 71, 2283, 71, - 2284, 2278, 2285, 2286, 71, 71, 2282, 2279, 71, 71, - 2287, 71, 2291, 71, 71, 2290, 71, 2288, 71, 71, - 71, 2293, 71, 71, 71, 71, 2297, 2292, 71, 2289, - 2299, 2300, 71, 2309, 2296, 71, 71, 71, 2294, 2295, - 71, 2301, 2302, 2298, 2303, 2304, 2305, 71, 71, 71, - 2307, 71, 71, 2314, 2310, 2306, 71, 2312, 71, 71, - 71, 71, 2311, 2308, 2313, 2316, 71, 71, 2318, 71, - 2315, 71, 71, 71, 71, 71, 2317, 71, 2322, 2319, + 2279, 86, 2275, 2276, 86, 86, 86, 86, 2280, 86, + 2283, 2284, 86, 2285, 166, 86, 2282, 86, 86, 2287, + 86, 2286, 2292, 86, 86, 2281, 86, 86, 86, 86, + 86, 86, 2300, 86, 2290, 2288, 2291, 2289, 2294, 2293, + 2295, 86, 2296, 2298, 2299, 2297, 86, 2303, 86, 86, + 2304, 2305, 86, 2301, 86, 86, 2308, 2306, 2302, 2309, + 2307, 86, 86, 2310, 86, 86, 86, 2312, 86, 86, + 86, 86, 2316, 2317, 86, 2311, 86, 86, 86, 86, + 2313, 2319, 2320, 2314, 86, 2322, 86, 2321, 2318, 2315, + 86, 86, 86, 2327, 86, 2323, 2326, 2325, 86, 86, - 2324, 71, 2325, 2326, 71, 2320, 2327, 71, 2321, 2328, - 71, 2329, 71, 71, 71, 71, 71, 2330, 2332, 2337, - 2323, 2335, 71, 71, 71, 71, 71, 71, 2334, 2340, - 71, 71, 2336, 2333, 2331, 71, 71, 2344, 2341, 2345, - 71, 2339, 2338, 71, 71, 71, 2342, 71, 2346, 2343, - 71, 71, 2349, 2350, 2348, 71, 71, 71, 71, 3070, - 71, 71, 2347, 2354, 2351, 2356, 2357, 71, 2353, 2352, - 2358, 71, 2359, 71, 2360, 71, 71, 2355, 71, 2362, - 71, 2364, 71, 2363, 71, 2365, 71, 71, 2361, 71, - 2370, 71, 71, 71, 2366, 2372, 71, 71, 2367, 2373, + 2324, 86, 86, 86, 2329, 86, 86, 86, 2336, 2333, + 86, 2328, 2335, 86, 86, 86, 2337, 2332, 86, 86, + 86, 2330, 2331, 2342, 2341, 86, 2334, 2339, 2343, 86, + 86, 2338, 2344, 86, 2340, 86, 2346, 86, 2351, 2345, + 2347, 86, 2349, 86, 86, 86, 86, 2350, 2353, 86, + 2355, 86, 86, 86, 86, 2354, 86, 2352, 86, 2348, + 86, 86, 86, 2359, 86, 2361, 2362, 2357, 2363, 86, + 2356, 2365, 2358, 2364, 86, 86, 2366, 86, 2367, 86, + 2360, 86, 86, 86, 2369, 2374, 2368, 2372, 86, 86, + 86, 86, 2373, 86, 2371, 2377, 86, 86, 86, 86, - 71, 71, 71, 71, 2374, 2369, 71, 2368, 2376, 2375, - 71, 2371, 71, 71, 2377, 2379, 2382, 71, 71, 71, - 71, 71, 2383, 2378, 71, 71, 2380, 71, 2389, 71, - 71, 71, 2381, 2386, 2390, 71, 71, 71, 2388, 2385, - 2396, 71, 71, 71, 2384, 2387, 2391, 2393, 2398, 71, - 2392, 71, 2394, 2406, 2399, 2397, 2400, 71, 71, 2395, - 2401, 71, 71, 2402, 71, 2403, 71, 2404, 71, 2405, - 71, 71, 71, 71, 71, 71, 71, 2407, 2414, 71, - 71, 2412, 71, 2418, 2419, 71, 71, 71, 2408, 2409, - 2422, 71, 2410, 2411, 2413, 2415, 2421, 2416, 2417, 71, + 2370, 2378, 86, 2381, 2383, 2376, 86, 2375, 2382, 86, + 86, 86, 2379, 86, 86, 2380, 2386, 86, 86, 2385, + 2387, 86, 86, 86, 2384, 86, 2391, 2388, 2389, 2390, + 2393, 2394, 86, 2395, 86, 2396, 86, 2397, 86, 86, + 86, 2399, 2392, 86, 2401, 2400, 86, 2402, 86, 86, + 86, 2398, 86, 2407, 86, 86, 2409, 86, 2410, 86, + 2403, 2404, 86, 86, 86, 86, 86, 86, 2406, 86, + 2405, 2413, 2416, 2411, 2408, 2412, 86, 2414, 2419, 86, + 86, 86, 86, 86, 86, 86, 2415, 86, 166, 2417, + 2420, 86, 2427, 86, 86, 86, 2418, 2423, 86, 2425, - 71, 2424, 71, 71, 71, 71, 71, 71, 2420, 2423, - 71, 2427, 71, 2433, 71, 2434, 71, 2425, 71, 71, - 2428, 2426, 2435, 71, 2429, 2430, 2431, 71, 71, 71, - 71, 2432, 2439, 71, 2437, 71, 2436, 2443, 2442, 2444, - 71, 71, 2438, 2445, 2446, 71, 71, 71, 71, 2440, - 2441, 71, 71, 71, 71, 71, 2448, 71, 2452, 71, - 2457, 71, 2456, 2450, 71, 2447, 71, 2449, 2460, 71, - 71, 71, 2451, 71, 2453, 2455, 2454, 2461, 71, 2458, - 2464, 71, 2463, 71, 2459, 2462, 2466, 71, 71, 2469, - 71, 71, 71, 71, 2473, 71, 2465, 2472, 71, 2475, + 2426, 86, 2422, 2428, 86, 2431, 2421, 2424, 2429, 86, + 2430, 86, 2434, 3110, 86, 86, 2436, 86, 2435, 2437, + 2432, 2438, 86, 86, 2433, 2439, 86, 86, 2440, 86, + 2441, 86, 2442, 2443, 2444, 86, 2445, 86, 86, 86, + 86, 86, 86, 86, 2452, 86, 86, 86, 2450, 86, + 2456, 2457, 86, 86, 86, 2446, 2447, 2460, 86, 2448, + 2449, 2451, 2459, 2453, 2454, 2455, 86, 2458, 2462, 86, + 86, 86, 2463, 86, 86, 2461, 86, 86, 2465, 86, + 2471, 86, 2472, 86, 2473, 86, 2474, 86, 2464, 2466, + 86, 2467, 86, 2469, 2468, 86, 86, 86, 2470, 86, - 71, 2471, 71, 2470, 71, 71, 71, 2467, 2468, 2476, - 71, 2477, 2480, 71, 71, 2481, 71, 2474, 2479, 2483, - 71, 2478, 71, 71, 71, 71, 2488, 71, 71, 2484, - 2490, 71, 2482, 2486, 2487, 2485, 71, 71, 2489, 71, - 71, 2491, 2492, 71, 71, 2494, 71, 2496, 71, 71, - 71, 2495, 2498, 2493, 2500, 2497, 71, 2503, 71, 2504, - 71, 2501, 71, 2499, 71, 2502, 71, 71, 2509, 2505, - 71, 2506, 71, 2511, 71, 2510, 71, 71, 71, 2514, - 71, 71, 2507, 2513, 2518, 2508, 2515, 71, 2517, 71, - 2516, 2512, 2519, 71, 71, 71, 2523, 2520, 71, 2521, + 3110, 2478, 86, 86, 86, 2475, 2482, 2481, 86, 2477, + 2476, 2483, 86, 86, 86, 2484, 86, 2479, 86, 2480, + 2485, 86, 2486, 2487, 86, 86, 86, 2488, 2489, 2491, + 86, 86, 2496, 86, 2495, 86, 86, 86, 2490, 2499, + 86, 2500, 86, 86, 86, 2492, 2494, 2502, 86, 2493, + 2497, 2503, 86, 86, 2498, 86, 86, 2501, 86, 2505, + 86, 2504, 2508, 86, 2511, 2512, 86, 2510, 2509, 86, + 2514, 86, 86, 2506, 86, 2507, 86, 2515, 86, 2519, + 86, 86, 2520, 2516, 86, 2522, 86, 86, 2513, 86, + 2518, 3110, 2517, 86, 86, 86, 2527, 86, 2529, 86, - 2522, 71, 71, 71, 71, 2524, 71, 71, 2525, 3070, - 2530, 2531, 71, 2526, 2529, 2528, 71, 71, 71, 71, - 71, 2527, 2535, 2532, 2533, 2534, 71, 71, 71, 71, - 71, 71, 2537, 2538, 71, 71, 71, 2543, 2536, 71, - 2541, 71, 71, 2540, 2542, 71, 71, 2539, 2544, 2548, - 71, 2550, 71, 2545, 2552, 71, 71, 71, 71, 71, - 71, 2546, 3070, 2556, 2547, 2549, 71, 2551, 2557, 71, - 2559, 2560, 2554, 2561, 2563, 2553, 71, 71, 2555, 71, - 2562, 71, 71, 71, 71, 2558, 71, 2564, 71, 71, - 2567, 71, 2565, 71, 2570, 2572, 71, 2566, 2573, 71, + 2523, 86, 2524, 2525, 2526, 86, 2521, 86, 2528, 86, + 2530, 86, 2531, 86, 2533, 2532, 86, 86, 86, 2534, + 86, 86, 2539, 86, 86, 2536, 2537, 86, 2540, 2542, + 86, 2545, 2535, 2543, 86, 2538, 2541, 2544, 166, 86, + 86, 2549, 86, 86, 2546, 2547, 86, 86, 2550, 86, + 2551, 2553, 2554, 86, 2555, 86, 86, 2552, 2548, 2557, + 86, 86, 2559, 3110, 2558, 86, 86, 2560, 86, 2556, + 2561, 2562, 2563, 86, 86, 86, 86, 2564, 86, 2565, + 86, 86, 86, 2570, 2566, 86, 2571, 2572, 2568, 86, + 86, 2567, 86, 86, 86, 2574, 2575, 2573, 86, 86, - 2574, 71, 2568, 71, 2569, 71, 71, 2575, 71, 2571, - 2576, 2577, 71, 2579, 2581, 71, 71, 71, 2584, 2582, - 71, 2585, 71, 2586, 71, 71, 2578, 2580, 2587, 71, - 71, 71, 2591, 71, 71, 2592, 2583, 2593, 71, 71, - 2595, 71, 2588, 71, 71, 71, 2599, 71, 2589, 2600, - 71, 2590, 71, 71, 2594, 2602, 2596, 2601, 71, 2598, - 2603, 71, 2597, 71, 71, 71, 2608, 2611, 71, 71, - 2604, 2607, 71, 2610, 71, 71, 71, 71, 2605, 2612, - 2614, 71, 71, 2606, 2613, 2616, 71, 71, 71, 2609, - 71, 2619, 2623, 71, 71, 71, 71, 71, 2617, 2618, + 86, 86, 2569, 2577, 2578, 86, 2576, 86, 86, 86, + 2583, 86, 86, 86, 2580, 86, 2581, 2582, 2579, 86, + 2584, 2588, 86, 86, 2585, 86, 86, 86, 2591, 2592, + 86, 86, 2586, 86, 2587, 2590, 86, 2596, 2589, 2599, + 2594, 2604, 2593, 2597, 86, 86, 2600, 2595, 2601, 2602, + 86, 86, 86, 86, 86, 86, 2598, 86, 86, 2603, + 86, 2607, 2605, 86, 2610, 86, 2612, 86, 2606, 2613, + 86, 86, 2608, 2614, 86, 2609, 86, 86, 2617, 86, + 2615, 86, 2616, 2611, 86, 86, 2619, 2621, 86, 2624, + 86, 2618, 2622, 86, 2625, 86, 2620, 2626, 86, 86, - 2615, 71, 2639, 71, 2622, 2620, 2625, 71, 2621, 2624, - 2627, 2630, 71, 2628, 2626, 2629, 2631, 71, 2633, 71, - 2632, 71, 2634, 71, 2635, 71, 2636, 71, 2637, 71, - 71, 71, 2640, 71, 71, 2645, 71, 71, 71, 71, - 2642, 2646, 2648, 71, 71, 2638, 2649, 2650, 71, 2651, - 2652, 71, 71, 2643, 2644, 2647, 2641, 71, 71, 71, - 71, 2653, 2657, 71, 2658, 71, 2654, 2655, 71, 71, - 2661, 71, 71, 71, 2659, 2662, 71, 2656, 2666, 71, - 2664, 71, 2663, 2660, 71, 2665, 2667, 71, 2668, 71, - 71, 71, 71, 2669, 71, 71, 71, 2670, 71, 2672, + 86, 86, 2627, 2628, 86, 2623, 2631, 86, 86, 2632, + 2633, 86, 2635, 86, 86, 86, 86, 2639, 2629, 2634, + 86, 2630, 86, 86, 2640, 86, 2641, 2636, 86, 2642, + 2638, 86, 86, 2637, 2643, 86, 2648, 86, 2647, 86, + 86, 86, 86, 2644, 2650, 2651, 86, 86, 2645, 2653, + 86, 2646, 2652, 2654, 86, 86, 86, 2656, 86, 86, + 86, 2659, 2649, 86, 2655, 2663, 86, 86, 86, 86, + 2665, 86, 2657, 2658, 2662, 86, 2660, 2664, 2666, 2661, + 2670, 86, 2667, 2669, 86, 2671, 86, 86, 2668, 2679, + 2672, 2673, 86, 86, 2674, 86, 2675, 86, 2676, 86, - 2677, 71, 2671, 2673, 2675, 71, 71, 71, 2678, 71, - 2680, 71, 2681, 2932, 2676, 71, 2682, 2674, 2683, 2679, - 71, 2691, 71, 2685, 71, 2684, 2686, 2687, 71, 2688, - 71, 2689, 71, 2690, 71, 71, 2694, 71, 71, 71, - 2693, 71, 71, 2695, 2696, 2697, 71, 71, 71, 71, - 2702, 71, 2700, 2692, 3070, 2698, 71, 2704, 71, 71, - 71, 71, 2699, 2705, 71, 2706, 2701, 71, 2708, 2707, - 2709, 71, 2712, 71, 2703, 71, 2710, 71, 71, 71, - 71, 71, 2715, 71, 71, 2722, 71, 71, 2713, 2716, - 2714, 2711, 2719, 71, 71, 2717, 2724, 71, 2720, 71, + 2677, 2680, 86, 2678, 86, 86, 86, 2685, 86, 86, + 86, 86, 2686, 2682, 2688, 86, 86, 2689, 2690, 86, + 86, 2691, 2692, 86, 86, 2683, 2684, 86, 2681, 2687, + 86, 2697, 86, 2693, 86, 86, 2694, 86, 2696, 2695, + 2701, 2698, 86, 2699, 86, 2702, 86, 86, 86, 86, + 2700, 2705, 86, 2704, 2706, 2703, 2707, 86, 2708, 86, + 86, 86, 2709, 86, 86, 86, 86, 2717, 86, 86, + 2712, 86, 86, 86, 2715, 2713, 2720, 2710, 2711, 86, + 2718, 86, 2722, 86, 2721, 86, 2716, 3110, 86, 2714, + 2719, 2732, 2723, 2724, 86, 2725, 2727, 86, 2726, 2728, - 2718, 2725, 71, 2727, 71, 71, 2723, 71, 71, 2721, - 71, 71, 2732, 71, 71, 2726, 2731, 71, 71, 2733, - 71, 2728, 71, 2729, 2730, 71, 2736, 2742, 2737, 2739, - 71, 71, 2741, 2734, 2744, 71, 2735, 2738, 71, 71, - 2740, 2745, 71, 2747, 71, 71, 71, 71, 2752, 71, - 71, 71, 3070, 2743, 71, 2750, 2749, 2756, 71, 2746, - 71, 71, 2754, 2748, 2757, 71, 2758, 2751, 2753, 71, - 2761, 2755, 2759, 2762, 71, 71, 71, 2764, 2763, 71, - 71, 71, 71, 71, 2769, 2766, 2767, 71, 71, 2760, - 71, 2772, 71, 71, 71, 71, 71, 2765, 2777, 71, + 86, 2729, 86, 86, 86, 2731, 86, 2734, 86, 2733, + 86, 2735, 2730, 86, 86, 2736, 2737, 86, 86, 86, + 86, 2742, 86, 2740, 2744, 86, 2738, 86, 86, 86, + 86, 86, 2745, 86, 2746, 2739, 2747, 2741, 86, 2748, + 86, 2749, 2752, 86, 86, 2743, 86, 86, 2750, 86, + 2751, 2755, 86, 2753, 86, 2756, 86, 2754, 86, 2762, + 86, 2760, 2759, 86, 86, 2757, 2764, 86, 2765, 86, + 86, 2758, 2767, 86, 86, 86, 86, 2772, 86, 86, + 86, 2771, 2763, 86, 2761, 2766, 2768, 86, 2776, 86, + 2769, 2770, 86, 2779, 86, 86, 86, 86, 2781, 2773, - 2773, 2768, 71, 71, 2770, 2771, 2780, 71, 2776, 2781, - 71, 2774, 2779, 71, 71, 2778, 2783, 71, 2782, 2775, - 2785, 71, 2784, 2786, 71, 2787, 71, 71, 2789, 71, - 71, 71, 2788, 2790, 71, 71, 2794, 2795, 71, 71, - 71, 71, 2799, 71, 2800, 71, 71, 71, 71, 2801, - 2798, 2837, 2791, 2792, 2796, 71, 2793, 71, 71, 2797, - 2805, 71, 2804, 2806, 71, 71, 2802, 2803, 2809, 71, - 2807, 71, 2808, 71, 71, 2812, 71, 71, 2813, 2811, - 71, 2810, 71, 71, 71, 71, 71, 2816, 71, 71, - 2818, 71, 71, 2819, 71, 2817, 71, 2814, 71, 71, + 86, 2782, 2775, 2774, 86, 86, 2777, 86, 2778, 2784, + 86, 2785, 86, 2787, 86, 2780, 2789, 86, 2792, 2783, + 2786, 86, 86, 86, 86, 86, 2790, 2791, 2796, 86, + 86, 2798, 86, 2788, 2794, 2797, 86, 2799, 2801, 86, + 2793, 2802, 86, 2795, 86, 86, 2804, 86, 2803, 86, + 86, 86, 86, 2809, 2806, 2807, 2800, 2805, 86, 86, + 2812, 86, 86, 86, 86, 86, 2808, 86, 2810, 2811, + 2813, 2817, 86, 2820, 86, 86, 2819, 2816, 2821, 86, + 2814, 86, 86, 86, 2818, 86, 2822, 2824, 2815, 2823, + 2825, 86, 2826, 86, 2827, 86, 86, 2829, 86, 86, - 2815, 71, 71, 2828, 2829, 2820, 71, 2824, 2821, 2822, - 2823, 2825, 2826, 2831, 71, 71, 3070, 2827, 2894, 71, - 2832, 2830, 2833, 2835, 71, 2836, 71, 2834, 2838, 71, - 2839, 71, 2840, 2841, 71, 71, 2842, 2843, 2846, 71, - 2844, 2845, 71, 71, 2847, 71, 71, 71, 71, 71, - 2853, 71, 71, 71, 2852, 71, 71, 2856, 71, 3070, - 2848, 2849, 2855, 71, 71, 2857, 2850, 71, 2851, 71, - 2861, 2862, 71, 2858, 2863, 71, 2860, 2854, 71, 2864, - 71, 2859, 2868, 2865, 2870, 71, 71, 2869, 71, 2866, - 71, 71, 2867, 71, 71, 71, 2877, 71, 2874, 2875, + 86, 2828, 2830, 86, 2834, 2835, 86, 2831, 86, 86, + 86, 2839, 86, 2840, 86, 86, 3110, 86, 2841, 2838, + 86, 2832, 2833, 2836, 86, 2844, 2845, 86, 2837, 2846, + 86, 86, 86, 2849, 86, 2842, 2843, 2847, 86, 86, + 86, 2852, 86, 2853, 86, 2848, 2850, 86, 2851, 86, + 86, 86, 86, 86, 2856, 86, 86, 2858, 86, 86, + 2859, 86, 2857, 86, 2854, 86, 86, 2855, 86, 86, + 2868, 2869, 2860, 86, 2864, 2861, 2862, 2863, 2865, 2866, + 2871, 86, 86, 3110, 2867, 2934, 86, 2872, 2870, 2873, + 2875, 86, 2876, 86, 2874, 86, 2878, 86, 86, 2877, - 2878, 2872, 71, 2880, 71, 71, 71, 71, 2879, 3070, - 2871, 2926, 2873, 71, 2876, 2881, 71, 2900, 2882, 2883, - 71, 2884, 71, 2885, 71, 2886, 71, 2887, 71, 2888, - 71, 2889, 71, 2890, 71, 71, 2892, 71, 71, 71, - 71, 71, 2897, 71, 2891, 71, 71, 2893, 71, 2901, - 2903, 71, 71, 71, 71, 2898, 2905, 71, 2899, 2895, - 2896, 2902, 71, 2907, 71, 2910, 71, 2909, 71, 71, - 2904, 71, 71, 71, 2912, 2908, 71, 71, 71, 71, - 2906, 71, 2911, 2916, 2919, 2913, 71, 2917, 71, 2915, - 2914, 2918, 2920, 2921, 71, 2922, 71, 2923, 71, 71, + 2879, 86, 2880, 2881, 86, 86, 2882, 2883, 2886, 86, + 2884, 2885, 86, 86, 2887, 86, 2888, 86, 86, 86, + 2893, 86, 86, 86, 2892, 86, 2889, 86, 86, 2896, + 2895, 86, 86, 86, 2901, 86, 2897, 2890, 2891, 2902, + 86, 2900, 86, 2898, 2903, 86, 86, 2894, 86, 2899, + 2904, 2905, 86, 2908, 86, 2910, 86, 2906, 2909, 86, + 2907, 86, 3110, 86, 86, 86, 86, 2911, 2914, 2912, + 2915, 2917, 86, 2913, 2918, 2916, 86, 2920, 86, 2938, + 86, 86, 2919, 2921, 86, 2936, 2922, 2923, 86, 2924, + 86, 2925, 86, 2926, 86, 2927, 86, 2928, 86, 2929, - 71, 71, 2928, 71, 71, 71, 71, 2934, 2925, 2924, - 2931, 71, 71, 71, 2930, 71, 71, 71, 71, 2933, - 2927, 71, 71, 71, 2929, 2935, 2941, 71, 2948, 71, - 2936, 2937, 2938, 2940, 2942, 71, 71, 71, 2950, 71, - 2939, 2945, 2943, 2944, 71, 2951, 2949, 2947, 71, 2946, - 2952, 71, 2953, 71, 71, 71, 71, 71, 2956, 71, - 71, 2957, 2958, 2961, 71, 71, 71, 2954, 71, 71, - 71, 2964, 2966, 71, 2955, 2960, 71, 2963, 2962, 2969, - 71, 71, 71, 71, 2959, 2967, 2972, 71, 2965, 71, - 2973, 2974, 71, 2976, 71, 2968, 2970, 2977, 71, 71, + 86, 2930, 86, 86, 2932, 86, 86, 86, 2937, 86, + 86, 86, 2931, 86, 86, 2933, 86, 2941, 2943, 86, + 86, 86, 86, 2939, 2945, 2940, 2942, 2935, 86, 2947, + 86, 2950, 2944, 2949, 86, 86, 86, 86, 86, 86, + 2948, 2952, 86, 86, 86, 86, 2946, 86, 2951, 2956, + 2959, 2957, 2961, 86, 2953, 2955, 2954, 86, 2960, 2958, + 2962, 86, 2963, 86, 86, 86, 86, 86, 86, 2966, + 86, 86, 86, 2965, 2972, 2971, 86, 86, 86, 2974, + 2964, 2968, 2970, 86, 86, 86, 2967, 86, 86, 2975, + 86, 2969, 2973, 86, 86, 86, 86, 2981, 86, 86, - 2971, 71, 71, 71, 2982, 71, 71, 2981, 2978, 2983, - 71, 2975, 71, 71, 2979, 71, 71, 2980, 71, 71, - 2987, 71, 71, 2989, 71, 71, 71, 2984, 71, 2986, - 2994, 2995, 2985, 2988, 2991, 2992, 2996, 71, 2990, 71, - 71, 3000, 71, 2993, 71, 3002, 71, 3003, 2997, 3001, - 71, 71, 71, 71, 3008, 3004, 71, 2998, 3005, 2999, - 71, 3006, 3009, 71, 71, 3011, 71, 71, 71, 3010, - 71, 3007, 3012, 71, 71, 3017, 71, 3014, 71, 71, - 3020, 71, 3021, 71, 71, 71, 3013, 71, 71, 3024, - 71, 3019, 3015, 3016, 3022, 3018, 71, 3023, 71, 3028, + 2978, 2985, 2976, 2977, 3110, 2980, 2982, 2988, 86, 86, + 86, 86, 2979, 2986, 2983, 2984, 2990, 86, 2987, 2989, + 86, 2991, 2992, 86, 2993, 86, 86, 86, 2994, 2996, + 86, 2995, 2997, 86, 86, 2998, 3001, 86, 86, 86, + 86, 86, 86, 86, 3004, 3006, 86, 3009, 86, 3000, + 3003, 3002, 86, 86, 3012, 86, 3007, 86, 2999, 86, + 3005, 86, 3008, 86, 3013, 3014, 3016, 3010, 3017, 86, + 86, 3011, 86, 86, 86, 3018, 86, 86, 3015, 3022, + 86, 3021, 3019, 3023, 86, 86, 86, 86, 86, 3020, + 3027, 86, 86, 3029, 3024, 86, 86, 3025, 86, 3026, - 71, 3029, 71, 3027, 71, 3032, 3025, 3026, 71, 71, - 3034, 71, 3035, 3030, 71, 71, 71, 3039, 71, 3036, - 71, 71, 3037, 3041, 71, 3040, 71, 3033, 3031, 3042, - 71, 3043, 71, 3044, 71, 3038, 71, 3048, 71, 3046, - 71, 71, 71, 71, 71, 71, 3050, 3051, 71, 3054, - 71, 3045, 3055, 71, 3070, 3047, 71, 3058, 71, 3049, - 3059, 71, 3052, 3053, 3056, 3060, 3061, 71, 71, 3057, - 3062, 71, 71, 71, 71, 3063, 71, 3064, 3065, 3068, - 71, 3069, 71, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3066, 3070, 3067, 43, 43, 43, 43, + 86, 86, 86, 3034, 86, 3031, 3035, 3028, 3032, 86, + 3030, 3036, 86, 3040, 86, 3033, 86, 3043, 86, 3042, + 3037, 3039, 3038, 3041, 86, 86, 86, 86, 3047, 3044, + 3048, 3045, 3046, 3049, 86, 86, 86, 3051, 86, 86, + 3050, 86, 86, 3052, 86, 86, 3057, 86, 86, 3054, + 86, 3060, 86, 3061, 86, 86, 86, 86, 86, 86, + 3053, 3059, 3064, 3055, 3056, 3062, 3058, 86, 3063, 86, + 3068, 86, 3067, 86, 3065, 86, 3069, 3066, 86, 3072, + 3070, 86, 3074, 86, 3075, 86, 86, 86, 3079, 86, + 3076, 86, 86, 3077, 3073, 86, 3080, 3081, 86, 3071, - 43, 43, 43, 48, 48, 48, 48, 48, 48, 48, - 53, 53, 53, 53, 53, 53, 53, 59, 59, 59, - 59, 59, 59, 59, 64, 64, 64, 64, 64, 64, - 64, 74, 74, 3070, 74, 74, 74, 74, 141, 141, - 3070, 3070, 3070, 141, 141, 143, 143, 3070, 3070, 143, - 3070, 143, 145, 3070, 3070, 3070, 3070, 3070, 145, 148, - 148, 3070, 3070, 3070, 148, 148, 150, 3070, 3070, 3070, - 3070, 3070, 150, 152, 152, 3070, 152, 152, 152, 152, - 75, 75, 3070, 75, 75, 75, 75, 13, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3082, 86, 86, 86, 86, 3083, 3078, 86, 3086, 3084, + 86, 3085, 3088, 86, 86, 3090, 86, 86, 86, 3091, + 86, 3094, 86, 3087, 3095, 86, 3089, 86, 3098, 3099, + 86, 86, 3101, 86, 86, 3092, 3093, 3096, 3100, 3102, + 86, 3097, 86, 86, 86, 86, 3108, 86, 3104, 3103, + 3105, 3109, 86, 3106, 3110, 3110, 3110, 3110, 3110, 3110, + 3110, 3110, 3110, 3107, 47, 47, 47, 47, 47, 47, + 47, 52, 52, 52, 52, 52, 52, 52, 57, 57, + 57, 57, 57, 57, 57, 63, 63, 63, 63, 63, + 63, 63, 68, 68, 68, 68, 68, 68, 68, 74, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070 + 74, 74, 74, 74, 74, 74, 80, 80, 80, 80, + 80, 80, 80, 89, 89, 3110, 89, 89, 89, 89, + 156, 156, 3110, 3110, 3110, 156, 156, 158, 158, 3110, + 3110, 158, 3110, 158, 160, 3110, 3110, 3110, 3110, 3110, + 160, 163, 163, 3110, 3110, 3110, 163, 163, 165, 3110, + 3110, 3110, 3110, 3110, 165, 167, 167, 3110, 167, 167, + 167, 167, 170, 3110, 3110, 3110, 3110, 3110, 170, 173, + 173, 3110, 3110, 3110, 173, 173, 90, 90, 3110, 90, + 90, 90, 90, 17, 3110, 3110, 3110, 3110, 3110, 3110, + 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + + 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + 3110, 3110, 3110, 3110 } ; -static const flex_int16_t yy_chk[6029] = +static const flex_int16_t yy_chk[6125] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, 4, 4, 4, 5, 5, 6, 6, - 5, 3, 6, 20, 4, 20, 20, 5, 20, 6, - 7, 7, 7, 7, 20, 7, 8, 8, 8, 8, - 29, 8, 7, 9, 9, 9, 22, 22, 8, 10, - 10, 10, 15, 25, 9, 29, 15, 25, 3076, 31, - 10, 11, 11, 11, 11, 11, 11, 19, 79, 19, + 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, + 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, + 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, + 10, 10, 19, 29, 9, 33, 19, 29, 3118, 35, + 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, - 19, 30, 19, 11, 31, 79, 30, 25, 19, 19, - 47, 47, 11, 12, 12, 12, 12, 12, 12, 21, - 23, 23, 21, 21, 24, 12, 21, 81, 23, 24, - 34, 21, 23, 24, 12, 23, 24, 1010, 24, 24, - 21, 26, 26, 27, 27, 90, 28, 81, 32, 32, - 28, 34, 27, 28, 33, 33, 26, 32, 36, 33, - 28, 35, 28, 32, 90, 42, 35, 32, 52, 84, - 35, 52, 36, 37, 37, 33, 35, 38, 37, 35, - 42, 69, 38, 63, 63, 38, 35, 84, 37, 37, - 40, 37, 38, 80, 40, 69, 38, 38, 39, 39, + 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, + 51, 51, 11, 12, 12, 12, 12, 12, 12, 14, + 14, 14, 14, 99, 14, 12, 15, 15, 15, 38, + 23, 14, 23, 23, 12, 23, 46, 15, 16, 16, + 16, 23, 23, 25, 27, 27, 25, 25, 28, 16, + 25, 46, 27, 28, 87, 25, 27, 28, 87, 27, + 28, 40, 28, 28, 25, 30, 30, 31, 31, 124, + 32, 104, 36, 36, 32, 40, 31, 32, 37, 37, + 30, 36, 124, 37, 32, 39, 32, 36, 73, 56, + 39, 36, 56, 104, 39, 92, 41, 41, 92, 37, - 126, 39, 41, 41, 40, 80, 126, 41, 40, 40, - 39, 41, 58, 89, 58, 58, 39, 58, 66, 86, - 66, 66, 68, 66, 68, 68, 71, 68, 71, 71, - 66, 71, 72, 86, 127, 89, 72, 71, 74, 77, - 74, 74, 77, 74, 78, 88, 127, 85, 78, 74, - 74, 82, 83, 87, 82, 83, 85, 92, 93, 87, - 91, 94, 99, 88, 88, 87, 91, 87, 83, 95, - 96, 92, 94, 94, 161, 102, 99, 97, 93, 91, - 94, 97, 161, 105, 98, 106, 101, 95, 96, 98, - 100, 150, 101, 100, 102, 103, 100, 112, 104, 106, + 39, 41, 73, 39, 67, 67, 43, 43, 42, 43, + 39, 41, 41, 42, 41, 44, 42, 97, 43, 44, + 97, 45, 45, 42, 43, 180, 45, 42, 42, 44, + 45, 84, 84, 44, 44, 62, 180, 62, 62, 70, + 62, 70, 70, 72, 70, 72, 72, 79, 72, 79, + 79, 70, 79, 86, 95, 86, 86, 89, 86, 89, + 89, 93, 89, 94, 86, 93, 95, 96, 89, 89, + 94, 100, 98, 2544, 103, 98, 101, 102, 105, 106, + 100, 107, 108, 102, 145, 106, 110, 96, 98, 102, + 101, 102, 103, 103, 109, 107, 111, 105, 106, 112, - 103, 104, 105, 109, 107, 104, 108, 105, 107, 100, - 100, 101, 110, 108, 111, 113, 109, 112, 114, 110, - 103, 104, 114, 115, 117, 116, 119, 111, 118, 118, - 116, 122, 120, 113, 116, 121, 120, 123, 132, 125, - 124, 115, 129, 124, 117, 120, 119, 128, 128, 129, - 121, 120, 125, 130, 124, 131, 123, 122, 124, 132, - 129, 133, 134, 135, 134, 128, 136, 137, 128, 130, - 138, 136, 140, 134, 131, 135, 139, 133, 148, 137, - 157, 139, 142, 142, 144, 134, 140, 144, 138, 146, - 154, 146, 146, 154, 146, 149, 149, 151, 157, 151, + 145, 114, 108, 112, 110, 109, 109, 113, 117, 248, + 120, 248, 113, 109, 111, 114, 115, 116, 121, 115, + 118, 119, 115, 116, 119, 118, 122, 117, 119, 120, + 122, 123, 121, 125, 120, 115, 115, 126, 123, 127, + 125, 136, 116, 128, 119, 118, 130, 129, 131, 132, + 126, 129, 134, 131, 133, 133, 136, 131, 135, 127, + 137, 128, 135, 138, 130, 139, 142, 140, 139, 132, + 141, 135, 134, 143, 143, 147, 141, 135, 142, 139, + 140, 144, 138, 139, 146, 148, 137, 149, 144, 149, + 150, 143, 151, 152, 143, 153, 147, 151, 149, 144, - 151, 152, 151, 152, 152, 155, 152, 158, 156, 159, - 155, 162, 163, 152, 156, 160, 164, 159, 165, 166, - 168, 164, 158, 156, 159, 167, 160, 163, 166, 169, - 162, 167, 167, 171, 169, 170, 170, 175, 165, 171, - 173, 172, 179, 172, 173, 168, 172, 174, 174, 173, - 176, 147, 177, 178, 173, 176, 175, 177, 180, 183, - 173, 173, 179, 172, 180, 178, 181, 182, 184, 185, - 181, 186, 182, 183, 187, 188, 192, 190, 191, 187, - 188, 185, 190, 184, 185, 194, 194, 180, 200, 186, - 189, 189, 192, 193, 189, 195, 189, 196, 191, 193, + 155, 148, 150, 146, 154, 152, 157, 157, 159, 154, + 149, 159, 1032, 153, 155, 161, 169, 161, 161, 169, + 161, 164, 164, 166, 177, 166, 166, 167, 166, 167, + 167, 171, 167, 171, 171, 175, 171, 174, 174, 167, + 175, 176, 177, 178, 179, 181, 182, 176, 183, 184, + 185, 186, 179, 181, 184, 187, 176, 188, 178, 179, + 186, 187, 187, 183, 189, 182, 190, 190, 191, 189, + 185, 192, 195, 192, 191, 193, 192, 194, 194, 193, + 196, 197, 188, 199, 193, 196, 197, 198, 200, 193, + 203, 195, 204, 192, 200, 193, 193, 201, 205, 198, - 197, 195, 206, 196, 210, 198, 199, 195, 189, 200, - 189, 198, 199, 201, 208, 206, 145, 202, 203, 201, - 197, 199, 202, 204, 203, 205, 210, 207, 212, 204, - 209, 211, 205, 207, 208, 213, 209, 214, 215, 211, - 213, 212, 216, 217, 218, 222, 214, 219, 220, 218, - 218, 221, 219, 215, 223, 221, 224, 226, 216, 225, - 223, 229, 233, 217, 227, 225, 220, 222, 228, 227, - 228, 230, 235, 231, 224, 224, 232, 226, 230, 231, - 229, 233, 232, 234, 235, 236, 237, 237, 239, 234, - 238, 238, 240, 242, 239, 241, 243, 241, 240, 236, + 202, 201, 206, 199, 203, 202, 207, 204, 211, 208, + 205, 207, 217, 205, 208, 209, 209, 200, 210, 209, + 206, 209, 212, 210, 213, 214, 214, 220, 211, 173, + 213, 215, 217, 209, 216, 209, 218, 215, 212, 219, + 216, 221, 218, 215, 222, 219, 223, 221, 220, 222, + 224, 225, 223, 226, 219, 227, 224, 228, 225, 229, + 230, 227, 231, 232, 233, 229, 226, 237, 235, 233, + 231, 234, 236, 238, 240, 242, 232, 228, 238, 238, + 234, 239, 230, 235, 243, 241, 239, 237, 236, 241, + 243, 244, 240, 245, 246, 247, 249, 242, 250, 245, - 245, 243, 246, 244, 247, 249, 248, 250, 143, 260, - 246, 248, 239, 250, 241, 244, 242, 251, 256, 245, - 252, 253, 255, 251, 247, 252, 253, 254, 249, 257, - 258, 259, 256, 254, 260, 261, 263, 255, 263, 259, - 262, 261, 266, 262, 258, 264, 264, 257, 265, 267, - 267, 265, 268, 268, 269, 271, 270, 272, 271, 273, - 266, 272, 275, 274, 283, 277, 276, 277, 273, 274, - 269, 270, 276, 278, 279, 284, 275, 281, 279, 278, - 280, 280, 281, 282, 283, 285, 286, 287, 287, 282, - 289, 288, 290, 284, 288, 279, 290, 291, 296, 286, + 247, 251, 252, 253, 255, 250, 254, 251, 252, 244, + 244, 256, 254, 262, 246, 249, 255, 257, 257, 258, + 258, 259, 253, 260, 261, 256, 261, 259, 263, 260, + 264, 265, 266, 263, 267, 269, 262, 172, 280, 268, + 266, 270, 264, 261, 268, 259, 271, 270, 272, 274, + 265, 273, 271, 272, 267, 274, 273, 275, 269, 276, + 277, 278, 279, 280, 282, 281, 283, 282, 283, 286, + 279, 281, 275, 276, 289, 278, 284, 284, 277, 285, + 287, 287, 285, 288, 288, 290, 291, 286, 292, 291, + 289, 294, 292, 293, 295, 296, 297, 294, 297, 298, - 292, 293, 293, 294, 295, 297, 285, 295, 289, 298, - 296, 297, 298, 299, 301, 302, 291, 303, 292, 315, - 315, 294, 303, 301, 295, 299, 300, 304, 305, 306, - 304, 305, 304, 302, 309, 300, 141, 307, 300, 309, - 309, 311, 306, 300, 300, 300, 300, 312, 304, 307, - 308, 310, 308, 308, 310, 313, 314, 318, 311, 317, - 317, 311, 312, 316, 313, 314, 319, 320, 316, 321, - 322, 319, 318, 327, 323, 324, 336, 336, 329, 320, - 70, 324, 325, 325, 329, 325, 328, 330, 321, 323, - 322, 328, 330, 327, 325, 331, 332, 333, 335, 332, + 290, 296, 293, 299, 304, 298, 301, 299, 295, 300, + 300, 301, 302, 303, 305, 306, 307, 307, 302, 309, + 308, 310, 304, 308, 299, 310, 311, 363, 306, 312, + 313, 313, 314, 303, 316, 305, 315, 309, 317, 315, + 318, 319, 321, 318, 317, 311, 316, 312, 363, 322, + 314, 321, 325, 319, 323, 325, 315, 320, 324, 323, + 326, 324, 328, 324, 328, 328, 320, 322, 327, 320, + 331, 332, 333, 326, 320, 320, 320, 320, 329, 324, + 327, 333, 330, 329, 329, 330, 332, 331, 334, 336, + 331, 335, 335, 338, 336, 337, 337, 334, 339, 340, - 331, 332, 334, 337, 342, 334, 331, 335, 346, 337, - 339, 333, 338, 338, 343, 339, 340, 344, 334, 340, - 349, 334, 346, 334, 342, 340, 568, 345, 348, 340, - 351, 348, 344, 568, 349, 343, 356, 340, 341, 341, - 352, 341, 345, 357, 354, 351, 353, 348, 355, 352, - 354, 353, 353, 361, 341, 356, 359, 341, 357, 341, - 360, 341, 350, 358, 350, 350, 360, 362, 363, 355, - 365, 366, 358, 368, 350, 359, 350, 350, 350, 361, - 364, 350, 363, 367, 369, 370, 364, 362, 368, 369, - 364, 366, 371, 365, 372, 372, 373, 374, 371, 375, + 341, 342, 343, 339, 344, 347, 345, 345, 338, 345, + 344, 340, 353, 356, 356, 348, 349, 343, 345, 341, + 348, 342, 349, 350, 351, 347, 353, 352, 350, 351, + 352, 354, 352, 355, 354, 351, 359, 357, 358, 358, + 362, 359, 355, 357, 364, 360, 365, 354, 360, 366, + 354, 369, 354, 368, 360, 372, 368, 375, 360, 364, + 362, 365, 371, 366, 372, 369, 360, 361, 361, 373, + 361, 378, 368, 374, 373, 373, 376, 371, 375, 374, + 378, 377, 379, 361, 382, 381, 361, 170, 361, 386, + 361, 370, 380, 370, 370, 376, 377, 385, 380, 383, - 370, 376, 377, 367, 378, 379, 381, 376, 382, 374, - 379, 380, 380, 375, 380, 383, 373, 385, 384, 385, - 378, 386, 388, 388, 382, 386, 381, 377, 389, 387, - 390, 383, 384, 387, 391, 392, 396, 385, 393, 397, - 394, 396, 395, 397, 400, 390, 398, 389, 387, 394, - 391, 395, 393, 392, 405, 398, 403, 399, 401, 403, - 394, 64, 394, 399, 401, 400, 402, 404, 406, 406, - 402, 407, 404, 409, 405, 408, 408, 410, 409, 411, - 411, 412, 413, 414, 407, 415, 413, 412, 416, 417, - 410, 418, 418, 416, 417, 419, 420, 421, 414, 422, + 388, 379, 384, 370, 382, 370, 370, 370, 384, 386, + 370, 381, 384, 383, 387, 388, 389, 390, 391, 393, + 385, 389, 392, 392, 391, 394, 395, 396, 397, 398, + 399, 401, 390, 396, 387, 399, 402, 394, 403, 393, + 395, 400, 400, 404, 400, 398, 405, 410, 405, 408, + 408, 401, 402, 397, 403, 406, 407, 404, 409, 406, + 407, 415, 410, 411, 412, 414, 405, 413, 416, 418, + 415, 420, 417, 416, 414, 407, 417, 409, 418, 411, + 419, 413, 412, 421, 422, 414, 419, 414, 422, 421, + 423, 424, 420, 423, 425, 427, 424, 426, 426, 428, - 418, 423, 425, 427, 423, 424, 415, 419, 427, 424, - 428, 422, 426, 426, 425, 421, 420, 429, 429, 430, - 432, 432, 433, 437, 434, 435, 436, 439, 440, 443, - 441, 428, 434, 442, 435, 437, 444, 446, 443, 442, - 452, 430, 444, 433, 441, 439, 436, 439, 440, 445, - 447, 446, 448, 449, 445, 448, 450, 451, 447, 453, - 452, 447, 453, 451, 454, 455, 458, 449, 456, 457, - 454, 450, 459, 456, 461, 460, 459, 462, 463, 455, - 460, 464, 462, 465, 468, 484, 484, 458, 454, 461, - 469, 457, 471, 470, 463, 473, 465, 470, 472, 473, + 428, 429, 430, 431, 431, 432, 429, 434, 427, 433, + 435, 432, 436, 433, 425, 430, 437, 436, 438, 438, + 439, 437, 434, 440, 441, 442, 443, 438, 445, 443, + 444, 435, 439, 447, 444, 446, 446, 442, 447, 448, + 445, 450, 441, 440, 449, 449, 452, 452, 453, 454, + 455, 456, 457, 460, 459, 462, 461, 454, 463, 455, + 448, 462, 464, 450, 457, 466, 472, 463, 464, 453, + 461, 456, 459, 460, 459, 465, 467, 469, 468, 466, + 465, 468, 470, 471, 467, 473, 472, 467, 473, 471, + 474, 469, 475, 476, 477, 481, 474, 470, 476, 478, - 464, 466, 466, 474, 468, 469, 480, 466, 474, 466, - 475, 471, 474, 476, 472, 466, 477, 466, 476, 478, - 466, 466, 480, 479, 482, 475, 483, 466, 478, 479, - 481, 485, 477, 481, 479, 477, 486, 486, 487, 488, - 489, 490, 491, 492, 494, 493, 483, 482, 492, 501, - 495, 488, 496, 487, 493, 489, 485, 498, 496, 502, - 490, 501, 500, 494, 491, 495, 498, 499, 500, 503, - 504, 499, 505, 506, 502, 507, 508, 510, 509, 507, - 509, 511, 511, 513, 504, 510, 512, 505, 503, 508, - 514, 506, 512, 515, 516, 513, 514, 516, 517, 518, + 479, 483, 480, 482, 479, 484, 475, 480, 482, 485, + 481, 490, 488, 489, 474, 490, 477, 483, 491, 492, + 478, 495, 485, 493, 484, 486, 486, 493, 489, 494, + 497, 486, 488, 486, 494, 492, 495, 491, 494, 486, + 500, 486, 496, 498, 486, 486, 497, 496, 499, 497, + 501, 486, 498, 501, 499, 502, 500, 503, 505, 499, + 504, 504, 506, 506, 507, 510, 509, 511, 508, 512, + 515, 514, 519, 513, 512, 165, 519, 503, 502, 507, + 508, 509, 513, 505, 510, 515, 516, 518, 520, 511, + 514, 521, 516, 522, 520, 523, 518, 524, 525, 526, - 520, 519, 521, 520, 522, 515, 519, 525, 525, 524, - 523, 521, 517, 527, 518, 523, 523, 531, 521, 527, - 522, 521, 524, 526, 526, 528, 528, 529, 529, 530, - 532, 533, 534, 532, 535, 530, 533, 536, 531, 537, - 536, 538, 535, 539, 537, 540, 541, 543, 544, 540, - 542, 534, 541, 544, 542, 545, 547, 546, 548, 550, - 553, 547, 539, 546, 538, 543, 549, 551, 551, 549, - 552, 557, 548, 556, 549, 545, 553, 550, 549, 554, - 555, 560, 59, 559, 554, 555, 557, 556, 552, 559, - 560, 561, 562, 563, 561, 566, 562, 564, 563, 565, + 527, 530, 528, 521, 527, 529, 532, 529, 522, 530, + 533, 524, 532, 525, 523, 528, 535, 526, 531, 531, + 534, 536, 533, 537, 536, 538, 534, 539, 535, 541, + 540, 542, 539, 540, 545, 545, 543, 537, 541, 544, + 538, 543, 543, 546, 546, 541, 551, 542, 541, 547, + 548, 548, 544, 549, 549, 547, 550, 552, 553, 554, + 552, 555, 550, 553, 558, 556, 557, 551, 556, 555, + 559, 557, 560, 561, 563, 564, 560, 562, 554, 561, + 564, 562, 565, 567, 566, 568, 570, 558, 567, 559, + 566, 572, 563, 569, 571, 571, 569, 573, 574, 568, - 564, 567, 569, 570, 565, 571, 572, 572, 570, 574, - 575, 566, 573, 576, 578, 569, 54, 577, 562, 567, - 578, 573, 576, 584, 579, 571, 575, 612, 574, 577, - 579, 580, 581, 581, 580, 581, 582, 583, 585, 582, - 586, 584, 583, 587, 588, 612, 586, 596, 587, 592, - 588, 589, 585, 590, 589, 591, 593, 595, 590, 594, - 591, 591, 592, 595, 594, 597, 596, 598, 599, 593, - 600, 600, 598, 601, 597, 604, 603, 608, 594, 594, - 601, 602, 603, 613, 602, 605, 606, 604, 599, 610, - 605, 606, 606, 607, 607, 609, 611, 609, 611, 602, + 576, 569, 565, 574, 570, 569, 575, 577, 580, 572, + 579, 575, 581, 573, 576, 581, 579, 580, 584, 582, + 583, 584, 577, 582, 585, 583, 586, 588, 587, 585, + 589, 590, 591, 595, 588, 593, 590, 592, 592, 594, + 163, 596, 586, 589, 593, 582, 587, 597, 598, 595, + 596, 599, 591, 600, 598, 604, 600, 599, 594, 597, + 601, 601, 602, 601, 603, 602, 605, 607, 606, 603, + 608, 616, 607, 604, 606, 609, 608, 610, 609, 611, + 605, 612, 610, 613, 611, 611, 614, 615, 617, 619, + 616, 614, 630, 615, 612, 618, 613, 617, 620, 620, - 614, 613, 608, 615, 616, 617, 618, 619, 610, 624, - 618, 617, 620, 621, 622, 623, 619, 626, 614, 627, - 625, 624, 615, 626, 616, 628, 629, 620, 621, 630, - 633, 632, 622, 627, 623, 625, 631, 628, 634, 635, - 631, 636, 637, 639, 639, 629, 633, 637, 630, 632, - 638, 640, 641, 643, 642, 640, 634, 635, 635, 645, - 636, 644, 646, 647, 638, 642, 644, 643, 649, 651, - 648, 641, 650, 649, 651, 645, 647, 648, 652, 650, - 653, 646, 654, 652, 655, 656, 657, 659, 658, 654, - 662, 660, 659, 655, 660, 657, 663, 661, 653, 656, + 618, 621, 624, 628, 622, 614, 614, 622, 621, 619, + 623, 630, 625, 626, 624, 632, 623, 625, 626, 626, + 627, 627, 622, 629, 631, 629, 631, 633, 628, 634, + 635, 636, 637, 632, 639, 638, 642, 640, 637, 638, + 641, 643, 645, 639, 644, 633, 648, 634, 647, 635, + 649, 636, 640, 646, 642, 641, 644, 645, 648, 646, + 643, 650, 647, 651, 652, 653, 654, 651, 655, 649, + 656, 657, 659, 659, 658, 660, 657, 661, 663, 660, + 650, 653, 652, 662, 654, 664, 655, 655, 658, 656, + 664, 665, 663, 666, 662, 667, 661, 668, 669, 670, - 658, 661, 664, 666, 662, 663, 665, 667, 667, 668, - 668, 669, 669, 670, 672, 673, 674, 664, 668, 675, - 665, 673, 670, 675, 666, 676, 677, 678, 679, 682, - 680, 683, 681, 672, 679, 684, 674, 676, 680, 681, - 693, 705, 690, 687, 694, 678, 705, 682, 695, 693, - 694, 677, 697, 697, 700, 684, 683, 685, 687, 690, - 699, 696, 685, 702, 695, 696, 685, 698, 698, 685, - 701, 699, 700, 706, 703, 707, 685, 685, 720, 685, - 703, 708, 53, 702, 701, 704, 704, 704, 709, 704, - 720, 709, 704, 707, 706, 710, 710, 704, 711, 712, + 671, 673, 675, 669, 668, 671, 670, 665, 667, 672, + 674, 675, 666, 676, 672, 677, 678, 674, 679, 673, + 682, 684, 680, 679, 677, 680, 681, 676, 678, 683, + 681, 685, 686, 692, 682, 694, 684, 690, 683, 687, + 687, 688, 688, 689, 689, 685, 690, 695, 693, 696, + 688, 695, 692, 686, 693, 694, 697, 698, 699, 700, + 702, 696, 701, 703, 699, 704, 714, 700, 707, 701, + 710, 713, 714, 716, 715, 698, 162, 716, 702, 720, + 713, 697, 719, 707, 722, 704, 721, 710, 703, 705, + 715, 717, 717, 719, 705, 718, 718, 720, 705, 723, - 712, 713, 721, 704, 704, 711, 708, 714, 714, 715, - 716, 722, 717, 716, 715, 722, 713, 717, 718, 718, - 719, 721, 719, 723, 725, 724, 726, 726, 728, 730, - 727, 732, 725, 729, 729, 733, 731, 735, 735, 746, - 746, 733, 728, 723, 724, 727, 734, 730, 731, 736, - 739, 734, 738, 732, 736, 736, 739, 738, 740, 743, - 741, 742, 743, 744, 740, 741, 745, 742, 748, 744, - 747, 747, 749, 750, 745, 751, 748, 752, 750, 753, - 753, 755, 751, 754, 757, 756, 759, 761, 760, 755, - 749, 756, 754, 762, 767, 759, 752, 760, 762, 763, + 721, 705, 725, 727, 722, 723, 726, 725, 705, 705, + 728, 705, 724, 724, 724, 729, 724, 730, 729, 724, + 160, 727, 730, 730, 724, 731, 733, 726, 732, 732, + 724, 724, 731, 734, 734, 728, 736, 735, 737, 736, + 740, 733, 735, 737, 738, 738, 739, 741, 739, 742, + 743, 745, 740, 742, 744, 746, 746, 747, 750, 745, + 748, 749, 749, 751, 752, 753, 741, 755, 755, 158, + 743, 753, 747, 744, 748, 751, 750, 754, 756, 156, + 758, 759, 754, 756, 756, 758, 752, 759, 760, 763, + 761, 762, 763, 764, 760, 761, 765, 762, 768, 764, - 765, 764, 766, 757, 764, 765, 768, 769, 763, 771, - 771, 761, 770, 772, 773, 768, 766, 770, 770, 767, - 769, 774, 775, 776, 780, 778, 776, 778, 772, 782, - 774, 779, 779, 773, 776, 781, 783, 784, 785, 786, - 781, 788, 787, 789, 790, 780, 775, 789, 791, 792, - 782, 787, 793, 794, 795, 792, 783, 784, 796, 786, - 785, 793, 790, 797, 788, 794, 798, 791, 801, 797, - 799, 803, 796, 795, 802, 799, 800, 800, 804, 805, - 798, 806, 807, 802, 808, 813, 804, 809, 801, 810, - 812, 803, 811, 809, 814, 810, 812, 817, 818, 805, + 766, 766, 767, 767, 765, 769, 768, 770, 771, 772, + 773, 773, 770, 774, 776, 771, 775, 777, 779, 781, + 776, 780, 774, 769, 775, 783, 782, 779, 772, 784, + 780, 782, 784, 785, 783, 786, 777, 787, 785, 788, + 789, 790, 792, 781, 791, 791, 790, 790, 788, 786, + 793, 794, 795, 789, 798, 796, 798, 792, 796, 800, + 794, 802, 787, 799, 799, 801, 796, 803, 804, 793, + 801, 805, 806, 808, 807, 809, 795, 810, 811, 809, + 800, 815, 802, 807, 812, 813, 814, 803, 804, 816, + 812, 821, 806, 805, 813, 810, 808, 811, 814, 817, - 814, 807, 815, 806, 808, 813, 811, 816, 815, 819, - 818, 816, 820, 824, 819, 822, 817, 825, 818, 821, - 821, 822, 823, 826, 827, 823, 828, 828, 829, 826, - 825, 824, 830, 820, 831, 831, 832, 830, 833, 834, - 834, 835, 833, 837, 827, 836, 829, 838, 837, 840, - 841, 832, 843, 844, 846, 846, 847, 849, 849, 48, - 847, 848, 850, 835, 841, 836, 838, 851, 852, 869, - 869, 851, 843, 840, 844, 845, 848, 854, 845, 853, - 845, 855, 854, 852, 845, 857, 845, 850, 859, 861, - 858, 845, 856, 853, 858, 855, 845, 856, 856, 857, + 815, 818, 819, 816, 822, 817, 823, 819, 820, 820, + 824, 821, 825, 822, 826, 818, 827, 828, 824, 829, + 831, 830, 832, 833, 834, 829, 823, 830, 832, 837, + 834, 85, 825, 835, 831, 827, 826, 828, 836, 835, + 838, 839, 836, 833, 840, 842, 839, 847, 837, 841, + 841, 842, 838, 843, 844, 845, 843, 846, 848, 848, + 838, 849, 852, 846, 850, 840, 855, 847, 845, 850, + 851, 856, 844, 858, 853, 851, 851, 852, 853, 849, + 854, 854, 857, 860, 861, 863, 867, 857, 855, 864, + 867, 856, 858, 866, 866, 869, 869, 868, 861, 870, - 860, 861, 862, 859, 863, 860, 858, 862, 864, 865, - 866, 867, 872, 868, 873, 860, 866, 867, 863, 868, - 870, 871, 874, 865, 876, 870, 877, 871, 904, 864, - 878, 877, 881, 873, 872, 882, 876, 881, 879, 883, - 874, 875, 875, 882, 878, 880, 880, 875, 904, 875, - 879, 884, 885, 883, 887, 875, 886, 886, 887, 889, - 875, 875, 891, 890, 892, 889, 890, 875, 893, 895, - 884, 885, 43, 894, 893, 897, 898, 892, 894, 899, - 900, 891, 901, 902, 897, 898, 900, 903, 895, 905, - 906, 901, 903, 907, 910, 899, 911, 908, 909, 914, + 871, 873, 872, 874, 871, 863, 80, 860, 874, 875, + 864, 865, 868, 876, 865, 873, 865, 872, 876, 876, + 865, 877, 865, 875, 870, 878, 881, 865, 879, 878, + 883, 880, 865, 884, 882, 877, 880, 885, 881, 882, + 890, 878, 886, 879, 883, 890, 880, 887, 886, 888, + 892, 885, 891, 887, 884, 888, 889, 889, 891, 893, + 897, 894, 896, 898, 899, 897, 900, 900, 901, 75, + 903, 904, 892, 901, 896, 902, 899, 898, 893, 894, + 895, 895, 905, 902, 903, 907, 895, 908, 895, 907, + 904, 906, 906, 912, 895, 911, 910, 913, 911, 895, - 910, 917, 902, 905, 916, 907, 908, 909, 912, 918, - 906, 919, 920, 911, 912, 914, 921, 922, 916, 923, - 927, 917, 922, 930, 923, 919, 932, 926, 918, 927, - 920, 921, 926, 928, 928, 929, 930, 935, 933, 936, - 935, 929, 932, 933, 933, 934, 934, 937, 938, 934, - 939, 941, 940, 936, 942, 943, 944, 945, 946, 947, - 942, 950, 944, 946, 938, 940, 941, 937, 939, 953, - 14, 949, 945, 947, 949, 943, 951, 956, 952, 954, - 959, 951, 950, 952, 954, 953, 955, 958, 960, 956, - 964, 955, 961, 958, 960, 963, 959, 967, 961, 962, + 895, 905, 910, 914, 916, 918, 895, 908, 915, 914, + 913, 919, 912, 915, 918, 920, 921, 922, 923, 924, + 919, 925, 921, 916, 924, 926, 922, 927, 928, 929, + 931, 920, 932, 930, 937, 935, 931, 923, 929, 926, + 928, 925, 930, 938, 933, 939, 940, 927, 937, 932, + 933, 935, 941, 942, 943, 74, 944, 947, 948, 943, + 940, 944, 947, 938, 939, 949, 949, 948, 942, 950, + 941, 951, 953, 954, 958, 950, 955, 955, 954, 954, + 955, 957, 956, 959, 951, 956, 960, 961, 953, 964, + 962, 963, 965, 966, 958, 957, 967, 963, 965, 959, - 962, 968, 965, 969, 963, 965, 966, 966, 964, 970, - 972, 971, 970, 973, 979, 967, 972, 974, 980, 973, - 968, 975, 974, 969, 971, 976, 975, 977, 981, 986, - 976, 982, 979, 977, 981, 984, 982, 985, 980, 983, - 983, 987, 988, 990, 984, 988, 985, 986, 989, 991, - 992, 989, 993, 994, 990, 995, 999, 996, 997, 994, - 987, 995, 992, 997, 998, 998, 1000, 991, 1003, 1001, - 1002, 993, 996, 1004, 1002, 999, 1005, 1006, 1008, 1011, - 1000, 1001, 1004, 1009, 1009, 1012, 1003, 1013, 1017, 1014, - 1016, 1016, 1015, 1011, 1014, 1005, 13, 1008, 1018, 1013, + 961, 967, 968, 970, 960, 962, 970, 971, 966, 964, + 972, 974, 973, 975, 976, 972, 968, 973, 975, 976, + 977, 980, 985, 979, 981, 982, 984, 974, 971, 979, + 981, 982, 977, 983, 983, 984, 986, 980, 988, 986, + 985, 987, 987, 989, 990, 991, 992, 993, 991, 994, + 1000, 1001, 995, 993, 68, 994, 988, 995, 996, 992, + 997, 998, 989, 996, 990, 997, 1002, 998, 1000, 1003, + 1005, 1001, 1002, 1006, 1003, 1004, 1004, 1007, 1008, 1005, + 1009, 1010, 1006, 1009, 1010, 1011, 1012, 1013, 1014, 1020, + 1017, 63, 1015, 1027, 1016, 1007, 1011, 1008, 1015, 1013, - 1012, 1015, 1006, 1019, 1018, 1020, 1023, 1022, 1017, 1019, - 1020, 1021, 1022, 1021, 1024, 1026, 1025, 1027, 1028, 1029, - 1023, 1025, 1030, 1032, 1032, 1028, 1033, 1034, 1024, 1035, - 1026, 1036, 1037, 1145, 1029, 1145, 1027, 1036, 1040, 1040, - 1033, 1030, 1038, 1041, 1035, 1034, 1043, 1038, 1041, 1042, - 1042, 1044, 1037, 1043, 1045, 1046, 1038, 1045, 1038, 1047, - 1048, 1038, 1049, 1050, 1052, 1044, 1051, 1049, 1053, 1048, - 1058, 1051, 1055, 1055, 1046, 1052, 1056, 1047, 1057, 1059, - 1064, 1056, 1050, 1057, 1059, 1060, 1061, 1053, 1062, 1060, - 1058, 1063, 1065, 1066, 1067, 1061, 1069, 1068, 1070, 1064, + 1016, 1018, 1019, 1019, 1012, 1017, 1018, 1014, 1020, 1021, + 1022, 1023, 1024, 1026, 1029, 1023, 1025, 1031, 1027, 1030, + 1030, 1033, 1022, 1021, 1034, 1025, 1035, 1037, 1039, 1036, + 1024, 1045, 1026, 1029, 1036, 1033, 1037, 1031, 1035, 1034, + 1038, 1038, 1042, 1040, 1041, 1045, 1046, 1042, 1039, 1040, + 1041, 1043, 1044, 1043, 1047, 1048, 1049, 1044, 1050, 1047, + 1046, 1051, 1052, 1054, 1054, 1050, 1055, 1056, 1057, 1059, + 1048, 1058, 1062, 1062, 1060, 1049, 1051, 1058, 1068, 1060, + 1055, 1052, 1063, 1057, 1066, 1056, 1069, 1063, 1060, 1059, + 1060, 1064, 1064, 1060, 1065, 1072, 1067, 1068, 1066, 1067, - 1071, 1067, 1073, 1062, 1065, 1072, 1063, 1074, 1066, 1068, - 1075, 1072, 1076, 1081, 1078, 1069, 1080, 1073, 1071, 1070, - 1078, 1076, 1079, 1082, 1080, 1083, 1084, 1074, 1082, 1085, - 1075, 1084, 1084, 1081, 1087, 1086, 1079, 1083, 1088, 1088, - 1090, 0, 1091, 1093, 1093, 1095, 1092, 1087, 1085, 1086, - 1089, 1091, 1092, 1090, 1095, 1089, 1094, 1097, 1089, 1089, - 1096, 1094, 1097, 1089, 1100, 1098, 1096, 1099, 1099, 1089, - 1098, 1101, 1101, 1089, 1102, 1103, 1104, 1102, 1105, 1102, - 1106, 1107, 1108, 1109, 1110, 1100, 1107, 1105, 1112, 1147, - 1110, 1111, 1147, 1112, 1104, 1103, 1108, 1111, 1113, 1114, + 1070, 1065, 1071, 1073, 1069, 1074, 1075, 1071, 1073, 1070, + 1077, 1077, 1078, 1079, 1072, 1080, 1074, 1078, 1079, 1081, + 1083, 1084, 1082, 1085, 1081, 1075, 1082, 1086, 1087, 1083, + 1088, 1090, 1089, 1091, 1092, 1080, 1084, 1096, 1085, 1089, + 1087, 1093, 1094, 1090, 1097, 1088, 1086, 1095, 1094, 1098, + 1100, 1101, 1091, 1102, 1104, 1092, 1100, 1096, 1098, 1093, + 1103, 1106, 1095, 1108, 1097, 1105, 1101, 1102, 1103, 1109, + 1105, 1107, 1110, 1106, 1104, 1113, 1107, 1107, 1111, 1111, + 1114, 1115, 1108, 1109, 1119, 1110, 1112, 1115, 1113, 1114, + 1119, 1112, 1116, 1116, 1112, 1112, 1117, 1118, 1120, 1112, - 1106, 1109, 1113, 1115, 1115, 1117, 1116, 1116, 1114, 1116, - 1119, 1120, 1121, 1114, 1119, 1114, 1117, 1114, 1122, 1114, - 1125, 1127, 1124, 1123, 1128, 1129, 1120, 1122, 1123, 1123, - 1121, 1124, 1126, 1128, 1130, 1127, 1131, 1126, 1134, 1132, - 1133, 1133, 1125, 1135, 1129, 1132, 1134, 1136, 1137, 1138, - 1131, 1139, 1136, 1130, 1140, 1141, 1143, 1135, 1138, 1149, - 1141, 1150, 1137, 1142, 1142, 1144, 1144, 1148, 1152, 1139, - 1150, 1143, 1148, 1151, 1151, 1153, 1153, 1155, 1149, 1140, - 1154, 1154, 1155, 1156, 1157, 1158, 1158, 1159, 1152, 1160, - 1161, 1162, 1160, 1163, 1165, 1164, 1162, 1164, 1167, 1168, + 1123, 1117, 1121, 1120, 1126, 1112, 1118, 1121, 1127, 1112, + 1122, 1122, 1124, 1124, 1125, 1129, 1128, 1125, 1130, 1125, + 1131, 1123, 1132, 1130, 1126, 1128, 1127, 1133, 1138, 1138, + 1134, 58, 1135, 1133, 1131, 1129, 1134, 1135, 1136, 1137, + 1132, 1140, 1136, 1139, 1139, 1142, 1139, 1143, 1137, 1142, + 1144, 1145, 1140, 1137, 1148, 1137, 1147, 1137, 1146, 1137, + 1145, 1149, 1143, 1146, 1146, 1147, 1149, 1150, 1144, 1151, + 1152, 1153, 1154, 1155, 1156, 1156, 1148, 1157, 1151, 1155, + 1158, 1150, 1159, 1160, 1161, 1157, 1154, 1159, 1162, 1152, + 1153, 1163, 1166, 1161, 1158, 1164, 1172, 1160, 1165, 1165, - 0, 1167, 1163, 1169, 1156, 1157, 1170, 1159, 1169, 1172, - 1161, 1171, 1165, 1173, 1168, 1177, 1171, 1172, 1173, 1174, - 1170, 1175, 1175, 1176, 1174, 1178, 1180, 1179, 1176, 1182, - 1183, 1178, 1184, 1177, 1179, 1182, 1183, 1184, 1185, 1180, - 1186, 1187, 1188, 1190, 1185, 1189, 1189, 1192, 1193, 1186, - 1194, 1195, 1196, 1188, 1199, 1198, 1194, 1195, 1196, 1200, - 1187, 1198, 1205, 1190, 1201, 1203, 1202, 1192, 1199, 1204, - 1204, 1193, 1206, 1207, 1199, 1210, 1201, 1209, 1209, 1200, - 1202, 1208, 1205, 1203, 1211, 1213, 1208, 1214, 1215, 1211, - 1216, 1207, 1214, 1214, 1217, 1218, 1219, 1206, 1210, 1216, + 1164, 1167, 1167, 1168, 1171, 1168, 1162, 1166, 1170, 1171, + 1173, 1170, 1174, 1174, 1175, 1172, 1163, 1176, 1176, 1173, + 1177, 1177, 1178, 1179, 1180, 1181, 1181, 1178, 1182, 1183, + 1184, 1185, 1183, 1186, 1175, 1187, 1185, 1187, 1188, 1191, + 1190, 1192, 1186, 1190, 1179, 1180, 1192, 1193, 1182, 1200, + 1184, 1195, 1194, 1196, 1191, 1197, 1188, 1194, 1196, 1195, + 1197, 1193, 1198, 1198, 1199, 1201, 1202, 1200, 1203, 1199, + 1205, 1201, 1206, 1202, 1207, 1209, 1205, 1208, 1206, 1207, + 1210, 1203, 1211, 1208, 1209, 1212, 1212, 1213, 1215, 1216, + 1217, 1218, 1219, 1211, 1220, 1222, 1223, 1218, 1219, 1210, - 1220, 1222, 1217, 1222, 1213, 1221, 1215, 1223, 1225, 1218, - 1221, 1219, 1226, 1221, 1225, 1220, 1226, 1227, 1220, 1228, - 1229, 1223, 1230, 1231, 1228, 1228, 1232, 1233, 1227, 1234, - 1235, 1232, 1237, 1238, 1234, 1239, 1240, 1240, 1241, 1229, - 1242, 1231, 1241, 1243, 1245, 1233, 1237, 1246, 1230, 1244, - 1235, 1238, 1248, 1239, 1247, 1244, 1245, 1249, 1242, 1250, - 1251, 1254, 1243, 1252, 1253, 1251, 1246, 1248, 1247, 1253, - 1252, 1255, 1249, 1256, 1256, 1257, 1258, 1259, 1250, 1254, - 1255, 1260, 1258, 1261, 1269, 1262, 1260, 1263, 1263, 1261, - 1257, 1262, 1264, 1264, 1266, 1266, 1267, 1268, 1259, 1270, + 1220, 1222, 1224, 1215, 1226, 1225, 1227, 1213, 1229, 1216, + 1223, 1228, 1228, 1217, 1230, 1231, 1223, 1225, 1226, 1234, + 1232, 1237, 1224, 1239, 1227, 1232, 1233, 1233, 1229, 1235, + 1238, 1242, 1243, 1231, 1235, 1238, 1238, 1240, 1244, 1230, + 1237, 1239, 1234, 1241, 1245, 1242, 1240, 1243, 1246, 1245, + 1246, 1241, 1245, 1244, 1247, 1249, 1244, 1253, 1250, 1251, + 1252, 1249, 1250, 1254, 1255, 1252, 1252, 1256, 1247, 1257, + 1251, 1259, 1256, 1258, 1261, 1262, 1253, 1263, 1258, 1264, + 1264, 1265, 1255, 1266, 1267, 1265, 1268, 1257, 1261, 1254, + 1269, 1259, 1268, 1262, 1270, 1263, 1271, 1272, 1274, 1273, - 1267, 1271, 1269, 1272, 1273, 1273, 1268, 1274, 1277, 1275, - 1272, 1278, 1281, 1270, 1276, 1279, 1271, 1275, 1280, 1276, - 1279, 1279, 1277, 1280, 1280, 1282, 1282, 1274, 1283, 1284, - 1278, 1285, 1281, 1286, 1287, 1288, 1289, 1290, 1286, 1291, - 1285, 1292, 1294, 1290, 1291, 1293, 1295, 1283, 1284, 1297, - 1296, 1293, 1295, 1287, 1289, 1288, 1296, 1298, 1299, 1300, - 1301, 1294, 1302, 1306, 1303, 1304, 1304, 1292, 1297, 1305, - 1307, 1307, 1305, 1311, 1301, 1306, 1298, 1299, 1300, 1303, - 1308, 1308, 1309, 1302, 1310, 1312, 1311, 1309, 1310, 1313, - 1314, 1318, 1314, 1316, 1312, 1317, 1314, 1319, 1320, 1325, + 1275, 1266, 1269, 1267, 1276, 1275, 1278, 1279, 1280, 1280, + 1271, 1276, 1272, 1270, 1273, 1277, 1279, 1274, 1281, 1282, + 1277, 1283, 1284, 1285, 1278, 1282, 1286, 1293, 1285, 1287, + 1288, 1288, 1286, 1281, 1294, 1287, 1293, 1283, 1289, 1289, + 1291, 1291, 1292, 1284, 1295, 1296, 1292, 1297, 1298, 1298, + 1299, 1300, 1294, 1302, 1297, 1303, 1301, 1304, 1295, 1300, + 1296, 1301, 1304, 1304, 1306, 1314, 1305, 1302, 1307, 1307, + 1299, 1305, 1305, 1308, 1303, 1309, 1310, 1311, 1312, 1313, + 1315, 1317, 1311, 1314, 1306, 1310, 1315, 1319, 1316, 1318, + 1320, 1322, 1308, 1316, 1309, 1318, 1320, 1312, 1321, 1313, - 1317, 1323, 1313, 1321, 1321, 1322, 1318, 1323, 1324, 1314, - 1322, 1316, 1325, 1326, 1320, 1327, 1328, 1319, 1326, 1327, - 1328, 1329, 1330, 1324, 1331, 1332, 1333, 1333, 1335, 1337, - 1338, 1332, 1339, 1339, 1341, 1338, 1340, 1343, 1343, 1347, - 1330, 1329, 1340, 1348, 1331, 1345, 1335, 1351, 1345, 1352, - 1337, 1346, 1346, 1350, 1341, 1347, 1350, 1354, 1352, 1348, - 1353, 1353, 1355, 1356, 1357, 1358, 1360, 1351, 1361, 1357, - 1359, 1359, 1354, 1362, 1363, 1360, 1364, 1364, 1365, 1358, - 1366, 1368, 1356, 1355, 1367, 1371, 1361, 1373, 1362, 1367, - 1369, 1369, 1365, 1370, 1372, 1372, 1368, 1370, 1366, 1363, + 1323, 1324, 1325, 1326, 1321, 1327, 1319, 1317, 1328, 1334, + 1322, 1329, 1329, 1330, 1334, 1331, 1330, 1326, 1335, 1323, + 1324, 1325, 1335, 1328, 1332, 1332, 1327, 1331, 1333, 1333, + 1336, 1337, 1338, 1339, 1343, 1339, 1341, 1342, 1344, 1339, + 1337, 1345, 1342, 1336, 1348, 1338, 1346, 1346, 1347, 1343, + 1348, 1349, 1339, 1347, 1341, 1350, 1351, 1345, 1344, 1352, + 1353, 1351, 1354, 1352, 1353, 1355, 1349, 1356, 1350, 1357, + 1358, 1358, 1360, 1362, 1363, 1357, 1364, 1364, 1365, 1363, + 1366, 1372, 1354, 1355, 1365, 1368, 1368, 1356, 1370, 1373, + 1360, 1370, 1371, 1371, 1362, 1375, 1376, 1372, 1375, 1377, - 1374, 1376, 1375, 1377, 1380, 1371, 1375, 1381, 1377, 1373, - 1382, 1374, 1379, 1379, 1383, 1384, 1385, 1385, 1386, 1387, - 1376, 1381, 1380, 1386, 1388, 1389, 1390, 1391, 1383, 1382, - 1382, 1390, 1393, 1392, 1389, 1392, 1394, 1393, 1395, 1387, - 1384, 1398, 1394, 1396, 1388, 1399, 1399, 1391, 1400, 1396, - 1401, 1404, 1403, 1405, 1405, 1398, 1401, 1403, 1395, 1406, - 1406, 1408, 1407, 1409, 1413, 1410, 1415, 1400, 1410, 1411, - 1411, 1412, 1415, 1421, 1414, 1404, 1407, 1414, 1409, 1408, - 1414, 1416, 1417, 1412, 1413, 1417, 1416, 1419, 1420, 1423, - 1430, 1422, 1414, 1420, 1422, 1423, 1419, 1424, 1421, 1425, + 1366, 1378, 1378, 1379, 1380, 1373, 1382, 1381, 1377, 1383, + 1385, 1382, 1384, 1384, 1386, 1387, 1376, 1388, 1379, 1385, + 1389, 1389, 1390, 1383, 1392, 1380, 1381, 1391, 1393, 1392, + 1387, 1395, 1386, 1394, 1394, 1395, 1390, 1396, 1397, 1397, + 1398, 1399, 1388, 1393, 1400, 1391, 1401, 1405, 1400, 1402, + 1404, 1404, 1399, 1406, 1402, 1407, 1408, 1396, 1409, 1410, + 1411, 1411, 1398, 1405, 57, 1401, 1413, 1414, 1412, 1407, + 1415, 1406, 1409, 1412, 1417, 1408, 1408, 1416, 1418, 1415, + 1418, 1421, 1416, 1419, 1410, 1420, 1413, 1414, 1419, 1422, + 1424, 1420, 1425, 1425, 1417, 1422, 1426, 1427, 1430, 1433, - 1425, 1417, 1424, 1426, 1426, 1427, 1429, 1428, 1430, 1431, - 1432, 1427, 1428, 1433, 1434, 1435, 1433, 1436, 1437, 1429, - 1434, 1435, 1436, 1438, 1437, 1442, 1439, 1443, 1431, 1441, - 1432, 1439, 1440, 1440, 1441, 1444, 1445, 1446, 1449, 1450, - 1447, 1448, 1451, 1442, 1449, 1453, 1438, 1443, 1456, 1452, - 1445, 1446, 1447, 1457, 1448, 1444, 1455, 1455, 1457, 1450, - 1458, 1458, 1451, 1452, 1459, 1461, 1453, 1460, 1456, 1462, - 1464, 1463, 1467, 1471, 1466, 1465, 1469, 1473, 1473, 1459, - 1463, 1460, 1465, 1466, 1476, 1464, 1466, 1462, 1467, 1461, - 1472, 1469, 1475, 1472, 1474, 1474, 1469, 1477, 1471, 1479, + 1429, 1421, 1434, 1427, 1424, 1429, 1431, 1431, 1432, 1432, + 1435, 1436, 1438, 1433, 1436, 1426, 1437, 1437, 1439, 1447, + 1434, 1441, 1430, 1440, 1438, 1435, 1440, 1441, 1442, 1440, + 1445, 1443, 1446, 1442, 1443, 52, 1449, 1446, 1439, 1445, + 1448, 1440, 1449, 1448, 1447, 1455, 1450, 1451, 1451, 1453, + 1443, 1450, 1452, 1452, 1454, 1453, 1456, 1457, 1455, 1454, + 1458, 1459, 1460, 1461, 1459, 1462, 1463, 1464, 1460, 1461, + 1462, 1468, 1463, 1465, 1456, 1469, 1457, 1470, 1465, 1467, + 1458, 1466, 1466, 1475, 1467, 1471, 1472, 1476, 1477, 1468, + 1464, 1473, 1474, 1476, 1478, 1469, 1475, 1470, 1479, 1471, - 1477, 1480, 1476, 1481, 1475, 1478, 1478, 1483, 1481, 1482, - 1485, 1484, 1479, 1486, 1482, 1488, 1487, 1489, 1491, 1485, - 1480, 1490, 1490, 1489, 1488, 1487, 1483, 1484, 1487, 1492, - 1493, 1494, 1486, 1495, 1496, 1499, 1500, 1502, 1491, 1501, - 1501, 1503, 1492, 1505, 1505, 1494, 1496, 1504, 1493, 1495, - 1503, 1507, 1504, 1502, 1500, 1506, 1507, 1508, 1505, 1509, - 1499, 1510, 1513, 1511, 1506, 1515, 1514, 1506, 1511, 1511, - 1518, 0, 1516, 1519, 1519, 1508, 1513, 1516, 1517, 1510, - 1509, 1514, 1525, 1520, 1517, 1521, 1522, 1515, 1518, 1520, - 1521, 1523, 1522, 1526, 1527, 1528, 1529, 1523, 1530, 1529, + 1472, 1480, 1488, 1473, 1474, 1482, 1482, 1483, 1477, 1486, + 1484, 1487, 1479, 1489, 1478, 1484, 1485, 1485, 1491, 1490, + 1493, 1494, 1480, 1492, 1486, 1487, 1488, 1483, 1490, 1493, + 1492, 1489, 1493, 1491, 1496, 1498, 1499, 1494, 1502, 1499, + 1500, 1500, 1501, 1501, 1503, 1504, 1505, 1505, 1504, 1496, + 1502, 1506, 1507, 1508, 1496, 1510, 1509, 1511, 1508, 1512, + 1498, 1509, 1503, 1513, 1506, 1518, 1514, 1515, 1512, 1517, + 1517, 1507, 1520, 1511, 1510, 1514, 1515, 1516, 1514, 1519, + 1521, 1522, 1513, 1516, 1523, 1518, 1526, 1527, 1528, 1528, + 1520, 1529, 1519, 1530, 1521, 1531, 1523, 1522, 1532, 1532, - 1527, 1532, 1525, 1534, 1530, 1529, 1535, 1526, 1528, 1532, - 1536, 1537, 1559, 1538, 1539, 1540, 1541, 1559, 1536, 1545, - 1537, 1547, 1534, 1542, 1542, 1535, 1538, 1539, 1543, 1540, - 1541, 1544, 1545, 1548, 1543, 1546, 1546, 1544, 1549, 1550, - 1551, 1547, 1552, 1553, 1554, 1542, 1551, 1556, 1556, 1557, - 1558, 1548, 1550, 1560, 1558, 1561, 1562, 1549, 1560, 1553, - 1561, 1563, 1554, 1565, 1552, 1562, 1566, 1566, 1567, 1557, - 1568, 1569, 1570, 1570, 1571, 1575, 1572, 1573, 1565, 1574, - 1576, 1578, 1568, 1572, 1563, 1579, 1577, 1567, 1571, 1573, - 1569, 1574, 1577, 1578, 1575, 1580, 1581, 1581, 1586, 1582, + 1531, 1534, 1530, 1533, 1535, 1527, 1534, 1529, 1536, 1537, + 1540, 1526, 1533, 1532, 1538, 1533, 1541, 1542, 1543, 1538, + 1538, 47, 1535, 1543, 1540, 1545, 1544, 1537, 1552, 1536, + 1547, 1541, 1544, 1546, 1546, 1548, 1547, 1553, 1549, 1542, + 1548, 1550, 1555, 1545, 1549, 1561, 1554, 1550, 1552, 1559, + 1556, 1553, 1554, 1556, 1557, 1555, 1562, 1559, 1563, 1556, + 1557, 1564, 18, 1565, 1561, 1566, 1563, 1567, 1568, 1574, + 1564, 1569, 1569, 1570, 1571, 1562, 1565, 1572, 1566, 1570, + 1571, 1567, 1568, 1573, 1573, 1575, 1576, 1577, 1578, 1574, + 1572, 1579, 1580, 1569, 1578, 1584, 1581, 1583, 1583, 1586, - 1576, 1580, 1582, 1579, 1583, 1583, 1585, 1586, 1587, 1588, - 1588, 1585, 1589, 1590, 1587, 1590, 1591, 1592, 1593, 1591, - 1594, 1595, 1596, 1597, 1589, 1600, 1601, 1596, 1599, 1598, - 1600, 1602, 1597, 1606, 1606, 1601, 1608, 1592, 1594, 1595, - 1593, 1598, 1603, 1599, 1604, 1605, 1607, 1603, 1601, 1604, - 1609, 1602, 1607, 1611, 1603, 1610, 1612, 1608, 1612, 1617, - 1605, 1613, 1614, 1614, 1615, 1615, 1616, 1616, 1620, 1609, - 1621, 1610, 1623, 1611, 0, 1613, 1623, 1613, 1628, 1617, - 1618, 1618, 1619, 1619, 1622, 1622, 1624, 1625, 1627, 1620, - 1625, 1621, 1624, 1629, 1627, 1630, 1628, 1631, 1636, 1629, + 1577, 1589, 1585, 1575, 1586, 1576, 1585, 1587, 1580, 1590, + 1589, 1588, 1587, 1579, 1581, 1584, 1588, 1592, 1593, 1594, + 1594, 1595, 1596, 1597, 1598, 1598, 1601, 1599, 1600, 1592, + 1603, 1602, 1590, 1593, 1596, 1600, 1604, 1607, 1601, 1605, + 1595, 1599, 1597, 1602, 1608, 1605, 1606, 1609, 1609, 1603, + 1608, 1610, 1611, 1611, 1610, 1607, 1604, 1613, 1606, 1614, + 1615, 1617, 1613, 1616, 1616, 1618, 1615, 1618, 1614, 1619, + 1620, 1621, 1619, 1617, 1622, 1624, 1623, 1625, 1628, 1626, + 1624, 1627, 1630, 1628, 1632, 1636, 1625, 17, 1629, 1632, + 1620, 1626, 1622, 1621, 1623, 1631, 1627, 1629, 1633, 1635, - 1631, 1632, 1632, 1633, 1633, 1634, 1637, 1638, 0, 1635, - 1639, 1634, 1643, 1638, 1643, 1642, 1644, 1645, 1636, 1641, - 1630, 1635, 1635, 1635, 1641, 1641, 1637, 1644, 1635, 1642, - 1639, 1646, 1645, 1647, 1648, 1649, 1651, 1646, 1650, 1650, - 1652, 1652, 1647, 1653, 1654, 1655, 1655, 1656, 1656, 1657, - 1660, 1660, 1661, 1665, 1648, 1662, 1649, 1668, 1664, 1666, - 1667, 1667, 1651, 1653, 1662, 1666, 1654, 1664, 1669, 1657, - 1672, 1671, 1670, 1674, 1665, 1673, 1673, 1661, 1668, 1670, - 1671, 1675, 1677, 1669, 1678, 1679, 1680, 1677, 1681, 1682, - 1678, 1683, 1683, 1680, 1681, 1682, 1672, 1675, 1684, 1674, + 1631, 1637, 1630, 1634, 1634, 1635, 1636, 1631, 1638, 1639, + 1629, 1641, 1640, 1633, 1640, 1642, 1642, 1643, 1643, 1645, + 1637, 1644, 1644, 1648, 1638, 1641, 1649, 1641, 1656, 1639, + 1646, 1646, 1647, 1647, 1650, 1650, 1651, 1652, 1653, 1645, + 1651, 1653, 1655, 1652, 1648, 1657, 1656, 1649, 1655, 1658, + 1659, 1657, 1665, 1659, 1660, 1660, 1661, 1661, 1662, 1663, + 1666, 1667, 1668, 1662, 1664, 1663, 1672, 1667, 1672, 1675, + 1673, 1674, 1665, 1671, 1658, 1675, 1664, 1664, 1664, 1670, + 1666, 1673, 1668, 1664, 1670, 1670, 1674, 1671, 1676, 1677, + 1678, 1679, 1679, 1680, 1681, 1681, 1682, 1676, 1683, 1684, - 1685, 1686, 1688, 1684, 1687, 1679, 1690, 1689, 1691, 1685, - 1689, 1692, 1692, 1693, 1688, 1695, 1694, 1696, 1699, 1693, - 1700, 1686, 1694, 1687, 1690, 1697, 1701, 1702, 1702, 1697, - 1703, 1701, 1696, 1704, 1691, 1695, 1706, 1707, 1699, 0, - 1708, 1707, 1700, 1709, 1714, 1697, 1708, 1712, 1704, 1703, - 1710, 1710, 1709, 1711, 1715, 1706, 1716, 1711, 1712, 1713, - 1713, 1717, 1718, 1712, 1719, 1714, 1717, 1720, 1715, 1722, - 1721, 1723, 1723, 1720, 1722, 1716, 1724, 1724, 1727, 1725, - 1728, 1729, 1718, 1725, 1719, 1721, 1736, 1727, 1730, 1730, - 1737, 1728, 1732, 1732, 1733, 1737, 1728, 1734, 1735, 1733, + 1684, 1685, 1685, 1686, 1689, 1689, 1690, 1694, 1691, 1677, + 1698, 1678, 1693, 1696, 1696, 1697, 1682, 1691, 1695, 1680, + 1683, 1693, 1699, 1686, 1695, 1698, 1700, 1701, 1694, 1699, + 1703, 1690, 1702, 1702, 1704, 1700, 1697, 1706, 1707, 1708, + 1709, 1713, 1706, 1710, 1707, 1711, 1713, 1709, 1714, 1710, + 1704, 1711, 1715, 1701, 1712, 1712, 1703, 1714, 1716, 1708, + 1718, 1717, 1719, 1718, 1720, 1721, 1721, 1724, 1722, 1723, + 1725, 1728, 1715, 1717, 1722, 1723, 1730, 1716, 1726, 1729, + 1719, 1730, 1726, 1731, 1731, 1725, 1732, 1724, 1733, 1735, + 1720, 1728, 1736, 1737, 0, 1738, 1736, 1743, 1726, 1737, - 1733, 1729, 1738, 1734, 1735, 1739, 1741, 1743, 1744, 1742, - 1745, 1739, 1736, 1742, 1738, 1746, 1745, 1747, 1741, 1743, - 1748, 1751, 1750, 1747, 1752, 1754, 1755, 1755, 1754, 1752, - 1756, 1756, 1748, 1744, 1750, 1757, 1757, 1746, 1758, 1759, - 1751, 1760, 1763, 1761, 1762, 1759, 0, 1760, 1761, 1765, - 1762, 1763, 1767, 1768, 1765, 1767, 1769, 1769, 1758, 1771, - 1772, 1773, 1774, 1774, 1775, 1768, 1773, 1778, 1778, 1776, - 1777, 1771, 1772, 1775, 1776, 1777, 1779, 1780, 1783, 1781, - 1782, 1785, 1783, 1784, 1786, 1787, 1780, 1785, 1784, 1788, - 1789, 1791, 1791, 1792, 1787, 1797, 1779, 1781, 0, 1782, + 1741, 1729, 1745, 1733, 1738, 1732, 1739, 1739, 1735, 1740, + 1744, 1741, 1746, 1740, 1742, 1742, 1741, 1746, 1743, 1747, + 1748, 1745, 1749, 1750, 1744, 1751, 1752, 1752, 1749, 1754, + 1751, 1753, 1753, 1754, 1756, 1757, 1758, 1765, 1750, 1747, + 1748, 1759, 1759, 1756, 1761, 1761, 1757, 1762, 1763, 1764, + 1773, 1757, 1762, 1762, 1763, 1764, 1758, 1766, 1767, 1768, + 1770, 1772, 1766, 1765, 1771, 1768, 1775, 1778, 1771, 1811, + 1767, 1774, 1770, 1772, 1776, 1773, 1777, 1774, 1780, 1778, + 1776, 1777, 1781, 1784, 1782, 1788, 1784, 1811, 1775, 1782, + 1780, 1785, 1785, 1786, 1786, 1787, 1787, 1789, 1790, 1793, - 1793, 1795, 1786, 1791, 1789, 1794, 1794, 1788, 1796, 1793, - 1795, 1792, 1798, 1799, 1802, 1802, 1797, 1798, 1804, 1805, - 1796, 1804, 1806, 1809, 1808, 1810, 1799, 1811, 1812, 1812, - 1813, 1810, 1813, 1814, 1814, 1805, 1817, 1809, 1806, 1808, - 1815, 1818, 1820, 1817, 1811, 1819, 1819, 1821, 1815, 1825, - 1822, 1820, 1823, 1824, 1826, 1830, 1832, 1827, 1829, 1831, - 1831, 1818, 1822, 1827, 1823, 1824, 1833, 1830, 1821, 1826, - 1834, 1836, 1835, 1834, 1832, 1825, 1827, 1835, 1829, 1838, - 1839, 1840, 1839, 1841, 1838, 1842, 1833, 1844, 1841, 1846, - 1850, 1836, 1842, 1847, 1848, 1849, 1844, 1849, 1852, 1840, + 1792, 1781, 1791, 1789, 1790, 1788, 1792, 1791, 1793, 1795, + 1797, 1798, 1801, 1797, 1795, 1799, 1799, 1802, 1804, 1804, + 1803, 1805, 1806, 1798, 1801, 1803, 1807, 1806, 1809, 1802, + 1805, 1807, 1808, 1808, 1810, 1812, 1813, 1814, 1815, 1816, + 1813, 1817, 1814, 1810, 1815, 1818, 1819, 1822, 1809, 1823, + 1817, 1827, 1821, 1821, 1812, 1824, 1824, 1816, 1823, 1825, + 1819, 1826, 1828, 1818, 1821, 1822, 1829, 1828, 1825, 1832, + 1832, 1834, 1827, 1826, 1834, 1835, 1836, 1840, 1838, 1829, + 1839, 1841, 1848, 1840, 1842, 1842, 1843, 1845, 1843, 1844, + 1844, 1835, 1836, 1838, 1839, 1845, 1847, 1849, 1841, 1850, - 1852, 1853, 1847, 1854, 1854, 1855, 1848, 1846, 1856, 1850, - 1857, 1858, 1857, 1856, 1859, 1853, 1858, 1860, 1861, 1859, - 1862, 1864, 1863, 1867, 1865, 1868, 1862, 1863, 1869, 1869, - 1871, 1855, 1865, 1872, 1864, 1860, 1870, 1870, 1861, 1868, - 1873, 1876, 1867, 1874, 1877, 1871, 1873, 1875, 1874, 1875, - 1878, 1878, 1877, 1872, 1879, 1880, 1880, 1881, 1881, 1876, - 1877, 1882, 1883, 1884, 1886, 1888, 1879, 1883, 1891, 1887, - 1882, 1887, 1889, 1886, 1890, 1893, 1886, 1889, 1889, 1894, - 1891, 1884, 1897, 1890, 1894, 1895, 1888, 1893, 1898, 1899, - 1895, 1900, 1900, 1901, 1902, 1897, 1904, 1903, 1899, 1905, + 1850, 1851, 1852, 1847, 1848, 1856, 1853, 1854, 1855, 1857, + 1851, 1863, 1860, 1861, 0, 1858, 1864, 1849, 1853, 1854, + 1855, 1858, 1867, 1852, 1857, 1861, 1862, 1862, 1871, 1863, + 1865, 1856, 1860, 1865, 1858, 1866, 1864, 1870, 1869, 1870, + 1866, 1873, 1867, 1869, 1872, 1875, 1871, 1877, 1873, 1872, + 1878, 1879, 1881, 1880, 1875, 1880, 1883, 1886, 1883, 1878, + 1884, 1885, 1885, 1879, 1887, 1877, 1888, 1889, 1888, 1887, + 1890, 1881, 1889, 1891, 1884, 1890, 1892, 1894, 1893, 1895, + 1896, 1898, 1894, 1886, 1893, 1899, 1900, 1900, 1896, 1901, + 1901, 1891, 1895, 1902, 1903, 1904, 1892, 1905, 1907, 1899, - 1909, 1910, 1911, 1907, 1908, 1918, 1910, 1911, 1898, 1912, - 1904, 1901, 1902, 1903, 1905, 1907, 1908, 1915, 1912, 1917, - 1909, 1920, 1919, 1915, 1921, 1917, 1922, 1926, 1918, 1923, - 1923, 1924, 1925, 1925, 1927, 1922, 1915, 1919, 1927, 1920, - 1924, 1929, 1928, 1935, 0, 1930, 1926, 1928, 1934, 1921, - 1930, 1930, 1931, 1932, 1929, 1944, 1934, 1933, 1931, 1932, - 1933, 1938, 1938, 1935, 1939, 1939, 1940, 1941, 1941, 1942, - 1942, 1943, 1945, 1944, 1950, 1940, 1946, 1949, 1945, 1939, - 1950, 1946, 1949, 1943, 1947, 1947, 1948, 1948, 1952, 1953, - 1939, 1954, 1952, 1956, 1957, 1954, 1958, 1959, 1960, 1957, + 1898, 1904, 1905, 1906, 1908, 1906, 1909, 1909, 1902, 1910, + 1911, 1911, 1908, 1913, 1903, 1915, 1907, 1912, 1912, 1914, + 1908, 1910, 1913, 1917, 1914, 1918, 1919, 1918, 1922, 1921, + 1924, 1920, 1917, 1915, 1925, 1917, 1920, 1920, 1921, 1925, + 1922, 1926, 1924, 1928, 1929, 1930, 1926, 1919, 1931, 1931, + 1932, 1933, 1935, 1938, 1930, 1934, 1928, 1936, 1939, 1940, + 1952, 1949, 1941, 0, 1929, 1938, 1935, 1941, 1932, 1933, + 1939, 1934, 1936, 1942, 1943, 1946, 1948, 1950, 1942, 1940, + 1951, 1946, 1948, 1943, 1949, 1952, 1953, 1954, 1954, 1957, + 1955, 1961, 1950, 0, 1946, 1953, 1956, 1956, 1951, 1955, - 1962, 1963, 1961, 1960, 1965, 1964, 1966, 1966, 1968, 1953, - 1964, 1967, 1959, 1970, 1972, 1967, 1962, 1969, 1956, 1958, - 1961, 1963, 1969, 1968, 1971, 1973, 1965, 1974, 1975, 1978, - 1973, 1976, 1976, 1972, 1979, 1980, 1971, 1978, 1981, 1970, - 1974, 1982, 1984, 1983, 1985, 1986, 1975, 1989, 1989, 1988, - 1994, 1994, 1990, 1979, 1980, 1990, 1985, 1991, 1992, 2005, - 1993, 1981, 1983, 1984, 1988, 1982, 1986, 1995, 1995, 1997, - 1991, 2000, 1992, 1993, 1996, 1996, 1998, 1999, 1999, 2005, - 2000, 2001, 2001, 2000, 1997, 2002, 2004, 2006, 2007, 1998, - 2002, 2004, 2008, 2008, 2009, 2009, 2010, 2011, 2011, 2012, + 1958, 1959, 1960, 1963, 1958, 1962, 1959, 1967, 1957, 1963, + 1962, 1962, 1964, 1961, 1965, 1960, 1966, 1965, 1964, 1970, + 1970, 1971, 1971, 1972, 1966, 1973, 1973, 1967, 1974, 1974, + 1975, 1976, 1972, 1977, 1985, 1978, 1971, 1979, 1979, 1977, + 1978, 1981, 1975, 1980, 1980, 1982, 1981, 1971, 1984, 1976, + 1988, 1982, 1984, 1986, 1985, 1989, 1990, 1986, 1991, 1992, + 1989, 1994, 1993, 1995, 1992, 1996, 1997, 1998, 1998, 2000, + 1996, 2002, 1999, 1991, 2004, 1988, 1999, 1994, 2003, 1990, + 1993, 2001, 2005, 1995, 2000, 2006, 2001, 2005, 1997, 2007, + 2003, 2008, 2008, 2004, 2010, 2011, 2012, 2002, 2006, 2013, - 2007, 2013, 2013, 2014, 2015, 2016, 2016, 2006, 2018, 2015, - 2017, 2017, 2019, 2020, 2021, 2010, 2025, 2012, 2014, 2023, - 2027, 2019, 2018, 0, 2023, 2024, 2024, 2020, 2026, 2026, - 2028, 2029, 2032, 2021, 2029, 2025, 2028, 2033, 2027, 2030, - 2030, 2031, 2031, 2034, 2035, 2035, 2037, 2038, 2039, 2040, - 2042, 2032, 2033, 2040, 2043, 2030, 2041, 2041, 2044, 2043, - 2045, 2048, 2034, 2039, 2047, 2047, 2037, 2049, 2050, 2042, - 2038, 2051, 2052, 2044, 2049, 2045, 2053, 2054, 2054, 2055, - 2059, 2048, 2050, 2056, 2063, 2056, 2064, 2062, 2055, 2051, - 2052, 2057, 2059, 2060, 2057, 2061, 2065, 2063, 2060, 2066, + 2014, 2015, 2010, 2020, 2016, 2017, 2018, 2007, 2021, 2021, + 2023, 2022, 2025, 2023, 2011, 2012, 2022, 2017, 2020, 2024, + 2015, 2026, 2013, 2030, 2014, 2016, 2025, 2018, 2027, 2027, + 2028, 2028, 2024, 2031, 2026, 2029, 2029, 2038, 2030, 2032, + 2032, 2033, 2034, 2034, 2035, 2039, 2031, 2037, 2040, 2035, + 2033, 2043, 2037, 2033, 2041, 2041, 2045, 2038, 2042, 2042, + 2040, 2044, 2044, 2046, 2046, 2039, 2047, 2048, 2049, 2049, + 2043, 2051, 2048, 2052, 2045, 2050, 2050, 2053, 2054, 2056, + 2058, 2047, 2052, 2060, 2056, 2051, 2057, 2057, 2059, 2059, + 2061, 2053, 2062, 2063, 2063, 2062, 2061, 2054, 2065, 2058, - 2061, 2065, 2053, 2068, 2070, 2069, 2072, 2064, 2068, 2057, - 2069, 2057, 2062, 2074, 2071, 2073, 2076, 2075, 2074, 2070, - 2071, 2073, 2075, 2077, 2079, 2066, 2078, 2072, 2080, 2078, - 2081, 2082, 2083, 2079, 2088, 0, 2077, 2080, 2084, 2081, - 2082, 2076, 2085, 2086, 2084, 2094, 2083, 2086, 2085, 2090, - 2091, 2091, 2096, 2092, 2088, 2093, 2093, 2097, 2090, 2092, - 2098, 2098, 2099, 2100, 2093, 2094, 2102, 2094, 2096, 2103, - 2105, 2104, 2100, 2097, 2109, 2108, 2107, 2099, 2102, 2107, - 2108, 2110, 2105, 2111, 2111, 2103, 2104, 2112, 2112, 2114, - 2114, 2116, 2115, 2110, 2109, 2115, 2116, 2117, 2118, 2119, + 2066, 2060, 2064, 2064, 2067, 2068, 2068, 2070, 2071, 2063, + 2072, 2075, 2073, 2074, 2074, 2066, 2073, 2065, 2077, 2076, + 2078, 2080, 2080, 2067, 2076, 2072, 2081, 2070, 2083, 2082, + 2075, 2071, 2084, 2077, 2085, 2078, 2082, 2086, 2087, 2087, + 2088, 2089, 2083, 2089, 2090, 2092, 2081, 2090, 2093, 2088, + 2084, 2094, 2085, 2093, 2095, 2096, 2094, 2092, 2099, 2097, + 2098, 2101, 2090, 2086, 2090, 2098, 2101, 2102, 2096, 2104, + 2103, 2105, 2102, 2107, 2109, 2104, 2106, 2110, 2107, 2095, + 2097, 2108, 2106, 2116, 2099, 2103, 2108, 2112, 2111, 2113, + 2110, 2111, 2105, 2114, 2115, 2117, 2112, 2116, 2113, 2109, - 2119, 2120, 2122, 2117, 2118, 2121, 2121, 2123, 2124, 2125, - 2125, 2126, 2127, 2128, 2122, 2120, 2130, 2126, 2128, 2131, - 2130, 2123, 2131, 2132, 2132, 2133, 2127, 2124, 2134, 2135, - 2133, 2136, 2137, 2137, 2138, 2136, 2140, 2134, 2141, 2142, - 2143, 2140, 2144, 2145, 2149, 2146, 2144, 2138, 2151, 2135, - 2146, 2147, 2159, 2159, 2143, 2148, 2161, 2147, 2141, 2142, - 2152, 2148, 2149, 2145, 2151, 2152, 2153, 2154, 2155, 2158, - 2155, 2160, 2153, 2165, 2160, 2154, 2162, 2162, 2166, 2165, - 2164, 2173, 2161, 2158, 2164, 2167, 2167, 2168, 2171, 2171, - 2166, 2175, 2176, 2179, 2180, 2181, 2168, 2182, 2179, 2173, + 2118, 2117, 2114, 2115, 2119, 2121, 2118, 2123, 2119, 2124, + 2124, 2125, 2126, 2126, 2127, 2128, 2123, 2125, 2130, 2127, + 2131, 2126, 2132, 2132, 2133, 2121, 2137, 2142, 2136, 2134, + 2138, 2139, 2142, 2143, 2130, 2128, 2131, 2128, 2134, 2133, + 2136, 2141, 2137, 2139, 2141, 2138, 2144, 2145, 2145, 2146, + 2146, 2148, 2148, 2143, 2149, 2150, 2151, 2149, 2144, 2152, + 2150, 2154, 2151, 2153, 2153, 2152, 2155, 2155, 2156, 2157, + 2158, 2159, 2159, 2160, 2161, 2154, 2162, 2169, 2164, 2160, + 2156, 2162, 2164, 2157, 2165, 2166, 2166, 2165, 2161, 2158, + 2167, 2168, 2170, 2171, 2171, 2167, 2170, 2169, 2172, 2174, - 2181, 2189, 2182, 2183, 2183, 2175, 2185, 2185, 2176, 2187, - 2188, 2188, 2190, 2191, 2193, 2187, 2194, 2189, 2191, 2198, - 2180, 2195, 2195, 2197, 2199, 2198, 2200, 2204, 2194, 2202, - 2202, 2205, 2197, 2193, 2190, 2203, 2207, 2207, 2203, 2208, - 2208, 2200, 2199, 2209, 2210, 2211, 2204, 2212, 2209, 2205, - 2214, 2213, 2212, 2213, 2211, 2215, 2216, 2218, 2217, 0, - 2219, 2225, 2210, 2217, 2214, 2219, 2220, 2220, 2216, 2215, - 2221, 2221, 2222, 2222, 2223, 2223, 2224, 2218, 2226, 2225, - 2227, 2227, 2229, 2226, 2228, 2228, 2230, 2231, 2224, 2232, - 2233, 2233, 2234, 2237, 2229, 2235, 2235, 2238, 2230, 2236, + 2168, 2175, 2176, 2177, 2174, 2178, 2179, 2180, 2181, 2178, + 2182, 2172, 2180, 2183, 2181, 2185, 2182, 2177, 2186, 2187, + 2189, 2175, 2176, 2188, 2187, 2193, 2179, 2185, 2189, 2188, + 2190, 2183, 2190, 2196, 2186, 2194, 2194, 2195, 2200, 2193, + 2195, 2197, 2197, 2199, 2200, 2201, 2203, 2199, 2202, 2202, + 2206, 2206, 2208, 2210, 2215, 2203, 2211, 2201, 2214, 2196, + 2216, 2217, 2224, 2214, 2225, 2216, 2217, 2210, 2218, 2218, + 2208, 2222, 2211, 2220, 2220, 2223, 2223, 2222, 2224, 2226, + 2215, 2228, 2229, 2232, 2226, 2233, 2225, 2230, 2230, 2234, + 2235, 2233, 2232, 2239, 2229, 2237, 2237, 2240, 2238, 2244, - 2236, 2239, 2240, 2241, 2237, 2232, 2243, 2231, 2239, 2238, - 2242, 2234, 2244, 2246, 2240, 2242, 2245, 2245, 2247, 2248, - 2249, 2250, 2246, 2241, 2251, 2253, 2243, 2252, 2252, 2257, - 2258, 2254, 2244, 2249, 2253, 2255, 2259, 2260, 2251, 2248, - 2260, 2261, 2272, 2262, 2247, 2250, 2254, 2257, 2262, 2263, - 2255, 2271, 2258, 2272, 2263, 2261, 2264, 2264, 2273, 2259, - 2265, 2265, 2266, 2266, 2268, 2268, 2270, 2270, 2275, 2271, - 2277, 2276, 2279, 2278, 2280, 2282, 2281, 2273, 2281, 2283, - 2284, 2279, 2285, 2285, 2287, 2287, 2288, 2289, 2275, 2276, - 2290, 2290, 2277, 2278, 2280, 2282, 2289, 2283, 2284, 2294, + 2228, 2238, 2242, 2242, 2244, 2235, 2245, 2234, 2243, 2243, + 2246, 2247, 2239, 2249, 2250, 2240, 2247, 2251, 2248, 2246, + 2248, 2252, 2253, 2260, 2245, 2254, 2252, 2249, 2250, 2251, + 2254, 2255, 2255, 2256, 2256, 2257, 2257, 2258, 2258, 2259, + 2261, 2260, 2253, 2262, 2262, 2261, 2263, 2263, 2264, 2265, + 2266, 2259, 2267, 2268, 2268, 2269, 2270, 2270, 2271, 2271, + 2264, 2265, 2272, 2273, 2274, 2275, 2276, 2277, 2267, 2278, + 2266, 2274, 2277, 2272, 2269, 2273, 2279, 2275, 2280, 2280, + 2282, 2281, 2283, 2285, 2284, 2286, 2276, 2293, 2287, 2278, + 2281, 2288, 2288, 2290, 2289, 2291, 2279, 2284, 2294, 2286, - 2292, 2293, 2293, 2295, 2296, 2297, 2298, 2299, 2288, 2292, - 2300, 2296, 2301, 2302, 2302, 2303, 2303, 2294, 2305, 2306, - 2297, 2295, 2304, 2307, 2298, 2299, 2300, 2308, 2304, 2309, - 2310, 2301, 2308, 2311, 2306, 2312, 2305, 2312, 2311, 2313, - 2313, 2314, 2307, 2314, 2315, 2315, 2317, 2319, 2320, 2309, - 2310, 2321, 2322, 2323, 2324, 2328, 2319, 2325, 2323, 2329, - 2330, 2330, 2329, 2321, 2331, 2317, 2332, 2320, 2333, 2333, - 2336, 2341, 2322, 2334, 2324, 2328, 2325, 2334, 2337, 2331, - 2338, 2338, 2337, 2339, 2332, 2336, 2341, 2342, 2343, 2344, - 2344, 2346, 2347, 2348, 2349, 2349, 2339, 2348, 2350, 2351, + 2287, 2295, 2283, 2289, 2297, 2293, 2282, 2285, 2290, 2296, + 2291, 2298, 2296, 0, 2299, 2307, 2298, 2309, 2297, 2299, + 2294, 2300, 2300, 2308, 2295, 2301, 2301, 2302, 2302, 2304, + 2304, 2306, 2306, 2307, 2308, 2311, 2309, 2313, 2312, 2315, + 2314, 2316, 2317, 2318, 2317, 2324, 2319, 2320, 2315, 2321, + 2321, 2323, 2323, 2325, 2330, 2311, 2312, 2326, 2326, 2313, + 2314, 2316, 2325, 2318, 2319, 2320, 2328, 2324, 2329, 2329, + 2331, 2332, 2330, 2334, 2333, 2328, 2335, 2336, 2332, 2337, + 2338, 2338, 2339, 2339, 2340, 2340, 2341, 2342, 2331, 2333, + 2344, 2334, 2341, 2336, 2335, 2343, 2345, 2346, 2337, 2347, - 2351, 2347, 2353, 2346, 2352, 2354, 2355, 2342, 2343, 2352, - 2362, 2353, 2356, 2356, 2361, 2361, 2364, 2350, 2355, 2363, - 2363, 2354, 2365, 2369, 2366, 2367, 2368, 2368, 2379, 2364, - 2371, 2371, 2362, 2366, 2367, 2365, 2374, 2375, 2369, 2376, - 2377, 2374, 2375, 2378, 2381, 2377, 2380, 2379, 2383, 2384, - 2386, 2378, 2381, 2376, 2384, 2380, 2385, 2387, 2387, 2388, - 2388, 2385, 2389, 2383, 2391, 2386, 2390, 2392, 2393, 2389, - 2394, 2390, 2395, 2395, 2393, 2394, 2396, 2402, 2397, 2398, - 2398, 2404, 2391, 2397, 2404, 2392, 2399, 2399, 2403, 2403, - 2402, 2396, 2405, 2414, 2406, 2407, 2408, 2405, 2405, 2406, + 0, 2345, 2348, 2354, 2349, 2342, 2349, 2348, 2357, 2344, + 2343, 2350, 2350, 2351, 2356, 2351, 2358, 2346, 2359, 2347, + 2352, 2352, 2354, 2356, 2360, 2361, 2365, 2357, 2358, 2360, + 2362, 2366, 2367, 2367, 2366, 2368, 2369, 2371, 2359, 2370, + 2370, 2371, 2373, 2374, 2378, 2361, 2365, 2374, 2376, 2362, + 2368, 2375, 2375, 2379, 2369, 2380, 2383, 2373, 2384, 2378, + 2385, 2376, 2381, 2381, 2385, 2386, 2386, 2384, 2383, 2387, + 2388, 2388, 2389, 2379, 2390, 2380, 2391, 2389, 2392, 2393, + 2393, 2398, 2398, 2390, 2399, 2400, 2400, 2401, 2387, 2402, + 2392, 0, 2391, 2406, 2403, 2404, 2405, 2405, 2408, 2408, - 2407, 2409, 2408, 2410, 2411, 2409, 2412, 2413, 2410, 0, - 2415, 2416, 2418, 2411, 2414, 2413, 2415, 2416, 2417, 2421, - 2420, 2412, 2421, 2417, 2418, 2420, 2423, 2425, 2426, 2427, - 2428, 2429, 2425, 2426, 2435, 2430, 2431, 2431, 2423, 2432, - 2429, 2436, 2440, 2428, 2430, 2437, 2439, 2427, 2432, 2438, - 2438, 2440, 2441, 2435, 2442, 2442, 2443, 2445, 2447, 2448, - 2450, 2436, 0, 2448, 2437, 2439, 2455, 2441, 2449, 2449, - 2451, 2452, 2445, 2453, 2455, 2443, 2451, 2452, 2447, 2453, - 2454, 2454, 2456, 2458, 2459, 2450, 2461, 2456, 2462, 2463, - 2461, 2466, 2458, 2465, 2465, 2467, 2467, 2459, 2468, 2468, + 2401, 2413, 2402, 2403, 2404, 2411, 2399, 2412, 2406, 2414, + 2411, 2415, 2412, 2416, 2414, 2413, 2417, 2421, 2418, 2415, + 2420, 2423, 2421, 2422, 2427, 2417, 2418, 2429, 2422, 2424, + 2424, 2427, 2416, 2425, 2425, 2420, 2423, 2426, 2426, 2428, + 2430, 2431, 2434, 2432, 2428, 2429, 2435, 2431, 2432, 2433, + 2433, 2435, 2436, 2436, 2437, 2437, 2440, 2434, 2430, 2441, + 2441, 2442, 2443, 0, 2442, 2444, 2445, 2443, 2443, 2440, + 2444, 2445, 2446, 2447, 2448, 2449, 2450, 2447, 2446, 2448, + 2451, 2452, 2455, 2453, 2449, 2456, 2454, 2455, 2451, 2453, + 2458, 2450, 2454, 2459, 2461, 2458, 2459, 2456, 2463, 2464, - 2470, 2470, 2462, 2471, 2463, 2472, 2476, 2471, 2477, 2466, - 2472, 2474, 2474, 2477, 2479, 2478, 2481, 2482, 2482, 2479, - 2479, 2484, 2484, 2485, 2485, 2486, 2476, 2478, 2486, 2487, - 2489, 2491, 2492, 2492, 2493, 2493, 2481, 2494, 2494, 2495, - 2496, 2496, 2487, 2497, 2498, 2499, 2500, 2506, 2489, 2501, - 2501, 2491, 2500, 2502, 2495, 2505, 2497, 2502, 2507, 2499, - 2505, 2505, 2498, 2508, 2511, 2509, 2510, 2513, 2513, 2512, - 2506, 2509, 2510, 2512, 2516, 2521, 2518, 2519, 2507, 2516, - 2519, 2523, 2522, 2508, 2518, 2522, 2524, 2525, 2526, 2511, - 2527, 2524, 2528, 2528, 2532, 2529, 2531, 2542, 2523, 2523, + 2465, 2466, 2452, 2463, 2464, 2474, 2461, 2467, 2468, 2469, + 2469, 2470, 2475, 2480, 2466, 2476, 2467, 2468, 2465, 2478, + 2470, 2477, 2477, 2482, 2474, 2484, 2479, 2486, 2480, 2481, + 2481, 2489, 2475, 2487, 2476, 2479, 2495, 2487, 2478, 2490, + 2484, 2495, 2482, 2488, 2488, 2490, 2491, 2486, 2492, 2493, + 2493, 2494, 2491, 2497, 2492, 2498, 2489, 2500, 2501, 2494, + 2502, 2500, 2497, 2504, 2504, 2505, 2506, 2506, 2498, 2507, + 2507, 2515, 2501, 2509, 2509, 2502, 2510, 2511, 2513, 2513, + 2510, 2516, 2511, 2505, 2517, 2520, 2516, 2518, 2521, 2521, + 2526, 2515, 2518, 2518, 2523, 2523, 2517, 2524, 2524, 2525, - 2521, 2535, 2542, 2530, 2527, 2525, 2530, 2533, 2526, 2529, - 2531, 2534, 2543, 2532, 2530, 2533, 2534, 2534, 2536, 2536, - 2535, 2537, 2537, 2538, 2538, 2539, 2539, 2540, 2540, 2541, - 2544, 2545, 2543, 2546, 2547, 2549, 2549, 2551, 2550, 2554, - 2545, 2550, 2553, 2553, 2556, 2541, 2554, 2555, 2555, 2556, - 2558, 2558, 2559, 2546, 2547, 2551, 2544, 2560, 2561, 2563, - 2565, 2559, 2564, 2564, 2565, 2566, 2560, 2561, 2567, 2569, - 2568, 2570, 2580, 2575, 2566, 2568, 2568, 2563, 2575, 2579, - 2570, 2571, 2569, 2567, 2581, 2571, 2576, 2576, 2578, 2578, - 2583, 2584, 2587, 2579, 2589, 2588, 2592, 2580, 2594, 2583, + 2528, 2530, 2525, 2526, 2534, 2520, 2531, 2531, 2532, 2532, + 2533, 2533, 2535, 2535, 2536, 2537, 2538, 2539, 2528, 2534, + 2546, 2530, 2541, 2539, 2540, 2540, 2541, 2536, 2547, 2545, + 2538, 2548, 2549, 2537, 2545, 2545, 2550, 2551, 2549, 2561, + 2552, 2558, 2550, 2546, 2552, 2553, 2553, 2556, 2547, 2558, + 2559, 2548, 2556, 2559, 2562, 2563, 2564, 2562, 2565, 2566, + 2567, 2564, 2551, 2569, 2561, 2568, 2568, 2570, 2571, 2572, + 2570, 2575, 2563, 2563, 2567, 2573, 2565, 2569, 2570, 2566, + 2574, 2583, 2571, 2573, 2582, 2574, 2574, 2581, 2572, 2582, + 2575, 2576, 2576, 2577, 2577, 2578, 2578, 2579, 2579, 2580, - 2590, 2608, 2581, 2584, 2588, 2596, 2590, 2597, 2592, 2599, - 2596, 2907, 2597, 2907, 2589, 2598, 2598, 2587, 2599, 2594, - 2601, 2608, 2602, 2602, 2607, 2601, 2602, 2604, 2604, 2605, - 2605, 2606, 2606, 2607, 2609, 2610, 2612, 2616, 2613, 2614, - 2610, 2617, 2612, 2613, 2614, 2615, 2615, 2618, 2619, 2621, - 2620, 2628, 2618, 2609, 0, 2616, 2620, 2622, 2622, 2624, - 2625, 2629, 2617, 2624, 2626, 2625, 2619, 2627, 2627, 2626, - 2628, 2630, 2632, 2632, 2621, 2634, 2629, 2635, 2636, 2638, - 2637, 2639, 2636, 2642, 2640, 2643, 2643, 2644, 2634, 2637, - 2635, 2630, 2640, 2641, 2649, 2638, 2646, 2646, 2641, 2659, + 2580, 2583, 2584, 2581, 2585, 2586, 2587, 2589, 2589, 2590, + 2594, 2591, 2590, 2585, 2593, 2593, 2596, 2594, 2595, 2595, + 2603, 2596, 2598, 2598, 2599, 2586, 2587, 2600, 2584, 2591, + 2601, 2604, 2604, 2599, 2606, 2607, 2600, 2605, 2603, 2601, + 2608, 2605, 2609, 2606, 2610, 2608, 2608, 2611, 2619, 2615, + 2607, 2611, 2620, 2610, 2615, 2609, 2616, 2616, 2618, 2618, + 2621, 2623, 2619, 2624, 2627, 2628, 2629, 2630, 2632, 2634, + 2623, 2636, 2649, 2630, 2628, 2624, 2636, 2620, 2621, 2637, + 2632, 2638, 2638, 2639, 2637, 2648, 2629, 0, 2641, 2627, + 2634, 2649, 2639, 2641, 2642, 2642, 2644, 2644, 2642, 2645, - 2639, 2647, 2647, 2651, 2651, 2653, 2644, 2654, 2655, 2642, - 2660, 2656, 2658, 2658, 2664, 2649, 2656, 2661, 2665, 2659, - 2669, 2653, 2671, 2654, 2655, 2663, 2663, 2671, 2664, 2666, - 2666, 2672, 2670, 2660, 2673, 2673, 2661, 2665, 2670, 2675, - 2669, 2674, 2674, 2676, 2676, 2677, 2678, 2679, 2680, 2681, - 2682, 2683, 0, 2672, 2680, 2678, 2677, 2684, 2684, 2675, - 2690, 2685, 2682, 2676, 2685, 2686, 2686, 2679, 2681, 2691, - 2692, 2683, 2690, 2693, 2693, 2694, 2692, 2695, 2694, 2696, - 2698, 2699, 2700, 2695, 2701, 2698, 2699, 2702, 2705, 2691, - 2701, 2703, 2703, 2706, 2707, 2708, 2710, 2696, 2709, 2709, + 2645, 2646, 2646, 2647, 2650, 2648, 2653, 2652, 2656, 2650, + 2654, 2653, 2647, 2652, 2657, 2654, 2655, 2655, 2658, 2659, + 2661, 2660, 2668, 2658, 2662, 2662, 2656, 2660, 2664, 2665, + 2670, 2666, 2664, 2669, 2665, 2657, 2666, 2659, 2667, 2667, + 2674, 2668, 2672, 2672, 2675, 2661, 2677, 2676, 2669, 2678, + 2670, 2676, 2679, 2674, 2680, 2677, 2681, 2675, 2682, 2683, + 2683, 2681, 2680, 2684, 2689, 2678, 2686, 2686, 2687, 2687, + 2693, 2679, 2691, 2691, 2694, 2695, 2696, 2698, 2698, 2699, + 2700, 2696, 2684, 2701, 2682, 2689, 2693, 2703, 2703, 2705, + 2694, 2695, 2704, 2706, 2706, 2709, 2711, 2712, 2710, 2699, - 2705, 2700, 2716, 2711, 2702, 2702, 2713, 2713, 2708, 2714, - 2714, 2706, 2711, 2715, 2726, 2710, 2716, 2717, 2715, 2707, - 2718, 2718, 2717, 2719, 2719, 2720, 2720, 2721, 2723, 2723, - 2728, 2729, 2721, 2726, 2730, 2731, 2731, 2733, 2733, 2735, - 2734, 2736, 2737, 2737, 2738, 2738, 2741, 2784, 2742, 2740, - 2736, 2784, 2728, 2729, 2734, 2740, 2730, 2743, 2750, 2735, - 2746, 2746, 2743, 2748, 2748, 2749, 2741, 2742, 2751, 2752, - 2749, 2753, 2750, 2755, 2751, 2754, 2754, 2757, 2755, 2753, - 2758, 2752, 2759, 2760, 2761, 2763, 2764, 2759, 2765, 2766, - 2761, 2768, 2767, 2763, 2769, 2760, 2770, 2757, 2771, 2773, + 2715, 2711, 2701, 2700, 2710, 2717, 2704, 2719, 2705, 2713, + 2713, 2714, 2714, 2716, 2716, 2709, 2717, 2718, 2720, 2712, + 2715, 2721, 2722, 2723, 2720, 2730, 2718, 2719, 2724, 2724, + 2726, 2726, 2725, 2716, 2722, 2725, 2731, 2730, 2732, 2736, + 2721, 2733, 2733, 2723, 2732, 2734, 2735, 2740, 2734, 2738, + 2739, 2742, 2735, 2741, 2738, 2739, 2731, 2736, 2745, 2741, + 2743, 2743, 2746, 2747, 2748, 2750, 2740, 2751, 2742, 2742, + 2745, 2749, 2749, 2753, 2753, 2756, 2751, 2748, 2754, 2754, + 2746, 2755, 2757, 2766, 2750, 2768, 2755, 2757, 2747, 2756, + 2758, 2758, 2759, 2759, 2760, 2760, 2761, 2763, 2763, 2769, - 2758, 2774, 2778, 2771, 2773, 2764, 2851, 2768, 2765, 2766, - 2767, 2769, 2769, 2775, 2779, 2776, 0, 2770, 2851, 2775, - 2776, 2774, 2778, 2782, 2782, 2783, 2783, 2779, 2788, 2788, - 2790, 2790, 2791, 2791, 2794, 2791, 2792, 2792, 2794, 2792, - 2793, 2793, 2797, 2793, 2796, 2796, 2801, 2798, 2802, 2803, - 2804, 2804, 2807, 2809, 2803, 2808, 2810, 2809, 2811, 0, - 2797, 2798, 2808, 2813, 2818, 2810, 2801, 2814, 2802, 2815, - 2815, 2816, 2816, 2811, 2817, 2817, 2814, 2807, 2819, 2818, - 2820, 2813, 2821, 2819, 2822, 2823, 2824, 2821, 2821, 2820, - 2822, 2825, 2820, 2826, 2827, 2828, 2829, 2829, 2826, 2827, + 2770, 2761, 2766, 2771, 2771, 2773, 2773, 2768, 2775, 2774, + 2776, 2777, 2777, 2778, 2778, 2781, 0, 2782, 2780, 2776, + 2783, 2769, 2770, 2774, 2780, 2783, 2786, 2786, 2775, 2788, + 2788, 2790, 2789, 2791, 2792, 2781, 2782, 2789, 2795, 2791, + 2793, 2794, 2794, 2795, 2797, 2790, 2792, 2798, 2793, 2799, + 2800, 2801, 2803, 2804, 2799, 2805, 2806, 2801, 2808, 2807, + 2803, 2809, 2800, 2810, 2797, 2811, 2813, 2798, 2814, 2818, + 2811, 2813, 2804, 2891, 2808, 2805, 2806, 2807, 2809, 2809, + 2815, 2819, 2816, 0, 2810, 2891, 2815, 2816, 2814, 2818, + 2822, 2822, 2823, 2823, 2819, 2824, 2828, 2828, 2837, 2824, - 2830, 2824, 2831, 2832, 2832, 2858, 2830, 2900, 2831, 0, - 2823, 2900, 2825, 2834, 2828, 2833, 2833, 2858, 2834, 2837, - 2837, 2840, 2840, 2841, 2841, 2842, 2842, 2843, 2843, 2844, - 2844, 2845, 2845, 2846, 2846, 2848, 2849, 2849, 2850, 2852, - 2856, 2854, 2855, 2855, 2848, 2857, 2860, 2850, 2859, 2859, - 2861, 2861, 2864, 2865, 2866, 2856, 2865, 2868, 2857, 2852, - 2854, 2860, 2867, 2867, 2870, 2871, 2874, 2870, 2872, 2873, - 2864, 2871, 2875, 2876, 2873, 2868, 2882, 2878, 2879, 2893, - 2866, 2891, 2872, 2878, 2891, 2874, 2898, 2879, 2902, 2876, - 2875, 2882, 2893, 2894, 2894, 2895, 2895, 2896, 2896, 2899, + 2830, 2830, 2831, 2831, 2834, 2831, 2832, 2832, 2834, 2832, + 2833, 2833, 2838, 2833, 2836, 2836, 2837, 2841, 2842, 2843, + 2844, 2844, 2847, 2848, 2843, 2849, 2838, 2850, 2851, 2849, + 2848, 2853, 2854, 2855, 2855, 2858, 2850, 2841, 2842, 2856, + 2856, 2854, 2863, 2851, 2857, 2857, 2859, 2847, 2860, 2853, + 2858, 2859, 2865, 2861, 2864, 2862, 2868, 2860, 2861, 2861, + 2860, 2862, 0, 2866, 2896, 2867, 2894, 2863, 2866, 2864, + 2867, 2869, 2869, 2865, 2870, 2868, 2871, 2872, 2872, 2896, + 2870, 2874, 2871, 2873, 2873, 2894, 2874, 2877, 2877, 2880, + 2880, 2881, 2881, 2882, 2882, 2883, 2883, 2884, 2884, 2885, - 2901, 2904, 2902, 2905, 2908, 2906, 2909, 2909, 2899, 2898, - 2906, 2911, 2910, 2912, 2905, 2914, 2913, 2916, 2915, 2908, - 2901, 2918, 2917, 2919, 2904, 2910, 2916, 2925, 2926, 2926, - 2911, 2912, 2913, 2915, 2917, 2924, 2920, 2927, 2928, 2928, - 2914, 2920, 2918, 2919, 2929, 2929, 2927, 2925, 2932, 2924, - 2930, 2930, 2931, 2931, 2933, 2934, 2935, 2936, 2934, 2937, - 2938, 2935, 2936, 2939, 2940, 2941, 2942, 2932, 2943, 2939, - 2945, 2942, 2944, 2944, 2933, 2938, 2946, 2941, 2940, 2947, - 2947, 2949, 2951, 2956, 2937, 2945, 2954, 2954, 2943, 2955, - 2955, 2956, 2957, 2958, 2960, 2946, 2949, 2959, 2962, 2958, + 2885, 2886, 2886, 2888, 2889, 2889, 2890, 2892, 2895, 2895, + 2897, 2900, 2888, 2898, 2904, 2890, 2899, 2899, 2901, 2901, + 2906, 2905, 2908, 2897, 2905, 2898, 2900, 2892, 2907, 2907, + 2910, 2911, 2904, 2910, 2912, 2914, 2913, 2911, 2915, 2916, + 2908, 2913, 2919, 2918, 2922, 2933, 2906, 2931, 2912, 2918, + 2931, 2919, 2934, 2934, 2914, 2916, 2915, 2938, 2933, 2922, + 2935, 2935, 2936, 2936, 2939, 2940, 2941, 2942, 2944, 2940, + 2946, 2945, 2947, 2939, 2947, 2946, 2950, 2948, 2949, 2949, + 2938, 2942, 2945, 2951, 2953, 2952, 2941, 2954, 2956, 2950, + 2955, 2944, 2948, 2958, 2957, 2959, 2960, 2956, 2965, 2964, - 2951, 2961, 2963, 2959, 2964, 2964, 2967, 2963, 2960, 2965, - 2965, 2957, 2968, 2973, 2961, 2970, 2971, 2962, 2974, 2975, - 2971, 2976, 2977, 2974, 2978, 2979, 2980, 2967, 2984, 2970, - 2979, 2980, 2968, 2973, 2976, 2977, 2981, 2981, 2975, 2985, - 2986, 2987, 2987, 2978, 2988, 2989, 2990, 2990, 2984, 2988, - 2991, 2989, 2994, 2992, 2995, 2991, 2993, 2985, 2992, 2986, - 2995, 2993, 2997, 2997, 2998, 2999, 2999, 3002, 3001, 2998, - 3003, 2994, 3001, 3004, 3005, 3006, 3007, 3003, 3008, 3010, - 3010, 3006, 3012, 3012, 3014, 3013, 3002, 3015, 3016, 3014, - 3017, 3008, 3004, 3005, 3013, 3007, 3019, 3013, 3018, 3018, + 2953, 2960, 2951, 2952, 0, 2955, 2957, 2966, 2966, 2972, + 2967, 2973, 2954, 2964, 2958, 2959, 2968, 2968, 2965, 2967, + 2969, 2969, 2970, 2970, 2971, 2971, 2974, 2975, 2972, 2974, + 2976, 2973, 2975, 2977, 2978, 2976, 2979, 2980, 2981, 2982, + 2983, 2985, 2979, 2986, 2982, 2984, 2984, 2987, 2987, 2978, + 2981, 2980, 2989, 2991, 2994, 2994, 2985, 2996, 2977, 2997, + 2983, 3000, 2986, 2995, 2995, 2996, 2998, 2989, 2999, 3001, + 3002, 2991, 2998, 3007, 2999, 3000, 3003, 3008, 2997, 3004, + 3004, 3003, 3001, 3005, 3005, 3010, 3011, 3013, 3014, 3002, + 3011, 3015, 3016, 3014, 3007, 3017, 3018, 3008, 3019, 3010, - 3020, 3019, 3022, 3017, 3023, 3023, 3015, 3016, 3024, 3025, - 3025, 3026, 3026, 3020, 3027, 3028, 3029, 3030, 3030, 3027, - 3031, 3032, 3028, 3032, 3034, 3031, 3035, 3024, 3022, 3033, - 3033, 3034, 3036, 3035, 3037, 3029, 3038, 3040, 3040, 3037, - 3041, 3043, 3044, 3045, 3046, 3050, 3043, 3044, 3047, 3047, - 3051, 3036, 3049, 3049, 0, 3038, 3052, 3052, 3054, 3041, - 3053, 3053, 3045, 3046, 3050, 3054, 3056, 3056, 3058, 3051, - 3057, 3057, 3060, 3063, 3064, 3058, 3065, 3060, 3063, 3066, - 3066, 3067, 3067, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3064, 0, 3065, 3071, 3071, 3071, 3071, + 3024, 3020, 3026, 3019, 3025, 3016, 3020, 3013, 3017, 3034, + 3015, 3021, 3021, 3027, 3027, 3018, 3030, 3030, 3028, 3029, + 3024, 3026, 3025, 3028, 3031, 3029, 3032, 3033, 3034, 3031, + 3035, 3032, 3033, 3037, 3037, 3038, 3035, 3039, 3039, 3041, + 3038, 3042, 3043, 3041, 3044, 3045, 3046, 3047, 3048, 3043, + 3050, 3050, 3046, 3052, 3052, 3055, 3053, 3054, 3056, 3057, + 3042, 3048, 3054, 3044, 3045, 3053, 3047, 3060, 3053, 3058, + 3058, 3059, 3057, 3062, 3055, 3064, 3059, 3056, 3063, 3063, + 3060, 3065, 3065, 3066, 3066, 3067, 3068, 3069, 3070, 3070, + 3067, 3071, 3076, 3068, 3064, 3072, 3071, 3072, 3074, 3062, - 3071, 3071, 3071, 3072, 3072, 3072, 3072, 3072, 3072, 3072, - 3073, 3073, 3073, 3073, 3073, 3073, 3073, 3074, 3074, 3074, - 3074, 3074, 3074, 3074, 3075, 3075, 3075, 3075, 3075, 3075, - 3075, 3077, 3077, 0, 3077, 3077, 3077, 3077, 3078, 3078, - 0, 0, 0, 3078, 3078, 3079, 3079, 0, 0, 3079, - 0, 3079, 3080, 0, 0, 0, 0, 0, 3080, 3081, - 3081, 0, 0, 0, 3081, 3081, 3082, 0, 0, 0, - 0, 0, 3082, 3083, 3083, 0, 3083, 3083, 3083, 3083, - 3084, 3084, 0, 3084, 3084, 3084, 3084, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, + 3073, 3073, 3075, 3077, 3078, 3074, 3069, 3081, 3077, 3075, + 3083, 3076, 3080, 3080, 3084, 3083, 3085, 3086, 3090, 3084, + 3087, 3087, 3091, 3078, 3089, 3089, 3081, 3092, 3092, 3093, + 3093, 3094, 3096, 3096, 3104, 3085, 3086, 3090, 3094, 3097, + 3097, 3091, 3098, 3100, 3105, 3103, 3106, 3106, 3100, 3098, + 3103, 3107, 3107, 3104, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3105, 3111, 3111, 3111, 3111, 3111, 3111, + 3111, 3112, 3112, 3112, 3112, 3112, 3112, 3112, 3113, 3113, + 3113, 3113, 3113, 3113, 3113, 3114, 3114, 3114, 3114, 3114, + 3114, 3114, 3115, 3115, 3115, 3115, 3115, 3115, 3115, 3116, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070, - 3070, 3070, 3070, 3070, 3070, 3070, 3070, 3070 + 3116, 3116, 3116, 3116, 3116, 3116, 3117, 3117, 3117, 3117, + 3117, 3117, 3117, 3119, 3119, 0, 3119, 3119, 3119, 3119, + 3120, 3120, 0, 0, 0, 3120, 3120, 3121, 3121, 0, + 0, 3121, 0, 3121, 3122, 0, 0, 0, 0, 0, + 3122, 3123, 3123, 0, 0, 0, 3123, 3123, 3124, 0, + 0, 0, 0, 0, 3124, 3125, 3125, 0, 3125, 3125, + 3125, 3125, 3126, 0, 0, 0, 0, 0, 3126, 3127, + 3127, 0, 0, 0, 3127, 3127, 3128, 3128, 0, 3128, + 3128, 3128, 3128, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + + 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, 3110, + 3110, 3110, 3110, 3110 } ; static yy_state_type yy_last_accepting_state; @@ -2828,11 +2865,13 @@ struct inc_state { int line; YY_BUFFER_STATE buffer; struct inc_state* next; + int inc_toplevel; }; static struct inc_state* config_include_stack = NULL; static int inc_depth = 0; static int inc_prev = 0; static int num_args = 0; +static int inc_toplevel = 0; void init_cfg_parse(void) { @@ -2840,14 +2879,15 @@ void init_cfg_parse(void) inc_depth = 0; inc_prev = 0; num_args = 0; + inc_toplevel = 0; } -static void config_start_include(const char* filename) +static void config_start_include(const char* filename, int toplevel) { FILE *input; struct inc_state* s; char* nm; - if(inc_depth++ > 100000) { + if(inc_depth+1 > 100000) { ub_c_error_msg("too many include files"); return; } @@ -2879,17 +2919,20 @@ static void config_start_include(const char* filename) return; } LEXOUT(("switch_to_include_file(%s)\n", filename)); + inc_depth++; s->filename = cfg_parser->filename; s->line = cfg_parser->line; s->buffer = YY_CURRENT_BUFFER; + s->inc_toplevel = inc_toplevel; s->next = config_include_stack; config_include_stack = s; cfg_parser->filename = nm; cfg_parser->line = 1; + inc_toplevel = toplevel; yy_switch_to_buffer(yy_create_buffer(input, YY_BUF_SIZE)); } -static void config_start_include_glob(const char* filename) +static void config_start_include_glob(const char* filename, int toplevel) { /* check for wildcards */ @@ -2922,19 +2965,19 @@ static void config_start_include_glob(const char* filename) globfree(&g); if(r == GLOB_NOMATCH) return; /* no matches for pattern */ - config_start_include(filename); /* let original deal with it */ + config_start_include(filename, toplevel); /* let original deal with it */ return; } /* process files found, if any */ for(i=(int)g.gl_pathc-1; i>=0; i--) { - config_start_include(g.gl_pathv[i]); + config_start_include(g.gl_pathv[i], toplevel); } globfree(&g); return; } #endif /* HAVE_GLOB */ - config_start_include(filename); + config_start_include(filename, toplevel); } static void config_end_include(void) @@ -2948,6 +2991,7 @@ static void config_end_include(void) yy_delete_buffer(YY_CURRENT_BUFFER); yy_switch_to_buffer(s->buffer); config_include_stack = s->next; + inc_toplevel = s->inc_toplevel; free(s); } @@ -2960,18 +3004,18 @@ static void config_end_include(void) } #endif -#line 2961 "" +#line 3005 "" #define YY_NO_INPUT 1 -#line 184 "./util/configlexer.lex" +#line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT #define YY_NO_UNPUT 1 #endif #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 2970 "" +#line 3014 "" -#line 2972 "" +#line 3016 "" #define INITIAL 0 #define quotedstring 1 @@ -2979,6 +3023,8 @@ static void config_end_include(void) #define include 3 #define include_quoted 4 #define val 5 +#define include_toplevel 6 +#define include_toplevel_quoted 7 #ifndef YY_NO_UNISTD_H /* Special case for "unistd.h", since it is non-ANSI. We include it way @@ -3191,9 +3237,9 @@ YY_DECL } { -#line 204 "./util/configlexer.lex" +#line 211 "./util/configlexer.lex" -#line 3194 "" +#line 3240 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3226,13 +3272,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3071 ) + if ( yy_current_state >= 3111 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 5988 ); + while ( yy_base[yy_current_state] != 6084 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -3258,1487 +3304,1487 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 205 "./util/configlexer.lex" +#line 212 "./util/configlexer.lex" { LEXOUT(("SP ")); /* ignore */ } YY_BREAK case 2: YY_RULE_SETUP -#line 207 "./util/configlexer.lex" +#line 214 "./util/configlexer.lex" { /* note that flex makes the longest match and '.' is any but not nl */ LEXOUT(("comment(%s) ", yytext)); /* ignore */ } YY_BREAK case 3: YY_RULE_SETUP -#line 210 "./util/configlexer.lex" +#line 217 "./util/configlexer.lex" { YDVAR(0, VAR_SERVER) } YY_BREAK case 4: YY_RULE_SETUP -#line 211 "./util/configlexer.lex" +#line 218 "./util/configlexer.lex" { YDVAR(1, VAR_QNAME_MINIMISATION) } YY_BREAK case 5: YY_RULE_SETUP -#line 212 "./util/configlexer.lex" +#line 219 "./util/configlexer.lex" { YDVAR(1, VAR_QNAME_MINIMISATION_STRICT) } YY_BREAK case 6: YY_RULE_SETUP -#line 213 "./util/configlexer.lex" +#line 220 "./util/configlexer.lex" { YDVAR(1, VAR_NUM_THREADS) } YY_BREAK case 7: YY_RULE_SETUP -#line 214 "./util/configlexer.lex" +#line 221 "./util/configlexer.lex" { YDVAR(1, VAR_VERBOSITY) } YY_BREAK case 8: YY_RULE_SETUP -#line 215 "./util/configlexer.lex" +#line 222 "./util/configlexer.lex" { YDVAR(1, VAR_PORT) } YY_BREAK case 9: YY_RULE_SETUP -#line 216 "./util/configlexer.lex" +#line 223 "./util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_RANGE) } YY_BREAK case 10: YY_RULE_SETUP -#line 217 "./util/configlexer.lex" +#line 224 "./util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_PORT_PERMIT) } YY_BREAK case 11: YY_RULE_SETUP -#line 218 "./util/configlexer.lex" +#line 225 "./util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_PORT_AVOID) } YY_BREAK case 12: YY_RULE_SETUP -#line 219 "./util/configlexer.lex" +#line 226 "./util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_NUM_TCP) } YY_BREAK case 13: YY_RULE_SETUP -#line 220 "./util/configlexer.lex" +#line 227 "./util/configlexer.lex" { YDVAR(1, VAR_INCOMING_NUM_TCP) } YY_BREAK case 14: YY_RULE_SETUP -#line 221 "./util/configlexer.lex" +#line 228 "./util/configlexer.lex" { YDVAR(1, VAR_DO_IP4) } YY_BREAK case 15: YY_RULE_SETUP -#line 222 "./util/configlexer.lex" +#line 229 "./util/configlexer.lex" { YDVAR(1, VAR_DO_IP6) } YY_BREAK case 16: YY_RULE_SETUP -#line 223 "./util/configlexer.lex" +#line 230 "./util/configlexer.lex" { YDVAR(1, VAR_PREFER_IP4) } YY_BREAK case 17: YY_RULE_SETUP -#line 224 "./util/configlexer.lex" +#line 231 "./util/configlexer.lex" { YDVAR(1, VAR_PREFER_IP6) } YY_BREAK case 18: YY_RULE_SETUP -#line 225 "./util/configlexer.lex" +#line 232 "./util/configlexer.lex" { YDVAR(1, VAR_DO_UDP) } YY_BREAK case 19: YY_RULE_SETUP -#line 226 "./util/configlexer.lex" +#line 233 "./util/configlexer.lex" { YDVAR(1, VAR_DO_TCP) } YY_BREAK case 20: YY_RULE_SETUP -#line 227 "./util/configlexer.lex" +#line 234 "./util/configlexer.lex" { YDVAR(1, VAR_TCP_UPSTREAM) } YY_BREAK case 21: YY_RULE_SETUP -#line 228 "./util/configlexer.lex" +#line 235 "./util/configlexer.lex" { YDVAR(1, VAR_TCP_MSS) } YY_BREAK case 22: YY_RULE_SETUP -#line 229 "./util/configlexer.lex" +#line 236 "./util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_TCP_MSS) } YY_BREAK case 23: YY_RULE_SETUP -#line 230 "./util/configlexer.lex" +#line 237 "./util/configlexer.lex" { YDVAR(1, VAR_TCP_IDLE_TIMEOUT) } YY_BREAK case 24: YY_RULE_SETUP -#line 231 "./util/configlexer.lex" +#line 238 "./util/configlexer.lex" { YDVAR(1, VAR_EDNS_TCP_KEEPALIVE) } YY_BREAK case 25: YY_RULE_SETUP -#line 232 "./util/configlexer.lex" +#line 239 "./util/configlexer.lex" { YDVAR(1, VAR_EDNS_TCP_KEEPALIVE_TIMEOUT) } YY_BREAK case 26: YY_RULE_SETUP -#line 233 "./util/configlexer.lex" +#line 240 "./util/configlexer.lex" { YDVAR(1, VAR_SSL_UPSTREAM) } YY_BREAK case 27: YY_RULE_SETUP -#line 234 "./util/configlexer.lex" +#line 241 "./util/configlexer.lex" { YDVAR(1, VAR_SSL_UPSTREAM) } YY_BREAK case 28: YY_RULE_SETUP -#line 235 "./util/configlexer.lex" +#line 242 "./util/configlexer.lex" { YDVAR(1, VAR_SSL_SERVICE_KEY) } YY_BREAK case 29: YY_RULE_SETUP -#line 236 "./util/configlexer.lex" +#line 243 "./util/configlexer.lex" { YDVAR(1, VAR_SSL_SERVICE_KEY) } YY_BREAK case 30: YY_RULE_SETUP -#line 237 "./util/configlexer.lex" +#line 244 "./util/configlexer.lex" { YDVAR(1, VAR_SSL_SERVICE_PEM) } YY_BREAK case 31: YY_RULE_SETUP -#line 238 "./util/configlexer.lex" +#line 245 "./util/configlexer.lex" { YDVAR(1, VAR_SSL_SERVICE_PEM) } YY_BREAK case 32: YY_RULE_SETUP -#line 239 "./util/configlexer.lex" +#line 246 "./util/configlexer.lex" { YDVAR(1, VAR_SSL_PORT) } YY_BREAK case 33: YY_RULE_SETUP -#line 240 "./util/configlexer.lex" +#line 247 "./util/configlexer.lex" { YDVAR(1, VAR_SSL_PORT) } YY_BREAK case 34: YY_RULE_SETUP -#line 241 "./util/configlexer.lex" +#line 248 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_CERT_BUNDLE) } YY_BREAK case 35: YY_RULE_SETUP -#line 242 "./util/configlexer.lex" +#line 249 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_CERT_BUNDLE) } YY_BREAK case 36: YY_RULE_SETUP -#line 243 "./util/configlexer.lex" +#line 250 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_WIN_CERT) } YY_BREAK case 37: YY_RULE_SETUP -#line 244 "./util/configlexer.lex" +#line 251 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } YY_BREAK case 38: YY_RULE_SETUP -#line 245 "./util/configlexer.lex" +#line 252 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } YY_BREAK case 39: YY_RULE_SETUP -#line 246 "./util/configlexer.lex" +#line 253 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } YY_BREAK case 40: YY_RULE_SETUP -#line 247 "./util/configlexer.lex" +#line 254 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_ADDITIONAL_PORT) } YY_BREAK case 41: YY_RULE_SETUP -#line 248 "./util/configlexer.lex" +#line 255 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_SESSION_TICKET_KEYS) } YY_BREAK case 42: YY_RULE_SETUP -#line 249 "./util/configlexer.lex" +#line 256 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_CIPHERS) } YY_BREAK case 43: YY_RULE_SETUP -#line 250 "./util/configlexer.lex" +#line 257 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_CIPHERSUITES) } YY_BREAK case 44: YY_RULE_SETUP -#line 251 "./util/configlexer.lex" +#line 258 "./util/configlexer.lex" { YDVAR(1, VAR_TLS_USE_SNI) } YY_BREAK case 45: YY_RULE_SETUP -#line 252 "./util/configlexer.lex" +#line 259 "./util/configlexer.lex" { YDVAR(1, VAR_USE_SYSTEMD) } YY_BREAK case 46: YY_RULE_SETUP -#line 253 "./util/configlexer.lex" +#line 260 "./util/configlexer.lex" { YDVAR(1, VAR_DO_DAEMONIZE) } YY_BREAK case 47: YY_RULE_SETUP -#line 254 "./util/configlexer.lex" +#line 261 "./util/configlexer.lex" { YDVAR(1, VAR_INTERFACE) } YY_BREAK case 48: YY_RULE_SETUP -#line 255 "./util/configlexer.lex" +#line 262 "./util/configlexer.lex" { YDVAR(1, VAR_INTERFACE) } YY_BREAK case 49: YY_RULE_SETUP -#line 256 "./util/configlexer.lex" +#line 263 "./util/configlexer.lex" { YDVAR(1, VAR_OUTGOING_INTERFACE) } YY_BREAK case 50: YY_RULE_SETUP -#line 257 "./util/configlexer.lex" +#line 264 "./util/configlexer.lex" { YDVAR(1, VAR_INTERFACE_AUTOMATIC) } YY_BREAK case 51: YY_RULE_SETUP -#line 258 "./util/configlexer.lex" +#line 265 "./util/configlexer.lex" { YDVAR(1, VAR_SO_RCVBUF) } YY_BREAK case 52: YY_RULE_SETUP -#line 259 "./util/configlexer.lex" +#line 266 "./util/configlexer.lex" { YDVAR(1, VAR_SO_SNDBUF) } YY_BREAK case 53: YY_RULE_SETUP -#line 260 "./util/configlexer.lex" +#line 267 "./util/configlexer.lex" { YDVAR(1, VAR_SO_REUSEPORT) } YY_BREAK case 54: YY_RULE_SETUP -#line 261 "./util/configlexer.lex" +#line 268 "./util/configlexer.lex" { YDVAR(1, VAR_IP_TRANSPARENT) } YY_BREAK case 55: YY_RULE_SETUP -#line 262 "./util/configlexer.lex" +#line 269 "./util/configlexer.lex" { YDVAR(1, VAR_IP_FREEBIND) } YY_BREAK case 56: YY_RULE_SETUP -#line 263 "./util/configlexer.lex" +#line 270 "./util/configlexer.lex" { YDVAR(1, VAR_IP_DSCP) } YY_BREAK case 57: YY_RULE_SETUP -#line 264 "./util/configlexer.lex" +#line 271 "./util/configlexer.lex" { YDVAR(1, VAR_CHROOT) } YY_BREAK case 58: YY_RULE_SETUP -#line 265 "./util/configlexer.lex" +#line 272 "./util/configlexer.lex" { YDVAR(1, VAR_USERNAME) } YY_BREAK case 59: YY_RULE_SETUP -#line 266 "./util/configlexer.lex" +#line 273 "./util/configlexer.lex" { YDVAR(1, VAR_DIRECTORY) } YY_BREAK case 60: YY_RULE_SETUP -#line 267 "./util/configlexer.lex" +#line 274 "./util/configlexer.lex" { YDVAR(1, VAR_LOGFILE) } YY_BREAK case 61: YY_RULE_SETUP -#line 268 "./util/configlexer.lex" +#line 275 "./util/configlexer.lex" { YDVAR(1, VAR_PIDFILE) } YY_BREAK case 62: YY_RULE_SETUP -#line 269 "./util/configlexer.lex" +#line 276 "./util/configlexer.lex" { YDVAR(1, VAR_ROOT_HINTS) } YY_BREAK case 63: YY_RULE_SETUP -#line 270 "./util/configlexer.lex" +#line 277 "./util/configlexer.lex" { YDVAR(1, VAR_STREAM_WAIT_SIZE) } YY_BREAK case 64: YY_RULE_SETUP -#line 271 "./util/configlexer.lex" +#line 278 "./util/configlexer.lex" { YDVAR(1, VAR_EDNS_BUFFER_SIZE) } YY_BREAK case 65: YY_RULE_SETUP -#line 272 "./util/configlexer.lex" +#line 279 "./util/configlexer.lex" { YDVAR(1, VAR_MSG_BUFFER_SIZE) } YY_BREAK case 66: YY_RULE_SETUP -#line 273 "./util/configlexer.lex" +#line 280 "./util/configlexer.lex" { YDVAR(1, VAR_MSG_CACHE_SIZE) } YY_BREAK case 67: YY_RULE_SETUP -#line 274 "./util/configlexer.lex" +#line 281 "./util/configlexer.lex" { YDVAR(1, VAR_MSG_CACHE_SLABS) } YY_BREAK case 68: YY_RULE_SETUP -#line 275 "./util/configlexer.lex" +#line 282 "./util/configlexer.lex" { YDVAR(1, VAR_RRSET_CACHE_SIZE) } YY_BREAK case 69: YY_RULE_SETUP -#line 276 "./util/configlexer.lex" +#line 283 "./util/configlexer.lex" { YDVAR(1, VAR_RRSET_CACHE_SLABS) } YY_BREAK case 70: YY_RULE_SETUP -#line 277 "./util/configlexer.lex" +#line 284 "./util/configlexer.lex" { YDVAR(1, VAR_CACHE_MAX_TTL) } YY_BREAK case 71: YY_RULE_SETUP -#line 278 "./util/configlexer.lex" +#line 285 "./util/configlexer.lex" { YDVAR(1, VAR_CACHE_MAX_NEGATIVE_TTL) } YY_BREAK case 72: YY_RULE_SETUP -#line 279 "./util/configlexer.lex" +#line 286 "./util/configlexer.lex" { YDVAR(1, VAR_CACHE_MIN_TTL) } YY_BREAK case 73: YY_RULE_SETUP -#line 280 "./util/configlexer.lex" +#line 287 "./util/configlexer.lex" { YDVAR(1, VAR_INFRA_HOST_TTL) } YY_BREAK case 74: YY_RULE_SETUP -#line 281 "./util/configlexer.lex" +#line 288 "./util/configlexer.lex" { YDVAR(1, VAR_INFRA_LAME_TTL) } YY_BREAK case 75: YY_RULE_SETUP -#line 282 "./util/configlexer.lex" +#line 289 "./util/configlexer.lex" { YDVAR(1, VAR_INFRA_CACHE_SLABS) } YY_BREAK case 76: YY_RULE_SETUP -#line 283 "./util/configlexer.lex" +#line 290 "./util/configlexer.lex" { YDVAR(1, VAR_INFRA_CACHE_NUMHOSTS) } YY_BREAK case 77: YY_RULE_SETUP -#line 284 "./util/configlexer.lex" +#line 291 "./util/configlexer.lex" { YDVAR(1, VAR_INFRA_CACHE_LAME_SIZE) } YY_BREAK case 78: YY_RULE_SETUP -#line 285 "./util/configlexer.lex" +#line 292 "./util/configlexer.lex" { YDVAR(1, VAR_INFRA_CACHE_MIN_RTT) } YY_BREAK case 79: YY_RULE_SETUP -#line 286 "./util/configlexer.lex" +#line 293 "./util/configlexer.lex" { YDVAR(1, VAR_NUM_QUERIES_PER_THREAD) } YY_BREAK case 80: YY_RULE_SETUP -#line 287 "./util/configlexer.lex" +#line 294 "./util/configlexer.lex" { YDVAR(1, VAR_JOSTLE_TIMEOUT) } YY_BREAK case 81: YY_RULE_SETUP -#line 288 "./util/configlexer.lex" +#line 295 "./util/configlexer.lex" { YDVAR(1, VAR_DELAY_CLOSE) } YY_BREAK case 82: YY_RULE_SETUP -#line 289 "./util/configlexer.lex" +#line 296 "./util/configlexer.lex" { YDVAR(1, VAR_TARGET_FETCH_POLICY) } YY_BREAK case 83: YY_RULE_SETUP -#line 290 "./util/configlexer.lex" +#line 297 "./util/configlexer.lex" { YDVAR(1, VAR_HARDEN_SHORT_BUFSIZE) } YY_BREAK case 84: YY_RULE_SETUP -#line 291 "./util/configlexer.lex" +#line 298 "./util/configlexer.lex" { YDVAR(1, VAR_HARDEN_LARGE_QUERIES) } YY_BREAK case 85: YY_RULE_SETUP -#line 292 "./util/configlexer.lex" +#line 299 "./util/configlexer.lex" { YDVAR(1, VAR_HARDEN_GLUE) } YY_BREAK case 86: YY_RULE_SETUP -#line 293 "./util/configlexer.lex" +#line 300 "./util/configlexer.lex" { YDVAR(1, VAR_HARDEN_DNSSEC_STRIPPED) } YY_BREAK case 87: YY_RULE_SETUP -#line 294 "./util/configlexer.lex" +#line 301 "./util/configlexer.lex" { YDVAR(1, VAR_HARDEN_BELOW_NXDOMAIN) } YY_BREAK case 88: YY_RULE_SETUP -#line 295 "./util/configlexer.lex" +#line 302 "./util/configlexer.lex" { YDVAR(1, VAR_HARDEN_REFERRAL_PATH) } YY_BREAK case 89: YY_RULE_SETUP -#line 296 "./util/configlexer.lex" +#line 303 "./util/configlexer.lex" { YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } YY_BREAK case 90: YY_RULE_SETUP -#line 297 "./util/configlexer.lex" +#line 304 "./util/configlexer.lex" { YDVAR(1, VAR_USE_CAPS_FOR_ID) } YY_BREAK case 91: YY_RULE_SETUP -#line 298 "./util/configlexer.lex" +#line 305 "./util/configlexer.lex" { YDVAR(1, VAR_CAPS_WHITELIST) } YY_BREAK case 92: YY_RULE_SETUP -#line 299 "./util/configlexer.lex" +#line 306 "./util/configlexer.lex" { YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } YY_BREAK case 93: YY_RULE_SETUP -#line 300 "./util/configlexer.lex" +#line 307 "./util/configlexer.lex" { YDVAR(1, VAR_PRIVATE_ADDRESS) } YY_BREAK case 94: YY_RULE_SETUP -#line 301 "./util/configlexer.lex" +#line 308 "./util/configlexer.lex" { YDVAR(1, VAR_PRIVATE_DOMAIN) } YY_BREAK case 95: YY_RULE_SETUP -#line 302 "./util/configlexer.lex" +#line 309 "./util/configlexer.lex" { YDVAR(1, VAR_PREFETCH_KEY) } YY_BREAK case 96: YY_RULE_SETUP -#line 303 "./util/configlexer.lex" +#line 310 "./util/configlexer.lex" { YDVAR(1, VAR_PREFETCH) } YY_BREAK case 97: YY_RULE_SETUP -#line 304 "./util/configlexer.lex" +#line 311 "./util/configlexer.lex" { YDVAR(1, VAR_DENY_ANY) } YY_BREAK case 98: YY_RULE_SETUP -#line 305 "./util/configlexer.lex" +#line 312 "./util/configlexer.lex" { YDVAR(0, VAR_STUB_ZONE) } YY_BREAK case 99: YY_RULE_SETUP -#line 306 "./util/configlexer.lex" +#line 313 "./util/configlexer.lex" { YDVAR(1, VAR_NAME) } YY_BREAK case 100: YY_RULE_SETUP -#line 307 "./util/configlexer.lex" +#line 314 "./util/configlexer.lex" { YDVAR(1, VAR_STUB_ADDR) } YY_BREAK case 101: YY_RULE_SETUP -#line 308 "./util/configlexer.lex" +#line 315 "./util/configlexer.lex" { YDVAR(1, VAR_STUB_HOST) } YY_BREAK case 102: YY_RULE_SETUP -#line 309 "./util/configlexer.lex" +#line 316 "./util/configlexer.lex" { YDVAR(1, VAR_STUB_PRIME) } YY_BREAK case 103: YY_RULE_SETUP -#line 310 "./util/configlexer.lex" +#line 317 "./util/configlexer.lex" { YDVAR(1, VAR_STUB_FIRST) } YY_BREAK case 104: YY_RULE_SETUP -#line 311 "./util/configlexer.lex" +#line 318 "./util/configlexer.lex" { YDVAR(1, VAR_STUB_NO_CACHE) } YY_BREAK case 105: YY_RULE_SETUP -#line 312 "./util/configlexer.lex" +#line 319 "./util/configlexer.lex" { YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 106: YY_RULE_SETUP -#line 313 "./util/configlexer.lex" +#line 320 "./util/configlexer.lex" { YDVAR(1, VAR_STUB_SSL_UPSTREAM) } YY_BREAK case 107: YY_RULE_SETUP -#line 314 "./util/configlexer.lex" +#line 321 "./util/configlexer.lex" { YDVAR(0, VAR_FORWARD_ZONE) } YY_BREAK case 108: YY_RULE_SETUP -#line 315 "./util/configlexer.lex" +#line 322 "./util/configlexer.lex" { YDVAR(1, VAR_FORWARD_ADDR) } YY_BREAK case 109: YY_RULE_SETUP -#line 316 "./util/configlexer.lex" +#line 323 "./util/configlexer.lex" { YDVAR(1, VAR_FORWARD_HOST) } YY_BREAK case 110: YY_RULE_SETUP -#line 317 "./util/configlexer.lex" +#line 324 "./util/configlexer.lex" { YDVAR(1, VAR_FORWARD_FIRST) } YY_BREAK case 111: YY_RULE_SETUP -#line 318 "./util/configlexer.lex" +#line 325 "./util/configlexer.lex" { YDVAR(1, VAR_FORWARD_NO_CACHE) } YY_BREAK case 112: YY_RULE_SETUP -#line 319 "./util/configlexer.lex" +#line 326 "./util/configlexer.lex" { YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 113: YY_RULE_SETUP -#line 320 "./util/configlexer.lex" +#line 327 "./util/configlexer.lex" { YDVAR(1, VAR_FORWARD_SSL_UPSTREAM) } YY_BREAK case 114: YY_RULE_SETUP -#line 321 "./util/configlexer.lex" +#line 328 "./util/configlexer.lex" { YDVAR(0, VAR_AUTH_ZONE) } YY_BREAK case 115: YY_RULE_SETUP -#line 322 "./util/configlexer.lex" +#line 329 "./util/configlexer.lex" { YDVAR(0, VAR_RPZ) } YY_BREAK case 116: YY_RULE_SETUP -#line 323 "./util/configlexer.lex" +#line 330 "./util/configlexer.lex" { YDVAR(1, VAR_TAGS) } YY_BREAK case 117: YY_RULE_SETUP -#line 324 "./util/configlexer.lex" +#line 331 "./util/configlexer.lex" { YDVAR(1, VAR_RPZ_ACTION_OVERRIDE) } YY_BREAK case 118: YY_RULE_SETUP -#line 325 "./util/configlexer.lex" +#line 332 "./util/configlexer.lex" { YDVAR(1, VAR_RPZ_CNAME_OVERRIDE) } YY_BREAK case 119: YY_RULE_SETUP -#line 326 "./util/configlexer.lex" +#line 333 "./util/configlexer.lex" { YDVAR(1, VAR_RPZ_LOG) } YY_BREAK case 120: YY_RULE_SETUP -#line 327 "./util/configlexer.lex" +#line 334 "./util/configlexer.lex" { YDVAR(1, VAR_RPZ_LOG_NAME) } YY_BREAK case 121: YY_RULE_SETUP -#line 328 "./util/configlexer.lex" +#line 335 "./util/configlexer.lex" { YDVAR(1, VAR_ZONEFILE) } YY_BREAK case 122: YY_RULE_SETUP -#line 329 "./util/configlexer.lex" +#line 336 "./util/configlexer.lex" { YDVAR(1, VAR_MASTER) } YY_BREAK case 123: YY_RULE_SETUP -#line 330 "./util/configlexer.lex" +#line 337 "./util/configlexer.lex" { YDVAR(1, VAR_URL) } YY_BREAK case 124: YY_RULE_SETUP -#line 331 "./util/configlexer.lex" +#line 338 "./util/configlexer.lex" { YDVAR(1, VAR_ALLOW_NOTIFY) } YY_BREAK case 125: YY_RULE_SETUP -#line 332 "./util/configlexer.lex" +#line 339 "./util/configlexer.lex" { YDVAR(1, VAR_FOR_DOWNSTREAM) } YY_BREAK case 126: YY_RULE_SETUP -#line 333 "./util/configlexer.lex" +#line 340 "./util/configlexer.lex" { YDVAR(1, VAR_FOR_UPSTREAM) } YY_BREAK case 127: YY_RULE_SETUP -#line 334 "./util/configlexer.lex" +#line 341 "./util/configlexer.lex" { YDVAR(1, VAR_FALLBACK_ENABLED) } YY_BREAK case 128: YY_RULE_SETUP -#line 335 "./util/configlexer.lex" +#line 342 "./util/configlexer.lex" { YDVAR(0, VAR_VIEW) } YY_BREAK case 129: YY_RULE_SETUP -#line 336 "./util/configlexer.lex" +#line 343 "./util/configlexer.lex" { YDVAR(1, VAR_VIEW_FIRST) } YY_BREAK case 130: YY_RULE_SETUP -#line 337 "./util/configlexer.lex" +#line 344 "./util/configlexer.lex" { YDVAR(1, VAR_DO_NOT_QUERY_ADDRESS) } YY_BREAK case 131: YY_RULE_SETUP -#line 338 "./util/configlexer.lex" +#line 345 "./util/configlexer.lex" { YDVAR(1, VAR_DO_NOT_QUERY_LOCALHOST) } YY_BREAK case 132: YY_RULE_SETUP -#line 339 "./util/configlexer.lex" +#line 346 "./util/configlexer.lex" { YDVAR(2, VAR_ACCESS_CONTROL) } YY_BREAK case 133: YY_RULE_SETUP -#line 340 "./util/configlexer.lex" +#line 347 "./util/configlexer.lex" { YDVAR(1, VAR_SEND_CLIENT_SUBNET) } YY_BREAK case 134: YY_RULE_SETUP -#line 341 "./util/configlexer.lex" +#line 348 "./util/configlexer.lex" { YDVAR(1, VAR_CLIENT_SUBNET_ZONE) } YY_BREAK case 135: YY_RULE_SETUP -#line 342 "./util/configlexer.lex" +#line 349 "./util/configlexer.lex" { YDVAR(1, VAR_CLIENT_SUBNET_ALWAYS_FORWARD) } YY_BREAK case 136: YY_RULE_SETUP -#line 343 "./util/configlexer.lex" +#line 350 "./util/configlexer.lex" { YDVAR(1, VAR_CLIENT_SUBNET_OPCODE) } YY_BREAK case 137: YY_RULE_SETUP -#line 344 "./util/configlexer.lex" +#line 351 "./util/configlexer.lex" { YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV4) } YY_BREAK case 138: YY_RULE_SETUP -#line 345 "./util/configlexer.lex" +#line 352 "./util/configlexer.lex" { YDVAR(1, VAR_MAX_CLIENT_SUBNET_IPV6) } YY_BREAK case 139: YY_RULE_SETUP -#line 346 "./util/configlexer.lex" +#line 353 "./util/configlexer.lex" { YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV4) } YY_BREAK case 140: YY_RULE_SETUP -#line 347 "./util/configlexer.lex" +#line 354 "./util/configlexer.lex" { YDVAR(1, VAR_MIN_CLIENT_SUBNET_IPV6) } YY_BREAK case 141: YY_RULE_SETUP -#line 348 "./util/configlexer.lex" +#line 355 "./util/configlexer.lex" { YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV4) } YY_BREAK case 142: YY_RULE_SETUP -#line 349 "./util/configlexer.lex" +#line 356 "./util/configlexer.lex" { YDVAR(1, VAR_MAX_ECS_TREE_SIZE_IPV6) } YY_BREAK case 143: YY_RULE_SETUP -#line 350 "./util/configlexer.lex" +#line 357 "./util/configlexer.lex" { YDVAR(1, VAR_HIDE_IDENTITY) } YY_BREAK case 144: YY_RULE_SETUP -#line 351 "./util/configlexer.lex" +#line 358 "./util/configlexer.lex" { YDVAR(1, VAR_HIDE_VERSION) } YY_BREAK case 145: YY_RULE_SETUP -#line 352 "./util/configlexer.lex" +#line 359 "./util/configlexer.lex" { YDVAR(1, VAR_HIDE_TRUSTANCHOR) } YY_BREAK case 146: YY_RULE_SETUP -#line 353 "./util/configlexer.lex" +#line 360 "./util/configlexer.lex" { YDVAR(1, VAR_IDENTITY) } YY_BREAK case 147: YY_RULE_SETUP -#line 354 "./util/configlexer.lex" +#line 361 "./util/configlexer.lex" { YDVAR(1, VAR_VERSION) } YY_BREAK case 148: YY_RULE_SETUP -#line 355 "./util/configlexer.lex" +#line 362 "./util/configlexer.lex" { YDVAR(1, VAR_MODULE_CONF) } YY_BREAK case 149: YY_RULE_SETUP -#line 356 "./util/configlexer.lex" +#line 363 "./util/configlexer.lex" { YDVAR(1, VAR_DLV_ANCHOR) } YY_BREAK case 150: YY_RULE_SETUP -#line 357 "./util/configlexer.lex" +#line 364 "./util/configlexer.lex" { YDVAR(1, VAR_DLV_ANCHOR_FILE) } YY_BREAK case 151: YY_RULE_SETUP -#line 358 "./util/configlexer.lex" +#line 365 "./util/configlexer.lex" { YDVAR(1, VAR_TRUST_ANCHOR_FILE) } YY_BREAK case 152: YY_RULE_SETUP -#line 359 "./util/configlexer.lex" +#line 366 "./util/configlexer.lex" { YDVAR(1, VAR_AUTO_TRUST_ANCHOR_FILE) } YY_BREAK case 153: YY_RULE_SETUP -#line 360 "./util/configlexer.lex" +#line 367 "./util/configlexer.lex" { YDVAR(1, VAR_TRUSTED_KEYS_FILE) } YY_BREAK case 154: YY_RULE_SETUP -#line 361 "./util/configlexer.lex" +#line 368 "./util/configlexer.lex" { YDVAR(1, VAR_TRUST_ANCHOR) } YY_BREAK case 155: YY_RULE_SETUP -#line 362 "./util/configlexer.lex" +#line 369 "./util/configlexer.lex" { YDVAR(1, VAR_TRUST_ANCHOR_SIGNALING) } YY_BREAK case 156: YY_RULE_SETUP -#line 363 "./util/configlexer.lex" +#line 370 "./util/configlexer.lex" { YDVAR(1, VAR_ROOT_KEY_SENTINEL) } YY_BREAK case 157: YY_RULE_SETUP -#line 364 "./util/configlexer.lex" +#line 371 "./util/configlexer.lex" { YDVAR(1, VAR_VAL_OVERRIDE_DATE) } YY_BREAK case 158: YY_RULE_SETUP -#line 365 "./util/configlexer.lex" +#line 372 "./util/configlexer.lex" { YDVAR(1, VAR_VAL_SIG_SKEW_MIN) } YY_BREAK case 159: YY_RULE_SETUP -#line 366 "./util/configlexer.lex" +#line 373 "./util/configlexer.lex" { YDVAR(1, VAR_VAL_SIG_SKEW_MAX) } YY_BREAK case 160: YY_RULE_SETUP -#line 367 "./util/configlexer.lex" +#line 374 "./util/configlexer.lex" { YDVAR(1, VAR_BOGUS_TTL) } YY_BREAK case 161: YY_RULE_SETUP -#line 368 "./util/configlexer.lex" +#line 375 "./util/configlexer.lex" { YDVAR(1, VAR_VAL_CLEAN_ADDITIONAL) } YY_BREAK case 162: YY_RULE_SETUP -#line 369 "./util/configlexer.lex" +#line 376 "./util/configlexer.lex" { YDVAR(1, VAR_VAL_PERMISSIVE_MODE) } YY_BREAK case 163: YY_RULE_SETUP -#line 370 "./util/configlexer.lex" +#line 377 "./util/configlexer.lex" { YDVAR(1, VAR_AGGRESSIVE_NSEC) } YY_BREAK case 164: YY_RULE_SETUP -#line 371 "./util/configlexer.lex" +#line 378 "./util/configlexer.lex" { YDVAR(1, VAR_IGNORE_CD_FLAG) } YY_BREAK case 165: YY_RULE_SETUP -#line 372 "./util/configlexer.lex" +#line 379 "./util/configlexer.lex" { YDVAR(1, VAR_SERVE_EXPIRED) } YY_BREAK case 166: YY_RULE_SETUP -#line 373 "./util/configlexer.lex" +#line 380 "./util/configlexer.lex" { YDVAR(1, VAR_SERVE_EXPIRED_TTL) } YY_BREAK case 167: YY_RULE_SETUP -#line 374 "./util/configlexer.lex" +#line 381 "./util/configlexer.lex" { YDVAR(1, VAR_SERVE_EXPIRED_TTL_RESET) } YY_BREAK case 168: YY_RULE_SETUP -#line 375 "./util/configlexer.lex" +#line 382 "./util/configlexer.lex" { YDVAR(1, VAR_SERVE_EXPIRED_REPLY_TTL) } YY_BREAK case 169: YY_RULE_SETUP -#line 376 "./util/configlexer.lex" +#line 383 "./util/configlexer.lex" { YDVAR(1, VAR_SERVE_EXPIRED_CLIENT_TIMEOUT) } YY_BREAK case 170: YY_RULE_SETUP -#line 377 "./util/configlexer.lex" +#line 384 "./util/configlexer.lex" { YDVAR(1, VAR_FAKE_DSA) } YY_BREAK case 171: YY_RULE_SETUP -#line 378 "./util/configlexer.lex" +#line 385 "./util/configlexer.lex" { YDVAR(1, VAR_FAKE_SHA1) } YY_BREAK case 172: YY_RULE_SETUP -#line 379 "./util/configlexer.lex" +#line 386 "./util/configlexer.lex" { YDVAR(1, VAR_VAL_LOG_LEVEL) } YY_BREAK case 173: YY_RULE_SETUP -#line 380 "./util/configlexer.lex" +#line 387 "./util/configlexer.lex" { YDVAR(1, VAR_KEY_CACHE_SIZE) } YY_BREAK case 174: YY_RULE_SETUP -#line 381 "./util/configlexer.lex" +#line 388 "./util/configlexer.lex" { YDVAR(1, VAR_KEY_CACHE_SLABS) } YY_BREAK case 175: YY_RULE_SETUP -#line 382 "./util/configlexer.lex" +#line 389 "./util/configlexer.lex" { YDVAR(1, VAR_NEG_CACHE_SIZE) } YY_BREAK case 176: YY_RULE_SETUP -#line 383 "./util/configlexer.lex" +#line 390 "./util/configlexer.lex" { YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) } YY_BREAK case 177: YY_RULE_SETUP -#line 385 "./util/configlexer.lex" +#line 392 "./util/configlexer.lex" { YDVAR(1, VAR_ADD_HOLDDOWN) } YY_BREAK case 178: YY_RULE_SETUP -#line 386 "./util/configlexer.lex" +#line 393 "./util/configlexer.lex" { YDVAR(1, VAR_DEL_HOLDDOWN) } YY_BREAK case 179: YY_RULE_SETUP -#line 387 "./util/configlexer.lex" +#line 394 "./util/configlexer.lex" { YDVAR(1, VAR_KEEP_MISSING) } YY_BREAK case 180: YY_RULE_SETUP -#line 388 "./util/configlexer.lex" +#line 395 "./util/configlexer.lex" { YDVAR(1, VAR_PERMIT_SMALL_HOLDDOWN) } YY_BREAK case 181: YY_RULE_SETUP -#line 389 "./util/configlexer.lex" +#line 396 "./util/configlexer.lex" { YDVAR(1, VAR_USE_SYSLOG) } YY_BREAK case 182: YY_RULE_SETUP -#line 390 "./util/configlexer.lex" +#line 397 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_IDENTITY) } YY_BREAK case 183: YY_RULE_SETUP -#line 391 "./util/configlexer.lex" +#line 398 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_TIME_ASCII) } YY_BREAK case 184: YY_RULE_SETUP -#line 392 "./util/configlexer.lex" +#line 399 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_QUERIES) } YY_BREAK case 185: YY_RULE_SETUP -#line 393 "./util/configlexer.lex" +#line 400 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_REPLIES) } YY_BREAK case 186: YY_RULE_SETUP -#line 394 "./util/configlexer.lex" +#line 401 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_TAG_QUERYREPLY) } YY_BREAK case 187: YY_RULE_SETUP -#line 395 "./util/configlexer.lex" +#line 402 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_LOCAL_ACTIONS) } YY_BREAK case 188: YY_RULE_SETUP -#line 396 "./util/configlexer.lex" +#line 403 "./util/configlexer.lex" { YDVAR(1, VAR_LOG_SERVFAIL) } YY_BREAK case 189: YY_RULE_SETUP -#line 397 "./util/configlexer.lex" +#line 404 "./util/configlexer.lex" { YDVAR(2, VAR_LOCAL_ZONE) } YY_BREAK case 190: YY_RULE_SETUP -#line 398 "./util/configlexer.lex" +#line 405 "./util/configlexer.lex" { YDVAR(1, VAR_LOCAL_DATA) } YY_BREAK case 191: YY_RULE_SETUP -#line 399 "./util/configlexer.lex" +#line 406 "./util/configlexer.lex" { YDVAR(1, VAR_LOCAL_DATA_PTR) } YY_BREAK case 192: YY_RULE_SETUP -#line 400 "./util/configlexer.lex" +#line 407 "./util/configlexer.lex" { YDVAR(1, VAR_UNBLOCK_LAN_ZONES) } YY_BREAK case 193: YY_RULE_SETUP -#line 401 "./util/configlexer.lex" +#line 408 "./util/configlexer.lex" { YDVAR(1, VAR_INSECURE_LAN_ZONES) } YY_BREAK case 194: YY_RULE_SETUP -#line 402 "./util/configlexer.lex" +#line 409 "./util/configlexer.lex" { YDVAR(1, VAR_STATISTICS_INTERVAL) } YY_BREAK case 195: YY_RULE_SETUP -#line 403 "./util/configlexer.lex" +#line 410 "./util/configlexer.lex" { YDVAR(1, VAR_STATISTICS_CUMULATIVE) } YY_BREAK case 196: YY_RULE_SETUP -#line 404 "./util/configlexer.lex" +#line 411 "./util/configlexer.lex" { YDVAR(1, VAR_EXTENDED_STATISTICS) } YY_BREAK case 197: YY_RULE_SETUP -#line 405 "./util/configlexer.lex" +#line 412 "./util/configlexer.lex" { YDVAR(1, VAR_SHM_ENABLE) } YY_BREAK case 198: YY_RULE_SETUP -#line 406 "./util/configlexer.lex" +#line 413 "./util/configlexer.lex" { YDVAR(1, VAR_SHM_KEY) } YY_BREAK case 199: YY_RULE_SETUP -#line 407 "./util/configlexer.lex" +#line 414 "./util/configlexer.lex" { YDVAR(0, VAR_REMOTE_CONTROL) } YY_BREAK case 200: YY_RULE_SETUP -#line 408 "./util/configlexer.lex" +#line 415 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_ENABLE) } YY_BREAK case 201: YY_RULE_SETUP -#line 409 "./util/configlexer.lex" +#line 416 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_INTERFACE) } YY_BREAK case 202: YY_RULE_SETUP -#line 410 "./util/configlexer.lex" +#line 417 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_PORT) } YY_BREAK case 203: YY_RULE_SETUP -#line 411 "./util/configlexer.lex" +#line 418 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_USE_CERT) } YY_BREAK case 204: YY_RULE_SETUP -#line 412 "./util/configlexer.lex" +#line 419 "./util/configlexer.lex" { YDVAR(1, VAR_SERVER_KEY_FILE) } YY_BREAK case 205: YY_RULE_SETUP -#line 413 "./util/configlexer.lex" +#line 420 "./util/configlexer.lex" { YDVAR(1, VAR_SERVER_CERT_FILE) } YY_BREAK case 206: YY_RULE_SETUP -#line 414 "./util/configlexer.lex" +#line 421 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_KEY_FILE) } YY_BREAK case 207: YY_RULE_SETUP -#line 415 "./util/configlexer.lex" +#line 422 "./util/configlexer.lex" { YDVAR(1, VAR_CONTROL_CERT_FILE) } YY_BREAK case 208: YY_RULE_SETUP -#line 416 "./util/configlexer.lex" +#line 423 "./util/configlexer.lex" { YDVAR(1, VAR_PYTHON_SCRIPT) } YY_BREAK case 209: YY_RULE_SETUP -#line 417 "./util/configlexer.lex" +#line 424 "./util/configlexer.lex" { YDVAR(0, VAR_PYTHON) } YY_BREAK case 210: YY_RULE_SETUP -#line 418 "./util/configlexer.lex" +#line 425 "./util/configlexer.lex" { YDVAR(1, VAR_DOMAIN_INSECURE) } YY_BREAK case 211: YY_RULE_SETUP -#line 419 "./util/configlexer.lex" +#line 426 "./util/configlexer.lex" { YDVAR(1, VAR_MINIMAL_RESPONSES) } YY_BREAK case 212: YY_RULE_SETUP -#line 420 "./util/configlexer.lex" +#line 427 "./util/configlexer.lex" { YDVAR(1, VAR_RRSET_ROUNDROBIN) } YY_BREAK case 213: YY_RULE_SETUP -#line 421 "./util/configlexer.lex" +#line 428 "./util/configlexer.lex" { YDVAR(1, VAR_UNKNOWN_SERVER_TIME_LIMIT) } YY_BREAK case 214: YY_RULE_SETUP -#line 422 "./util/configlexer.lex" +#line 429 "./util/configlexer.lex" { YDVAR(1, VAR_MAX_UDP_SIZE) } YY_BREAK case 215: YY_RULE_SETUP -#line 423 "./util/configlexer.lex" +#line 430 "./util/configlexer.lex" { YDVAR(1, VAR_DNS64_PREFIX) } YY_BREAK case 216: YY_RULE_SETUP -#line 424 "./util/configlexer.lex" +#line 431 "./util/configlexer.lex" { YDVAR(1, VAR_DNS64_SYNTHALL) } YY_BREAK case 217: YY_RULE_SETUP -#line 425 "./util/configlexer.lex" +#line 432 "./util/configlexer.lex" { YDVAR(1, VAR_DNS64_IGNORE_AAAA) } YY_BREAK case 218: YY_RULE_SETUP -#line 426 "./util/configlexer.lex" +#line 433 "./util/configlexer.lex" { YDVAR(1, VAR_DEFINE_TAG) } YY_BREAK case 219: YY_RULE_SETUP -#line 427 "./util/configlexer.lex" +#line 434 "./util/configlexer.lex" { YDVAR(2, VAR_LOCAL_ZONE_TAG) } YY_BREAK case 220: YY_RULE_SETUP -#line 428 "./util/configlexer.lex" +#line 435 "./util/configlexer.lex" { YDVAR(2, VAR_ACCESS_CONTROL_TAG) } YY_BREAK case 221: YY_RULE_SETUP -#line 429 "./util/configlexer.lex" +#line 436 "./util/configlexer.lex" { YDVAR(3, VAR_ACCESS_CONTROL_TAG_ACTION) } YY_BREAK case 222: YY_RULE_SETUP -#line 430 "./util/configlexer.lex" +#line 437 "./util/configlexer.lex" { YDVAR(3, VAR_ACCESS_CONTROL_TAG_DATA) } YY_BREAK case 223: YY_RULE_SETUP -#line 431 "./util/configlexer.lex" +#line 438 "./util/configlexer.lex" { YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } YY_BREAK case 224: YY_RULE_SETUP -#line 432 "./util/configlexer.lex" +#line 439 "./util/configlexer.lex" { YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } YY_BREAK case 225: YY_RULE_SETUP -#line 433 "./util/configlexer.lex" +#line 440 "./util/configlexer.lex" { YDVAR(0, VAR_DNSTAP) } YY_BREAK case 226: YY_RULE_SETUP -#line 434 "./util/configlexer.lex" +#line 441 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_ENABLE) } YY_BREAK case 227: YY_RULE_SETUP -#line 435 "./util/configlexer.lex" +#line 442 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 228: YY_RULE_SETUP -#line 436 "./util/configlexer.lex" +#line 443 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 229: YY_RULE_SETUP -#line 437 "./util/configlexer.lex" +#line 444 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 230: YY_RULE_SETUP -#line 438 "./util/configlexer.lex" +#line 445 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 231: YY_RULE_SETUP -#line 439 "./util/configlexer.lex" +#line 446 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 232: YY_RULE_SETUP -#line 440 "./util/configlexer.lex" +#line 447 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 233: YY_RULE_SETUP -#line 442 "./util/configlexer.lex" +#line 449 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 234: YY_RULE_SETUP -#line 444 "./util/configlexer.lex" +#line 451 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 235: YY_RULE_SETUP -#line 445 "./util/configlexer.lex" +#line 452 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 236: YY_RULE_SETUP -#line 446 "./util/configlexer.lex" +#line 453 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 237: YY_RULE_SETUP -#line 447 "./util/configlexer.lex" +#line 454 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 238: YY_RULE_SETUP -#line 448 "./util/configlexer.lex" +#line 455 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 239: YY_RULE_SETUP -#line 450 "./util/configlexer.lex" +#line 457 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 240: YY_RULE_SETUP -#line 452 "./util/configlexer.lex" +#line 459 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 241: YY_RULE_SETUP -#line 454 "./util/configlexer.lex" +#line 461 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 242: YY_RULE_SETUP -#line 456 "./util/configlexer.lex" +#line 463 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 243: YY_RULE_SETUP -#line 458 "./util/configlexer.lex" +#line 465 "./util/configlexer.lex" { YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 244: YY_RULE_SETUP -#line 460 "./util/configlexer.lex" +#line 467 "./util/configlexer.lex" { YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 245: YY_RULE_SETUP -#line 461 "./util/configlexer.lex" +#line 468 "./util/configlexer.lex" { YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 246: YY_RULE_SETUP -#line 462 "./util/configlexer.lex" +#line 469 "./util/configlexer.lex" { YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 247: YY_RULE_SETUP -#line 463 "./util/configlexer.lex" +#line 470 "./util/configlexer.lex" { YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 248: YY_RULE_SETUP -#line 464 "./util/configlexer.lex" +#line 471 "./util/configlexer.lex" { YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 249: YY_RULE_SETUP -#line 465 "./util/configlexer.lex" +#line 472 "./util/configlexer.lex" { YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 250: YY_RULE_SETUP -#line 466 "./util/configlexer.lex" +#line 473 "./util/configlexer.lex" { YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 251: YY_RULE_SETUP -#line 467 "./util/configlexer.lex" +#line 474 "./util/configlexer.lex" { YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 252: YY_RULE_SETUP -#line 468 "./util/configlexer.lex" +#line 475 "./util/configlexer.lex" { YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 253: YY_RULE_SETUP -#line 469 "./util/configlexer.lex" +#line 476 "./util/configlexer.lex" { YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 254: YY_RULE_SETUP -#line 470 "./util/configlexer.lex" +#line 477 "./util/configlexer.lex" { YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 255: YY_RULE_SETUP -#line 471 "./util/configlexer.lex" +#line 478 "./util/configlexer.lex" { YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 256: YY_RULE_SETUP -#line 472 "./util/configlexer.lex" +#line 479 "./util/configlexer.lex" { YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 257: YY_RULE_SETUP -#line 473 "./util/configlexer.lex" +#line 480 "./util/configlexer.lex" { YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 258: YY_RULE_SETUP -#line 474 "./util/configlexer.lex" +#line 481 "./util/configlexer.lex" { YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 259: YY_RULE_SETUP -#line 475 "./util/configlexer.lex" +#line 482 "./util/configlexer.lex" { YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 260: YY_RULE_SETUP -#line 476 "./util/configlexer.lex" +#line 483 "./util/configlexer.lex" { YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 261: YY_RULE_SETUP -#line 477 "./util/configlexer.lex" +#line 484 "./util/configlexer.lex" { YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 262: YY_RULE_SETUP -#line 478 "./util/configlexer.lex" +#line 485 "./util/configlexer.lex" { YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 263: YY_RULE_SETUP -#line 479 "./util/configlexer.lex" +#line 486 "./util/configlexer.lex" { YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 264: YY_RULE_SETUP -#line 480 "./util/configlexer.lex" +#line 487 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 265: YY_RULE_SETUP -#line 481 "./util/configlexer.lex" +#line 488 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 266: YY_RULE_SETUP -#line 482 "./util/configlexer.lex" +#line 489 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 267: YY_RULE_SETUP -#line 483 "./util/configlexer.lex" +#line 490 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 268: YY_RULE_SETUP -#line 484 "./util/configlexer.lex" +#line 491 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 269: YY_RULE_SETUP -#line 485 "./util/configlexer.lex" +#line 492 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 270: YY_RULE_SETUP -#line 486 "./util/configlexer.lex" +#line 493 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 271: YY_RULE_SETUP -#line 488 "./util/configlexer.lex" +#line 495 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 272: YY_RULE_SETUP -#line 490 "./util/configlexer.lex" +#line 497 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 273: YY_RULE_SETUP -#line 491 "./util/configlexer.lex" +#line 498 "./util/configlexer.lex" { YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 274: YY_RULE_SETUP -#line 492 "./util/configlexer.lex" +#line 499 "./util/configlexer.lex" { YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 275: YY_RULE_SETUP -#line 493 "./util/configlexer.lex" +#line 500 "./util/configlexer.lex" { YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 276: YY_RULE_SETUP -#line 494 "./util/configlexer.lex" +#line 501 "./util/configlexer.lex" { YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 277: YY_RULE_SETUP -#line 495 "./util/configlexer.lex" +#line 502 "./util/configlexer.lex" { YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 278: YY_RULE_SETUP -#line 496 "./util/configlexer.lex" +#line 503 "./util/configlexer.lex" { YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 279: YY_RULE_SETUP -#line 497 "./util/configlexer.lex" +#line 504 "./util/configlexer.lex" { YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 280: YY_RULE_SETUP -#line 498 "./util/configlexer.lex" +#line 505 "./util/configlexer.lex" { YDVAR(0, VAR_CACHEDB) } YY_BREAK case 281: YY_RULE_SETUP -#line 499 "./util/configlexer.lex" +#line 506 "./util/configlexer.lex" { YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 282: YY_RULE_SETUP -#line 500 "./util/configlexer.lex" +#line 507 "./util/configlexer.lex" { YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 283: YY_RULE_SETUP -#line 501 "./util/configlexer.lex" +#line 508 "./util/configlexer.lex" { YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 284: YY_RULE_SETUP -#line 502 "./util/configlexer.lex" +#line 509 "./util/configlexer.lex" { YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 285: YY_RULE_SETUP -#line 503 "./util/configlexer.lex" +#line 510 "./util/configlexer.lex" { YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 286: YY_RULE_SETUP -#line 504 "./util/configlexer.lex" +#line 511 "./util/configlexer.lex" { YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 287: YY_RULE_SETUP -#line 505 "./util/configlexer.lex" +#line 512 "./util/configlexer.lex" { YDVAR(0, VAR_IPSET) } YY_BREAK case 288: YY_RULE_SETUP -#line 506 "./util/configlexer.lex" +#line 513 "./util/configlexer.lex" { YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 289: YY_RULE_SETUP -#line 507 "./util/configlexer.lex" +#line 514 "./util/configlexer.lex" { YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 290: YY_RULE_SETUP -#line 508 "./util/configlexer.lex" +#line 515 "./util/configlexer.lex" { YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 291: YY_RULE_SETUP -#line 509 "./util/configlexer.lex" +#line 516 "./util/configlexer.lex" { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 292: /* rule 292 can match eol */ YY_RULE_SETUP -#line 510 "./util/configlexer.lex" +#line 517 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ case 293: YY_RULE_SETUP -#line 513 "./util/configlexer.lex" +#line 520 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 514 "./util/configlexer.lex" +#line 521 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4747,19 +4793,19 @@ case YY_STATE_EOF(quotedstring): YY_BREAK case 294: YY_RULE_SETUP -#line 519 "./util/configlexer.lex" +#line 526 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK case 295: /* rule 295 can match eol */ YY_RULE_SETUP -#line 520 "./util/configlexer.lex" +#line 527 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK case 296: YY_RULE_SETUP -#line 522 "./util/configlexer.lex" +#line 529 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4774,11 +4820,11 @@ YY_RULE_SETUP /* Single Quoted strings. Strip leading and ending quotes */ case 297: YY_RULE_SETUP -#line 534 "./util/configlexer.lex" +#line 541 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 535 "./util/configlexer.lex" +#line 542 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4787,19 +4833,19 @@ case YY_STATE_EOF(singlequotedstr): YY_BREAK case 298: YY_RULE_SETUP -#line 540 "./util/configlexer.lex" +#line 547 "./util/configlexer.lex" { LEXOUT(("STR(%s) ", yytext)); yymore(); } YY_BREAK case 299: /* rule 299 can match eol */ YY_RULE_SETUP -#line 541 "./util/configlexer.lex" +#line 548 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK case 300: YY_RULE_SETUP -#line 543 "./util/configlexer.lex" +#line 550 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4814,12 +4860,12 @@ YY_RULE_SETUP /* include: directive */ case 301: YY_RULE_SETUP -#line 555 "./util/configlexer.lex" +#line 562 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 557 "./util/configlexer.lex" +#line 564 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); @@ -4827,31 +4873,31 @@ case YY_STATE_EOF(include): YY_BREAK case 302: YY_RULE_SETUP -#line 561 "./util/configlexer.lex" +#line 568 "./util/configlexer.lex" { LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 303: /* rule 303 can match eol */ YY_RULE_SETUP -#line 562 "./util/configlexer.lex" +#line 569 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 304: YY_RULE_SETUP -#line 563 "./util/configlexer.lex" +#line 570 "./util/configlexer.lex" { LEXOUT(("IQS ")); BEGIN(include_quoted); } YY_BREAK case 305: YY_RULE_SETUP -#line 564 "./util/configlexer.lex" +#line 571 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); - config_start_include_glob(yytext); + config_start_include_glob(yytext, 0); BEGIN(inc_prev); } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 569 "./util/configlexer.lex" +#line 576 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); @@ -4859,67 +4905,142 @@ case YY_STATE_EOF(include_quoted): YY_BREAK case 306: YY_RULE_SETUP -#line 573 "./util/configlexer.lex" +#line 580 "./util/configlexer.lex" { LEXOUT(("ISTR(%s) ", yytext)); yymore(); } YY_BREAK case 307: /* rule 307 can match eol */ YY_RULE_SETUP -#line 574 "./util/configlexer.lex" +#line 581 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK case 308: YY_RULE_SETUP -#line 576 "./util/configlexer.lex" +#line 583 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; - config_start_include_glob(yytext); + config_start_include_glob(yytext, 0); BEGIN(inc_prev); } YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 582 "./util/configlexer.lex" +#line 589 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ if (!config_include_stack) { yyterminate(); } else { + int prev_toplevel = inc_toplevel; fclose(yyin); config_end_include(); + if(prev_toplevel) return (VAR_FORCE_TOPLEVEL); } } YY_BREAK +/* include-toplevel: directive */ case 309: YY_RULE_SETUP -#line 593 "./util/configlexer.lex" +#line 603 "./util/configlexer.lex" +{ + LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); +} + YY_BREAK +case YY_STATE_EOF(include_toplevel): +#line 606 "./util/configlexer.lex" +{ + yyerror("EOF inside include_toplevel directive"); + BEGIN(inc_prev); +} + YY_BREAK +case 310: +YY_RULE_SETUP +#line 610 "./util/configlexer.lex" +{ LEXOUT(("ITSP ")); /* ignore */ } + YY_BREAK +case 311: +/* rule 311 can match eol */ +YY_RULE_SETUP +#line 611 "./util/configlexer.lex" +{ LEXOUT(("NL\n")); cfg_parser->line++; } + YY_BREAK +case 312: +YY_RULE_SETUP +#line 612 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 313: +YY_RULE_SETUP +#line 613 "./util/configlexer.lex" +{ + LEXOUT(("ITunquotedstr(%s) ", yytext)); + config_start_include_glob(yytext, 1); + BEGIN(inc_prev); + return (VAR_FORCE_TOPLEVEL); +} + YY_BREAK +case YY_STATE_EOF(include_toplevel_quoted): +#line 619 "./util/configlexer.lex" +{ + yyerror("EOF inside quoted string"); + BEGIN(inc_prev); +} + YY_BREAK +case 314: +YY_RULE_SETUP +#line 623 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 315: +/* rule 315 can match eol */ +YY_RULE_SETUP +#line 624 "./util/configlexer.lex" +{ + yyerror("newline before \" in include name"); + cfg_parser->line++; BEGIN(inc_prev); +} + YY_BREAK +case 316: +YY_RULE_SETUP +#line 628 "./util/configlexer.lex" +{ + LEXOUT(("ITQE ")); + yytext[yyleng - 1] = '\0'; + config_start_include_glob(yytext, 1); + BEGIN(inc_prev); + return (VAR_FORCE_TOPLEVEL); +} + YY_BREAK +case 317: +YY_RULE_SETUP +#line 636 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 310: +case 318: YY_RULE_SETUP -#line 597 "./util/configlexer.lex" +#line 640 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 311: +case 319: YY_RULE_SETUP -#line 601 "./util/configlexer.lex" +#line 644 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 312: +case 320: YY_RULE_SETUP -#line 605 "./util/configlexer.lex" +#line 648 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4920 "" +#line 5041 "" case YY_END_OF_BUFFER: { @@ -5214,7 +5335,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3071 ) + if ( yy_current_state >= 3111 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5242,11 +5363,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3071 ) + if ( yy_current_state >= 3111 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3070); + yy_is_jam = (yy_current_state == 3110); return yy_is_jam ? 0 : yy_current_state; } @@ -5885,6 +6006,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 605 "./util/configlexer.lex" +#line 648 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index d60eb147a..09a263b5f 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -45,11 +45,13 @@ struct inc_state { int line; YY_BUFFER_STATE buffer; struct inc_state* next; + int inc_toplevel; }; static struct inc_state* config_include_stack = NULL; static int inc_depth = 0; static int inc_prev = 0; static int num_args = 0; +static int inc_toplevel = 0; void init_cfg_parse(void) { @@ -57,14 +59,15 @@ void init_cfg_parse(void) inc_depth = 0; inc_prev = 0; num_args = 0; + inc_toplevel = 0; } -static void config_start_include(const char* filename) +static void config_start_include(const char* filename, int toplevel) { FILE *input; struct inc_state* s; char* nm; - if(inc_depth++ > 100000) { + if(inc_depth+1 > 100000) { ub_c_error_msg("too many include files"); return; } @@ -96,17 +99,20 @@ static void config_start_include(const char* filename) return; } LEXOUT(("switch_to_include_file(%s)\n", filename)); + inc_depth++; s->filename = cfg_parser->filename; s->line = cfg_parser->line; s->buffer = YY_CURRENT_BUFFER; + s->inc_toplevel = inc_toplevel; s->next = config_include_stack; config_include_stack = s; cfg_parser->filename = nm; cfg_parser->line = 1; + inc_toplevel = toplevel; yy_switch_to_buffer(yy_create_buffer(input, YY_BUF_SIZE)); } -static void config_start_include_glob(const char* filename) +static void config_start_include_glob(const char* filename, int toplevel) { /* check for wildcards */ @@ -139,19 +145,19 @@ static void config_start_include_glob(const char* filename) globfree(&g); if(r == GLOB_NOMATCH) return; /* no matches for pattern */ - config_start_include(filename); /* let original deal with it */ + config_start_include(filename, toplevel); /* let original deal with it */ return; } /* process files found, if any */ for(i=(int)g.gl_pathc-1; i>=0; i--) { - config_start_include(g.gl_pathv[i]); + config_start_include(g.gl_pathv[i], toplevel); } globfree(&g); return; } #endif /* HAVE_GLOB */ - config_start_include(filename); + config_start_include(filename, toplevel); } static void config_end_include(void) @@ -165,6 +171,7 @@ static void config_end_include(void) yy_delete_buffer(YY_CURRENT_BUFFER); yy_switch_to_buffer(s->buffer); config_include_stack = s->next; + inc_toplevel = s->inc_toplevel; free(s); } @@ -199,7 +206,7 @@ COLON \: DQANY [^\"\n\r\\]|\\. SQANY [^\'\n\r\\]|\\. -%x quotedstring singlequotedstr include include_quoted val +%x quotedstring singlequotedstr include include_quoted val include_toplevel include_toplevel_quoted %% {SPACE}* { @@ -563,7 +570,7 @@ tcp-connection-limit{COLON} { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } \" { LEXOUT(("IQS ")); BEGIN(include_quoted); } {UNQUOTEDLETTER}* { LEXOUT(("Iunquotedstr(%s) ", yytext)); - config_start_include_glob(yytext); + config_start_include_glob(yytext, 0); BEGIN(inc_prev); } <> { @@ -576,7 +583,7 @@ tcp-connection-limit{COLON} { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } \" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; - config_start_include_glob(yytext); + config_start_include_glob(yytext, 0); BEGIN(inc_prev); } <> { @@ -585,11 +592,47 @@ tcp-connection-limit{COLON} { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } if (!config_include_stack) { yyterminate(); } else { + int prev_toplevel = inc_toplevel; fclose(yyin); config_end_include(); + if(prev_toplevel) return (VAR_FORCE_TOPLEVEL); } } + /* include-toplevel: directive */ +include-toplevel{COLON} { + LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); +} +<> { + yyerror("EOF inside include_toplevel directive"); + BEGIN(inc_prev); +} +{SPACE}* { LEXOUT(("ITSP ")); /* ignore */ } +{NEWLINE} { LEXOUT(("NL\n")); cfg_parser->line++; } +\" { LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{UNQUOTEDLETTER}* { + LEXOUT(("ITunquotedstr(%s) ", yytext)); + config_start_include_glob(yytext, 1); + BEGIN(inc_prev); + return (VAR_FORCE_TOPLEVEL); +} +<> { + yyerror("EOF inside quoted string"); + BEGIN(inc_prev); +} +{DQANY}* { LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } +{NEWLINE} { + yyerror("newline before \" in include name"); + cfg_parser->line++; BEGIN(inc_prev); +} +\" { + LEXOUT(("ITQE ")); + yytext[yyleng - 1] = '\0'; + config_start_include_glob(yytext, 1); + BEGIN(inc_prev); + return (VAR_FORCE_TOPLEVEL); +} + {UNQUOTEDLETTER}* { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } diff --git a/util/configparser.c b/util/configparser.c index 66f34071a..e9954dbfa 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -142,283 +142,284 @@ extern int yydebug; ANY = 263, ZONESTR = 264, STRING_ARG = 265, - VAR_SERVER = 266, - VAR_VERBOSITY = 267, - VAR_NUM_THREADS = 268, - VAR_PORT = 269, - VAR_OUTGOING_RANGE = 270, - VAR_INTERFACE = 271, - VAR_PREFER_IP4 = 272, - VAR_DO_IP4 = 273, - VAR_DO_IP6 = 274, - VAR_PREFER_IP6 = 275, - VAR_DO_UDP = 276, - VAR_DO_TCP = 277, - VAR_TCP_MSS = 278, - VAR_OUTGOING_TCP_MSS = 279, - VAR_TCP_IDLE_TIMEOUT = 280, - VAR_EDNS_TCP_KEEPALIVE = 281, - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 282, - VAR_CHROOT = 283, - VAR_USERNAME = 284, - VAR_DIRECTORY = 285, - VAR_LOGFILE = 286, - VAR_PIDFILE = 287, - VAR_MSG_CACHE_SIZE = 288, - VAR_MSG_CACHE_SLABS = 289, - VAR_NUM_QUERIES_PER_THREAD = 290, - VAR_RRSET_CACHE_SIZE = 291, - VAR_RRSET_CACHE_SLABS = 292, - VAR_OUTGOING_NUM_TCP = 293, - VAR_INFRA_HOST_TTL = 294, - VAR_INFRA_LAME_TTL = 295, - VAR_INFRA_CACHE_SLABS = 296, - VAR_INFRA_CACHE_NUMHOSTS = 297, - VAR_INFRA_CACHE_LAME_SIZE = 298, - VAR_NAME = 299, - VAR_STUB_ZONE = 300, - VAR_STUB_HOST = 301, - VAR_STUB_ADDR = 302, - VAR_TARGET_FETCH_POLICY = 303, - VAR_HARDEN_SHORT_BUFSIZE = 304, - VAR_HARDEN_LARGE_QUERIES = 305, - VAR_FORWARD_ZONE = 306, - VAR_FORWARD_HOST = 307, - VAR_FORWARD_ADDR = 308, - VAR_DO_NOT_QUERY_ADDRESS = 309, - VAR_HIDE_IDENTITY = 310, - VAR_HIDE_VERSION = 311, - VAR_IDENTITY = 312, - VAR_VERSION = 313, - VAR_HARDEN_GLUE = 314, - VAR_MODULE_CONF = 315, - VAR_TRUST_ANCHOR_FILE = 316, - VAR_TRUST_ANCHOR = 317, - VAR_VAL_OVERRIDE_DATE = 318, - VAR_BOGUS_TTL = 319, - VAR_VAL_CLEAN_ADDITIONAL = 320, - VAR_VAL_PERMISSIVE_MODE = 321, - VAR_INCOMING_NUM_TCP = 322, - VAR_MSG_BUFFER_SIZE = 323, - VAR_KEY_CACHE_SIZE = 324, - VAR_KEY_CACHE_SLABS = 325, - VAR_TRUSTED_KEYS_FILE = 326, - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 327, - VAR_USE_SYSLOG = 328, - VAR_OUTGOING_INTERFACE = 329, - VAR_ROOT_HINTS = 330, - VAR_DO_NOT_QUERY_LOCALHOST = 331, - VAR_CACHE_MAX_TTL = 332, - VAR_HARDEN_DNSSEC_STRIPPED = 333, - VAR_ACCESS_CONTROL = 334, - VAR_LOCAL_ZONE = 335, - VAR_LOCAL_DATA = 336, - VAR_INTERFACE_AUTOMATIC = 337, - VAR_STATISTICS_INTERVAL = 338, - VAR_DO_DAEMONIZE = 339, - VAR_USE_CAPS_FOR_ID = 340, - VAR_STATISTICS_CUMULATIVE = 341, - VAR_OUTGOING_PORT_PERMIT = 342, - VAR_OUTGOING_PORT_AVOID = 343, - VAR_DLV_ANCHOR_FILE = 344, - VAR_DLV_ANCHOR = 345, - VAR_NEG_CACHE_SIZE = 346, - VAR_HARDEN_REFERRAL_PATH = 347, - VAR_PRIVATE_ADDRESS = 348, - VAR_PRIVATE_DOMAIN = 349, - VAR_REMOTE_CONTROL = 350, - VAR_CONTROL_ENABLE = 351, - VAR_CONTROL_INTERFACE = 352, - VAR_CONTROL_PORT = 353, - VAR_SERVER_KEY_FILE = 354, - VAR_SERVER_CERT_FILE = 355, - VAR_CONTROL_KEY_FILE = 356, - VAR_CONTROL_CERT_FILE = 357, - VAR_CONTROL_USE_CERT = 358, - VAR_EXTENDED_STATISTICS = 359, - VAR_LOCAL_DATA_PTR = 360, - VAR_JOSTLE_TIMEOUT = 361, - VAR_STUB_PRIME = 362, - VAR_UNWANTED_REPLY_THRESHOLD = 363, - VAR_LOG_TIME_ASCII = 364, - VAR_DOMAIN_INSECURE = 365, - VAR_PYTHON = 366, - VAR_PYTHON_SCRIPT = 367, - VAR_VAL_SIG_SKEW_MIN = 368, - VAR_VAL_SIG_SKEW_MAX = 369, - VAR_CACHE_MIN_TTL = 370, - VAR_VAL_LOG_LEVEL = 371, - VAR_AUTO_TRUST_ANCHOR_FILE = 372, - VAR_KEEP_MISSING = 373, - VAR_ADD_HOLDDOWN = 374, - VAR_DEL_HOLDDOWN = 375, - VAR_SO_RCVBUF = 376, - VAR_EDNS_BUFFER_SIZE = 377, - VAR_PREFETCH = 378, - VAR_PREFETCH_KEY = 379, - VAR_SO_SNDBUF = 380, - VAR_SO_REUSEPORT = 381, - VAR_HARDEN_BELOW_NXDOMAIN = 382, - VAR_IGNORE_CD_FLAG = 383, - VAR_LOG_QUERIES = 384, - VAR_LOG_REPLIES = 385, - VAR_LOG_LOCAL_ACTIONS = 386, - VAR_TCP_UPSTREAM = 387, - VAR_SSL_UPSTREAM = 388, - VAR_SSL_SERVICE_KEY = 389, - VAR_SSL_SERVICE_PEM = 390, - VAR_SSL_PORT = 391, - VAR_FORWARD_FIRST = 392, - VAR_STUB_SSL_UPSTREAM = 393, - VAR_FORWARD_SSL_UPSTREAM = 394, - VAR_TLS_CERT_BUNDLE = 395, - VAR_STUB_FIRST = 396, - VAR_MINIMAL_RESPONSES = 397, - VAR_RRSET_ROUNDROBIN = 398, - VAR_MAX_UDP_SIZE = 399, - VAR_DELAY_CLOSE = 400, - VAR_UNBLOCK_LAN_ZONES = 401, - VAR_INSECURE_LAN_ZONES = 402, - VAR_INFRA_CACHE_MIN_RTT = 403, - VAR_DNS64_PREFIX = 404, - VAR_DNS64_SYNTHALL = 405, - VAR_DNS64_IGNORE_AAAA = 406, - VAR_DNSTAP = 407, - VAR_DNSTAP_ENABLE = 408, - VAR_DNSTAP_SOCKET_PATH = 409, - VAR_DNSTAP_IP = 410, - VAR_DNSTAP_TLS = 411, - VAR_DNSTAP_TLS_SERVER_NAME = 412, - VAR_DNSTAP_TLS_CERT_BUNDLE = 413, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, - VAR_DNSTAP_SEND_IDENTITY = 416, - VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_IP_DSCP = 431, - VAR_DISABLE_DNSSEC_LAME_CHECK = 432, - VAR_IP_RATELIMIT = 433, - VAR_IP_RATELIMIT_SLABS = 434, - VAR_IP_RATELIMIT_SIZE = 435, - VAR_RATELIMIT = 436, - VAR_RATELIMIT_SLABS = 437, - VAR_RATELIMIT_SIZE = 438, - VAR_RATELIMIT_FOR_DOMAIN = 439, - VAR_RATELIMIT_BELOW_DOMAIN = 440, - VAR_IP_RATELIMIT_FACTOR = 441, - VAR_RATELIMIT_FACTOR = 442, - VAR_SEND_CLIENT_SUBNET = 443, - VAR_CLIENT_SUBNET_ZONE = 444, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, - VAR_CLIENT_SUBNET_OPCODE = 446, - VAR_MAX_CLIENT_SUBNET_IPV4 = 447, - VAR_MAX_CLIENT_SUBNET_IPV6 = 448, - VAR_MIN_CLIENT_SUBNET_IPV4 = 449, - VAR_MIN_CLIENT_SUBNET_IPV6 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, - VAR_CAPS_WHITELIST = 453, - VAR_CACHE_MAX_NEGATIVE_TTL = 454, - VAR_PERMIT_SMALL_HOLDDOWN = 455, - VAR_QNAME_MINIMISATION = 456, - VAR_QNAME_MINIMISATION_STRICT = 457, - VAR_IP_FREEBIND = 458, - VAR_DEFINE_TAG = 459, - VAR_LOCAL_ZONE_TAG = 460, - VAR_ACCESS_CONTROL_TAG = 461, - VAR_LOCAL_ZONE_OVERRIDE = 462, - VAR_ACCESS_CONTROL_TAG_ACTION = 463, - VAR_ACCESS_CONTROL_TAG_DATA = 464, - VAR_VIEW = 465, - VAR_ACCESS_CONTROL_VIEW = 466, - VAR_VIEW_FIRST = 467, - VAR_SERVE_EXPIRED = 468, - VAR_SERVE_EXPIRED_TTL = 469, - VAR_SERVE_EXPIRED_TTL_RESET = 470, - VAR_SERVE_EXPIRED_REPLY_TTL = 471, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_CACHEDB_REDISEXPIRERECORDS = 506, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 507, - VAR_FOR_UPSTREAM = 508, - VAR_AUTH_ZONE = 509, - VAR_ZONEFILE = 510, - VAR_MASTER = 511, - VAR_URL = 512, - VAR_FOR_DOWNSTREAM = 513, - VAR_FALLBACK_ENABLED = 514, - VAR_TLS_ADDITIONAL_PORT = 515, - VAR_LOW_RTT = 516, - VAR_LOW_RTT_PERMIL = 517, - VAR_FAST_SERVER_PERMIL = 518, - VAR_FAST_SERVER_NUM = 519, - VAR_ALLOW_NOTIFY = 520, - VAR_TLS_WIN_CERT = 521, - VAR_TCP_CONNECTION_LIMIT = 522, - VAR_FORWARD_NO_CACHE = 523, - VAR_STUB_NO_CACHE = 524, - VAR_LOG_SERVFAIL = 525, - VAR_DENY_ANY = 526, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 527, - VAR_LOG_TAG_QUERYREPLY = 528, - VAR_STREAM_WAIT_SIZE = 529, - VAR_TLS_CIPHERS = 530, - VAR_TLS_CIPHERSUITES = 531, - VAR_TLS_USE_SNI = 532, - VAR_IPSET = 533, - VAR_IPSET_NAME_V4 = 534, - VAR_IPSET_NAME_V6 = 535, - VAR_TLS_SESSION_TICKET_KEYS = 536, - VAR_RPZ = 537, - VAR_TAGS = 538, - VAR_RPZ_ACTION_OVERRIDE = 539, - VAR_RPZ_CNAME_OVERRIDE = 540, - VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542 + VAR_FORCE_TOPLEVEL = 266, + VAR_SERVER = 267, + VAR_VERBOSITY = 268, + VAR_NUM_THREADS = 269, + VAR_PORT = 270, + VAR_OUTGOING_RANGE = 271, + VAR_INTERFACE = 272, + VAR_PREFER_IP4 = 273, + VAR_DO_IP4 = 274, + VAR_DO_IP6 = 275, + VAR_PREFER_IP6 = 276, + VAR_DO_UDP = 277, + VAR_DO_TCP = 278, + VAR_TCP_MSS = 279, + VAR_OUTGOING_TCP_MSS = 280, + VAR_TCP_IDLE_TIMEOUT = 281, + VAR_EDNS_TCP_KEEPALIVE = 282, + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, + VAR_CHROOT = 284, + VAR_USERNAME = 285, + VAR_DIRECTORY = 286, + VAR_LOGFILE = 287, + VAR_PIDFILE = 288, + VAR_MSG_CACHE_SIZE = 289, + VAR_MSG_CACHE_SLABS = 290, + VAR_NUM_QUERIES_PER_THREAD = 291, + VAR_RRSET_CACHE_SIZE = 292, + VAR_RRSET_CACHE_SLABS = 293, + VAR_OUTGOING_NUM_TCP = 294, + VAR_INFRA_HOST_TTL = 295, + VAR_INFRA_LAME_TTL = 296, + VAR_INFRA_CACHE_SLABS = 297, + VAR_INFRA_CACHE_NUMHOSTS = 298, + VAR_INFRA_CACHE_LAME_SIZE = 299, + VAR_NAME = 300, + VAR_STUB_ZONE = 301, + VAR_STUB_HOST = 302, + VAR_STUB_ADDR = 303, + VAR_TARGET_FETCH_POLICY = 304, + VAR_HARDEN_SHORT_BUFSIZE = 305, + VAR_HARDEN_LARGE_QUERIES = 306, + VAR_FORWARD_ZONE = 307, + VAR_FORWARD_HOST = 308, + VAR_FORWARD_ADDR = 309, + VAR_DO_NOT_QUERY_ADDRESS = 310, + VAR_HIDE_IDENTITY = 311, + VAR_HIDE_VERSION = 312, + VAR_IDENTITY = 313, + VAR_VERSION = 314, + VAR_HARDEN_GLUE = 315, + VAR_MODULE_CONF = 316, + VAR_TRUST_ANCHOR_FILE = 317, + VAR_TRUST_ANCHOR = 318, + VAR_VAL_OVERRIDE_DATE = 319, + VAR_BOGUS_TTL = 320, + VAR_VAL_CLEAN_ADDITIONAL = 321, + VAR_VAL_PERMISSIVE_MODE = 322, + VAR_INCOMING_NUM_TCP = 323, + VAR_MSG_BUFFER_SIZE = 324, + VAR_KEY_CACHE_SIZE = 325, + VAR_KEY_CACHE_SLABS = 326, + VAR_TRUSTED_KEYS_FILE = 327, + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, + VAR_USE_SYSLOG = 329, + VAR_OUTGOING_INTERFACE = 330, + VAR_ROOT_HINTS = 331, + VAR_DO_NOT_QUERY_LOCALHOST = 332, + VAR_CACHE_MAX_TTL = 333, + VAR_HARDEN_DNSSEC_STRIPPED = 334, + VAR_ACCESS_CONTROL = 335, + VAR_LOCAL_ZONE = 336, + VAR_LOCAL_DATA = 337, + VAR_INTERFACE_AUTOMATIC = 338, + VAR_STATISTICS_INTERVAL = 339, + VAR_DO_DAEMONIZE = 340, + VAR_USE_CAPS_FOR_ID = 341, + VAR_STATISTICS_CUMULATIVE = 342, + VAR_OUTGOING_PORT_PERMIT = 343, + VAR_OUTGOING_PORT_AVOID = 344, + VAR_DLV_ANCHOR_FILE = 345, + VAR_DLV_ANCHOR = 346, + VAR_NEG_CACHE_SIZE = 347, + VAR_HARDEN_REFERRAL_PATH = 348, + VAR_PRIVATE_ADDRESS = 349, + VAR_PRIVATE_DOMAIN = 350, + VAR_REMOTE_CONTROL = 351, + VAR_CONTROL_ENABLE = 352, + VAR_CONTROL_INTERFACE = 353, + VAR_CONTROL_PORT = 354, + VAR_SERVER_KEY_FILE = 355, + VAR_SERVER_CERT_FILE = 356, + VAR_CONTROL_KEY_FILE = 357, + VAR_CONTROL_CERT_FILE = 358, + VAR_CONTROL_USE_CERT = 359, + VAR_EXTENDED_STATISTICS = 360, + VAR_LOCAL_DATA_PTR = 361, + VAR_JOSTLE_TIMEOUT = 362, + VAR_STUB_PRIME = 363, + VAR_UNWANTED_REPLY_THRESHOLD = 364, + VAR_LOG_TIME_ASCII = 365, + VAR_DOMAIN_INSECURE = 366, + VAR_PYTHON = 367, + VAR_PYTHON_SCRIPT = 368, + VAR_VAL_SIG_SKEW_MIN = 369, + VAR_VAL_SIG_SKEW_MAX = 370, + VAR_CACHE_MIN_TTL = 371, + VAR_VAL_LOG_LEVEL = 372, + VAR_AUTO_TRUST_ANCHOR_FILE = 373, + VAR_KEEP_MISSING = 374, + VAR_ADD_HOLDDOWN = 375, + VAR_DEL_HOLDDOWN = 376, + VAR_SO_RCVBUF = 377, + VAR_EDNS_BUFFER_SIZE = 378, + VAR_PREFETCH = 379, + VAR_PREFETCH_KEY = 380, + VAR_SO_SNDBUF = 381, + VAR_SO_REUSEPORT = 382, + VAR_HARDEN_BELOW_NXDOMAIN = 383, + VAR_IGNORE_CD_FLAG = 384, + VAR_LOG_QUERIES = 385, + VAR_LOG_REPLIES = 386, + VAR_LOG_LOCAL_ACTIONS = 387, + VAR_TCP_UPSTREAM = 388, + VAR_SSL_UPSTREAM = 389, + VAR_SSL_SERVICE_KEY = 390, + VAR_SSL_SERVICE_PEM = 391, + VAR_SSL_PORT = 392, + VAR_FORWARD_FIRST = 393, + VAR_STUB_SSL_UPSTREAM = 394, + VAR_FORWARD_SSL_UPSTREAM = 395, + VAR_TLS_CERT_BUNDLE = 396, + VAR_STUB_FIRST = 397, + VAR_MINIMAL_RESPONSES = 398, + VAR_RRSET_ROUNDROBIN = 399, + VAR_MAX_UDP_SIZE = 400, + VAR_DELAY_CLOSE = 401, + VAR_UNBLOCK_LAN_ZONES = 402, + VAR_INSECURE_LAN_ZONES = 403, + VAR_INFRA_CACHE_MIN_RTT = 404, + VAR_DNS64_PREFIX = 405, + VAR_DNS64_SYNTHALL = 406, + VAR_DNS64_IGNORE_AAAA = 407, + VAR_DNSTAP = 408, + VAR_DNSTAP_ENABLE = 409, + VAR_DNSTAP_SOCKET_PATH = 410, + VAR_DNSTAP_IP = 411, + VAR_DNSTAP_TLS = 412, + VAR_DNSTAP_TLS_SERVER_NAME = 413, + VAR_DNSTAP_TLS_CERT_BUNDLE = 414, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 415, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 416, + VAR_DNSTAP_SEND_IDENTITY = 417, + VAR_DNSTAP_SEND_VERSION = 418, + VAR_DNSTAP_IDENTITY = 419, + VAR_DNSTAP_VERSION = 420, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 421, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 422, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 423, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 424, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 425, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 426, + VAR_RESPONSE_IP_TAG = 427, + VAR_RESPONSE_IP = 428, + VAR_RESPONSE_IP_DATA = 429, + VAR_HARDEN_ALGO_DOWNGRADE = 430, + VAR_IP_TRANSPARENT = 431, + VAR_IP_DSCP = 432, + VAR_DISABLE_DNSSEC_LAME_CHECK = 433, + VAR_IP_RATELIMIT = 434, + VAR_IP_RATELIMIT_SLABS = 435, + VAR_IP_RATELIMIT_SIZE = 436, + VAR_RATELIMIT = 437, + VAR_RATELIMIT_SLABS = 438, + VAR_RATELIMIT_SIZE = 439, + VAR_RATELIMIT_FOR_DOMAIN = 440, + VAR_RATELIMIT_BELOW_DOMAIN = 441, + VAR_IP_RATELIMIT_FACTOR = 442, + VAR_RATELIMIT_FACTOR = 443, + VAR_SEND_CLIENT_SUBNET = 444, + VAR_CLIENT_SUBNET_ZONE = 445, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 446, + VAR_CLIENT_SUBNET_OPCODE = 447, + VAR_MAX_CLIENT_SUBNET_IPV4 = 448, + VAR_MAX_CLIENT_SUBNET_IPV6 = 449, + VAR_MIN_CLIENT_SUBNET_IPV4 = 450, + VAR_MIN_CLIENT_SUBNET_IPV6 = 451, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 452, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 453, + VAR_CAPS_WHITELIST = 454, + VAR_CACHE_MAX_NEGATIVE_TTL = 455, + VAR_PERMIT_SMALL_HOLDDOWN = 456, + VAR_QNAME_MINIMISATION = 457, + VAR_QNAME_MINIMISATION_STRICT = 458, + VAR_IP_FREEBIND = 459, + VAR_DEFINE_TAG = 460, + VAR_LOCAL_ZONE_TAG = 461, + VAR_ACCESS_CONTROL_TAG = 462, + VAR_LOCAL_ZONE_OVERRIDE = 463, + VAR_ACCESS_CONTROL_TAG_ACTION = 464, + VAR_ACCESS_CONTROL_TAG_DATA = 465, + VAR_VIEW = 466, + VAR_ACCESS_CONTROL_VIEW = 467, + VAR_VIEW_FIRST = 468, + VAR_SERVE_EXPIRED = 469, + VAR_SERVE_EXPIRED_TTL = 470, + VAR_SERVE_EXPIRED_TTL_RESET = 471, + VAR_SERVE_EXPIRED_REPLY_TTL = 472, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 473, + VAR_FAKE_DSA = 474, + VAR_FAKE_SHA1 = 475, + VAR_LOG_IDENTITY = 476, + VAR_HIDE_TRUSTANCHOR = 477, + VAR_TRUST_ANCHOR_SIGNALING = 478, + VAR_AGGRESSIVE_NSEC = 479, + VAR_USE_SYSTEMD = 480, + VAR_SHM_ENABLE = 481, + VAR_SHM_KEY = 482, + VAR_ROOT_KEY_SENTINEL = 483, + VAR_DNSCRYPT = 484, + VAR_DNSCRYPT_ENABLE = 485, + VAR_DNSCRYPT_PORT = 486, + VAR_DNSCRYPT_PROVIDER = 487, + VAR_DNSCRYPT_SECRET_KEY = 488, + VAR_DNSCRYPT_PROVIDER_CERT = 489, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, + VAR_IPSECMOD_ENABLED = 495, + VAR_IPSECMOD_HOOK = 496, + VAR_IPSECMOD_IGNORE_BOGUS = 497, + VAR_IPSECMOD_MAX_TTL = 498, + VAR_IPSECMOD_WHITELIST = 499, + VAR_IPSECMOD_STRICT = 500, + VAR_CACHEDB = 501, + VAR_CACHEDB_BACKEND = 502, + VAR_CACHEDB_SECRETSEED = 503, + VAR_CACHEDB_REDISHOST = 504, + VAR_CACHEDB_REDISPORT = 505, + VAR_CACHEDB_REDISTIMEOUT = 506, + VAR_CACHEDB_REDISEXPIRERECORDS = 507, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, + VAR_FOR_UPSTREAM = 509, + VAR_AUTH_ZONE = 510, + VAR_ZONEFILE = 511, + VAR_MASTER = 512, + VAR_URL = 513, + VAR_FOR_DOWNSTREAM = 514, + VAR_FALLBACK_ENABLED = 515, + VAR_TLS_ADDITIONAL_PORT = 516, + VAR_LOW_RTT = 517, + VAR_LOW_RTT_PERMIL = 518, + VAR_FAST_SERVER_PERMIL = 519, + VAR_FAST_SERVER_NUM = 520, + VAR_ALLOW_NOTIFY = 521, + VAR_TLS_WIN_CERT = 522, + VAR_TCP_CONNECTION_LIMIT = 523, + VAR_FORWARD_NO_CACHE = 524, + VAR_STUB_NO_CACHE = 525, + VAR_LOG_SERVFAIL = 526, + VAR_DENY_ANY = 527, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, + VAR_LOG_TAG_QUERYREPLY = 529, + VAR_STREAM_WAIT_SIZE = 530, + VAR_TLS_CIPHERS = 531, + VAR_TLS_CIPHERSUITES = 532, + VAR_TLS_USE_SNI = 533, + VAR_IPSET = 534, + VAR_IPSET_NAME_V4 = 535, + VAR_IPSET_NAME_V6 = 536, + VAR_TLS_SESSION_TICKET_KEYS = 537, + VAR_RPZ = 538, + VAR_TAGS = 539, + VAR_RPZ_ACTION_OVERRIDE = 540, + VAR_RPZ_CNAME_OVERRIDE = 541, + VAR_RPZ_LOG = 542, + VAR_RPZ_LOG_NAME = 543 }; #endif /* Tokens. */ @@ -430,283 +431,284 @@ extern int yydebug; #define ANY 263 #define ZONESTR 264 #define STRING_ARG 265 -#define VAR_SERVER 266 -#define VAR_VERBOSITY 267 -#define VAR_NUM_THREADS 268 -#define VAR_PORT 269 -#define VAR_OUTGOING_RANGE 270 -#define VAR_INTERFACE 271 -#define VAR_PREFER_IP4 272 -#define VAR_DO_IP4 273 -#define VAR_DO_IP6 274 -#define VAR_PREFER_IP6 275 -#define VAR_DO_UDP 276 -#define VAR_DO_TCP 277 -#define VAR_TCP_MSS 278 -#define VAR_OUTGOING_TCP_MSS 279 -#define VAR_TCP_IDLE_TIMEOUT 280 -#define VAR_EDNS_TCP_KEEPALIVE 281 -#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 282 -#define VAR_CHROOT 283 -#define VAR_USERNAME 284 -#define VAR_DIRECTORY 285 -#define VAR_LOGFILE 286 -#define VAR_PIDFILE 287 -#define VAR_MSG_CACHE_SIZE 288 -#define VAR_MSG_CACHE_SLABS 289 -#define VAR_NUM_QUERIES_PER_THREAD 290 -#define VAR_RRSET_CACHE_SIZE 291 -#define VAR_RRSET_CACHE_SLABS 292 -#define VAR_OUTGOING_NUM_TCP 293 -#define VAR_INFRA_HOST_TTL 294 -#define VAR_INFRA_LAME_TTL 295 -#define VAR_INFRA_CACHE_SLABS 296 -#define VAR_INFRA_CACHE_NUMHOSTS 297 -#define VAR_INFRA_CACHE_LAME_SIZE 298 -#define VAR_NAME 299 -#define VAR_STUB_ZONE 300 -#define VAR_STUB_HOST 301 -#define VAR_STUB_ADDR 302 -#define VAR_TARGET_FETCH_POLICY 303 -#define VAR_HARDEN_SHORT_BUFSIZE 304 -#define VAR_HARDEN_LARGE_QUERIES 305 -#define VAR_FORWARD_ZONE 306 -#define VAR_FORWARD_HOST 307 -#define VAR_FORWARD_ADDR 308 -#define VAR_DO_NOT_QUERY_ADDRESS 309 -#define VAR_HIDE_IDENTITY 310 -#define VAR_HIDE_VERSION 311 -#define VAR_IDENTITY 312 -#define VAR_VERSION 313 -#define VAR_HARDEN_GLUE 314 -#define VAR_MODULE_CONF 315 -#define VAR_TRUST_ANCHOR_FILE 316 -#define VAR_TRUST_ANCHOR 317 -#define VAR_VAL_OVERRIDE_DATE 318 -#define VAR_BOGUS_TTL 319 -#define VAR_VAL_CLEAN_ADDITIONAL 320 -#define VAR_VAL_PERMISSIVE_MODE 321 -#define VAR_INCOMING_NUM_TCP 322 -#define VAR_MSG_BUFFER_SIZE 323 -#define VAR_KEY_CACHE_SIZE 324 -#define VAR_KEY_CACHE_SLABS 325 -#define VAR_TRUSTED_KEYS_FILE 326 -#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 327 -#define VAR_USE_SYSLOG 328 -#define VAR_OUTGOING_INTERFACE 329 -#define VAR_ROOT_HINTS 330 -#define VAR_DO_NOT_QUERY_LOCALHOST 331 -#define VAR_CACHE_MAX_TTL 332 -#define VAR_HARDEN_DNSSEC_STRIPPED 333 -#define VAR_ACCESS_CONTROL 334 -#define VAR_LOCAL_ZONE 335 -#define VAR_LOCAL_DATA 336 -#define VAR_INTERFACE_AUTOMATIC 337 -#define VAR_STATISTICS_INTERVAL 338 -#define VAR_DO_DAEMONIZE 339 -#define VAR_USE_CAPS_FOR_ID 340 -#define VAR_STATISTICS_CUMULATIVE 341 -#define VAR_OUTGOING_PORT_PERMIT 342 -#define VAR_OUTGOING_PORT_AVOID 343 -#define VAR_DLV_ANCHOR_FILE 344 -#define VAR_DLV_ANCHOR 345 -#define VAR_NEG_CACHE_SIZE 346 -#define VAR_HARDEN_REFERRAL_PATH 347 -#define VAR_PRIVATE_ADDRESS 348 -#define VAR_PRIVATE_DOMAIN 349 -#define VAR_REMOTE_CONTROL 350 -#define VAR_CONTROL_ENABLE 351 -#define VAR_CONTROL_INTERFACE 352 -#define VAR_CONTROL_PORT 353 -#define VAR_SERVER_KEY_FILE 354 -#define VAR_SERVER_CERT_FILE 355 -#define VAR_CONTROL_KEY_FILE 356 -#define VAR_CONTROL_CERT_FILE 357 -#define VAR_CONTROL_USE_CERT 358 -#define VAR_EXTENDED_STATISTICS 359 -#define VAR_LOCAL_DATA_PTR 360 -#define VAR_JOSTLE_TIMEOUT 361 -#define VAR_STUB_PRIME 362 -#define VAR_UNWANTED_REPLY_THRESHOLD 363 -#define VAR_LOG_TIME_ASCII 364 -#define VAR_DOMAIN_INSECURE 365 -#define VAR_PYTHON 366 -#define VAR_PYTHON_SCRIPT 367 -#define VAR_VAL_SIG_SKEW_MIN 368 -#define VAR_VAL_SIG_SKEW_MAX 369 -#define VAR_CACHE_MIN_TTL 370 -#define VAR_VAL_LOG_LEVEL 371 -#define VAR_AUTO_TRUST_ANCHOR_FILE 372 -#define VAR_KEEP_MISSING 373 -#define VAR_ADD_HOLDDOWN 374 -#define VAR_DEL_HOLDDOWN 375 -#define VAR_SO_RCVBUF 376 -#define VAR_EDNS_BUFFER_SIZE 377 -#define VAR_PREFETCH 378 -#define VAR_PREFETCH_KEY 379 -#define VAR_SO_SNDBUF 380 -#define VAR_SO_REUSEPORT 381 -#define VAR_HARDEN_BELOW_NXDOMAIN 382 -#define VAR_IGNORE_CD_FLAG 383 -#define VAR_LOG_QUERIES 384 -#define VAR_LOG_REPLIES 385 -#define VAR_LOG_LOCAL_ACTIONS 386 -#define VAR_TCP_UPSTREAM 387 -#define VAR_SSL_UPSTREAM 388 -#define VAR_SSL_SERVICE_KEY 389 -#define VAR_SSL_SERVICE_PEM 390 -#define VAR_SSL_PORT 391 -#define VAR_FORWARD_FIRST 392 -#define VAR_STUB_SSL_UPSTREAM 393 -#define VAR_FORWARD_SSL_UPSTREAM 394 -#define VAR_TLS_CERT_BUNDLE 395 -#define VAR_STUB_FIRST 396 -#define VAR_MINIMAL_RESPONSES 397 -#define VAR_RRSET_ROUNDROBIN 398 -#define VAR_MAX_UDP_SIZE 399 -#define VAR_DELAY_CLOSE 400 -#define VAR_UNBLOCK_LAN_ZONES 401 -#define VAR_INSECURE_LAN_ZONES 402 -#define VAR_INFRA_CACHE_MIN_RTT 403 -#define VAR_DNS64_PREFIX 404 -#define VAR_DNS64_SYNTHALL 405 -#define VAR_DNS64_IGNORE_AAAA 406 -#define VAR_DNSTAP 407 -#define VAR_DNSTAP_ENABLE 408 -#define VAR_DNSTAP_SOCKET_PATH 409 -#define VAR_DNSTAP_IP 410 -#define VAR_DNSTAP_TLS 411 -#define VAR_DNSTAP_TLS_SERVER_NAME 412 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 413 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 414 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 -#define VAR_DNSTAP_SEND_IDENTITY 416 -#define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_IP_DSCP 431 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 -#define VAR_IP_RATELIMIT 433 -#define VAR_IP_RATELIMIT_SLABS 434 -#define VAR_IP_RATELIMIT_SIZE 435 -#define VAR_RATELIMIT 436 -#define VAR_RATELIMIT_SLABS 437 -#define VAR_RATELIMIT_SIZE 438 -#define VAR_RATELIMIT_FOR_DOMAIN 439 -#define VAR_RATELIMIT_BELOW_DOMAIN 440 -#define VAR_IP_RATELIMIT_FACTOR 441 -#define VAR_RATELIMIT_FACTOR 442 -#define VAR_SEND_CLIENT_SUBNET 443 -#define VAR_CLIENT_SUBNET_ZONE 444 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 -#define VAR_CLIENT_SUBNET_OPCODE 446 -#define VAR_MAX_CLIENT_SUBNET_IPV4 447 -#define VAR_MAX_CLIENT_SUBNET_IPV6 448 -#define VAR_MIN_CLIENT_SUBNET_IPV4 449 -#define VAR_MIN_CLIENT_SUBNET_IPV6 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 -#define VAR_CAPS_WHITELIST 453 -#define VAR_CACHE_MAX_NEGATIVE_TTL 454 -#define VAR_PERMIT_SMALL_HOLDDOWN 455 -#define VAR_QNAME_MINIMISATION 456 -#define VAR_QNAME_MINIMISATION_STRICT 457 -#define VAR_IP_FREEBIND 458 -#define VAR_DEFINE_TAG 459 -#define VAR_LOCAL_ZONE_TAG 460 -#define VAR_ACCESS_CONTROL_TAG 461 -#define VAR_LOCAL_ZONE_OVERRIDE 462 -#define VAR_ACCESS_CONTROL_TAG_ACTION 463 -#define VAR_ACCESS_CONTROL_TAG_DATA 464 -#define VAR_VIEW 465 -#define VAR_ACCESS_CONTROL_VIEW 466 -#define VAR_VIEW_FIRST 467 -#define VAR_SERVE_EXPIRED 468 -#define VAR_SERVE_EXPIRED_TTL 469 -#define VAR_SERVE_EXPIRED_TTL_RESET 470 -#define VAR_SERVE_EXPIRED_REPLY_TTL 471 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_CACHEDB_REDISEXPIRERECORDS 506 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 507 -#define VAR_FOR_UPSTREAM 508 -#define VAR_AUTH_ZONE 509 -#define VAR_ZONEFILE 510 -#define VAR_MASTER 511 -#define VAR_URL 512 -#define VAR_FOR_DOWNSTREAM 513 -#define VAR_FALLBACK_ENABLED 514 -#define VAR_TLS_ADDITIONAL_PORT 515 -#define VAR_LOW_RTT 516 -#define VAR_LOW_RTT_PERMIL 517 -#define VAR_FAST_SERVER_PERMIL 518 -#define VAR_FAST_SERVER_NUM 519 -#define VAR_ALLOW_NOTIFY 520 -#define VAR_TLS_WIN_CERT 521 -#define VAR_TCP_CONNECTION_LIMIT 522 -#define VAR_FORWARD_NO_CACHE 523 -#define VAR_STUB_NO_CACHE 524 -#define VAR_LOG_SERVFAIL 525 -#define VAR_DENY_ANY 526 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 527 -#define VAR_LOG_TAG_QUERYREPLY 528 -#define VAR_STREAM_WAIT_SIZE 529 -#define VAR_TLS_CIPHERS 530 -#define VAR_TLS_CIPHERSUITES 531 -#define VAR_TLS_USE_SNI 532 -#define VAR_IPSET 533 -#define VAR_IPSET_NAME_V4 534 -#define VAR_IPSET_NAME_V6 535 -#define VAR_TLS_SESSION_TICKET_KEYS 536 -#define VAR_RPZ 537 -#define VAR_TAGS 538 -#define VAR_RPZ_ACTION_OVERRIDE 539 -#define VAR_RPZ_CNAME_OVERRIDE 540 -#define VAR_RPZ_LOG 541 -#define VAR_RPZ_LOG_NAME 542 +#define VAR_FORCE_TOPLEVEL 266 +#define VAR_SERVER 267 +#define VAR_VERBOSITY 268 +#define VAR_NUM_THREADS 269 +#define VAR_PORT 270 +#define VAR_OUTGOING_RANGE 271 +#define VAR_INTERFACE 272 +#define VAR_PREFER_IP4 273 +#define VAR_DO_IP4 274 +#define VAR_DO_IP6 275 +#define VAR_PREFER_IP6 276 +#define VAR_DO_UDP 277 +#define VAR_DO_TCP 278 +#define VAR_TCP_MSS 279 +#define VAR_OUTGOING_TCP_MSS 280 +#define VAR_TCP_IDLE_TIMEOUT 281 +#define VAR_EDNS_TCP_KEEPALIVE 282 +#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283 +#define VAR_CHROOT 284 +#define VAR_USERNAME 285 +#define VAR_DIRECTORY 286 +#define VAR_LOGFILE 287 +#define VAR_PIDFILE 288 +#define VAR_MSG_CACHE_SIZE 289 +#define VAR_MSG_CACHE_SLABS 290 +#define VAR_NUM_QUERIES_PER_THREAD 291 +#define VAR_RRSET_CACHE_SIZE 292 +#define VAR_RRSET_CACHE_SLABS 293 +#define VAR_OUTGOING_NUM_TCP 294 +#define VAR_INFRA_HOST_TTL 295 +#define VAR_INFRA_LAME_TTL 296 +#define VAR_INFRA_CACHE_SLABS 297 +#define VAR_INFRA_CACHE_NUMHOSTS 298 +#define VAR_INFRA_CACHE_LAME_SIZE 299 +#define VAR_NAME 300 +#define VAR_STUB_ZONE 301 +#define VAR_STUB_HOST 302 +#define VAR_STUB_ADDR 303 +#define VAR_TARGET_FETCH_POLICY 304 +#define VAR_HARDEN_SHORT_BUFSIZE 305 +#define VAR_HARDEN_LARGE_QUERIES 306 +#define VAR_FORWARD_ZONE 307 +#define VAR_FORWARD_HOST 308 +#define VAR_FORWARD_ADDR 309 +#define VAR_DO_NOT_QUERY_ADDRESS 310 +#define VAR_HIDE_IDENTITY 311 +#define VAR_HIDE_VERSION 312 +#define VAR_IDENTITY 313 +#define VAR_VERSION 314 +#define VAR_HARDEN_GLUE 315 +#define VAR_MODULE_CONF 316 +#define VAR_TRUST_ANCHOR_FILE 317 +#define VAR_TRUST_ANCHOR 318 +#define VAR_VAL_OVERRIDE_DATE 319 +#define VAR_BOGUS_TTL 320 +#define VAR_VAL_CLEAN_ADDITIONAL 321 +#define VAR_VAL_PERMISSIVE_MODE 322 +#define VAR_INCOMING_NUM_TCP 323 +#define VAR_MSG_BUFFER_SIZE 324 +#define VAR_KEY_CACHE_SIZE 325 +#define VAR_KEY_CACHE_SLABS 326 +#define VAR_TRUSTED_KEYS_FILE 327 +#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328 +#define VAR_USE_SYSLOG 329 +#define VAR_OUTGOING_INTERFACE 330 +#define VAR_ROOT_HINTS 331 +#define VAR_DO_NOT_QUERY_LOCALHOST 332 +#define VAR_CACHE_MAX_TTL 333 +#define VAR_HARDEN_DNSSEC_STRIPPED 334 +#define VAR_ACCESS_CONTROL 335 +#define VAR_LOCAL_ZONE 336 +#define VAR_LOCAL_DATA 337 +#define VAR_INTERFACE_AUTOMATIC 338 +#define VAR_STATISTICS_INTERVAL 339 +#define VAR_DO_DAEMONIZE 340 +#define VAR_USE_CAPS_FOR_ID 341 +#define VAR_STATISTICS_CUMULATIVE 342 +#define VAR_OUTGOING_PORT_PERMIT 343 +#define VAR_OUTGOING_PORT_AVOID 344 +#define VAR_DLV_ANCHOR_FILE 345 +#define VAR_DLV_ANCHOR 346 +#define VAR_NEG_CACHE_SIZE 347 +#define VAR_HARDEN_REFERRAL_PATH 348 +#define VAR_PRIVATE_ADDRESS 349 +#define VAR_PRIVATE_DOMAIN 350 +#define VAR_REMOTE_CONTROL 351 +#define VAR_CONTROL_ENABLE 352 +#define VAR_CONTROL_INTERFACE 353 +#define VAR_CONTROL_PORT 354 +#define VAR_SERVER_KEY_FILE 355 +#define VAR_SERVER_CERT_FILE 356 +#define VAR_CONTROL_KEY_FILE 357 +#define VAR_CONTROL_CERT_FILE 358 +#define VAR_CONTROL_USE_CERT 359 +#define VAR_EXTENDED_STATISTICS 360 +#define VAR_LOCAL_DATA_PTR 361 +#define VAR_JOSTLE_TIMEOUT 362 +#define VAR_STUB_PRIME 363 +#define VAR_UNWANTED_REPLY_THRESHOLD 364 +#define VAR_LOG_TIME_ASCII 365 +#define VAR_DOMAIN_INSECURE 366 +#define VAR_PYTHON 367 +#define VAR_PYTHON_SCRIPT 368 +#define VAR_VAL_SIG_SKEW_MIN 369 +#define VAR_VAL_SIG_SKEW_MAX 370 +#define VAR_CACHE_MIN_TTL 371 +#define VAR_VAL_LOG_LEVEL 372 +#define VAR_AUTO_TRUST_ANCHOR_FILE 373 +#define VAR_KEEP_MISSING 374 +#define VAR_ADD_HOLDDOWN 375 +#define VAR_DEL_HOLDDOWN 376 +#define VAR_SO_RCVBUF 377 +#define VAR_EDNS_BUFFER_SIZE 378 +#define VAR_PREFETCH 379 +#define VAR_PREFETCH_KEY 380 +#define VAR_SO_SNDBUF 381 +#define VAR_SO_REUSEPORT 382 +#define VAR_HARDEN_BELOW_NXDOMAIN 383 +#define VAR_IGNORE_CD_FLAG 384 +#define VAR_LOG_QUERIES 385 +#define VAR_LOG_REPLIES 386 +#define VAR_LOG_LOCAL_ACTIONS 387 +#define VAR_TCP_UPSTREAM 388 +#define VAR_SSL_UPSTREAM 389 +#define VAR_SSL_SERVICE_KEY 390 +#define VAR_SSL_SERVICE_PEM 391 +#define VAR_SSL_PORT 392 +#define VAR_FORWARD_FIRST 393 +#define VAR_STUB_SSL_UPSTREAM 394 +#define VAR_FORWARD_SSL_UPSTREAM 395 +#define VAR_TLS_CERT_BUNDLE 396 +#define VAR_STUB_FIRST 397 +#define VAR_MINIMAL_RESPONSES 398 +#define VAR_RRSET_ROUNDROBIN 399 +#define VAR_MAX_UDP_SIZE 400 +#define VAR_DELAY_CLOSE 401 +#define VAR_UNBLOCK_LAN_ZONES 402 +#define VAR_INSECURE_LAN_ZONES 403 +#define VAR_INFRA_CACHE_MIN_RTT 404 +#define VAR_DNS64_PREFIX 405 +#define VAR_DNS64_SYNTHALL 406 +#define VAR_DNS64_IGNORE_AAAA 407 +#define VAR_DNSTAP 408 +#define VAR_DNSTAP_ENABLE 409 +#define VAR_DNSTAP_SOCKET_PATH 410 +#define VAR_DNSTAP_IP 411 +#define VAR_DNSTAP_TLS 412 +#define VAR_DNSTAP_TLS_SERVER_NAME 413 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 414 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 415 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 416 +#define VAR_DNSTAP_SEND_IDENTITY 417 +#define VAR_DNSTAP_SEND_VERSION 418 +#define VAR_DNSTAP_IDENTITY 419 +#define VAR_DNSTAP_VERSION 420 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 424 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 425 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 426 +#define VAR_RESPONSE_IP_TAG 427 +#define VAR_RESPONSE_IP 428 +#define VAR_RESPONSE_IP_DATA 429 +#define VAR_HARDEN_ALGO_DOWNGRADE 430 +#define VAR_IP_TRANSPARENT 431 +#define VAR_IP_DSCP 432 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 433 +#define VAR_IP_RATELIMIT 434 +#define VAR_IP_RATELIMIT_SLABS 435 +#define VAR_IP_RATELIMIT_SIZE 436 +#define VAR_RATELIMIT 437 +#define VAR_RATELIMIT_SLABS 438 +#define VAR_RATELIMIT_SIZE 439 +#define VAR_RATELIMIT_FOR_DOMAIN 440 +#define VAR_RATELIMIT_BELOW_DOMAIN 441 +#define VAR_IP_RATELIMIT_FACTOR 442 +#define VAR_RATELIMIT_FACTOR 443 +#define VAR_SEND_CLIENT_SUBNET 444 +#define VAR_CLIENT_SUBNET_ZONE 445 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 446 +#define VAR_CLIENT_SUBNET_OPCODE 447 +#define VAR_MAX_CLIENT_SUBNET_IPV4 448 +#define VAR_MAX_CLIENT_SUBNET_IPV6 449 +#define VAR_MIN_CLIENT_SUBNET_IPV4 450 +#define VAR_MIN_CLIENT_SUBNET_IPV6 451 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 452 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 453 +#define VAR_CAPS_WHITELIST 454 +#define VAR_CACHE_MAX_NEGATIVE_TTL 455 +#define VAR_PERMIT_SMALL_HOLDDOWN 456 +#define VAR_QNAME_MINIMISATION 457 +#define VAR_QNAME_MINIMISATION_STRICT 458 +#define VAR_IP_FREEBIND 459 +#define VAR_DEFINE_TAG 460 +#define VAR_LOCAL_ZONE_TAG 461 +#define VAR_ACCESS_CONTROL_TAG 462 +#define VAR_LOCAL_ZONE_OVERRIDE 463 +#define VAR_ACCESS_CONTROL_TAG_ACTION 464 +#define VAR_ACCESS_CONTROL_TAG_DATA 465 +#define VAR_VIEW 466 +#define VAR_ACCESS_CONTROL_VIEW 467 +#define VAR_VIEW_FIRST 468 +#define VAR_SERVE_EXPIRED 469 +#define VAR_SERVE_EXPIRED_TTL 470 +#define VAR_SERVE_EXPIRED_TTL_RESET 471 +#define VAR_SERVE_EXPIRED_REPLY_TTL 472 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 473 +#define VAR_FAKE_DSA 474 +#define VAR_FAKE_SHA1 475 +#define VAR_LOG_IDENTITY 476 +#define VAR_HIDE_TRUSTANCHOR 477 +#define VAR_TRUST_ANCHOR_SIGNALING 478 +#define VAR_AGGRESSIVE_NSEC 479 +#define VAR_USE_SYSTEMD 480 +#define VAR_SHM_ENABLE 481 +#define VAR_SHM_KEY 482 +#define VAR_ROOT_KEY_SENTINEL 483 +#define VAR_DNSCRYPT 484 +#define VAR_DNSCRYPT_ENABLE 485 +#define VAR_DNSCRYPT_PORT 486 +#define VAR_DNSCRYPT_PROVIDER 487 +#define VAR_DNSCRYPT_SECRET_KEY 488 +#define VAR_DNSCRYPT_PROVIDER_CERT 489 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 +#define VAR_IPSECMOD_ENABLED 495 +#define VAR_IPSECMOD_HOOK 496 +#define VAR_IPSECMOD_IGNORE_BOGUS 497 +#define VAR_IPSECMOD_MAX_TTL 498 +#define VAR_IPSECMOD_WHITELIST 499 +#define VAR_IPSECMOD_STRICT 500 +#define VAR_CACHEDB 501 +#define VAR_CACHEDB_BACKEND 502 +#define VAR_CACHEDB_SECRETSEED 503 +#define VAR_CACHEDB_REDISHOST 504 +#define VAR_CACHEDB_REDISPORT 505 +#define VAR_CACHEDB_REDISTIMEOUT 506 +#define VAR_CACHEDB_REDISEXPIRERECORDS 507 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 +#define VAR_FOR_UPSTREAM 509 +#define VAR_AUTH_ZONE 510 +#define VAR_ZONEFILE 511 +#define VAR_MASTER 512 +#define VAR_URL 513 +#define VAR_FOR_DOWNSTREAM 514 +#define VAR_FALLBACK_ENABLED 515 +#define VAR_TLS_ADDITIONAL_PORT 516 +#define VAR_LOW_RTT 517 +#define VAR_LOW_RTT_PERMIL 518 +#define VAR_FAST_SERVER_PERMIL 519 +#define VAR_FAST_SERVER_NUM 520 +#define VAR_ALLOW_NOTIFY 521 +#define VAR_TLS_WIN_CERT 522 +#define VAR_TCP_CONNECTION_LIMIT 523 +#define VAR_FORWARD_NO_CACHE 524 +#define VAR_STUB_NO_CACHE 525 +#define VAR_LOG_SERVFAIL 526 +#define VAR_DENY_ANY 527 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 +#define VAR_LOG_TAG_QUERYREPLY 529 +#define VAR_STREAM_WAIT_SIZE 530 +#define VAR_TLS_CIPHERS 531 +#define VAR_TLS_CIPHERSUITES 532 +#define VAR_TLS_USE_SNI 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -716,7 +718,7 @@ union YYSTYPE char* str; -#line 720 "util/configparser.c" +#line 722 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -966,19 +968,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 609 +#define YYLAST 613 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 288 +#define YYNTOKENS 289 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 311 +#define YYNNTS 312 /* YYNRULES -- Number of rules. */ -#define YYNRULES 600 +#define YYNRULES 602 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 893 +#define YYNSTATES 895 #define YYUNDEFTOK 2 -#define YYMAXUTOK 542 +#define YYMAXUTOK 543 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ @@ -1043,74 +1045,74 @@ static const yytype_uint16 yytranslate[] = 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287 + 285, 286, 287, 288 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 179, 179, 179, 180, 180, 181, 181, 182, 182, - 182, 183, 183, 184, 184, 185, 189, 194, 195, 196, - 196, 196, 197, 197, 198, 198, 198, 199, 199, 200, - 200, 200, 201, 201, 202, 202, 202, 203, 203, 203, - 204, 204, 205, 205, 206, 206, 207, 207, 208, 208, - 209, 209, 210, 210, 211, 211, 212, 212, 212, 213, - 213, 213, 214, 214, 214, 215, 215, 216, 216, 217, - 217, 218, 218, 219, 219, 219, 220, 220, 221, 221, - 222, 222, 222, 223, 223, 224, 224, 225, 225, 226, - 226, 226, 227, 227, 228, 228, 229, 229, 230, 230, - 231, 231, 232, 232, 232, 233, 233, 234, 234, 234, - 235, 235, 235, 236, 236, 236, 237, 237, 237, 237, - 238, 239, 239, 239, 240, 240, 240, 241, 241, 242, - 242, 243, 243, 243, 244, 244, 245, 245, 245, 246, - 247, 247, 248, 248, 249, 250, 250, 251, 251, 252, - 252, 253, 254, 254, 255, 255, 256, 256, 257, 257, - 258, 258, 259, 259, 259, 260, 260, 261, 261, 262, - 262, 263, 263, 264, 264, 265, 265, 266, 266, 266, - 267, 267, 267, 268, 268, 268, 269, 269, 270, 271, - 271, 272, 272, 273, 273, 274, 274, 275, 275, 275, - 276, 276, 276, 277, 277, 277, 278, 278, 279, 279, - 280, 280, 281, 283, 295, 296, 297, 297, 297, 297, - 297, 298, 298, 300, 312, 313, 314, 314, 314, 314, - 315, 315, 317, 331, 332, 333, 333, 333, 333, 334, - 334, 334, 336, 353, 354, 355, 355, 355, 355, 356, - 356, 356, 357, 360, 379, 396, 404, 414, 422, 439, - 440, 441, 441, 441, 441, 441, 442, 442, 442, 443, - 443, 445, 454, 463, 474, 483, 492, 501, 512, 521, - 533, 547, 562, 573, 590, 607, 624, 641, 656, 671, - 684, 699, 708, 717, 726, 735, 744, 753, 762, 771, - 780, 789, 798, 807, 816, 825, 838, 847, 860, 869, - 878, 887, 894, 901, 910, 917, 926, 934, 941, 948, - 956, 965, 974, 983, 997, 1006, 1015, 1024, 1033, 1042, - 1051, 1058, 1065, 1091, 1099, 1106, 1113, 1120, 1127, 1135, - 1143, 1151, 1158, 1169, 1180, 1187, 1196, 1205, 1214, 1221, - 1228, 1236, 1244, 1254, 1264, 1274, 1288, 1296, 1309, 1320, - 1328, 1341, 1350, 1359, 1368, 1378, 1388, 1396, 1409, 1418, - 1426, 1435, 1443, 1456, 1465, 1472, 1482, 1492, 1502, 1512, - 1522, 1532, 1542, 1552, 1559, 1566, 1573, 1582, 1591, 1600, - 1609, 1616, 1626, 1646, 1653, 1671, 1684, 1697, 1706, 1715, - 1724, 1733, 1743, 1753, 1764, 1773, 1782, 1791, 1800, 1809, - 1818, 1831, 1844, 1853, 1860, 1869, 1878, 1887, 1896, 1904, - 1917, 1925, 1966, 1973, 1988, 1998, 2008, 2015, 2022, 2029, - 2038, 2046, 2060, 2081, 2102, 2114, 2126, 2138, 2147, 2168, - 2178, 2187, 2195, 2203, 2216, 2229, 2244, 2259, 2268, 2277, - 2283, 2292, 2301, 2311, 2321, 2334, 2347, 2359, 2373, 2385, - 2399, 2409, 2416, 2423, 2432, 2441, 2451, 2461, 2471, 2478, - 2485, 2494, 2503, 2513, 2523, 2530, 2537, 2544, 2552, 2562, - 2572, 2582, 2592, 2631, 2641, 2649, 2657, 2672, 2681, 2686, - 2687, 2688, 2688, 2688, 2689, 2689, 2689, 2690, 2690, 2692, - 2702, 2711, 2718, 2725, 2732, 2739, 2746, 2753, 2758, 2759, - 2760, 2760, 2761, 2761, 2761, 2762, 2763, 2763, 2764, 2764, - 2765, 2765, 2766, 2767, 2768, 2769, 2770, 2771, 2773, 2782, - 2789, 2796, 2805, 2812, 2819, 2826, 2833, 2842, 2851, 2858, - 2865, 2875, 2885, 2895, 2905, 2915, 2925, 2930, 2931, 2932, - 2934, 2940, 2950, 2957, 2966, 2974, 2979, 2980, 2982, 2982, - 2982, 2983, 2983, 2984, 2985, 2986, 2987, 2988, 2990, 3000, - 3009, 3016, 3025, 3032, 3041, 3049, 3062, 3070, 3083, 3088, - 3089, 3090, 3090, 3091, 3091, 3091, 3092, 3094, 3106, 3118, - 3130, 3145, 3158, 3171, 3182, 3187, 3188, 3189, 3189, 3191, - 3206 + 0, 180, 180, 180, 181, 181, 182, 182, 183, 183, + 183, 184, 184, 185, 185, 186, 187, 189, 194, 199, + 200, 201, 201, 201, 202, 202, 203, 203, 203, 204, + 204, 205, 205, 205, 206, 206, 207, 207, 207, 208, + 208, 208, 209, 209, 210, 210, 211, 211, 212, 212, + 213, 213, 214, 214, 215, 215, 216, 216, 217, 217, + 217, 218, 218, 218, 219, 219, 219, 220, 220, 221, + 221, 222, 222, 223, 223, 224, 224, 224, 225, 225, + 226, 226, 227, 227, 227, 228, 228, 229, 229, 230, + 230, 231, 231, 231, 232, 232, 233, 233, 234, 234, + 235, 235, 236, 236, 237, 237, 237, 238, 238, 239, + 239, 239, 240, 240, 240, 241, 241, 241, 242, 242, + 242, 242, 243, 244, 244, 244, 245, 245, 245, 246, + 246, 247, 247, 248, 248, 248, 249, 249, 250, 250, + 250, 251, 252, 252, 253, 253, 254, 255, 255, 256, + 256, 257, 257, 258, 259, 259, 260, 260, 261, 261, + 262, 262, 263, 263, 264, 264, 264, 265, 265, 266, + 266, 267, 267, 268, 268, 269, 269, 270, 270, 271, + 271, 271, 272, 272, 272, 273, 273, 273, 274, 274, + 275, 276, 276, 277, 277, 278, 278, 279, 279, 280, + 280, 280, 281, 281, 281, 282, 282, 282, 283, 283, + 284, 284, 285, 285, 286, 288, 300, 301, 302, 302, + 302, 302, 302, 303, 303, 305, 317, 318, 319, 319, + 319, 319, 320, 320, 322, 336, 337, 338, 338, 338, + 338, 339, 339, 339, 341, 358, 359, 360, 360, 360, + 360, 361, 361, 361, 362, 365, 384, 401, 409, 419, + 427, 444, 445, 446, 446, 446, 446, 446, 447, 447, + 447, 448, 448, 450, 459, 468, 479, 488, 497, 506, + 517, 526, 538, 552, 567, 578, 595, 612, 629, 646, + 661, 676, 689, 704, 713, 722, 731, 740, 749, 758, + 767, 776, 785, 794, 803, 812, 821, 830, 843, 852, + 865, 874, 883, 892, 899, 906, 915, 922, 931, 939, + 946, 953, 961, 970, 979, 988, 1002, 1011, 1020, 1029, + 1038, 1047, 1056, 1063, 1070, 1096, 1104, 1111, 1118, 1125, + 1132, 1140, 1148, 1156, 1163, 1174, 1185, 1192, 1201, 1210, + 1219, 1226, 1233, 1241, 1249, 1259, 1269, 1279, 1293, 1301, + 1314, 1325, 1333, 1346, 1355, 1364, 1373, 1383, 1393, 1401, + 1414, 1423, 1431, 1440, 1448, 1461, 1470, 1477, 1487, 1497, + 1507, 1517, 1527, 1537, 1547, 1557, 1564, 1571, 1578, 1587, + 1596, 1605, 1614, 1621, 1631, 1651, 1658, 1676, 1689, 1702, + 1711, 1720, 1729, 1738, 1748, 1758, 1769, 1778, 1787, 1796, + 1805, 1814, 1823, 1836, 1849, 1858, 1865, 1874, 1883, 1892, + 1901, 1909, 1922, 1930, 1971, 1978, 1993, 2003, 2013, 2020, + 2027, 2034, 2043, 2051, 2065, 2086, 2107, 2119, 2131, 2143, + 2152, 2173, 2183, 2192, 2200, 2208, 2221, 2234, 2249, 2264, + 2273, 2282, 2288, 2297, 2306, 2316, 2326, 2339, 2352, 2364, + 2378, 2390, 2404, 2414, 2421, 2428, 2437, 2446, 2456, 2466, + 2476, 2483, 2490, 2499, 2508, 2518, 2528, 2535, 2542, 2549, + 2557, 2567, 2577, 2587, 2597, 2636, 2646, 2654, 2662, 2677, + 2686, 2691, 2692, 2693, 2693, 2693, 2694, 2694, 2694, 2695, + 2695, 2697, 2707, 2716, 2723, 2730, 2737, 2744, 2751, 2758, + 2763, 2764, 2765, 2765, 2766, 2766, 2766, 2767, 2768, 2768, + 2769, 2769, 2770, 2770, 2771, 2772, 2773, 2774, 2775, 2776, + 2778, 2787, 2794, 2801, 2810, 2817, 2824, 2831, 2838, 2847, + 2856, 2863, 2870, 2880, 2890, 2900, 2910, 2920, 2930, 2935, + 2936, 2937, 2939, 2945, 2955, 2962, 2971, 2979, 2984, 2985, + 2987, 2987, 2987, 2988, 2988, 2989, 2990, 2991, 2992, 2993, + 2995, 3005, 3014, 3021, 3030, 3037, 3046, 3054, 3067, 3075, + 3088, 3093, 3094, 3095, 3095, 3096, 3096, 3096, 3097, 3099, + 3111, 3123, 3135, 3150, 3163, 3176, 3187, 3192, 3193, 3194, + 3194, 3196, 3211 }; #endif @@ -1120,16 +1122,17 @@ static const yytype_uint16 yyrline[] = static const char *const yytname[] = { "$end", "error", "$undefined", "SPACE", "LETTER", "NEWLINE", "COMMENT", - "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_SERVER", "VAR_VERBOSITY", - "VAR_NUM_THREADS", "VAR_PORT", "VAR_OUTGOING_RANGE", "VAR_INTERFACE", - "VAR_PREFER_IP4", "VAR_DO_IP4", "VAR_DO_IP6", "VAR_PREFER_IP6", - "VAR_DO_UDP", "VAR_DO_TCP", "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS", - "VAR_TCP_IDLE_TIMEOUT", "VAR_EDNS_TCP_KEEPALIVE", - "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_CHROOT", "VAR_USERNAME", - "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE", "VAR_MSG_CACHE_SIZE", - "VAR_MSG_CACHE_SLABS", "VAR_NUM_QUERIES_PER_THREAD", - "VAR_RRSET_CACHE_SIZE", "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", - "VAR_INFRA_HOST_TTL", "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS", + "COLON", "ANY", "ZONESTR", "STRING_ARG", "VAR_FORCE_TOPLEVEL", + "VAR_SERVER", "VAR_VERBOSITY", "VAR_NUM_THREADS", "VAR_PORT", + "VAR_OUTGOING_RANGE", "VAR_INTERFACE", "VAR_PREFER_IP4", "VAR_DO_IP4", + "VAR_DO_IP6", "VAR_PREFER_IP6", "VAR_DO_UDP", "VAR_DO_TCP", + "VAR_TCP_MSS", "VAR_OUTGOING_TCP_MSS", "VAR_TCP_IDLE_TIMEOUT", + "VAR_EDNS_TCP_KEEPALIVE", "VAR_EDNS_TCP_KEEPALIVE_TIMEOUT", "VAR_CHROOT", + "VAR_USERNAME", "VAR_DIRECTORY", "VAR_LOGFILE", "VAR_PIDFILE", + "VAR_MSG_CACHE_SIZE", "VAR_MSG_CACHE_SLABS", + "VAR_NUM_QUERIES_PER_THREAD", "VAR_RRSET_CACHE_SIZE", + "VAR_RRSET_CACHE_SLABS", "VAR_OUTGOING_NUM_TCP", "VAR_INFRA_HOST_TTL", + "VAR_INFRA_LAME_TTL", "VAR_INFRA_CACHE_SLABS", "VAR_INFRA_CACHE_NUMHOSTS", "VAR_INFRA_CACHE_LAME_SIZE", "VAR_NAME", "VAR_STUB_ZONE", "VAR_STUB_HOST", "VAR_STUB_ADDR", "VAR_TARGET_FETCH_POLICY", "VAR_HARDEN_SHORT_BUFSIZE", @@ -1225,16 +1228,16 @@ static const char *const yytname[] = "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", "$accept", - "toplevelvars", "toplevelvar", "serverstart", "contents_server", - "content_server", "stubstart", "contents_stub", "content_stub", - "forwardstart", "contents_forward", "content_forward", "viewstart", - "contents_view", "content_view", "authstart", "contents_auth", - "content_auth", "rpz_tag", "rpz_action_override", "rpz_cname_override", - "rpz_log", "rpz_log_name", "rpzstart", "contents_rpz", "content_rpz", - "server_num_threads", "server_verbosity", "server_statistics_interval", - "server_statistics_cumulative", "server_extended_statistics", - "server_shm_enable", "server_shm_key", "server_port", - "server_send_client_subnet", "server_client_subnet_zone", + "toplevelvars", "toplevelvar", "force_toplevel", "serverstart", + "contents_server", "content_server", "stubstart", "contents_stub", + "content_stub", "forwardstart", "contents_forward", "content_forward", + "viewstart", "contents_view", "content_view", "authstart", + "contents_auth", "content_auth", "rpz_tag", "rpz_action_override", + "rpz_cname_override", "rpz_log", "rpz_log_name", "rpzstart", + "contents_rpz", "content_rpz", "server_num_threads", "server_verbosity", + "server_statistics_interval", "server_statistics_cumulative", + "server_extended_statistics", "server_shm_enable", "server_shm_key", + "server_port", "server_send_client_subnet", "server_client_subnet_zone", "server_client_subnet_always_forward", "server_client_subnet_opcode", "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6", "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6", @@ -1386,7 +1389,7 @@ static const yytype_uint16 yytoknum[] = 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542 + 535, 536, 537, 538, 539, 540, 541, 542, 543 }; # endif @@ -1406,28 +1409,28 @@ static const yytype_int16 yypact[] = { -272, 0, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, 271, -42, - -37, -41, -7, -43, -30, -136, -106, -177, -172, -271, - 2, 3, 4, 25, 26, 28, 31, 32, 33, 34, - 36, 37, 38, 39, 40, 52, 53, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 87, 88, 91, 93, 94, 95, 96, 97, - 98, 99, 100, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 201, 205, 206, - 207, 208, 209, 210, 211, 213, 214, 215, 216, 219, - 220, 222, 223, 224, 225, 226, 227, 228, 229, 237, - 243, 245, 246, 247, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 269, 270, 305, 306, 307, 308, 312, - 313, 314, 356, 357, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + 271, -42, -37, -43, -21, -44, -12, -87, -109, -205, + -229, -271, -3, 3, 4, 5, 25, 26, 27, 30, + 31, 32, 33, 34, 35, 37, 38, 39, 40, 41, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 54, 55, 83, 84, 85, 88, 89, 92, 94, 95, + 96, 97, 98, 99, 100, 101, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 205, 206, 207, 208, 209, 210, 211, 213, 214, 215, + 216, 217, 220, 221, 224, 237, 238, 239, 240, 241, + 242, 243, 244, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 270, 272, 306, 307, + 308, 309, 313, 314, 315, 357, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, @@ -1446,54 +1449,54 @@ static const yytype_int16 yypact[] = -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 358, - 359, 360, 361, 362, 363, 364, -272, -272, -272, -272, - -272, -272, -272, -272, 368, 372, 373, 398, 399, 400, - -272, -272, -272, -272, -272, -272, -272, 402, 413, 414, - 415, 416, 417, 418, -272, -272, -272, -272, -272, -272, - -272, -272, 419, 420, 421, 422, 423, 424, 425, 426, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 427, - 428, 429, 430, 431, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, 471, 473, 489, 490, 491, - 492, 493, 494, -272, -272, -272, -272, -272, -272, -272, - -272, -272, 495, 496, 497, 498, 499, 506, 507, 508, - 509, 510, 511, 512, 514, 515, 516, 517, 518, 519, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 520, - -272, -272, 523, 526, 529, 530, 539, 540, 541, 543, - 544, 545, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, 546, 547, 548, 549, 550, 551, -272, - -272, -272, -272, -272, -272, -272, 552, 553, -272, -272, + -272, 358, 359, 360, 361, 362, 363, 364, -272, -272, + -272, -272, -272, -272, -272, -272, 365, 369, 373, 374, + 399, 400, -272, -272, -272, -272, -272, -272, -272, 401, + 403, 414, 415, 416, 417, 418, -272, -272, -272, -272, + -272, -272, -272, -272, 419, 420, 421, 422, 423, 424, + 425, 426, -272, -272, -272, -272, -272, -272, -272, -272, + -272, 427, 428, 429, 430, 431, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, 432, 472, 474, + 490, 491, 492, 493, 494, -272, -272, -272, -272, -272, + -272, -272, -272, -272, 495, 496, 497, 498, 499, 500, + 507, 508, 509, 510, 511, 512, 513, 515, 516, 517, + 518, 519, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, 520, -272, -272, 521, 524, 527, 530, 531, 540, + 541, 542, 544, 545, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, 546, 547, 548, 549, 550, + 551, -272, -272, -272, -272, -272, -272, -272, 552, 553, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, 554, 555, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, 554, 555, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, 556, 557, - 558, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, 559, 560, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, 561, 562, 563, 564, 565, 566, -272, -272, + 556, 557, 558, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, 559, 560, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, 561, 562, 563, 564, 565, 566, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, 567, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, 567, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -272, 568, - -272, -272, 569, 570, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, + -272, 568, -272, -272, 569, 570, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, 571, 572, 573, -272, -272, -272, -272, -272, - -272, -272, -272 + -272, -272, -272, -272, 571, 572, 573, -272, -272, -272, + -272, -272, -272, -272, -272 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1501,10 +1504,11 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 2, 0, 1, 16, 213, 223, 488, 546, 507, 232, - 555, 578, 242, 594, 258, 3, 18, 215, 225, 234, - 244, 260, 490, 509, 548, 557, 580, 596, 4, 5, - 6, 10, 14, 15, 8, 9, 7, 11, 12, 13, + 2, 0, 1, 17, 18, 215, 225, 490, 548, 509, + 234, 557, 580, 244, 596, 260, 3, 16, 20, 217, + 227, 236, 246, 262, 492, 511, 550, 559, 582, 598, + 4, 5, 6, 10, 14, 15, 8, 9, 7, 11, + 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1523,74 +1527,73 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 19, 21, 22, 85, + 88, 97, 185, 186, 23, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 36, 76, 24, 89, 90, + 47, 69, 84, 25, 26, 29, 30, 27, 28, 31, + 32, 33, 34, 35, 120, 197, 121, 123, 124, 125, + 199, 204, 200, 211, 212, 213, 214, 181, 86, 75, + 101, 118, 119, 209, 206, 122, 37, 38, 39, 40, + 41, 77, 91, 92, 107, 63, 73, 64, 189, 190, + 102, 57, 58, 188, 59, 60, 111, 115, 129, 138, + 164, 141, 210, 112, 70, 42, 43, 44, 99, 130, + 131, 132, 45, 46, 48, 49, 51, 52, 50, 136, + 53, 54, 55, 61, 80, 116, 94, 137, 87, 160, + 95, 96, 113, 114, 207, 100, 56, 78, 81, 62, + 65, 103, 104, 79, 161, 105, 66, 67, 68, 198, + 117, 174, 175, 176, 177, 178, 179, 187, 106, 74, + 108, 109, 110, 162, 71, 72, 93, 82, 83, 98, + 126, 127, 208, 128, 133, 134, 135, 165, 166, 168, + 170, 171, 169, 172, 182, 139, 140, 144, 145, 142, + 143, 146, 147, 149, 148, 201, 203, 202, 163, 173, + 191, 193, 192, 194, 195, 196, 167, 180, 183, 184, + 205, 0, 0, 0, 0, 0, 0, 0, 216, 218, + 219, 220, 222, 223, 224, 221, 0, 0, 0, 0, + 0, 0, 226, 228, 229, 230, 231, 232, 233, 0, + 0, 0, 0, 0, 0, 0, 235, 237, 238, 241, + 242, 239, 243, 240, 0, 0, 0, 0, 0, 0, + 0, 0, 245, 247, 248, 249, 250, 254, 251, 252, + 253, 0, 0, 0, 0, 0, 265, 269, 270, 271, + 272, 261, 263, 264, 266, 267, 268, 0, 0, 0, + 0, 0, 0, 0, 0, 491, 493, 495, 494, 500, + 496, 497, 498, 499, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 17, 19, 20, 83, 86, 95, - 183, 184, 21, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 34, 74, 22, 87, 88, 45, 67, - 82, 23, 24, 27, 28, 25, 26, 29, 30, 31, - 32, 33, 118, 195, 119, 121, 122, 123, 197, 202, - 198, 209, 210, 211, 212, 179, 84, 73, 99, 116, - 117, 207, 204, 120, 35, 36, 37, 38, 39, 75, - 89, 90, 105, 61, 71, 62, 187, 188, 100, 55, - 56, 186, 57, 58, 109, 113, 127, 136, 162, 139, - 208, 110, 68, 40, 41, 42, 97, 128, 129, 130, - 43, 44, 46, 47, 49, 50, 48, 134, 51, 52, - 53, 59, 78, 114, 92, 135, 85, 158, 93, 94, - 111, 112, 205, 98, 54, 76, 79, 60, 63, 101, - 102, 77, 159, 103, 64, 65, 66, 196, 115, 172, - 173, 174, 175, 176, 177, 185, 104, 72, 106, 107, - 108, 160, 69, 70, 91, 80, 81, 96, 124, 125, - 206, 126, 131, 132, 133, 163, 164, 166, 168, 169, - 167, 170, 180, 137, 138, 142, 143, 140, 141, 144, - 145, 147, 146, 199, 201, 200, 161, 171, 189, 191, - 190, 192, 193, 194, 165, 178, 181, 182, 203, 0, - 0, 0, 0, 0, 0, 0, 214, 216, 217, 218, - 220, 221, 222, 219, 0, 0, 0, 0, 0, 0, - 224, 226, 227, 228, 229, 230, 231, 0, 0, 0, - 0, 0, 0, 0, 233, 235, 236, 239, 240, 237, - 241, 238, 0, 0, 0, 0, 0, 0, 0, 0, - 243, 245, 246, 247, 248, 252, 249, 250, 251, 0, - 0, 0, 0, 0, 263, 267, 268, 269, 270, 259, - 261, 262, 264, 265, 266, 0, 0, 0, 0, 0, - 0, 0, 0, 489, 491, 493, 492, 498, 494, 495, - 496, 497, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 508, 510, 511, 512, 513, 514, 515, 516, 517, 518, - 519, 520, 521, 522, 523, 524, 525, 526, 527, 0, - 547, 549, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 556, 558, 559, 560, 562, 563, 561, 564, - 565, 566, 567, 0, 0, 0, 0, 0, 0, 579, - 581, 582, 583, 584, 585, 586, 0, 0, 595, 597, - 598, 272, 271, 278, 291, 289, 301, 297, 298, 302, - 299, 300, 303, 304, 305, 306, 307, 330, 331, 332, - 333, 334, 359, 360, 361, 366, 367, 294, 368, 369, - 372, 370, 371, 374, 375, 376, 390, 345, 346, 348, - 349, 377, 393, 339, 341, 394, 400, 401, 402, 295, - 358, 418, 419, 340, 413, 323, 290, 335, 391, 397, - 378, 0, 0, 422, 296, 273, 322, 382, 274, 292, - 293, 336, 337, 420, 380, 384, 385, 275, 423, 362, - 389, 324, 344, 395, 396, 399, 412, 338, 416, 414, - 415, 350, 357, 386, 387, 351, 352, 379, 404, 325, - 326, 329, 308, 310, 311, 312, 313, 314, 424, 425, - 427, 363, 364, 365, 373, 428, 429, 430, 0, 0, - 0, 381, 353, 355, 551, 439, 443, 441, 440, 444, - 442, 0, 0, 447, 448, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 383, 398, 417, 452, 453, - 354, 431, 0, 0, 0, 0, 0, 0, 405, 406, - 407, 408, 409, 410, 411, 552, 347, 342, 403, 321, - 276, 277, 343, 454, 456, 455, 457, 458, 459, 309, - 316, 449, 451, 450, 315, 0, 328, 388, 426, 327, - 356, 317, 318, 320, 319, 460, 461, 462, 466, 465, - 463, 464, 467, 468, 469, 470, 472, 471, 481, 0, - 485, 486, 0, 0, 487, 473, 479, 474, 475, 476, - 478, 480, 477, 253, 254, 255, 256, 257, 499, 501, - 500, 503, 504, 505, 506, 502, 528, 529, 530, 531, + 0, 0, 510, 512, 513, 514, 515, 516, 517, 518, + 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, + 529, 0, 549, 551, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 558, 560, 561, 562, 564, 565, + 563, 566, 567, 568, 569, 0, 0, 0, 0, 0, + 0, 581, 583, 584, 585, 586, 587, 588, 0, 0, + 597, 599, 600, 274, 273, 280, 293, 291, 303, 299, + 300, 304, 301, 302, 305, 306, 307, 308, 309, 332, + 333, 334, 335, 336, 361, 362, 363, 368, 369, 296, + 370, 371, 374, 372, 373, 376, 377, 378, 392, 347, + 348, 350, 351, 379, 395, 341, 343, 396, 402, 403, + 404, 297, 360, 420, 421, 342, 415, 325, 292, 337, + 393, 399, 380, 0, 0, 424, 298, 275, 324, 384, + 276, 294, 295, 338, 339, 422, 382, 386, 387, 277, + 425, 364, 391, 326, 346, 397, 398, 401, 414, 340, + 418, 416, 417, 352, 359, 388, 389, 353, 354, 381, + 406, 327, 328, 331, 310, 312, 313, 314, 315, 316, + 426, 427, 429, 365, 366, 367, 375, 430, 431, 432, + 0, 0, 0, 383, 355, 357, 553, 441, 445, 443, + 442, 446, 444, 0, 0, 449, 450, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 385, 400, 419, + 454, 455, 356, 433, 0, 0, 0, 0, 0, 0, + 407, 408, 409, 410, 411, 412, 413, 554, 349, 344, + 405, 323, 278, 279, 345, 456, 458, 457, 459, 460, + 461, 311, 318, 451, 453, 452, 317, 0, 330, 390, + 428, 329, 358, 319, 320, 322, 321, 462, 463, 464, + 468, 467, 465, 466, 469, 470, 471, 472, 474, 473, + 483, 0, 487, 488, 0, 0, 489, 475, 481, 476, + 477, 478, 480, 482, 479, 255, 256, 257, 258, 259, + 501, 503, 502, 505, 506, 507, 508, 504, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, - 542, 543, 544, 545, 550, 568, 569, 570, 573, 571, - 572, 574, 575, 576, 577, 587, 588, 589, 590, 591, - 592, 599, 600, 392, 421, 438, 553, 554, 445, 446, - 432, 433, 0, 0, 0, 437, 593, 482, 483, 484, - 436, 434, 435 + 542, 543, 544, 545, 546, 547, 552, 570, 571, 572, + 575, 573, 574, 576, 577, 578, 579, 589, 590, 591, + 592, 593, 594, 601, 602, 394, 423, 440, 555, 556, + 447, 448, 434, 435, 0, 0, 0, 439, 595, 484, + 485, 486, 438, 436, 437 }; /* YYPGOTO[NTERM-NUM]. */ @@ -1618,8 +1621,8 @@ static const yytype_int16 yypgoto[] = -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272, -272, -272, -272, -272, -272, -272, -272, -23, 248, - 574, 575, 576, -272, -272, -272, -272, -272, -272, -272, + -272, -272, -272, -272, -272, -272, -272, -272, -272, 574, + 575, 576, 577, 578, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, @@ -1627,44 +1630,44 @@ static const yytype_int16 yypgoto[] = -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, -272, - -272 + -272, -272 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 15, 16, 28, 234, 17, 29, 436, 18, - 30, 450, 19, 31, 464, 20, 32, 480, 494, 495, - 496, 497, 498, 21, 33, 499, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, - 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 437, 438, 439, 440, 441, - 442, 443, 451, 452, 453, 454, 455, 456, 481, 482, - 483, 484, 485, 486, 487, 488, 465, 466, 467, 468, - 469, 470, 471, 22, 34, 513, 514, 515, 516, 517, - 518, 519, 520, 521, 23, 35, 540, 541, 542, 543, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 24, 36, 560, 561, 424, - 425, 426, 427, 25, 37, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 582, 26, 38, 589, 590, - 591, 592, 593, 594, 595, 428, 27, 39, 598, 599, - 600 + -1, 1, 16, 17, 18, 30, 236, 19, 31, 438, + 20, 32, 452, 21, 33, 466, 22, 34, 482, 496, + 497, 498, 499, 500, 23, 35, 501, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, + 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 439, 440, 441, 442, + 443, 444, 445, 453, 454, 455, 456, 457, 458, 483, + 484, 485, 486, 487, 488, 489, 490, 467, 468, 469, + 470, 471, 472, 473, 24, 36, 515, 516, 517, 518, + 519, 520, 521, 522, 523, 25, 37, 542, 543, 544, + 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, + 555, 556, 557, 558, 559, 560, 26, 38, 562, 563, + 426, 427, 428, 429, 27, 39, 574, 575, 576, 577, + 578, 579, 580, 581, 582, 583, 584, 28, 40, 591, + 592, 593, 594, 595, 596, 597, 430, 29, 41, 600, + 601, 602 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1672,162 +1675,164 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_uint16 yytable[] = { - 2, 472, 429, 457, 430, 431, 559, 444, 596, 597, - 500, 3, 601, 602, 603, 445, 446, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 604, 605, 472, 606, 458, - 459, 607, 608, 609, 610, 4, 611, 612, 613, 614, - 615, 5, 562, 563, 564, 565, 566, 567, 568, 569, - 570, 571, 616, 617, 460, 432, 505, 506, 507, 508, - 509, 510, 511, 512, 583, 584, 585, 586, 587, 588, - 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, - 628, 629, 630, 631, 632, 6, 433, 633, 634, 434, - 447, 635, 448, 636, 637, 638, 639, 640, 641, 642, - 643, 7, 644, 645, 646, 647, 648, 649, 650, 651, - 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, - 662, 461, 462, 663, 664, 665, 666, 667, 668, 669, - 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, - 680, 681, 8, 682, 683, 684, 685, 686, 687, 688, - 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, - 699, 463, 700, 701, 702, 703, 704, 705, 706, 707, - 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, - 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, - 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, - 9, 738, 474, 475, 476, 739, 740, 741, 742, 743, - 744, 745, 479, 746, 747, 748, 749, 435, 10, 750, - 751, 449, 752, 753, 754, 755, 756, 757, 758, 759, - 489, 490, 491, 492, 493, 11, 473, 760, 474, 475, - 476, 477, 478, 761, 12, 762, 763, 764, 479, 765, - 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, - 776, 777, 778, 779, 780, 781, 782, 783, 13, 784, - 785, 501, 14, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 786, 787, 788, 789, 72, - 73, 74, 790, 791, 792, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 793, 794, 795, 796, - 797, 798, 799, 800, 801, 116, 117, 118, 802, 119, - 120, 121, 803, 804, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 805, 806, - 807, 146, 808, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 809, 810, 811, 812, 813, 814, 815, - 816, 817, 818, 819, 820, 821, 822, 823, 824, 825, - 826, 827, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 828, 196, 829, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 830, - 831, 832, 833, 834, 835, 836, 837, 838, 839, 840, - 212, 213, 214, 215, 216, 217, 841, 842, 843, 844, - 845, 846, 847, 218, 848, 849, 850, 851, 852, 853, - 854, 219, 220, 855, 221, 222, 856, 223, 224, 857, - 858, 225, 226, 227, 228, 229, 230, 231, 232, 859, - 860, 861, 233, 862, 863, 864, 865, 866, 867, 868, - 869, 870, 871, 872, 873, 874, 875, 876, 877, 878, - 879, 880, 881, 882, 883, 884, 885, 886, 887, 888, - 889, 890, 891, 892, 0, 0, 0, 0, 0, 0, + 2, 474, 459, 431, 561, 432, 433, 603, 446, 598, + 599, 3, 4, 604, 605, 606, 447, 448, 585, 586, + 587, 588, 589, 590, 474, 564, 565, 566, 567, 568, + 569, 570, 571, 572, 573, 607, 608, 609, 460, 461, + 610, 611, 612, 613, 614, 615, 5, 616, 617, 618, + 619, 620, 6, 621, 622, 623, 624, 625, 626, 627, + 628, 629, 630, 462, 631, 632, 434, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 541, 507, 508, 509, 510, 511, + 512, 513, 514, 633, 634, 635, 7, 435, 636, 637, + 436, 449, 638, 450, 639, 640, 641, 642, 643, 644, + 645, 646, 8, 647, 648, 649, 650, 651, 652, 653, + 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, + 463, 464, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, + 682, 683, 684, 9, 685, 686, 687, 688, 689, 690, + 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, + 465, 701, 702, 703, 704, 705, 706, 707, 708, 709, + 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, + 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, + 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, + 740, 10, 476, 477, 478, 741, 742, 743, 744, 745, + 746, 747, 481, 748, 749, 750, 751, 752, 437, 11, + 753, 754, 451, 475, 755, 476, 477, 478, 479, 480, + 491, 492, 493, 494, 495, 481, 12, 756, 757, 758, + 759, 760, 761, 762, 763, 13, 764, 765, 766, 767, + 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, + 778, 779, 780, 781, 782, 783, 784, 785, 786, 14, + 787, 0, 788, 15, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 789, 790, 791, 792, + 74, 75, 76, 793, 794, 795, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 796, 797, 798, + 799, 800, 801, 802, 803, 804, 118, 119, 120, 805, + 121, 122, 123, 806, 807, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 808, + 809, 810, 148, 811, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 812, 813, 814, 815, 816, 817, + 818, 819, 820, 821, 822, 823, 824, 825, 826, 827, + 828, 829, 830, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 831, 198, 832, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, + 843, 214, 215, 216, 217, 218, 219, 844, 845, 846, + 847, 848, 849, 850, 220, 851, 852, 853, 854, 855, + 856, 857, 221, 222, 858, 223, 224, 859, 225, 226, + 860, 861, 227, 228, 229, 230, 231, 232, 233, 234, + 862, 863, 864, 235, 865, 866, 867, 868, 869, 870, + 871, 872, 873, 874, 875, 876, 877, 878, 879, 880, + 881, 882, 883, 884, 885, 886, 887, 888, 889, 890, + 891, 892, 893, 894, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 502, 503, 504 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 502, + 503, 504, 505, 506 }; static const yytype_int16 yycheck[] = { - 0, 44, 44, 44, 46, 47, 112, 44, 279, 280, - 33, 11, 10, 10, 10, 52, 53, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 10, 10, 44, 10, 80, - 81, 10, 10, 10, 10, 45, 10, 10, 10, 10, - 10, 51, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 10, 10, 105, 107, 96, 97, 98, 99, - 100, 101, 102, 103, 246, 247, 248, 249, 250, 251, + 0, 45, 45, 45, 113, 47, 48, 10, 45, 280, + 281, 11, 12, 10, 10, 10, 53, 54, 247, 248, + 249, 250, 251, 252, 45, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 10, 10, 10, 81, 82, + 10, 10, 10, 10, 10, 10, 46, 10, 10, 10, + 10, 10, 52, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 106, 10, 10, 108, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 97, 98, 99, 100, 101, + 102, 103, 104, 10, 10, 10, 96, 139, 10, 10, + 142, 138, 10, 140, 10, 10, 10, 10, 10, 10, + 10, 10, 112, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 95, 138, 10, 10, 141, - 137, 10, 139, 10, 10, 10, 10, 10, 10, 10, - 10, 111, 10, 10, 10, 10, 10, 10, 10, 10, + 173, 174, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 172, 173, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 153, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 152, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 212, 10, 10, 10, 10, 10, 10, 10, 10, + 213, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 210, 10, 255, 256, 257, 10, 10, 10, 10, 10, - 10, 10, 265, 10, 10, 10, 10, 269, 228, 10, - 10, 268, 10, 10, 10, 10, 10, 10, 10, 10, - 283, 284, 285, 286, 287, 245, 253, 10, 255, 256, - 257, 258, 259, 10, 254, 10, 10, 10, 265, 10, + 10, 211, 256, 257, 258, 10, 10, 10, 10, 10, + 10, 10, 266, 10, 10, 10, 10, 10, 270, 229, + 10, 10, 269, 254, 10, 256, 257, 258, 259, 260, + 284, 285, 286, 287, 288, 266, 246, 10, 10, 10, + 10, 10, 10, 10, 10, 255, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 278, 10, - 10, 33, 282, 12, 13, 14, 15, 16, 17, 18, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 279, + 10, -1, 10, 283, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 10, 10, 10, 10, 48, - 49, 50, 10, 10, 10, 54, 55, 56, 57, 58, + 39, 40, 41, 42, 43, 44, 10, 10, 10, 10, + 49, 50, 51, 10, 10, 10, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 104, 105, 106, 10, 108, - 109, 110, 10, 10, 113, 114, 115, 116, 117, 118, + 89, 90, 91, 92, 93, 94, 95, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 105, 106, 107, 10, + 109, 110, 111, 10, 10, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 10, 10, - 10, 140, 10, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 10, 10, 10, 10, 10, 10, 10, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 10, + 10, 10, 141, 10, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 171, 172, 173, 174, 175, 176, 177, 178, + 10, 10, 10, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 10, 211, 10, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 10, + 209, 210, 10, 212, 10, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 239, 240, 241, 242, 243, 244, 10, 10, 10, 10, - 10, 10, 10, 252, 10, 10, 10, 10, 10, 10, - 10, 260, 261, 10, 263, 264, 10, 266, 267, 10, - 10, 270, 271, 272, 273, 274, 275, 276, 277, 10, - 10, 10, 281, 10, 10, 10, 10, 10, 10, 10, + 10, 240, 241, 242, 243, 244, 245, 10, 10, 10, + 10, 10, 10, 10, 253, 10, 10, 10, 10, 10, + 10, 10, 261, 262, 10, 264, 265, 10, 267, 268, + 10, 10, 271, 272, 273, 274, 275, 276, 277, 278, + 10, 10, 10, 282, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 33, 33, 33 + -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, + 35, 35, 35, 35 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 289, 0, 11, 45, 51, 95, 111, 152, 210, - 228, 245, 254, 278, 282, 290, 291, 294, 297, 300, - 303, 311, 531, 542, 563, 571, 584, 594, 292, 295, - 298, 301, 304, 312, 532, 543, 564, 572, 585, 595, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 48, 49, 50, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 104, 105, 106, 108, - 109, 110, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 140, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 211, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 239, 240, 241, 242, 243, 244, 252, 260, - 261, 263, 264, 266, 267, 270, 271, 272, 273, 274, - 275, 276, 277, 281, 293, 314, 315, 316, 317, 318, + 0, 290, 0, 11, 12, 46, 52, 96, 112, 153, + 211, 229, 246, 255, 279, 283, 291, 292, 293, 296, + 299, 302, 305, 313, 533, 544, 565, 573, 586, 596, + 294, 297, 300, 303, 306, 314, 534, 545, 566, 574, + 587, 597, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 49, 50, 51, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 105, 106, + 107, 109, 110, 111, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 141, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 212, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 240, 241, 242, 243, 244, 245, + 253, 261, 262, 264, 265, 267, 268, 271, 272, 273, + 274, 275, 276, 277, 278, 282, 295, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, @@ -1846,25 +1851,25 @@ static const yytype_uint16 yystos[] = 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 567, 568, 569, 570, 593, 44, - 46, 47, 107, 138, 141, 269, 296, 503, 504, 505, - 506, 507, 508, 509, 44, 52, 53, 137, 139, 268, - 299, 510, 511, 512, 513, 514, 515, 44, 80, 81, - 105, 172, 173, 212, 302, 524, 525, 526, 527, 528, - 529, 530, 44, 253, 255, 256, 257, 258, 259, 265, - 305, 516, 517, 518, 519, 520, 521, 522, 523, 283, - 284, 285, 286, 287, 306, 307, 308, 309, 310, 313, - 516, 517, 518, 519, 520, 96, 97, 98, 99, 100, - 101, 102, 103, 533, 534, 535, 536, 537, 538, 539, - 540, 541, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 544, 545, 546, 547, 548, 549, 550, 551, 552, 553, - 554, 555, 556, 557, 558, 559, 560, 561, 562, 112, - 565, 566, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 573, 574, 575, 576, 577, 578, 579, 580, - 581, 582, 583, 246, 247, 248, 249, 250, 251, 586, - 587, 588, 589, 590, 591, 592, 279, 280, 596, 597, - 598, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 499, 500, 501, 502, 503, 504, 569, 570, 571, 572, + 595, 45, 47, 48, 108, 139, 142, 270, 298, 505, + 506, 507, 508, 509, 510, 511, 45, 53, 54, 138, + 140, 269, 301, 512, 513, 514, 515, 516, 517, 45, + 81, 82, 106, 173, 174, 213, 304, 526, 527, 528, + 529, 530, 531, 532, 45, 254, 256, 257, 258, 259, + 260, 266, 307, 518, 519, 520, 521, 522, 523, 524, + 525, 284, 285, 286, 287, 288, 308, 309, 310, 311, + 312, 315, 518, 519, 520, 521, 522, 97, 98, 99, + 100, 101, 102, 103, 104, 535, 536, 537, 538, 539, + 540, 541, 542, 543, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 546, 547, 548, 549, 550, 551, 552, 553, + 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, + 564, 113, 567, 568, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 575, 576, 577, 578, 579, 580, + 581, 582, 583, 584, 585, 247, 248, 249, 250, 251, + 252, 588, 589, 590, 591, 592, 593, 594, 280, 281, + 598, 599, 600, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1893,40 +1898,40 @@ static const yytype_uint16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10 + 10, 10, 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 0, 288, 289, 289, 290, 290, 290, 290, 290, 290, - 290, 290, 290, 290, 290, 290, 291, 292, 292, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 293, 293, 293, 293, 293, 293, 293, - 293, 293, 293, 294, 295, 295, 296, 296, 296, 296, - 296, 296, 296, 297, 298, 298, 299, 299, 299, 299, - 299, 299, 300, 301, 301, 302, 302, 302, 302, 302, - 302, 302, 303, 304, 304, 305, 305, 305, 305, 305, - 305, 305, 305, 306, 307, 308, 309, 310, 311, 312, - 312, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 0, 289, 290, 290, 291, 291, 291, 291, 291, 291, + 291, 291, 291, 291, 291, 291, 291, 292, 293, 294, + 294, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 296, 297, 297, 298, 298, + 298, 298, 298, 298, 298, 299, 300, 300, 301, 301, + 301, 301, 301, 301, 302, 303, 303, 304, 304, 304, + 304, 304, 304, 304, 305, 306, 306, 307, 307, 307, + 307, 307, 307, 307, 307, 308, 309, 310, 311, 312, + 313, 314, 314, 315, 315, 315, 315, 315, 315, 315, + 315, 315, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, @@ -1948,84 +1953,84 @@ static const yytype_uint16 yyr1[] = 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, - 532, 533, 533, 533, 533, 533, 533, 533, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 543, - 544, 544, 544, 544, 544, 544, 544, 544, 544, 544, - 544, 544, 544, 544, 544, 544, 544, 544, 545, 546, + 533, 534, 534, 535, 535, 535, 535, 535, 535, 535, + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545, 545, 546, 546, 546, 546, 546, 546, 546, 546, + 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 562, 563, 564, 564, 565, - 566, 567, 568, 569, 570, 571, 572, 572, 573, 573, - 573, 573, 573, 573, 573, 573, 573, 573, 574, 575, + 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, + 566, 567, 568, 569, 570, 571, 572, 573, 574, 574, + 575, 575, 575, 575, 575, 575, 575, 575, 575, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, - 585, 586, 586, 586, 586, 586, 586, 587, 588, 589, - 590, 591, 592, 593, 594, 595, 595, 596, 596, 597, - 598 + 586, 587, 587, 588, 588, 588, 588, 588, 588, 589, + 590, 591, 592, 593, 594, 595, 596, 597, 597, 598, + 598, 599, 600 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, + 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 4, 4, 4, 3, 3, 2, - 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 3, 3, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 3, 4, 4, 4, 3, + 3, 2, 2, 2, 2, 2, 2, 3, 3, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 3, 3, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, - 2, 2, 2, 3, 3, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 3, 1, 2, 0, 1, 1, 2, - 2 + 0, 1, 2, 2, 2, 3, 3, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 3, 1, 2, 0, 1, + 1, 2, 2 }; @@ -2709,16 +2714,24 @@ yyreduce: YY_REDUCE_PRINT (yyn); switch (yyn) { - case 16: + case 17: #line 190 "./util/configparser.y" - { - OUTYY(("\nP(server:)\n")); + { + OUTYY(("\nP(force-toplevel)\n")); } -#line 2718 "util/configparser.c" +#line 2723 "util/configparser.c" break; - case 213: -#line 284 "./util/configparser.y" + case 18: +#line 195 "./util/configparser.y" + { + OUTYY(("\nP(server:)\n")); + } +#line 2731 "util/configparser.c" + break; + + case 215: +#line 289 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); @@ -2729,11 +2742,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2733 "util/configparser.c" +#line 2746 "util/configparser.c" break; - case 223: -#line 301 "./util/configparser.y" + case 225: +#line 306 "./util/configparser.y" { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); @@ -2744,11 +2757,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2748 "util/configparser.c" +#line 2761 "util/configparser.c" break; - case 232: -#line 318 "./util/configparser.y" + case 234: +#line 323 "./util/configparser.y" { struct config_view* s; OUTYY(("\nP(view:)\n")); @@ -2761,11 +2774,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2765 "util/configparser.c" +#line 2778 "util/configparser.c" break; - case 242: -#line 337 "./util/configparser.y" + case 244: +#line 342 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); @@ -2781,11 +2794,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2785 "util/configparser.c" +#line 2798 "util/configparser.c" break; - case 253: -#line 361 "./util/configparser.y" + case 255: +#line 366 "./util/configparser.y" { uint8_t* bitlist; size_t len = 0; @@ -2802,11 +2815,11 @@ yyreduce: } } -#line 2806 "util/configparser.c" +#line 2819 "util/configparser.c" break; - case 254: -#line 380 "./util/configparser.y" + case 256: +#line 385 "./util/configparser.y" { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && @@ -2821,21 +2834,21 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2825 "util/configparser.c" +#line 2838 "util/configparser.c" break; - case 255: -#line 397 "./util/configparser.y" + case 257: +#line 402 "./util/configparser.y" { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2835 "util/configparser.c" +#line 2848 "util/configparser.c" break; - case 256: -#line 405 "./util/configparser.y" + case 258: +#line 410 "./util/configparser.y" { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2843,21 +2856,21 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2847 "util/configparser.c" +#line 2860 "util/configparser.c" break; - case 257: -#line 415 "./util/configparser.y" + case 259: +#line 420 "./util/configparser.y" { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 2857 "util/configparser.c" +#line 2870 "util/configparser.c" break; - case 258: -#line 423 "./util/configparser.y" + case 260: +#line 428 "./util/configparser.y" { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); @@ -2873,11 +2886,11 @@ yyreduce: } else yyerror("out of memory"); } -#line 2877 "util/configparser.c" +#line 2890 "util/configparser.c" break; - case 271: -#line 446 "./util/configparser.y" + case 273: +#line 451 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2885,11 +2898,11 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2889 "util/configparser.c" +#line 2902 "util/configparser.c" break; - case 272: -#line 455 "./util/configparser.y" + case 274: +#line 460 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -2897,11 +2910,11 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2901 "util/configparser.c" +#line 2914 "util/configparser.c" break; - case 273: -#line 464 "./util/configparser.y" + case 275: +#line 469 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2911,11 +2924,11 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2915 "util/configparser.c" +#line 2928 "util/configparser.c" break; - case 274: -#line 475 "./util/configparser.y" + case 276: +#line 480 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2923,11 +2936,11 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2927 "util/configparser.c" +#line 2940 "util/configparser.c" break; - case 275: -#line 484 "./util/configparser.y" + case 277: +#line 489 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2935,11 +2948,11 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2939 "util/configparser.c" +#line 2952 "util/configparser.c" break; - case 276: -#line 493 "./util/configparser.y" + case 278: +#line 498 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -2947,11 +2960,11 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2951 "util/configparser.c" +#line 2964 "util/configparser.c" break; - case 277: -#line 502 "./util/configparser.y" + case 279: +#line 507 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) @@ -2961,11 +2974,11 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2965 "util/configparser.c" +#line 2978 "util/configparser.c" break; - case 278: -#line 513 "./util/configparser.y" + case 280: +#line 518 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -2973,11 +2986,11 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2977 "util/configparser.c" +#line 2990 "util/configparser.c" break; - case 279: -#line 522 "./util/configparser.y" + case 281: +#line 527 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); @@ -2988,11 +3001,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 2992 "util/configparser.c" +#line 3005 "util/configparser.c" break; - case 280: -#line 534 "./util/configparser.y" + case 282: +#line 539 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); @@ -3004,11 +3017,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3008 "util/configparser.c" +#line 3021 "util/configparser.c" break; - case 281: -#line 548 "./util/configparser.y" + case 283: +#line 553 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); @@ -3022,11 +3035,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3026 "util/configparser.c" +#line 3039 "util/configparser.c" break; - case 282: -#line 563 "./util/configparser.y" + case 284: +#line 568 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); @@ -3036,11 +3049,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3040 "util/configparser.c" +#line 3053 "util/configparser.c" break; - case 283: -#line 574 "./util/configparser.y" + case 285: +#line 579 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3056,11 +3069,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3060 "util/configparser.c" +#line 3073 "util/configparser.c" break; - case 284: -#line 591 "./util/configparser.y" + case 286: +#line 596 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3076,11 +3089,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3080 "util/configparser.c" +#line 3093 "util/configparser.c" break; - case 285: -#line 608 "./util/configparser.y" + case 287: +#line 613 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); @@ -3096,11 +3109,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3100 "util/configparser.c" +#line 3113 "util/configparser.c" break; - case 286: -#line 625 "./util/configparser.y" + case 288: +#line 630 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); @@ -3116,11 +3129,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3120 "util/configparser.c" +#line 3133 "util/configparser.c" break; - case 287: -#line 642 "./util/configparser.y" + case 289: +#line 647 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); @@ -3134,11 +3147,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3138 "util/configparser.c" +#line 3151 "util/configparser.c" break; - case 288: -#line 657 "./util/configparser.y" + case 290: +#line 662 "./util/configparser.y" { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); @@ -3152,11 +3165,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3156 "util/configparser.c" +#line 3169 "util/configparser.c" break; - case 289: -#line 672 "./util/configparser.y" + case 291: +#line 677 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) @@ -3168,11 +3181,11 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3172 "util/configparser.c" +#line 3185 "util/configparser.c" break; - case 290: -#line 685 "./util/configparser.y" + case 292: +#line 690 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) @@ -3186,11 +3199,11 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3190 "util/configparser.c" +#line 3203 "util/configparser.c" break; - case 291: -#line 700 "./util/configparser.y" + case 293: +#line 705 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3198,11 +3211,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3202 "util/configparser.c" +#line 3215 "util/configparser.c" break; - case 292: -#line 709 "./util/configparser.y" + case 294: +#line 714 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, @@ -3210,11 +3223,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3214 "util/configparser.c" +#line 3227 "util/configparser.c" break; - case 293: -#line 718 "./util/configparser.y" + case 295: +#line 723 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, @@ -3222,11 +3235,11 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3226 "util/configparser.c" +#line 3239 "util/configparser.c" break; - case 294: -#line 727 "./util/configparser.y" + case 296: +#line 732 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3234,11 +3247,11 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3238 "util/configparser.c" +#line 3251 "util/configparser.c" break; - case 295: -#line 736 "./util/configparser.y" + case 297: +#line 741 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3246,11 +3259,11 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3250 "util/configparser.c" +#line 3263 "util/configparser.c" break; - case 296: -#line 745 "./util/configparser.y" + case 298: +#line 750 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3258,11 +3271,11 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3262 "util/configparser.c" +#line 3275 "util/configparser.c" break; - case 297: -#line 754 "./util/configparser.y" + case 299: +#line 759 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3270,11 +3283,11 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3274 "util/configparser.c" +#line 3287 "util/configparser.c" break; - case 298: -#line 763 "./util/configparser.y" + case 300: +#line 768 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3282,11 +3295,11 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3286 "util/configparser.c" +#line 3299 "util/configparser.c" break; - case 299: -#line 772 "./util/configparser.y" + case 301: +#line 777 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3294,11 +3307,11 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3298 "util/configparser.c" +#line 3311 "util/configparser.c" break; - case 300: -#line 781 "./util/configparser.y" + case 302: +#line 786 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3306,11 +3319,11 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3310 "util/configparser.c" +#line 3323 "util/configparser.c" break; - case 301: -#line 790 "./util/configparser.y" + case 303: +#line 795 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3318,11 +3331,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3322 "util/configparser.c" +#line 3335 "util/configparser.c" break; - case 302: -#line 799 "./util/configparser.y" + case 304: +#line 804 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3330,11 +3343,11 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3334 "util/configparser.c" +#line 3347 "util/configparser.c" break; - case 303: -#line 808 "./util/configparser.y" + case 305: +#line 813 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3342,11 +3355,11 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3346 "util/configparser.c" +#line 3359 "util/configparser.c" break; - case 304: -#line 817 "./util/configparser.y" + case 306: +#line 822 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3354,11 +3367,11 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3358 "util/configparser.c" +#line 3371 "util/configparser.c" break; - case 305: -#line 826 "./util/configparser.y" + case 307: +#line 831 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3370,11 +3383,11 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3374 "util/configparser.c" +#line 3387 "util/configparser.c" break; - case 306: -#line 839 "./util/configparser.y" + case 308: +#line 844 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3382,11 +3395,11 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3386 "util/configparser.c" +#line 3399 "util/configparser.c" break; - case 307: -#line 848 "./util/configparser.y" + case 309: +#line 853 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3398,11 +3411,11 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3402 "util/configparser.c" +#line 3415 "util/configparser.c" break; - case 308: -#line 861 "./util/configparser.y" + case 310: +#line 866 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3410,11 +3423,11 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3414 "util/configparser.c" +#line 3427 "util/configparser.c" break; - case 309: -#line 870 "./util/configparser.y" + case 311: +#line 875 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3422,11 +3435,11 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3426 "util/configparser.c" +#line 3439 "util/configparser.c" break; - case 310: -#line 879 "./util/configparser.y" + case 312: +#line 884 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3434,31 +3447,31 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3438 "util/configparser.c" +#line 3451 "util/configparser.c" break; - case 311: -#line 888 "./util/configparser.y" + case 313: +#line 893 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3448 "util/configparser.c" +#line 3461 "util/configparser.c" break; - case 312: -#line 895 "./util/configparser.y" + case 314: +#line 900 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3458 "util/configparser.c" +#line 3471 "util/configparser.c" break; - case 313: -#line 902 "./util/configparser.y" + case 315: +#line 907 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3466,21 +3479,21 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3470 "util/configparser.c" +#line 3483 "util/configparser.c" break; - case 314: -#line 911 "./util/configparser.y" + case 316: +#line 916 "./util/configparser.y" { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3480 "util/configparser.c" +#line 3493 "util/configparser.c" break; - case 315: -#line 918 "./util/configparser.y" + case 317: +#line 923 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3488,53 +3501,53 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3492 "util/configparser.c" +#line 3505 "util/configparser.c" break; - case 316: -#line 927 "./util/configparser.y" + case 318: +#line 932 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3503 "util/configparser.c" +#line 3516 "util/configparser.c" break; - case 317: -#line 935 "./util/configparser.y" + case 319: +#line 940 "./util/configparser.y" { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3513 "util/configparser.c" +#line 3526 "util/configparser.c" break; - case 318: -#line 942 "./util/configparser.y" + case 320: +#line 947 "./util/configparser.y" { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3523 "util/configparser.c" +#line 3536 "util/configparser.c" break; - case 319: -#line 949 "./util/configparser.y" + case 321: +#line 954 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3534 "util/configparser.c" +#line 3547 "util/configparser.c" break; - case 320: -#line 957 "./util/configparser.y" + case 322: +#line 962 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3542,11 +3555,11 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3546 "util/configparser.c" +#line 3559 "util/configparser.c" break; - case 321: -#line 966 "./util/configparser.y" + case 323: +#line 971 "./util/configparser.y" { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3554,11 +3567,11 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3558 "util/configparser.c" +#line 3571 "util/configparser.c" break; - case 322: -#line 975 "./util/configparser.y" + case 324: +#line 980 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3566,11 +3579,11 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3570 "util/configparser.c" +#line 3583 "util/configparser.c" break; - case 323: -#line 984 "./util/configparser.y" + case 325: +#line 989 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3583,11 +3596,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3587 "util/configparser.c" +#line 3600 "util/configparser.c" break; - case 324: -#line 998 "./util/configparser.y" + case 326: +#line 1003 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3595,11 +3608,11 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3599 "util/configparser.c" +#line 3612 "util/configparser.c" break; - case 325: -#line 1007 "./util/configparser.y" + case 327: +#line 1012 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3607,11 +3620,11 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3611 "util/configparser.c" +#line 3624 "util/configparser.c" break; - case 326: -#line 1016 "./util/configparser.y" + case 328: +#line 1021 "./util/configparser.y" { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3619,11 +3632,11 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3623 "util/configparser.c" +#line 3636 "util/configparser.c" break; - case 327: -#line 1025 "./util/configparser.y" + case 329: +#line 1030 "./util/configparser.y" { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3631,11 +3644,11 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3635 "util/configparser.c" +#line 3648 "util/configparser.c" break; - case 328: -#line 1034 "./util/configparser.y" + case 330: +#line 1039 "./util/configparser.y" { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3643,11 +3656,11 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3647 "util/configparser.c" +#line 3660 "util/configparser.c" break; - case 329: -#line 1043 "./util/configparser.y" + case 331: +#line 1048 "./util/configparser.y" { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3655,31 +3668,31 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3659 "util/configparser.c" +#line 3672 "util/configparser.c" break; - case 330: -#line 1052 "./util/configparser.y" + case 332: +#line 1057 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3669 "util/configparser.c" +#line 3682 "util/configparser.c" break; - case 331: -#line 1059 "./util/configparser.y" + case 333: +#line 1064 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3679 "util/configparser.c" +#line 3692 "util/configparser.c" break; - case 332: -#line 1066 "./util/configparser.y" + case 334: +#line 1071 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); @@ -3704,105 +3717,105 @@ yyreduce: } } } -#line 3708 "util/configparser.c" +#line 3721 "util/configparser.c" break; - case 333: -#line 1092 "./util/configparser.y" + case 335: +#line 1097 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3719 "util/configparser.c" +#line 3732 "util/configparser.c" break; - case 334: -#line 1100 "./util/configparser.y" + case 336: +#line 1105 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3729 "util/configparser.c" +#line 3742 "util/configparser.c" break; - case 335: -#line 1107 "./util/configparser.y" + case 337: +#line 1112 "./util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3739 "util/configparser.c" +#line 3752 "util/configparser.c" break; - case 336: -#line 1114 "./util/configparser.y" + case 338: +#line 1119 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 3749 "util/configparser.c" +#line 3762 "util/configparser.c" break; - case 337: -#line 1121 "./util/configparser.y" + case 339: +#line 1126 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3759 "util/configparser.c" +#line 3772 "util/configparser.c" break; - case 338: -#line 1128 "./util/configparser.y" + case 340: +#line 1133 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3770 "util/configparser.c" +#line 3783 "util/configparser.c" break; - case 339: -#line 1136 "./util/configparser.y" + case 341: +#line 1141 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3781 "util/configparser.c" +#line 3794 "util/configparser.c" break; - case 340: -#line 1144 "./util/configparser.y" + case 342: +#line 1149 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3792 "util/configparser.c" +#line 3805 "util/configparser.c" break; - case 341: -#line 1152 "./util/configparser.y" + case 343: +#line 1157 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3802 "util/configparser.c" +#line 3815 "util/configparser.c" break; - case 342: -#line 1159 "./util/configparser.y" + case 344: +#line 1164 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3812,11 +3825,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3816 "util/configparser.c" +#line 3829 "util/configparser.c" break; - case 343: -#line 1170 "./util/configparser.y" + case 345: +#line 1175 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3826,21 +3839,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3830 "util/configparser.c" +#line 3843 "util/configparser.c" break; - case 344: -#line 1181 "./util/configparser.y" + case 346: +#line 1186 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3840 "util/configparser.c" +#line 3853 "util/configparser.c" break; - case 345: -#line 1188 "./util/configparser.y" + case 347: +#line 1193 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3848,11 +3861,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3852 "util/configparser.c" +#line 3865 "util/configparser.c" break; - case 346: -#line 1197 "./util/configparser.y" + case 348: +#line 1202 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3860,11 +3873,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3864 "util/configparser.c" +#line 3877 "util/configparser.c" break; - case 347: -#line 1206 "./util/configparser.y" + case 349: +#line 1211 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3872,53 +3885,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3876 "util/configparser.c" +#line 3889 "util/configparser.c" break; - case 348: -#line 1215 "./util/configparser.y" + case 350: +#line 1220 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 3886 "util/configparser.c" +#line 3899 "util/configparser.c" break; - case 349: -#line 1222 "./util/configparser.y" + case 351: +#line 1227 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 3896 "util/configparser.c" +#line 3909 "util/configparser.c" break; - case 350: -#line 1229 "./util/configparser.y" + case 352: +#line 1234 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3907 "util/configparser.c" +#line 3920 "util/configparser.c" break; - case 351: -#line 1237 "./util/configparser.y" + case 353: +#line 1242 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3918 "util/configparser.c" +#line 3931 "util/configparser.c" break; - case 352: -#line 1245 "./util/configparser.y" + case 354: +#line 1250 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3927,11 +3940,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3931 "util/configparser.c" +#line 3944 "util/configparser.c" break; - case 353: -#line 1255 "./util/configparser.y" + case 355: +#line 1260 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3940,11 +3953,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3944 "util/configparser.c" +#line 3957 "util/configparser.c" break; - case 354: -#line 1265 "./util/configparser.y" + case 356: +#line 1270 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3953,11 +3966,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3957 "util/configparser.c" +#line 3970 "util/configparser.c" break; - case 355: -#line 1275 "./util/configparser.y" + case 357: +#line 1280 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3970,22 +3983,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3974 "util/configparser.c" +#line 3987 "util/configparser.c" break; - case 356: -#line 1289 "./util/configparser.y" + case 358: +#line 1294 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3985 "util/configparser.c" +#line 3998 "util/configparser.c" break; - case 357: -#line 1297 "./util/configparser.y" + case 359: +#line 1302 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -3997,11 +4010,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4001 "util/configparser.c" +#line 4014 "util/configparser.c" break; - case 358: -#line 1310 "./util/configparser.y" + case 360: +#line 1315 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4011,22 +4024,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4015 "util/configparser.c" +#line 4028 "util/configparser.c" break; - case 359: -#line 1321 "./util/configparser.y" + case 361: +#line 1326 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4026 "util/configparser.c" +#line 4039 "util/configparser.c" break; - case 360: -#line 1329 "./util/configparser.y" + case 362: +#line 1334 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4038,11 +4051,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4042 "util/configparser.c" +#line 4055 "util/configparser.c" break; - case 361: -#line 1342 "./util/configparser.y" + case 363: +#line 1347 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4050,11 +4063,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4054 "util/configparser.c" +#line 4067 "util/configparser.c" break; - case 362: -#line 1351 "./util/configparser.y" + case 364: +#line 1356 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4062,11 +4075,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4066 "util/configparser.c" +#line 4079 "util/configparser.c" break; - case 363: -#line 1360 "./util/configparser.y" + case 365: +#line 1365 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4074,11 +4087,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4078 "util/configparser.c" +#line 4091 "util/configparser.c" break; - case 364: -#line 1369 "./util/configparser.y" + case 366: +#line 1374 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4087,11 +4100,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4091 "util/configparser.c" +#line 4104 "util/configparser.c" break; - case 365: -#line 1379 "./util/configparser.y" + case 367: +#line 1384 "./util/configparser.y" { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4100,22 +4113,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4104 "util/configparser.c" +#line 4117 "util/configparser.c" break; - case 366: -#line 1389 "./util/configparser.y" + case 368: +#line 1394 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4115 "util/configparser.c" +#line 4128 "util/configparser.c" break; - case 367: -#line 1397 "./util/configparser.y" + case 369: +#line 1402 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4127,11 +4140,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4131 "util/configparser.c" +#line 4144 "util/configparser.c" break; - case 368: -#line 1410 "./util/configparser.y" + case 370: +#line 1415 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4139,22 +4152,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4143 "util/configparser.c" +#line 4156 "util/configparser.c" break; - case 369: -#line 1419 "./util/configparser.y" + case 371: +#line 1424 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4154 "util/configparser.c" +#line 4167 "util/configparser.c" break; - case 370: -#line 1427 "./util/configparser.y" + case 372: +#line 1432 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4162,22 +4175,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4166 "util/configparser.c" +#line 4179 "util/configparser.c" break; - case 371: -#line 1436 "./util/configparser.y" + case 373: +#line 1441 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4177 "util/configparser.c" +#line 4190 "util/configparser.c" break; - case 372: -#line 1444 "./util/configparser.y" + case 374: +#line 1449 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4189,11 +4202,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4193 "util/configparser.c" +#line 4206 "util/configparser.c" break; - case 373: -#line 1457 "./util/configparser.y" + case 375: +#line 1462 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4201,21 +4214,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4205 "util/configparser.c" +#line 4218 "util/configparser.c" break; - case 374: -#line 1466 "./util/configparser.y" + case 376: +#line 1471 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4215 "util/configparser.c" +#line 4228 "util/configparser.c" break; - case 375: -#line 1473 "./util/configparser.y" + case 377: +#line 1478 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4224,11 +4237,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4228 "util/configparser.c" +#line 4241 "util/configparser.c" break; - case 376: -#line 1483 "./util/configparser.y" + case 378: +#line 1488 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4237,11 +4250,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4241 "util/configparser.c" +#line 4254 "util/configparser.c" break; - case 377: -#line 1493 "./util/configparser.y" + case 379: +#line 1498 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4250,11 +4263,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4254 "util/configparser.c" +#line 4267 "util/configparser.c" break; - case 378: -#line 1503 "./util/configparser.y" + case 380: +#line 1508 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4263,11 +4276,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4267 "util/configparser.c" +#line 4280 "util/configparser.c" break; - case 379: -#line 1513 "./util/configparser.y" + case 381: +#line 1518 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4276,11 +4289,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4280 "util/configparser.c" +#line 4293 "util/configparser.c" break; - case 380: -#line 1523 "./util/configparser.y" + case 382: +#line 1528 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4289,11 +4302,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4293 "util/configparser.c" +#line 4306 "util/configparser.c" break; - case 381: -#line 1533 "./util/configparser.y" + case 383: +#line 1538 "./util/configparser.y" { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4302,11 +4315,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4306 "util/configparser.c" +#line 4319 "util/configparser.c" break; - case 382: -#line 1543 "./util/configparser.y" + case 384: +#line 1548 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4315,41 +4328,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4319 "util/configparser.c" +#line 4332 "util/configparser.c" break; - case 383: -#line 1553 "./util/configparser.y" + case 385: +#line 1558 "./util/configparser.y" { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4329 "util/configparser.c" +#line 4342 "util/configparser.c" break; - case 384: -#line 1560 "./util/configparser.y" + case 386: +#line 1565 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4339 "util/configparser.c" +#line 4352 "util/configparser.c" break; - case 385: -#line 1567 "./util/configparser.y" + case 387: +#line 1572 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4349 "util/configparser.c" +#line 4362 "util/configparser.c" break; - case 386: -#line 1574 "./util/configparser.y" + case 388: +#line 1579 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4357,11 +4370,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4361 "util/configparser.c" +#line 4374 "util/configparser.c" break; - case 387: -#line 1583 "./util/configparser.y" + case 389: +#line 1588 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4369,11 +4382,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4373 "util/configparser.c" +#line 4386 "util/configparser.c" break; - case 388: -#line 1592 "./util/configparser.y" + case 390: +#line 1597 "./util/configparser.y" { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4381,11 +4394,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4385 "util/configparser.c" +#line 4398 "util/configparser.c" break; - case 389: -#line 1601 "./util/configparser.y" + case 391: +#line 1606 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4393,21 +4406,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4397 "util/configparser.c" +#line 4410 "util/configparser.c" break; - case 390: -#line 1610 "./util/configparser.y" + case 392: +#line 1615 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4407 "util/configparser.c" +#line 4420 "util/configparser.c" break; - case 391: -#line 1617 "./util/configparser.y" + case 393: +#line 1622 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4416,11 +4429,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4420 "util/configparser.c" +#line 4433 "util/configparser.c" break; - case 392: -#line 1627 "./util/configparser.y" + case 394: +#line 1632 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && @@ -4439,21 +4452,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4443 "util/configparser.c" +#line 4456 "util/configparser.c" break; - case 393: -#line 1647 "./util/configparser.y" + case 395: +#line 1652 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4453 "util/configparser.c" +#line 4466 "util/configparser.c" break; - case 394: -#line 1654 "./util/configparser.y" + case 396: +#line 1659 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4470,11 +4483,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4474 "util/configparser.c" +#line 4487 "util/configparser.c" break; - case 395: -#line 1672 "./util/configparser.y" + case 397: +#line 1677 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4486,11 +4499,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4490 "util/configparser.c" +#line 4503 "util/configparser.c" break; - case 396: -#line 1685 "./util/configparser.y" + case 398: +#line 1690 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4502,11 +4515,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4506 "util/configparser.c" +#line 4519 "util/configparser.c" break; - case 397: -#line 1698 "./util/configparser.y" + case 399: +#line 1703 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4514,11 +4527,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4518 "util/configparser.c" +#line 4531 "util/configparser.c" break; - case 398: -#line 1707 "./util/configparser.y" + case 400: +#line 1712 "./util/configparser.y" { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4526,11 +4539,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4530 "util/configparser.c" +#line 4543 "util/configparser.c" break; - case 399: -#line 1716 "./util/configparser.y" + case 401: +#line 1721 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4538,11 +4551,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4542 "util/configparser.c" +#line 4555 "util/configparser.c" break; - case 400: -#line 1725 "./util/configparser.y" + case 402: +#line 1730 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4550,11 +4563,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4554 "util/configparser.c" +#line 4567 "util/configparser.c" break; - case 401: -#line 1734 "./util/configparser.y" + case 403: +#line 1739 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4563,11 +4576,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4567 "util/configparser.c" +#line 4580 "util/configparser.c" break; - case 402: -#line 1744 "./util/configparser.y" + case 404: +#line 1749 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4576,11 +4589,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4580 "util/configparser.c" +#line 4593 "util/configparser.c" break; - case 403: -#line 1754 "./util/configparser.y" + case 405: +#line 1759 "./util/configparser.y" { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4590,11 +4603,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4594 "util/configparser.c" +#line 4607 "util/configparser.c" break; - case 404: -#line 1765 "./util/configparser.y" + case 406: +#line 1770 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4602,11 +4615,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4606 "util/configparser.c" +#line 4619 "util/configparser.c" break; - case 405: -#line 1774 "./util/configparser.y" + case 407: +#line 1779 "./util/configparser.y" { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4614,11 +4627,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4618 "util/configparser.c" +#line 4631 "util/configparser.c" break; - case 406: -#line 1783 "./util/configparser.y" + case 408: +#line 1788 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4626,11 +4639,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4630 "util/configparser.c" +#line 4643 "util/configparser.c" break; - case 407: -#line 1792 "./util/configparser.y" + case 409: +#line 1797 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4638,11 +4651,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4642 "util/configparser.c" +#line 4655 "util/configparser.c" break; - case 408: -#line 1801 "./util/configparser.y" + case 410: +#line 1806 "./util/configparser.y" { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4650,11 +4663,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4654 "util/configparser.c" +#line 4667 "util/configparser.c" break; - case 409: -#line 1810 "./util/configparser.y" + case 411: +#line 1815 "./util/configparser.y" { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4662,11 +4675,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4666 "util/configparser.c" +#line 4679 "util/configparser.c" break; - case 410: -#line 1819 "./util/configparser.y" + case 412: +#line 1824 "./util/configparser.y" { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4678,11 +4691,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4682 "util/configparser.c" +#line 4695 "util/configparser.c" break; - case 411: -#line 1832 "./util/configparser.y" + case 413: +#line 1837 "./util/configparser.y" { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4694,11 +4707,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4698 "util/configparser.c" +#line 4711 "util/configparser.c" break; - case 412: -#line 1845 "./util/configparser.y" + case 414: +#line 1850 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4706,21 +4719,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4710 "util/configparser.c" +#line 4723 "util/configparser.c" break; - case 413: -#line 1854 "./util/configparser.y" + case 415: +#line 1859 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 4720 "util/configparser.c" +#line 4733 "util/configparser.c" break; - case 414: -#line 1861 "./util/configparser.y" + case 416: +#line 1866 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4728,11 +4741,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4732 "util/configparser.c" +#line 4745 "util/configparser.c" break; - case 415: -#line 1870 "./util/configparser.y" + case 417: +#line 1875 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4740,11 +4753,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4744 "util/configparser.c" +#line 4757 "util/configparser.c" break; - case 416: -#line 1879 "./util/configparser.y" + case 418: +#line 1884 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4752,11 +4765,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4756 "util/configparser.c" +#line 4769 "util/configparser.c" break; - case 417: -#line 1888 "./util/configparser.y" + case 419: +#line 1893 "./util/configparser.y" { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4765,22 +4778,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4769 "util/configparser.c" +#line 4782 "util/configparser.c" break; - case 418: -#line 1897 "./util/configparser.y" + case 420: +#line 1902 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4780 "util/configparser.c" +#line 4793 "util/configparser.c" break; - case 419: -#line 1905 "./util/configparser.y" + case 421: +#line 1910 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4792,22 +4805,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4796 "util/configparser.c" +#line 4809 "util/configparser.c" break; - case 420: -#line 1918 "./util/configparser.y" + case 422: +#line 1923 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4807 "util/configparser.c" +#line 4820 "util/configparser.c" break; - case 421: -#line 1926 "./util/configparser.y" + case 423: +#line 1931 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -4847,21 +4860,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4851 "util/configparser.c" +#line 4864 "util/configparser.c" break; - case 422: -#line 1967 "./util/configparser.y" + case 424: +#line 1972 "./util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 4861 "util/configparser.c" +#line 4874 "util/configparser.c" break; - case 423: -#line 1974 "./util/configparser.y" + case 425: +#line 1979 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4875,11 +4888,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4879 "util/configparser.c" +#line 4892 "util/configparser.c" break; - case 424: -#line 1989 "./util/configparser.y" + case 426: +#line 1994 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4888,11 +4901,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4892 "util/configparser.c" +#line 4905 "util/configparser.c" break; - case 425: -#line 1999 "./util/configparser.y" + case 427: +#line 2004 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4901,41 +4914,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4905 "util/configparser.c" +#line 4918 "util/configparser.c" break; - case 426: -#line 2009 "./util/configparser.y" + case 428: +#line 2014 "./util/configparser.y" { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4915 "util/configparser.c" +#line 4928 "util/configparser.c" break; - case 427: -#line 2016 "./util/configparser.y" + case 429: +#line 2021 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4925 "util/configparser.c" +#line 4938 "util/configparser.c" break; - case 428: -#line 2023 "./util/configparser.y" + case 430: +#line 2028 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 4935 "util/configparser.c" +#line 4948 "util/configparser.c" break; - case 429: -#line 2030 "./util/configparser.y" + case 431: +#line 2035 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4943,22 +4956,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4947 "util/configparser.c" +#line 4960 "util/configparser.c" break; - case 430: -#line 2039 "./util/configparser.y" + case 432: +#line 2044 "./util/configparser.y" { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 4958 "util/configparser.c" +#line 4971 "util/configparser.c" break; - case 431: -#line 2047 "./util/configparser.y" + case 433: +#line 2052 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4971,11 +4984,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4975 "util/configparser.c" +#line 4988 "util/configparser.c" break; - case 432: -#line 2061 "./util/configparser.y" + case 434: +#line 2066 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -4995,11 +5008,11 @@ yyreduce: } } } -#line 4999 "util/configparser.c" +#line 5012 "util/configparser.c" break; - case 433: -#line 2082 "./util/configparser.y" + case 435: +#line 2087 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5019,11 +5032,11 @@ yyreduce: } } } -#line 5023 "util/configparser.c" +#line 5036 "util/configparser.c" break; - case 434: -#line 2103 "./util/configparser.y" + case 436: +#line 2108 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -5034,11 +5047,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5038 "util/configparser.c" +#line 5051 "util/configparser.c" break; - case 435: -#line 2115 "./util/configparser.y" + case 437: +#line 2120 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -5049,11 +5062,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5053 "util/configparser.c" +#line 5066 "util/configparser.c" break; - case 436: -#line 2127 "./util/configparser.y" + case 438: +#line 2132 "./util/configparser.y" { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -5064,11 +5077,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5068 "util/configparser.c" +#line 5081 "util/configparser.c" break; - case 437: -#line 2139 "./util/configparser.y" + case 439: +#line 2144 "./util/configparser.y" { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -5076,11 +5089,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5080 "util/configparser.c" +#line 5093 "util/configparser.c" break; - case 438: -#line 2148 "./util/configparser.y" + case 440: +#line 2153 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5100,11 +5113,11 @@ yyreduce: } } } -#line 5104 "util/configparser.c" +#line 5117 "util/configparser.c" break; - case 439: -#line 2169 "./util/configparser.y" + case 441: +#line 2174 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5112,11 +5125,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5116 "util/configparser.c" +#line 5129 "util/configparser.c" break; - case 440: -#line 2179 "./util/configparser.y" + case 442: +#line 2184 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5124,33 +5137,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5128 "util/configparser.c" +#line 5141 "util/configparser.c" break; - case 441: -#line 2188 "./util/configparser.y" + case 443: +#line 2193 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5139 "util/configparser.c" +#line 5152 "util/configparser.c" break; - case 442: -#line 2196 "./util/configparser.y" + case 444: +#line 2201 "./util/configparser.y" { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5150 "util/configparser.c" +#line 5163 "util/configparser.c" break; - case 443: -#line 2204 "./util/configparser.y" + case 445: +#line 2209 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5162,11 +5175,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5166 "util/configparser.c" +#line 5179 "util/configparser.c" break; - case 444: -#line 2217 "./util/configparser.y" + case 446: +#line 2222 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5178,11 +5191,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5182 "util/configparser.c" +#line 5195 "util/configparser.c" break; - case 445: -#line 2230 "./util/configparser.y" + case 447: +#line 2235 "./util/configparser.y" { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5196,11 +5209,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5200 "util/configparser.c" +#line 5213 "util/configparser.c" break; - case 446: -#line 2245 "./util/configparser.y" + case 448: +#line 2250 "./util/configparser.y" { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5214,11 +5227,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5218 "util/configparser.c" +#line 5231 "util/configparser.c" break; - case 447: -#line 2260 "./util/configparser.y" + case 449: +#line 2265 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5226,11 +5239,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5230 "util/configparser.c" +#line 5243 "util/configparser.c" break; - case 448: -#line 2269 "./util/configparser.y" + case 450: +#line 2274 "./util/configparser.y" { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5238,20 +5251,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5242 "util/configparser.c" +#line 5255 "util/configparser.c" break; - case 449: -#line 2278 "./util/configparser.y" + case 451: +#line 2283 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5251 "util/configparser.c" +#line 5264 "util/configparser.c" break; - case 450: -#line 2284 "./util/configparser.y" + case 452: +#line 2289 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5259,11 +5272,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5263 "util/configparser.c" +#line 5276 "util/configparser.c" break; - case 451: -#line 2293 "./util/configparser.y" + case 453: +#line 2298 "./util/configparser.y" { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5271,11 +5284,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5275 "util/configparser.c" +#line 5288 "util/configparser.c" break; - case 452: -#line 2302 "./util/configparser.y" + case 454: +#line 2307 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5284,11 +5297,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5288 "util/configparser.c" +#line 5301 "util/configparser.c" break; - case 453: -#line 2312 "./util/configparser.y" + case 455: +#line 2317 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5297,11 +5310,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5301 "util/configparser.c" +#line 5314 "util/configparser.c" break; - case 454: -#line 2322 "./util/configparser.y" + case 456: +#line 2327 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5313,11 +5326,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5317 "util/configparser.c" +#line 5330 "util/configparser.c" break; - case 455: -#line 2335 "./util/configparser.y" + case 457: +#line 2340 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5329,11 +5342,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5333 "util/configparser.c" +#line 5346 "util/configparser.c" break; - case 456: -#line 2348 "./util/configparser.y" + case 458: +#line 2353 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5344,11 +5357,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5348 "util/configparser.c" +#line 5361 "util/configparser.c" break; - case 457: -#line 2360 "./util/configparser.y" + case 459: +#line 2365 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5361,11 +5374,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5365 "util/configparser.c" +#line 5378 "util/configparser.c" break; - case 458: -#line 2374 "./util/configparser.y" + case 460: +#line 2379 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5376,11 +5389,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5380 "util/configparser.c" +#line 5393 "util/configparser.c" break; - case 459: -#line 2386 "./util/configparser.y" + case 461: +#line 2391 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5393,11 +5406,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5397 "util/configparser.c" +#line 5410 "util/configparser.c" break; - case 460: -#line 2400 "./util/configparser.y" + case 462: +#line 2405 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5406,31 +5419,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5410 "util/configparser.c" +#line 5423 "util/configparser.c" break; - case 461: -#line 2410 "./util/configparser.y" + case 463: +#line 2415 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5420 "util/configparser.c" +#line 5433 "util/configparser.c" break; - case 462: -#line 2417 "./util/configparser.y" + case 464: +#line 2422 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5430 "util/configparser.c" +#line 5443 "util/configparser.c" break; - case 463: -#line 2424 "./util/configparser.y" + case 465: +#line 2429 "./util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5438,11 +5451,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5442 "util/configparser.c" +#line 5455 "util/configparser.c" break; - case 464: -#line 2433 "./util/configparser.y" + case 466: +#line 2438 "./util/configparser.y" { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5450,11 +5463,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5454 "util/configparser.c" +#line 5467 "util/configparser.c" break; - case 465: -#line 2442 "./util/configparser.y" + case 467: +#line 2447 "./util/configparser.y" { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5463,11 +5476,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5467 "util/configparser.c" +#line 5480 "util/configparser.c" break; - case 466: -#line 2452 "./util/configparser.y" + case 468: +#line 2457 "./util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5476,11 +5489,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5480 "util/configparser.c" +#line 5493 "util/configparser.c" break; - case 467: -#line 2462 "./util/configparser.y" + case 469: +#line 2467 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5489,31 +5502,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5493 "util/configparser.c" +#line 5506 "util/configparser.c" break; - case 468: -#line 2472 "./util/configparser.y" + case 470: +#line 2477 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5503 "util/configparser.c" +#line 5516 "util/configparser.c" break; - case 469: -#line 2479 "./util/configparser.y" + case 471: +#line 2484 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5513 "util/configparser.c" +#line 5526 "util/configparser.c" break; - case 470: -#line 2486 "./util/configparser.y" + case 472: +#line 2491 "./util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5521,11 +5534,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5525 "util/configparser.c" +#line 5538 "util/configparser.c" break; - case 471: -#line 2495 "./util/configparser.y" + case 473: +#line 2500 "./util/configparser.y" { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5533,11 +5546,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5537 "util/configparser.c" +#line 5550 "util/configparser.c" break; - case 472: -#line 2504 "./util/configparser.y" + case 474: +#line 2509 "./util/configparser.y" { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5546,11 +5559,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5550 "util/configparser.c" +#line 5563 "util/configparser.c" break; - case 473: -#line 2514 "./util/configparser.y" + case 475: +#line 2519 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5559,52 +5572,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5563 "util/configparser.c" +#line 5576 "util/configparser.c" break; - case 474: -#line 2524 "./util/configparser.y" + case 476: +#line 2529 "./util/configparser.y" { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5573 "util/configparser.c" +#line 5586 "util/configparser.c" break; - case 475: -#line 2531 "./util/configparser.y" + case 477: +#line 2536 "./util/configparser.y" { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5583 "util/configparser.c" +#line 5596 "util/configparser.c" break; - case 476: -#line 2538 "./util/configparser.y" + case 478: +#line 2543 "./util/configparser.y" { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5593 "util/configparser.c" +#line 5606 "util/configparser.c" break; - case 477: -#line 2545 "./util/configparser.y" + case 479: +#line 2550 "./util/configparser.y" { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5604 "util/configparser.c" +#line 5617 "util/configparser.c" break; - case 478: -#line 2553 "./util/configparser.y" + case 480: +#line 2558 "./util/configparser.y" { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5613,11 +5626,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5617 "util/configparser.c" +#line 5630 "util/configparser.c" break; - case 479: -#line 2563 "./util/configparser.y" + case 481: +#line 2568 "./util/configparser.y" { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5626,11 +5639,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5630 "util/configparser.c" +#line 5643 "util/configparser.c" break; - case 480: -#line 2573 "./util/configparser.y" + case 482: +#line 2578 "./util/configparser.y" { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5639,11 +5652,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5643 "util/configparser.c" +#line 5656 "util/configparser.c" break; - case 481: -#line 2583 "./util/configparser.y" + case 483: +#line 2588 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5652,11 +5665,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5656 "util/configparser.c" +#line 5669 "util/configparser.c" break; - case 482: -#line 2593 "./util/configparser.y" + case 484: +#line 2598 "./util/configparser.y" { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -5694,11 +5707,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5698 "util/configparser.c" +#line 5711 "util/configparser.c" break; - case 483: -#line 2632 "./util/configparser.y" + case 485: +#line 2637 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5707,33 +5720,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5711 "util/configparser.c" +#line 5724 "util/configparser.c" break; - case 484: -#line 2642 "./util/configparser.y" + case 486: +#line 2647 "./util/configparser.y" { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5722 "util/configparser.c" +#line 5735 "util/configparser.c" break; - case 485: -#line 2650 "./util/configparser.y" + case 487: +#line 2655 "./util/configparser.y" { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 5733 "util/configparser.c" +#line 5746 "util/configparser.c" break; - case 486: -#line 2658 "./util/configparser.y" + case 488: +#line 2663 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5747,11 +5760,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5751 "util/configparser.c" +#line 5764 "util/configparser.c" break; - case 487: -#line 2673 "./util/configparser.y" + case 489: +#line 2678 "./util/configparser.y" { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5759,19 +5772,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5763 "util/configparser.c" +#line 5776 "util/configparser.c" break; - case 488: -#line 2682 "./util/configparser.y" + case 490: +#line 2687 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 5771 "util/configparser.c" +#line 5784 "util/configparser.c" break; - case 499: -#line 2693 "./util/configparser.y" + case 501: +#line 2698 "./util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5780,11 +5793,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5784 "util/configparser.c" +#line 5797 "util/configparser.c" break; - case 500: -#line 2703 "./util/configparser.y" + case 502: +#line 2708 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5792,79 +5805,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5796 "util/configparser.c" +#line 5809 "util/configparser.c" break; - case 501: -#line 2712 "./util/configparser.y" + case 503: +#line 2717 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5806 "util/configparser.c" +#line 5819 "util/configparser.c" break; - case 502: -#line 2719 "./util/configparser.y" + case 504: +#line 2724 "./util/configparser.y" { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5816 "util/configparser.c" +#line 5829 "util/configparser.c" break; - case 503: -#line 2726 "./util/configparser.y" + case 505: +#line 2731 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 5826 "util/configparser.c" +#line 5839 "util/configparser.c" break; - case 504: -#line 2733 "./util/configparser.y" + case 506: +#line 2738 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 5836 "util/configparser.c" +#line 5849 "util/configparser.c" break; - case 505: -#line 2740 "./util/configparser.y" + case 507: +#line 2745 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 5846 "util/configparser.c" +#line 5859 "util/configparser.c" break; - case 506: -#line 2747 "./util/configparser.y" + case 508: +#line 2752 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 5856 "util/configparser.c" +#line 5869 "util/configparser.c" break; - case 507: -#line 2754 "./util/configparser.y" + case 509: +#line 2759 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 5864 "util/configparser.c" +#line 5877 "util/configparser.c" break; - case 528: -#line 2774 "./util/configparser.y" + case 530: +#line 2779 "./util/configparser.y" { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5872,31 +5885,31 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5876 "util/configparser.c" +#line 5889 "util/configparser.c" break; - case 529: -#line 2783 "./util/configparser.y" + case 531: +#line 2788 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 5886 "util/configparser.c" +#line 5899 "util/configparser.c" break; - case 530: -#line 2790 "./util/configparser.y" + case 532: +#line 2795 "./util/configparser.y" { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 5896 "util/configparser.c" +#line 5909 "util/configparser.c" break; - case 531: -#line 2797 "./util/configparser.y" + case 533: +#line 2802 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5904,51 +5917,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5908 "util/configparser.c" +#line 5921 "util/configparser.c" break; - case 532: -#line 2806 "./util/configparser.y" + case 534: +#line 2811 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 5918 "util/configparser.c" +#line 5931 "util/configparser.c" break; - case 533: -#line 2813 "./util/configparser.y" + case 535: +#line 2818 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 5928 "util/configparser.c" +#line 5941 "util/configparser.c" break; - case 534: -#line 2820 "./util/configparser.y" + case 536: +#line 2825 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 5938 "util/configparser.c" +#line 5951 "util/configparser.c" break; - case 535: -#line 2827 "./util/configparser.y" + case 537: +#line 2832 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 5948 "util/configparser.c" +#line 5961 "util/configparser.c" break; - case 536: -#line 2834 "./util/configparser.y" + case 538: +#line 2839 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5956,11 +5969,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5960 "util/configparser.c" +#line 5973 "util/configparser.c" break; - case 537: -#line 2843 "./util/configparser.y" + case 539: +#line 2848 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5968,31 +5981,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5972 "util/configparser.c" +#line 5985 "util/configparser.c" break; - case 538: -#line 2852 "./util/configparser.y" + case 540: +#line 2857 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 5982 "util/configparser.c" +#line 5995 "util/configparser.c" break; - case 539: -#line 2859 "./util/configparser.y" + case 541: +#line 2864 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 5992 "util/configparser.c" +#line 6005 "util/configparser.c" break; - case 540: -#line 2866 "./util/configparser.y" + case 542: +#line 2871 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6001,11 +6014,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6005 "util/configparser.c" +#line 6018 "util/configparser.c" break; - case 541: -#line 2876 "./util/configparser.y" + case 543: +#line 2881 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6014,11 +6027,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6018 "util/configparser.c" +#line 6031 "util/configparser.c" break; - case 542: -#line 2886 "./util/configparser.y" + case 544: +#line 2891 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6027,11 +6040,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6031 "util/configparser.c" +#line 6044 "util/configparser.c" break; - case 543: -#line 2896 "./util/configparser.y" + case 545: +#line 2901 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6040,11 +6053,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6044 "util/configparser.c" +#line 6057 "util/configparser.c" break; - case 544: -#line 2906 "./util/configparser.y" + case 546: +#line 2911 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6053,11 +6066,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6057 "util/configparser.c" +#line 6070 "util/configparser.c" break; - case 545: -#line 2916 "./util/configparser.y" + case 547: +#line 2921 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6066,29 +6079,29 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6070 "util/configparser.c" +#line 6083 "util/configparser.c" break; - case 546: -#line 2926 "./util/configparser.y" + case 548: +#line 2931 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6078 "util/configparser.c" +#line 6091 "util/configparser.c" break; - case 550: -#line 2935 "./util/configparser.y" + case 552: +#line 2940 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6088 "util/configparser.c" +#line 6101 "util/configparser.c" break; - case 551: -#line 2941 "./util/configparser.y" + case 553: +#line 2946 "./util/configparser.y" { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6097,21 +6110,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6101 "util/configparser.c" +#line 6114 "util/configparser.c" break; - case 552: -#line 2951 "./util/configparser.y" + case 554: +#line 2956 "./util/configparser.y" { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6111 "util/configparser.c" +#line 6124 "util/configparser.c" break; - case 553: -#line 2958 "./util/configparser.y" + case 555: +#line 2963 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6119,30 +6132,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6123 "util/configparser.c" +#line 6136 "util/configparser.c" break; - case 554: -#line 2967 "./util/configparser.y" + case 556: +#line 2972 "./util/configparser.y" { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6134 "util/configparser.c" +#line 6147 "util/configparser.c" break; - case 555: -#line 2975 "./util/configparser.y" + case 557: +#line 2980 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6142 "util/configparser.c" +#line 6155 "util/configparser.c" break; - case 568: -#line 2991 "./util/configparser.y" + case 570: +#line 2996 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6150,11 +6163,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6154 "util/configparser.c" +#line 6167 "util/configparser.c" break; - case 569: -#line 3001 "./util/configparser.y" + case 571: +#line 3006 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6162,21 +6175,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6166 "util/configparser.c" +#line 6179 "util/configparser.c" break; - case 570: -#line 3010 "./util/configparser.y" + case 572: +#line 3015 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6176 "util/configparser.c" +#line 6189 "util/configparser.c" break; - case 571: -#line 3017 "./util/configparser.y" + case 573: +#line 3022 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -6184,21 +6197,21 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6188 "util/configparser.c" +#line 6201 "util/configparser.c" break; - case 572: -#line 3026 "./util/configparser.y" + case 574: +#line 3031 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6198 "util/configparser.c" +#line 6211 "util/configparser.c" break; - case 573: -#line 3033 "./util/configparser.y" + case 575: +#line 3038 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6206,22 +6219,22 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6210 "util/configparser.c" +#line 6223 "util/configparser.c" break; - case 574: -#line 3042 "./util/configparser.y" + case 576: +#line 3047 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6221 "util/configparser.c" +#line 6234 "util/configparser.c" break; - case 575: -#line 3050 "./util/configparser.y" + case 577: +#line 3055 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6233,22 +6246,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6237 "util/configparser.c" +#line 6250 "util/configparser.c" break; - case 576: -#line 3063 "./util/configparser.y" + case 578: +#line 3068 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6248 "util/configparser.c" +#line 6261 "util/configparser.c" break; - case 577: -#line 3071 "./util/configparser.y" + case 579: +#line 3076 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6260,19 +6273,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6264 "util/configparser.c" +#line 6277 "util/configparser.c" break; - case 578: -#line 3084 "./util/configparser.y" + case 580: +#line 3089 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6272 "util/configparser.c" +#line 6285 "util/configparser.c" break; - case 587: -#line 3095 "./util/configparser.y" + case 589: +#line 3100 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6283,11 +6296,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6287 "util/configparser.c" +#line 6300 "util/configparser.c" break; - case 588: -#line 3107 "./util/configparser.y" + case 590: +#line 3112 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6298,11 +6311,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6302 "util/configparser.c" +#line 6315 "util/configparser.c" break; - case 589: -#line 3119 "./util/configparser.y" + case 591: +#line 3124 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6313,11 +6326,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6317 "util/configparser.c" +#line 6330 "util/configparser.c" break; - case 590: -#line 3131 "./util/configparser.y" + case 592: +#line 3136 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6331,11 +6344,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6335 "util/configparser.c" +#line 6348 "util/configparser.c" break; - case 591: -#line 3146 "./util/configparser.y" + case 593: +#line 3151 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6347,11 +6360,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6351 "util/configparser.c" +#line 6364 "util/configparser.c" break; - case 592: -#line 3159 "./util/configparser.y" + case 594: +#line 3164 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6363,11 +6376,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6367 "util/configparser.c" +#line 6380 "util/configparser.c" break; - case 593: -#line 3172 "./util/configparser.y" + case 595: +#line 3177 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6377,19 +6390,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6381 "util/configparser.c" +#line 6394 "util/configparser.c" break; - case 594: -#line 3183 "./util/configparser.y" + case 596: +#line 3188 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6389 "util/configparser.c" +#line 6402 "util/configparser.c" break; - case 599: -#line 3192 "./util/configparser.y" + case 601: +#line 3197 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6403,11 +6416,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6407 "util/configparser.c" +#line 6420 "util/configparser.c" break; - case 600: -#line 3207 "./util/configparser.y" + case 602: +#line 3212 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6421,11 +6434,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6425 "util/configparser.c" +#line 6438 "util/configparser.c" break; -#line 6429 "util/configparser.c" +#line 6442 "util/configparser.c" default: break; } @@ -6657,7 +6670,7 @@ yyreturn: #endif return yyresult; } -#line 3221 "./util/configparser.y" +#line 3226 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 184810a2a..dc7a9c6f5 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -57,283 +57,284 @@ extern int yydebug; ANY = 263, ZONESTR = 264, STRING_ARG = 265, - VAR_SERVER = 266, - VAR_VERBOSITY = 267, - VAR_NUM_THREADS = 268, - VAR_PORT = 269, - VAR_OUTGOING_RANGE = 270, - VAR_INTERFACE = 271, - VAR_PREFER_IP4 = 272, - VAR_DO_IP4 = 273, - VAR_DO_IP6 = 274, - VAR_PREFER_IP6 = 275, - VAR_DO_UDP = 276, - VAR_DO_TCP = 277, - VAR_TCP_MSS = 278, - VAR_OUTGOING_TCP_MSS = 279, - VAR_TCP_IDLE_TIMEOUT = 280, - VAR_EDNS_TCP_KEEPALIVE = 281, - VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 282, - VAR_CHROOT = 283, - VAR_USERNAME = 284, - VAR_DIRECTORY = 285, - VAR_LOGFILE = 286, - VAR_PIDFILE = 287, - VAR_MSG_CACHE_SIZE = 288, - VAR_MSG_CACHE_SLABS = 289, - VAR_NUM_QUERIES_PER_THREAD = 290, - VAR_RRSET_CACHE_SIZE = 291, - VAR_RRSET_CACHE_SLABS = 292, - VAR_OUTGOING_NUM_TCP = 293, - VAR_INFRA_HOST_TTL = 294, - VAR_INFRA_LAME_TTL = 295, - VAR_INFRA_CACHE_SLABS = 296, - VAR_INFRA_CACHE_NUMHOSTS = 297, - VAR_INFRA_CACHE_LAME_SIZE = 298, - VAR_NAME = 299, - VAR_STUB_ZONE = 300, - VAR_STUB_HOST = 301, - VAR_STUB_ADDR = 302, - VAR_TARGET_FETCH_POLICY = 303, - VAR_HARDEN_SHORT_BUFSIZE = 304, - VAR_HARDEN_LARGE_QUERIES = 305, - VAR_FORWARD_ZONE = 306, - VAR_FORWARD_HOST = 307, - VAR_FORWARD_ADDR = 308, - VAR_DO_NOT_QUERY_ADDRESS = 309, - VAR_HIDE_IDENTITY = 310, - VAR_HIDE_VERSION = 311, - VAR_IDENTITY = 312, - VAR_VERSION = 313, - VAR_HARDEN_GLUE = 314, - VAR_MODULE_CONF = 315, - VAR_TRUST_ANCHOR_FILE = 316, - VAR_TRUST_ANCHOR = 317, - VAR_VAL_OVERRIDE_DATE = 318, - VAR_BOGUS_TTL = 319, - VAR_VAL_CLEAN_ADDITIONAL = 320, - VAR_VAL_PERMISSIVE_MODE = 321, - VAR_INCOMING_NUM_TCP = 322, - VAR_MSG_BUFFER_SIZE = 323, - VAR_KEY_CACHE_SIZE = 324, - VAR_KEY_CACHE_SLABS = 325, - VAR_TRUSTED_KEYS_FILE = 326, - VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 327, - VAR_USE_SYSLOG = 328, - VAR_OUTGOING_INTERFACE = 329, - VAR_ROOT_HINTS = 330, - VAR_DO_NOT_QUERY_LOCALHOST = 331, - VAR_CACHE_MAX_TTL = 332, - VAR_HARDEN_DNSSEC_STRIPPED = 333, - VAR_ACCESS_CONTROL = 334, - VAR_LOCAL_ZONE = 335, - VAR_LOCAL_DATA = 336, - VAR_INTERFACE_AUTOMATIC = 337, - VAR_STATISTICS_INTERVAL = 338, - VAR_DO_DAEMONIZE = 339, - VAR_USE_CAPS_FOR_ID = 340, - VAR_STATISTICS_CUMULATIVE = 341, - VAR_OUTGOING_PORT_PERMIT = 342, - VAR_OUTGOING_PORT_AVOID = 343, - VAR_DLV_ANCHOR_FILE = 344, - VAR_DLV_ANCHOR = 345, - VAR_NEG_CACHE_SIZE = 346, - VAR_HARDEN_REFERRAL_PATH = 347, - VAR_PRIVATE_ADDRESS = 348, - VAR_PRIVATE_DOMAIN = 349, - VAR_REMOTE_CONTROL = 350, - VAR_CONTROL_ENABLE = 351, - VAR_CONTROL_INTERFACE = 352, - VAR_CONTROL_PORT = 353, - VAR_SERVER_KEY_FILE = 354, - VAR_SERVER_CERT_FILE = 355, - VAR_CONTROL_KEY_FILE = 356, - VAR_CONTROL_CERT_FILE = 357, - VAR_CONTROL_USE_CERT = 358, - VAR_EXTENDED_STATISTICS = 359, - VAR_LOCAL_DATA_PTR = 360, - VAR_JOSTLE_TIMEOUT = 361, - VAR_STUB_PRIME = 362, - VAR_UNWANTED_REPLY_THRESHOLD = 363, - VAR_LOG_TIME_ASCII = 364, - VAR_DOMAIN_INSECURE = 365, - VAR_PYTHON = 366, - VAR_PYTHON_SCRIPT = 367, - VAR_VAL_SIG_SKEW_MIN = 368, - VAR_VAL_SIG_SKEW_MAX = 369, - VAR_CACHE_MIN_TTL = 370, - VAR_VAL_LOG_LEVEL = 371, - VAR_AUTO_TRUST_ANCHOR_FILE = 372, - VAR_KEEP_MISSING = 373, - VAR_ADD_HOLDDOWN = 374, - VAR_DEL_HOLDDOWN = 375, - VAR_SO_RCVBUF = 376, - VAR_EDNS_BUFFER_SIZE = 377, - VAR_PREFETCH = 378, - VAR_PREFETCH_KEY = 379, - VAR_SO_SNDBUF = 380, - VAR_SO_REUSEPORT = 381, - VAR_HARDEN_BELOW_NXDOMAIN = 382, - VAR_IGNORE_CD_FLAG = 383, - VAR_LOG_QUERIES = 384, - VAR_LOG_REPLIES = 385, - VAR_LOG_LOCAL_ACTIONS = 386, - VAR_TCP_UPSTREAM = 387, - VAR_SSL_UPSTREAM = 388, - VAR_SSL_SERVICE_KEY = 389, - VAR_SSL_SERVICE_PEM = 390, - VAR_SSL_PORT = 391, - VAR_FORWARD_FIRST = 392, - VAR_STUB_SSL_UPSTREAM = 393, - VAR_FORWARD_SSL_UPSTREAM = 394, - VAR_TLS_CERT_BUNDLE = 395, - VAR_STUB_FIRST = 396, - VAR_MINIMAL_RESPONSES = 397, - VAR_RRSET_ROUNDROBIN = 398, - VAR_MAX_UDP_SIZE = 399, - VAR_DELAY_CLOSE = 400, - VAR_UNBLOCK_LAN_ZONES = 401, - VAR_INSECURE_LAN_ZONES = 402, - VAR_INFRA_CACHE_MIN_RTT = 403, - VAR_DNS64_PREFIX = 404, - VAR_DNS64_SYNTHALL = 405, - VAR_DNS64_IGNORE_AAAA = 406, - VAR_DNSTAP = 407, - VAR_DNSTAP_ENABLE = 408, - VAR_DNSTAP_SOCKET_PATH = 409, - VAR_DNSTAP_IP = 410, - VAR_DNSTAP_TLS = 411, - VAR_DNSTAP_TLS_SERVER_NAME = 412, - VAR_DNSTAP_TLS_CERT_BUNDLE = 413, - VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 414, - VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, - VAR_DNSTAP_SEND_IDENTITY = 416, - VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_IP_DSCP = 431, - VAR_DISABLE_DNSSEC_LAME_CHECK = 432, - VAR_IP_RATELIMIT = 433, - VAR_IP_RATELIMIT_SLABS = 434, - VAR_IP_RATELIMIT_SIZE = 435, - VAR_RATELIMIT = 436, - VAR_RATELIMIT_SLABS = 437, - VAR_RATELIMIT_SIZE = 438, - VAR_RATELIMIT_FOR_DOMAIN = 439, - VAR_RATELIMIT_BELOW_DOMAIN = 440, - VAR_IP_RATELIMIT_FACTOR = 441, - VAR_RATELIMIT_FACTOR = 442, - VAR_SEND_CLIENT_SUBNET = 443, - VAR_CLIENT_SUBNET_ZONE = 444, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, - VAR_CLIENT_SUBNET_OPCODE = 446, - VAR_MAX_CLIENT_SUBNET_IPV4 = 447, - VAR_MAX_CLIENT_SUBNET_IPV6 = 448, - VAR_MIN_CLIENT_SUBNET_IPV4 = 449, - VAR_MIN_CLIENT_SUBNET_IPV6 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, - VAR_CAPS_WHITELIST = 453, - VAR_CACHE_MAX_NEGATIVE_TTL = 454, - VAR_PERMIT_SMALL_HOLDDOWN = 455, - VAR_QNAME_MINIMISATION = 456, - VAR_QNAME_MINIMISATION_STRICT = 457, - VAR_IP_FREEBIND = 458, - VAR_DEFINE_TAG = 459, - VAR_LOCAL_ZONE_TAG = 460, - VAR_ACCESS_CONTROL_TAG = 461, - VAR_LOCAL_ZONE_OVERRIDE = 462, - VAR_ACCESS_CONTROL_TAG_ACTION = 463, - VAR_ACCESS_CONTROL_TAG_DATA = 464, - VAR_VIEW = 465, - VAR_ACCESS_CONTROL_VIEW = 466, - VAR_VIEW_FIRST = 467, - VAR_SERVE_EXPIRED = 468, - VAR_SERVE_EXPIRED_TTL = 469, - VAR_SERVE_EXPIRED_TTL_RESET = 470, - VAR_SERVE_EXPIRED_REPLY_TTL = 471, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_CACHEDB_REDISEXPIRERECORDS = 506, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 507, - VAR_FOR_UPSTREAM = 508, - VAR_AUTH_ZONE = 509, - VAR_ZONEFILE = 510, - VAR_MASTER = 511, - VAR_URL = 512, - VAR_FOR_DOWNSTREAM = 513, - VAR_FALLBACK_ENABLED = 514, - VAR_TLS_ADDITIONAL_PORT = 515, - VAR_LOW_RTT = 516, - VAR_LOW_RTT_PERMIL = 517, - VAR_FAST_SERVER_PERMIL = 518, - VAR_FAST_SERVER_NUM = 519, - VAR_ALLOW_NOTIFY = 520, - VAR_TLS_WIN_CERT = 521, - VAR_TCP_CONNECTION_LIMIT = 522, - VAR_FORWARD_NO_CACHE = 523, - VAR_STUB_NO_CACHE = 524, - VAR_LOG_SERVFAIL = 525, - VAR_DENY_ANY = 526, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 527, - VAR_LOG_TAG_QUERYREPLY = 528, - VAR_STREAM_WAIT_SIZE = 529, - VAR_TLS_CIPHERS = 530, - VAR_TLS_CIPHERSUITES = 531, - VAR_TLS_USE_SNI = 532, - VAR_IPSET = 533, - VAR_IPSET_NAME_V4 = 534, - VAR_IPSET_NAME_V6 = 535, - VAR_TLS_SESSION_TICKET_KEYS = 536, - VAR_RPZ = 537, - VAR_TAGS = 538, - VAR_RPZ_ACTION_OVERRIDE = 539, - VAR_RPZ_CNAME_OVERRIDE = 540, - VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542 + VAR_FORCE_TOPLEVEL = 266, + VAR_SERVER = 267, + VAR_VERBOSITY = 268, + VAR_NUM_THREADS = 269, + VAR_PORT = 270, + VAR_OUTGOING_RANGE = 271, + VAR_INTERFACE = 272, + VAR_PREFER_IP4 = 273, + VAR_DO_IP4 = 274, + VAR_DO_IP6 = 275, + VAR_PREFER_IP6 = 276, + VAR_DO_UDP = 277, + VAR_DO_TCP = 278, + VAR_TCP_MSS = 279, + VAR_OUTGOING_TCP_MSS = 280, + VAR_TCP_IDLE_TIMEOUT = 281, + VAR_EDNS_TCP_KEEPALIVE = 282, + VAR_EDNS_TCP_KEEPALIVE_TIMEOUT = 283, + VAR_CHROOT = 284, + VAR_USERNAME = 285, + VAR_DIRECTORY = 286, + VAR_LOGFILE = 287, + VAR_PIDFILE = 288, + VAR_MSG_CACHE_SIZE = 289, + VAR_MSG_CACHE_SLABS = 290, + VAR_NUM_QUERIES_PER_THREAD = 291, + VAR_RRSET_CACHE_SIZE = 292, + VAR_RRSET_CACHE_SLABS = 293, + VAR_OUTGOING_NUM_TCP = 294, + VAR_INFRA_HOST_TTL = 295, + VAR_INFRA_LAME_TTL = 296, + VAR_INFRA_CACHE_SLABS = 297, + VAR_INFRA_CACHE_NUMHOSTS = 298, + VAR_INFRA_CACHE_LAME_SIZE = 299, + VAR_NAME = 300, + VAR_STUB_ZONE = 301, + VAR_STUB_HOST = 302, + VAR_STUB_ADDR = 303, + VAR_TARGET_FETCH_POLICY = 304, + VAR_HARDEN_SHORT_BUFSIZE = 305, + VAR_HARDEN_LARGE_QUERIES = 306, + VAR_FORWARD_ZONE = 307, + VAR_FORWARD_HOST = 308, + VAR_FORWARD_ADDR = 309, + VAR_DO_NOT_QUERY_ADDRESS = 310, + VAR_HIDE_IDENTITY = 311, + VAR_HIDE_VERSION = 312, + VAR_IDENTITY = 313, + VAR_VERSION = 314, + VAR_HARDEN_GLUE = 315, + VAR_MODULE_CONF = 316, + VAR_TRUST_ANCHOR_FILE = 317, + VAR_TRUST_ANCHOR = 318, + VAR_VAL_OVERRIDE_DATE = 319, + VAR_BOGUS_TTL = 320, + VAR_VAL_CLEAN_ADDITIONAL = 321, + VAR_VAL_PERMISSIVE_MODE = 322, + VAR_INCOMING_NUM_TCP = 323, + VAR_MSG_BUFFER_SIZE = 324, + VAR_KEY_CACHE_SIZE = 325, + VAR_KEY_CACHE_SLABS = 326, + VAR_TRUSTED_KEYS_FILE = 327, + VAR_VAL_NSEC3_KEYSIZE_ITERATIONS = 328, + VAR_USE_SYSLOG = 329, + VAR_OUTGOING_INTERFACE = 330, + VAR_ROOT_HINTS = 331, + VAR_DO_NOT_QUERY_LOCALHOST = 332, + VAR_CACHE_MAX_TTL = 333, + VAR_HARDEN_DNSSEC_STRIPPED = 334, + VAR_ACCESS_CONTROL = 335, + VAR_LOCAL_ZONE = 336, + VAR_LOCAL_DATA = 337, + VAR_INTERFACE_AUTOMATIC = 338, + VAR_STATISTICS_INTERVAL = 339, + VAR_DO_DAEMONIZE = 340, + VAR_USE_CAPS_FOR_ID = 341, + VAR_STATISTICS_CUMULATIVE = 342, + VAR_OUTGOING_PORT_PERMIT = 343, + VAR_OUTGOING_PORT_AVOID = 344, + VAR_DLV_ANCHOR_FILE = 345, + VAR_DLV_ANCHOR = 346, + VAR_NEG_CACHE_SIZE = 347, + VAR_HARDEN_REFERRAL_PATH = 348, + VAR_PRIVATE_ADDRESS = 349, + VAR_PRIVATE_DOMAIN = 350, + VAR_REMOTE_CONTROL = 351, + VAR_CONTROL_ENABLE = 352, + VAR_CONTROL_INTERFACE = 353, + VAR_CONTROL_PORT = 354, + VAR_SERVER_KEY_FILE = 355, + VAR_SERVER_CERT_FILE = 356, + VAR_CONTROL_KEY_FILE = 357, + VAR_CONTROL_CERT_FILE = 358, + VAR_CONTROL_USE_CERT = 359, + VAR_EXTENDED_STATISTICS = 360, + VAR_LOCAL_DATA_PTR = 361, + VAR_JOSTLE_TIMEOUT = 362, + VAR_STUB_PRIME = 363, + VAR_UNWANTED_REPLY_THRESHOLD = 364, + VAR_LOG_TIME_ASCII = 365, + VAR_DOMAIN_INSECURE = 366, + VAR_PYTHON = 367, + VAR_PYTHON_SCRIPT = 368, + VAR_VAL_SIG_SKEW_MIN = 369, + VAR_VAL_SIG_SKEW_MAX = 370, + VAR_CACHE_MIN_TTL = 371, + VAR_VAL_LOG_LEVEL = 372, + VAR_AUTO_TRUST_ANCHOR_FILE = 373, + VAR_KEEP_MISSING = 374, + VAR_ADD_HOLDDOWN = 375, + VAR_DEL_HOLDDOWN = 376, + VAR_SO_RCVBUF = 377, + VAR_EDNS_BUFFER_SIZE = 378, + VAR_PREFETCH = 379, + VAR_PREFETCH_KEY = 380, + VAR_SO_SNDBUF = 381, + VAR_SO_REUSEPORT = 382, + VAR_HARDEN_BELOW_NXDOMAIN = 383, + VAR_IGNORE_CD_FLAG = 384, + VAR_LOG_QUERIES = 385, + VAR_LOG_REPLIES = 386, + VAR_LOG_LOCAL_ACTIONS = 387, + VAR_TCP_UPSTREAM = 388, + VAR_SSL_UPSTREAM = 389, + VAR_SSL_SERVICE_KEY = 390, + VAR_SSL_SERVICE_PEM = 391, + VAR_SSL_PORT = 392, + VAR_FORWARD_FIRST = 393, + VAR_STUB_SSL_UPSTREAM = 394, + VAR_FORWARD_SSL_UPSTREAM = 395, + VAR_TLS_CERT_BUNDLE = 396, + VAR_STUB_FIRST = 397, + VAR_MINIMAL_RESPONSES = 398, + VAR_RRSET_ROUNDROBIN = 399, + VAR_MAX_UDP_SIZE = 400, + VAR_DELAY_CLOSE = 401, + VAR_UNBLOCK_LAN_ZONES = 402, + VAR_INSECURE_LAN_ZONES = 403, + VAR_INFRA_CACHE_MIN_RTT = 404, + VAR_DNS64_PREFIX = 405, + VAR_DNS64_SYNTHALL = 406, + VAR_DNS64_IGNORE_AAAA = 407, + VAR_DNSTAP = 408, + VAR_DNSTAP_ENABLE = 409, + VAR_DNSTAP_SOCKET_PATH = 410, + VAR_DNSTAP_IP = 411, + VAR_DNSTAP_TLS = 412, + VAR_DNSTAP_TLS_SERVER_NAME = 413, + VAR_DNSTAP_TLS_CERT_BUNDLE = 414, + VAR_DNSTAP_TLS_CLIENT_KEY_FILE = 415, + VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 416, + VAR_DNSTAP_SEND_IDENTITY = 417, + VAR_DNSTAP_SEND_VERSION = 418, + VAR_DNSTAP_IDENTITY = 419, + VAR_DNSTAP_VERSION = 420, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 421, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 422, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 423, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 424, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 425, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 426, + VAR_RESPONSE_IP_TAG = 427, + VAR_RESPONSE_IP = 428, + VAR_RESPONSE_IP_DATA = 429, + VAR_HARDEN_ALGO_DOWNGRADE = 430, + VAR_IP_TRANSPARENT = 431, + VAR_IP_DSCP = 432, + VAR_DISABLE_DNSSEC_LAME_CHECK = 433, + VAR_IP_RATELIMIT = 434, + VAR_IP_RATELIMIT_SLABS = 435, + VAR_IP_RATELIMIT_SIZE = 436, + VAR_RATELIMIT = 437, + VAR_RATELIMIT_SLABS = 438, + VAR_RATELIMIT_SIZE = 439, + VAR_RATELIMIT_FOR_DOMAIN = 440, + VAR_RATELIMIT_BELOW_DOMAIN = 441, + VAR_IP_RATELIMIT_FACTOR = 442, + VAR_RATELIMIT_FACTOR = 443, + VAR_SEND_CLIENT_SUBNET = 444, + VAR_CLIENT_SUBNET_ZONE = 445, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 446, + VAR_CLIENT_SUBNET_OPCODE = 447, + VAR_MAX_CLIENT_SUBNET_IPV4 = 448, + VAR_MAX_CLIENT_SUBNET_IPV6 = 449, + VAR_MIN_CLIENT_SUBNET_IPV4 = 450, + VAR_MIN_CLIENT_SUBNET_IPV6 = 451, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 452, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 453, + VAR_CAPS_WHITELIST = 454, + VAR_CACHE_MAX_NEGATIVE_TTL = 455, + VAR_PERMIT_SMALL_HOLDDOWN = 456, + VAR_QNAME_MINIMISATION = 457, + VAR_QNAME_MINIMISATION_STRICT = 458, + VAR_IP_FREEBIND = 459, + VAR_DEFINE_TAG = 460, + VAR_LOCAL_ZONE_TAG = 461, + VAR_ACCESS_CONTROL_TAG = 462, + VAR_LOCAL_ZONE_OVERRIDE = 463, + VAR_ACCESS_CONTROL_TAG_ACTION = 464, + VAR_ACCESS_CONTROL_TAG_DATA = 465, + VAR_VIEW = 466, + VAR_ACCESS_CONTROL_VIEW = 467, + VAR_VIEW_FIRST = 468, + VAR_SERVE_EXPIRED = 469, + VAR_SERVE_EXPIRED_TTL = 470, + VAR_SERVE_EXPIRED_TTL_RESET = 471, + VAR_SERVE_EXPIRED_REPLY_TTL = 472, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 473, + VAR_FAKE_DSA = 474, + VAR_FAKE_SHA1 = 475, + VAR_LOG_IDENTITY = 476, + VAR_HIDE_TRUSTANCHOR = 477, + VAR_TRUST_ANCHOR_SIGNALING = 478, + VAR_AGGRESSIVE_NSEC = 479, + VAR_USE_SYSTEMD = 480, + VAR_SHM_ENABLE = 481, + VAR_SHM_KEY = 482, + VAR_ROOT_KEY_SENTINEL = 483, + VAR_DNSCRYPT = 484, + VAR_DNSCRYPT_ENABLE = 485, + VAR_DNSCRYPT_PORT = 486, + VAR_DNSCRYPT_PROVIDER = 487, + VAR_DNSCRYPT_SECRET_KEY = 488, + VAR_DNSCRYPT_PROVIDER_CERT = 489, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, + VAR_IPSECMOD_ENABLED = 495, + VAR_IPSECMOD_HOOK = 496, + VAR_IPSECMOD_IGNORE_BOGUS = 497, + VAR_IPSECMOD_MAX_TTL = 498, + VAR_IPSECMOD_WHITELIST = 499, + VAR_IPSECMOD_STRICT = 500, + VAR_CACHEDB = 501, + VAR_CACHEDB_BACKEND = 502, + VAR_CACHEDB_SECRETSEED = 503, + VAR_CACHEDB_REDISHOST = 504, + VAR_CACHEDB_REDISPORT = 505, + VAR_CACHEDB_REDISTIMEOUT = 506, + VAR_CACHEDB_REDISEXPIRERECORDS = 507, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, + VAR_FOR_UPSTREAM = 509, + VAR_AUTH_ZONE = 510, + VAR_ZONEFILE = 511, + VAR_MASTER = 512, + VAR_URL = 513, + VAR_FOR_DOWNSTREAM = 514, + VAR_FALLBACK_ENABLED = 515, + VAR_TLS_ADDITIONAL_PORT = 516, + VAR_LOW_RTT = 517, + VAR_LOW_RTT_PERMIL = 518, + VAR_FAST_SERVER_PERMIL = 519, + VAR_FAST_SERVER_NUM = 520, + VAR_ALLOW_NOTIFY = 521, + VAR_TLS_WIN_CERT = 522, + VAR_TCP_CONNECTION_LIMIT = 523, + VAR_FORWARD_NO_CACHE = 524, + VAR_STUB_NO_CACHE = 525, + VAR_LOG_SERVFAIL = 526, + VAR_DENY_ANY = 527, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, + VAR_LOG_TAG_QUERYREPLY = 529, + VAR_STREAM_WAIT_SIZE = 530, + VAR_TLS_CIPHERS = 531, + VAR_TLS_CIPHERSUITES = 532, + VAR_TLS_USE_SNI = 533, + VAR_IPSET = 534, + VAR_IPSET_NAME_V4 = 535, + VAR_IPSET_NAME_V6 = 536, + VAR_TLS_SESSION_TICKET_KEYS = 537, + VAR_RPZ = 538, + VAR_TAGS = 539, + VAR_RPZ_ACTION_OVERRIDE = 540, + VAR_RPZ_CNAME_OVERRIDE = 541, + VAR_RPZ_LOG = 542, + VAR_RPZ_LOG_NAME = 543 }; #endif /* Tokens. */ @@ -345,283 +346,284 @@ extern int yydebug; #define ANY 263 #define ZONESTR 264 #define STRING_ARG 265 -#define VAR_SERVER 266 -#define VAR_VERBOSITY 267 -#define VAR_NUM_THREADS 268 -#define VAR_PORT 269 -#define VAR_OUTGOING_RANGE 270 -#define VAR_INTERFACE 271 -#define VAR_PREFER_IP4 272 -#define VAR_DO_IP4 273 -#define VAR_DO_IP6 274 -#define VAR_PREFER_IP6 275 -#define VAR_DO_UDP 276 -#define VAR_DO_TCP 277 -#define VAR_TCP_MSS 278 -#define VAR_OUTGOING_TCP_MSS 279 -#define VAR_TCP_IDLE_TIMEOUT 280 -#define VAR_EDNS_TCP_KEEPALIVE 281 -#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 282 -#define VAR_CHROOT 283 -#define VAR_USERNAME 284 -#define VAR_DIRECTORY 285 -#define VAR_LOGFILE 286 -#define VAR_PIDFILE 287 -#define VAR_MSG_CACHE_SIZE 288 -#define VAR_MSG_CACHE_SLABS 289 -#define VAR_NUM_QUERIES_PER_THREAD 290 -#define VAR_RRSET_CACHE_SIZE 291 -#define VAR_RRSET_CACHE_SLABS 292 -#define VAR_OUTGOING_NUM_TCP 293 -#define VAR_INFRA_HOST_TTL 294 -#define VAR_INFRA_LAME_TTL 295 -#define VAR_INFRA_CACHE_SLABS 296 -#define VAR_INFRA_CACHE_NUMHOSTS 297 -#define VAR_INFRA_CACHE_LAME_SIZE 298 -#define VAR_NAME 299 -#define VAR_STUB_ZONE 300 -#define VAR_STUB_HOST 301 -#define VAR_STUB_ADDR 302 -#define VAR_TARGET_FETCH_POLICY 303 -#define VAR_HARDEN_SHORT_BUFSIZE 304 -#define VAR_HARDEN_LARGE_QUERIES 305 -#define VAR_FORWARD_ZONE 306 -#define VAR_FORWARD_HOST 307 -#define VAR_FORWARD_ADDR 308 -#define VAR_DO_NOT_QUERY_ADDRESS 309 -#define VAR_HIDE_IDENTITY 310 -#define VAR_HIDE_VERSION 311 -#define VAR_IDENTITY 312 -#define VAR_VERSION 313 -#define VAR_HARDEN_GLUE 314 -#define VAR_MODULE_CONF 315 -#define VAR_TRUST_ANCHOR_FILE 316 -#define VAR_TRUST_ANCHOR 317 -#define VAR_VAL_OVERRIDE_DATE 318 -#define VAR_BOGUS_TTL 319 -#define VAR_VAL_CLEAN_ADDITIONAL 320 -#define VAR_VAL_PERMISSIVE_MODE 321 -#define VAR_INCOMING_NUM_TCP 322 -#define VAR_MSG_BUFFER_SIZE 323 -#define VAR_KEY_CACHE_SIZE 324 -#define VAR_KEY_CACHE_SLABS 325 -#define VAR_TRUSTED_KEYS_FILE 326 -#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 327 -#define VAR_USE_SYSLOG 328 -#define VAR_OUTGOING_INTERFACE 329 -#define VAR_ROOT_HINTS 330 -#define VAR_DO_NOT_QUERY_LOCALHOST 331 -#define VAR_CACHE_MAX_TTL 332 -#define VAR_HARDEN_DNSSEC_STRIPPED 333 -#define VAR_ACCESS_CONTROL 334 -#define VAR_LOCAL_ZONE 335 -#define VAR_LOCAL_DATA 336 -#define VAR_INTERFACE_AUTOMATIC 337 -#define VAR_STATISTICS_INTERVAL 338 -#define VAR_DO_DAEMONIZE 339 -#define VAR_USE_CAPS_FOR_ID 340 -#define VAR_STATISTICS_CUMULATIVE 341 -#define VAR_OUTGOING_PORT_PERMIT 342 -#define VAR_OUTGOING_PORT_AVOID 343 -#define VAR_DLV_ANCHOR_FILE 344 -#define VAR_DLV_ANCHOR 345 -#define VAR_NEG_CACHE_SIZE 346 -#define VAR_HARDEN_REFERRAL_PATH 347 -#define VAR_PRIVATE_ADDRESS 348 -#define VAR_PRIVATE_DOMAIN 349 -#define VAR_REMOTE_CONTROL 350 -#define VAR_CONTROL_ENABLE 351 -#define VAR_CONTROL_INTERFACE 352 -#define VAR_CONTROL_PORT 353 -#define VAR_SERVER_KEY_FILE 354 -#define VAR_SERVER_CERT_FILE 355 -#define VAR_CONTROL_KEY_FILE 356 -#define VAR_CONTROL_CERT_FILE 357 -#define VAR_CONTROL_USE_CERT 358 -#define VAR_EXTENDED_STATISTICS 359 -#define VAR_LOCAL_DATA_PTR 360 -#define VAR_JOSTLE_TIMEOUT 361 -#define VAR_STUB_PRIME 362 -#define VAR_UNWANTED_REPLY_THRESHOLD 363 -#define VAR_LOG_TIME_ASCII 364 -#define VAR_DOMAIN_INSECURE 365 -#define VAR_PYTHON 366 -#define VAR_PYTHON_SCRIPT 367 -#define VAR_VAL_SIG_SKEW_MIN 368 -#define VAR_VAL_SIG_SKEW_MAX 369 -#define VAR_CACHE_MIN_TTL 370 -#define VAR_VAL_LOG_LEVEL 371 -#define VAR_AUTO_TRUST_ANCHOR_FILE 372 -#define VAR_KEEP_MISSING 373 -#define VAR_ADD_HOLDDOWN 374 -#define VAR_DEL_HOLDDOWN 375 -#define VAR_SO_RCVBUF 376 -#define VAR_EDNS_BUFFER_SIZE 377 -#define VAR_PREFETCH 378 -#define VAR_PREFETCH_KEY 379 -#define VAR_SO_SNDBUF 380 -#define VAR_SO_REUSEPORT 381 -#define VAR_HARDEN_BELOW_NXDOMAIN 382 -#define VAR_IGNORE_CD_FLAG 383 -#define VAR_LOG_QUERIES 384 -#define VAR_LOG_REPLIES 385 -#define VAR_LOG_LOCAL_ACTIONS 386 -#define VAR_TCP_UPSTREAM 387 -#define VAR_SSL_UPSTREAM 388 -#define VAR_SSL_SERVICE_KEY 389 -#define VAR_SSL_SERVICE_PEM 390 -#define VAR_SSL_PORT 391 -#define VAR_FORWARD_FIRST 392 -#define VAR_STUB_SSL_UPSTREAM 393 -#define VAR_FORWARD_SSL_UPSTREAM 394 -#define VAR_TLS_CERT_BUNDLE 395 -#define VAR_STUB_FIRST 396 -#define VAR_MINIMAL_RESPONSES 397 -#define VAR_RRSET_ROUNDROBIN 398 -#define VAR_MAX_UDP_SIZE 399 -#define VAR_DELAY_CLOSE 400 -#define VAR_UNBLOCK_LAN_ZONES 401 -#define VAR_INSECURE_LAN_ZONES 402 -#define VAR_INFRA_CACHE_MIN_RTT 403 -#define VAR_DNS64_PREFIX 404 -#define VAR_DNS64_SYNTHALL 405 -#define VAR_DNS64_IGNORE_AAAA 406 -#define VAR_DNSTAP 407 -#define VAR_DNSTAP_ENABLE 408 -#define VAR_DNSTAP_SOCKET_PATH 409 -#define VAR_DNSTAP_IP 410 -#define VAR_DNSTAP_TLS 411 -#define VAR_DNSTAP_TLS_SERVER_NAME 412 -#define VAR_DNSTAP_TLS_CERT_BUNDLE 413 -#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 414 -#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 -#define VAR_DNSTAP_SEND_IDENTITY 416 -#define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_IP_DSCP 431 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 -#define VAR_IP_RATELIMIT 433 -#define VAR_IP_RATELIMIT_SLABS 434 -#define VAR_IP_RATELIMIT_SIZE 435 -#define VAR_RATELIMIT 436 -#define VAR_RATELIMIT_SLABS 437 -#define VAR_RATELIMIT_SIZE 438 -#define VAR_RATELIMIT_FOR_DOMAIN 439 -#define VAR_RATELIMIT_BELOW_DOMAIN 440 -#define VAR_IP_RATELIMIT_FACTOR 441 -#define VAR_RATELIMIT_FACTOR 442 -#define VAR_SEND_CLIENT_SUBNET 443 -#define VAR_CLIENT_SUBNET_ZONE 444 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 -#define VAR_CLIENT_SUBNET_OPCODE 446 -#define VAR_MAX_CLIENT_SUBNET_IPV4 447 -#define VAR_MAX_CLIENT_SUBNET_IPV6 448 -#define VAR_MIN_CLIENT_SUBNET_IPV4 449 -#define VAR_MIN_CLIENT_SUBNET_IPV6 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 -#define VAR_CAPS_WHITELIST 453 -#define VAR_CACHE_MAX_NEGATIVE_TTL 454 -#define VAR_PERMIT_SMALL_HOLDDOWN 455 -#define VAR_QNAME_MINIMISATION 456 -#define VAR_QNAME_MINIMISATION_STRICT 457 -#define VAR_IP_FREEBIND 458 -#define VAR_DEFINE_TAG 459 -#define VAR_LOCAL_ZONE_TAG 460 -#define VAR_ACCESS_CONTROL_TAG 461 -#define VAR_LOCAL_ZONE_OVERRIDE 462 -#define VAR_ACCESS_CONTROL_TAG_ACTION 463 -#define VAR_ACCESS_CONTROL_TAG_DATA 464 -#define VAR_VIEW 465 -#define VAR_ACCESS_CONTROL_VIEW 466 -#define VAR_VIEW_FIRST 467 -#define VAR_SERVE_EXPIRED 468 -#define VAR_SERVE_EXPIRED_TTL 469 -#define VAR_SERVE_EXPIRED_TTL_RESET 470 -#define VAR_SERVE_EXPIRED_REPLY_TTL 471 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_CACHEDB_REDISEXPIRERECORDS 506 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 507 -#define VAR_FOR_UPSTREAM 508 -#define VAR_AUTH_ZONE 509 -#define VAR_ZONEFILE 510 -#define VAR_MASTER 511 -#define VAR_URL 512 -#define VAR_FOR_DOWNSTREAM 513 -#define VAR_FALLBACK_ENABLED 514 -#define VAR_TLS_ADDITIONAL_PORT 515 -#define VAR_LOW_RTT 516 -#define VAR_LOW_RTT_PERMIL 517 -#define VAR_FAST_SERVER_PERMIL 518 -#define VAR_FAST_SERVER_NUM 519 -#define VAR_ALLOW_NOTIFY 520 -#define VAR_TLS_WIN_CERT 521 -#define VAR_TCP_CONNECTION_LIMIT 522 -#define VAR_FORWARD_NO_CACHE 523 -#define VAR_STUB_NO_CACHE 524 -#define VAR_LOG_SERVFAIL 525 -#define VAR_DENY_ANY 526 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 527 -#define VAR_LOG_TAG_QUERYREPLY 528 -#define VAR_STREAM_WAIT_SIZE 529 -#define VAR_TLS_CIPHERS 530 -#define VAR_TLS_CIPHERSUITES 531 -#define VAR_TLS_USE_SNI 532 -#define VAR_IPSET 533 -#define VAR_IPSET_NAME_V4 534 -#define VAR_IPSET_NAME_V6 535 -#define VAR_TLS_SESSION_TICKET_KEYS 536 -#define VAR_RPZ 537 -#define VAR_TAGS 538 -#define VAR_RPZ_ACTION_OVERRIDE 539 -#define VAR_RPZ_CNAME_OVERRIDE 540 -#define VAR_RPZ_LOG 541 -#define VAR_RPZ_LOG_NAME 542 +#define VAR_FORCE_TOPLEVEL 266 +#define VAR_SERVER 267 +#define VAR_VERBOSITY 268 +#define VAR_NUM_THREADS 269 +#define VAR_PORT 270 +#define VAR_OUTGOING_RANGE 271 +#define VAR_INTERFACE 272 +#define VAR_PREFER_IP4 273 +#define VAR_DO_IP4 274 +#define VAR_DO_IP6 275 +#define VAR_PREFER_IP6 276 +#define VAR_DO_UDP 277 +#define VAR_DO_TCP 278 +#define VAR_TCP_MSS 279 +#define VAR_OUTGOING_TCP_MSS 280 +#define VAR_TCP_IDLE_TIMEOUT 281 +#define VAR_EDNS_TCP_KEEPALIVE 282 +#define VAR_EDNS_TCP_KEEPALIVE_TIMEOUT 283 +#define VAR_CHROOT 284 +#define VAR_USERNAME 285 +#define VAR_DIRECTORY 286 +#define VAR_LOGFILE 287 +#define VAR_PIDFILE 288 +#define VAR_MSG_CACHE_SIZE 289 +#define VAR_MSG_CACHE_SLABS 290 +#define VAR_NUM_QUERIES_PER_THREAD 291 +#define VAR_RRSET_CACHE_SIZE 292 +#define VAR_RRSET_CACHE_SLABS 293 +#define VAR_OUTGOING_NUM_TCP 294 +#define VAR_INFRA_HOST_TTL 295 +#define VAR_INFRA_LAME_TTL 296 +#define VAR_INFRA_CACHE_SLABS 297 +#define VAR_INFRA_CACHE_NUMHOSTS 298 +#define VAR_INFRA_CACHE_LAME_SIZE 299 +#define VAR_NAME 300 +#define VAR_STUB_ZONE 301 +#define VAR_STUB_HOST 302 +#define VAR_STUB_ADDR 303 +#define VAR_TARGET_FETCH_POLICY 304 +#define VAR_HARDEN_SHORT_BUFSIZE 305 +#define VAR_HARDEN_LARGE_QUERIES 306 +#define VAR_FORWARD_ZONE 307 +#define VAR_FORWARD_HOST 308 +#define VAR_FORWARD_ADDR 309 +#define VAR_DO_NOT_QUERY_ADDRESS 310 +#define VAR_HIDE_IDENTITY 311 +#define VAR_HIDE_VERSION 312 +#define VAR_IDENTITY 313 +#define VAR_VERSION 314 +#define VAR_HARDEN_GLUE 315 +#define VAR_MODULE_CONF 316 +#define VAR_TRUST_ANCHOR_FILE 317 +#define VAR_TRUST_ANCHOR 318 +#define VAR_VAL_OVERRIDE_DATE 319 +#define VAR_BOGUS_TTL 320 +#define VAR_VAL_CLEAN_ADDITIONAL 321 +#define VAR_VAL_PERMISSIVE_MODE 322 +#define VAR_INCOMING_NUM_TCP 323 +#define VAR_MSG_BUFFER_SIZE 324 +#define VAR_KEY_CACHE_SIZE 325 +#define VAR_KEY_CACHE_SLABS 326 +#define VAR_TRUSTED_KEYS_FILE 327 +#define VAR_VAL_NSEC3_KEYSIZE_ITERATIONS 328 +#define VAR_USE_SYSLOG 329 +#define VAR_OUTGOING_INTERFACE 330 +#define VAR_ROOT_HINTS 331 +#define VAR_DO_NOT_QUERY_LOCALHOST 332 +#define VAR_CACHE_MAX_TTL 333 +#define VAR_HARDEN_DNSSEC_STRIPPED 334 +#define VAR_ACCESS_CONTROL 335 +#define VAR_LOCAL_ZONE 336 +#define VAR_LOCAL_DATA 337 +#define VAR_INTERFACE_AUTOMATIC 338 +#define VAR_STATISTICS_INTERVAL 339 +#define VAR_DO_DAEMONIZE 340 +#define VAR_USE_CAPS_FOR_ID 341 +#define VAR_STATISTICS_CUMULATIVE 342 +#define VAR_OUTGOING_PORT_PERMIT 343 +#define VAR_OUTGOING_PORT_AVOID 344 +#define VAR_DLV_ANCHOR_FILE 345 +#define VAR_DLV_ANCHOR 346 +#define VAR_NEG_CACHE_SIZE 347 +#define VAR_HARDEN_REFERRAL_PATH 348 +#define VAR_PRIVATE_ADDRESS 349 +#define VAR_PRIVATE_DOMAIN 350 +#define VAR_REMOTE_CONTROL 351 +#define VAR_CONTROL_ENABLE 352 +#define VAR_CONTROL_INTERFACE 353 +#define VAR_CONTROL_PORT 354 +#define VAR_SERVER_KEY_FILE 355 +#define VAR_SERVER_CERT_FILE 356 +#define VAR_CONTROL_KEY_FILE 357 +#define VAR_CONTROL_CERT_FILE 358 +#define VAR_CONTROL_USE_CERT 359 +#define VAR_EXTENDED_STATISTICS 360 +#define VAR_LOCAL_DATA_PTR 361 +#define VAR_JOSTLE_TIMEOUT 362 +#define VAR_STUB_PRIME 363 +#define VAR_UNWANTED_REPLY_THRESHOLD 364 +#define VAR_LOG_TIME_ASCII 365 +#define VAR_DOMAIN_INSECURE 366 +#define VAR_PYTHON 367 +#define VAR_PYTHON_SCRIPT 368 +#define VAR_VAL_SIG_SKEW_MIN 369 +#define VAR_VAL_SIG_SKEW_MAX 370 +#define VAR_CACHE_MIN_TTL 371 +#define VAR_VAL_LOG_LEVEL 372 +#define VAR_AUTO_TRUST_ANCHOR_FILE 373 +#define VAR_KEEP_MISSING 374 +#define VAR_ADD_HOLDDOWN 375 +#define VAR_DEL_HOLDDOWN 376 +#define VAR_SO_RCVBUF 377 +#define VAR_EDNS_BUFFER_SIZE 378 +#define VAR_PREFETCH 379 +#define VAR_PREFETCH_KEY 380 +#define VAR_SO_SNDBUF 381 +#define VAR_SO_REUSEPORT 382 +#define VAR_HARDEN_BELOW_NXDOMAIN 383 +#define VAR_IGNORE_CD_FLAG 384 +#define VAR_LOG_QUERIES 385 +#define VAR_LOG_REPLIES 386 +#define VAR_LOG_LOCAL_ACTIONS 387 +#define VAR_TCP_UPSTREAM 388 +#define VAR_SSL_UPSTREAM 389 +#define VAR_SSL_SERVICE_KEY 390 +#define VAR_SSL_SERVICE_PEM 391 +#define VAR_SSL_PORT 392 +#define VAR_FORWARD_FIRST 393 +#define VAR_STUB_SSL_UPSTREAM 394 +#define VAR_FORWARD_SSL_UPSTREAM 395 +#define VAR_TLS_CERT_BUNDLE 396 +#define VAR_STUB_FIRST 397 +#define VAR_MINIMAL_RESPONSES 398 +#define VAR_RRSET_ROUNDROBIN 399 +#define VAR_MAX_UDP_SIZE 400 +#define VAR_DELAY_CLOSE 401 +#define VAR_UNBLOCK_LAN_ZONES 402 +#define VAR_INSECURE_LAN_ZONES 403 +#define VAR_INFRA_CACHE_MIN_RTT 404 +#define VAR_DNS64_PREFIX 405 +#define VAR_DNS64_SYNTHALL 406 +#define VAR_DNS64_IGNORE_AAAA 407 +#define VAR_DNSTAP 408 +#define VAR_DNSTAP_ENABLE 409 +#define VAR_DNSTAP_SOCKET_PATH 410 +#define VAR_DNSTAP_IP 411 +#define VAR_DNSTAP_TLS 412 +#define VAR_DNSTAP_TLS_SERVER_NAME 413 +#define VAR_DNSTAP_TLS_CERT_BUNDLE 414 +#define VAR_DNSTAP_TLS_CLIENT_KEY_FILE 415 +#define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 416 +#define VAR_DNSTAP_SEND_IDENTITY 417 +#define VAR_DNSTAP_SEND_VERSION 418 +#define VAR_DNSTAP_IDENTITY 419 +#define VAR_DNSTAP_VERSION 420 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 424 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 425 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 426 +#define VAR_RESPONSE_IP_TAG 427 +#define VAR_RESPONSE_IP 428 +#define VAR_RESPONSE_IP_DATA 429 +#define VAR_HARDEN_ALGO_DOWNGRADE 430 +#define VAR_IP_TRANSPARENT 431 +#define VAR_IP_DSCP 432 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 433 +#define VAR_IP_RATELIMIT 434 +#define VAR_IP_RATELIMIT_SLABS 435 +#define VAR_IP_RATELIMIT_SIZE 436 +#define VAR_RATELIMIT 437 +#define VAR_RATELIMIT_SLABS 438 +#define VAR_RATELIMIT_SIZE 439 +#define VAR_RATELIMIT_FOR_DOMAIN 440 +#define VAR_RATELIMIT_BELOW_DOMAIN 441 +#define VAR_IP_RATELIMIT_FACTOR 442 +#define VAR_RATELIMIT_FACTOR 443 +#define VAR_SEND_CLIENT_SUBNET 444 +#define VAR_CLIENT_SUBNET_ZONE 445 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 446 +#define VAR_CLIENT_SUBNET_OPCODE 447 +#define VAR_MAX_CLIENT_SUBNET_IPV4 448 +#define VAR_MAX_CLIENT_SUBNET_IPV6 449 +#define VAR_MIN_CLIENT_SUBNET_IPV4 450 +#define VAR_MIN_CLIENT_SUBNET_IPV6 451 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 452 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 453 +#define VAR_CAPS_WHITELIST 454 +#define VAR_CACHE_MAX_NEGATIVE_TTL 455 +#define VAR_PERMIT_SMALL_HOLDDOWN 456 +#define VAR_QNAME_MINIMISATION 457 +#define VAR_QNAME_MINIMISATION_STRICT 458 +#define VAR_IP_FREEBIND 459 +#define VAR_DEFINE_TAG 460 +#define VAR_LOCAL_ZONE_TAG 461 +#define VAR_ACCESS_CONTROL_TAG 462 +#define VAR_LOCAL_ZONE_OVERRIDE 463 +#define VAR_ACCESS_CONTROL_TAG_ACTION 464 +#define VAR_ACCESS_CONTROL_TAG_DATA 465 +#define VAR_VIEW 466 +#define VAR_ACCESS_CONTROL_VIEW 467 +#define VAR_VIEW_FIRST 468 +#define VAR_SERVE_EXPIRED 469 +#define VAR_SERVE_EXPIRED_TTL 470 +#define VAR_SERVE_EXPIRED_TTL_RESET 471 +#define VAR_SERVE_EXPIRED_REPLY_TTL 472 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 473 +#define VAR_FAKE_DSA 474 +#define VAR_FAKE_SHA1 475 +#define VAR_LOG_IDENTITY 476 +#define VAR_HIDE_TRUSTANCHOR 477 +#define VAR_TRUST_ANCHOR_SIGNALING 478 +#define VAR_AGGRESSIVE_NSEC 479 +#define VAR_USE_SYSTEMD 480 +#define VAR_SHM_ENABLE 481 +#define VAR_SHM_KEY 482 +#define VAR_ROOT_KEY_SENTINEL 483 +#define VAR_DNSCRYPT 484 +#define VAR_DNSCRYPT_ENABLE 485 +#define VAR_DNSCRYPT_PORT 486 +#define VAR_DNSCRYPT_PROVIDER 487 +#define VAR_DNSCRYPT_SECRET_KEY 488 +#define VAR_DNSCRYPT_PROVIDER_CERT 489 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 +#define VAR_IPSECMOD_ENABLED 495 +#define VAR_IPSECMOD_HOOK 496 +#define VAR_IPSECMOD_IGNORE_BOGUS 497 +#define VAR_IPSECMOD_MAX_TTL 498 +#define VAR_IPSECMOD_WHITELIST 499 +#define VAR_IPSECMOD_STRICT 500 +#define VAR_CACHEDB 501 +#define VAR_CACHEDB_BACKEND 502 +#define VAR_CACHEDB_SECRETSEED 503 +#define VAR_CACHEDB_REDISHOST 504 +#define VAR_CACHEDB_REDISPORT 505 +#define VAR_CACHEDB_REDISTIMEOUT 506 +#define VAR_CACHEDB_REDISEXPIRERECORDS 507 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 +#define VAR_FOR_UPSTREAM 509 +#define VAR_AUTH_ZONE 510 +#define VAR_ZONEFILE 511 +#define VAR_MASTER 512 +#define VAR_URL 513 +#define VAR_FOR_DOWNSTREAM 514 +#define VAR_FALLBACK_ENABLED 515 +#define VAR_TLS_ADDITIONAL_PORT 516 +#define VAR_LOW_RTT 517 +#define VAR_LOW_RTT_PERMIL 518 +#define VAR_FAST_SERVER_PERMIL 519 +#define VAR_FAST_SERVER_NUM 520 +#define VAR_ALLOW_NOTIFY 521 +#define VAR_TLS_WIN_CERT 522 +#define VAR_TCP_CONNECTION_LIMIT 523 +#define VAR_FORWARD_NO_CACHE 524 +#define VAR_STUB_NO_CACHE 525 +#define VAR_LOG_SERVFAIL 526 +#define VAR_DENY_ANY 527 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 +#define VAR_LOG_TAG_QUERYREPLY 529 +#define VAR_STREAM_WAIT_SIZE 530 +#define VAR_TLS_CIPHERS 531 +#define VAR_TLS_CIPHERSUITES 532 +#define VAR_TLS_USE_SNI 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -631,7 +633,7 @@ union YYSTYPE char* str; -#line 635 "util/configparser.h" +#line 637 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index c72a89135..7a6ad00f9 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -69,6 +69,7 @@ extern struct config_parser_state* cfg_parser; %token SPACE LETTER NEWLINE COMMENT COLON ANY ZONESTR %token STRING_ARG +%token VAR_FORCE_TOPLEVEL %token VAR_SERVER VAR_VERBOSITY VAR_NUM_THREADS VAR_PORT %token VAR_OUTGOING_RANGE VAR_INTERFACE VAR_PREFER_IP4 %token VAR_DO_IP4 VAR_DO_IP6 VAR_PREFER_IP6 VAR_DO_UDP VAR_DO_TCP @@ -182,16 +183,20 @@ toplevelvar: serverstart contents_server | stubstart contents_stub | rcstart contents_rc | dtstart contents_dt | viewstart contents_view | dnscstart contents_dnsc | cachedbstart contents_cachedb | ipsetstart contents_ipset | authstart contents_auth | - rpzstart contents_rpz + rpzstart contents_rpz | + force_toplevel ; - +force_toplevel: VAR_FORCE_TOPLEVEL + { + OUTYY(("\nP(force-toplevel)\n")); + } /* server: declaration */ serverstart: VAR_SERVER { - OUTYY(("\nP(server:)\n")); + OUTYY(("\nP(server:)\n")); } ; -contents_server: contents_server content_server +contents_server: contents_server content_server | ; content_server: server_num_threads | server_verbosity | server_port | server_outgoing_range | server_do_ip4 | From 8175161059dadce2a3370bf29bef9cfb40f5e4fe Mon Sep 17 00:00:00 2001 From: Jeremie Courreges-Anglas Date: Sun, 10 May 2020 16:46:48 +0200 Subject: [PATCH 02/81] Ensure proper alignment of cmsg buffers The cmsg macros expect a control message buffer to be aligned like a struct cmsghdr. The current layout around those stack-allocated buffers probably provides the required alignment (usually 4 bytes). Use a union to enforce proper alignment, in case future changes modify the stack layout. Spotted when chasing an unrelated bug with Otto Moerbeek (@omoerbeek). --- util/netevent.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/util/netevent.c b/util/netevent.c index f7bb9b897..159d344d6 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -447,7 +447,10 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, ssize_t sent; struct msghdr msg; struct iovec iov[1]; - char control[256]; + union { + struct cmsghdr hdr; + char buf[256]; + } control; #ifndef S_SPLINT_S struct cmsghdr *cmsg; #endif /* S_SPLINT_S */ @@ -465,9 +468,9 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, iov[0].iov_len = sldns_buffer_remaining(packet); msg.msg_iov = iov; msg.msg_iovlen = 1; - msg.msg_control = control; + msg.msg_control = control.buf; #ifndef S_SPLINT_S - msg.msg_controllen = sizeof(control); + msg.msg_controllen = sizeof(control.buf); #endif /* S_SPLINT_S */ msg.msg_flags = 0; @@ -584,7 +587,10 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) struct msghdr msg; struct iovec iov[1]; ssize_t rcv; - char ancil[256]; + union { + struct cmsghdr hdr; + char buf[256]; + } ancil; int i; #ifndef S_SPLINT_S struct cmsghdr* cmsg; @@ -608,9 +614,9 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) iov[0].iov_len = sldns_buffer_remaining(rep.c->buffer); msg.msg_iov = iov; msg.msg_iovlen = 1; - msg.msg_control = ancil; + msg.msg_control = ancil.buf; #ifndef S_SPLINT_S - msg.msg_controllen = sizeof(ancil); + msg.msg_controllen = sizeof(ancil.buf); #endif /* S_SPLINT_S */ msg.msg_flags = 0; rcv = recvmsg(fd, &msg, 0); From 8ac054733ba9e9ac59ba5c4f66e6ebcea5bfdeeb Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 30 Jun 2020 13:41:26 +0200 Subject: [PATCH 03/81] - Move reply list clean for serve expired mesh callback to after the reply is sent, so that script callbacks have reply_info. --- doc/Changelog | 4 ++++ services/mesh.c | 16 ++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index ff3810b9d..197e4b29b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +29 June 2020: Wouter + - Move reply list clean for serve expired mesh callback to after + the reply is sent, so that script callbacks have reply_info. + 24 June 2020: Wouter - iana portlist updated. - doxygen file comments for dynlibmodule. diff --git a/services/mesh.c b/services/mesh.c index 4bc4341c4..223414415 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1959,14 +1959,6 @@ mesh_serve_expired_callback(void* arg) log_dns_msg("Serve expired lookup", &qstate->qinfo, msg->rep); r = mstate->reply_list; - mstate->reply_list = NULL; - if(!mstate->reply_list && !mstate->cb_list && r) { - log_assert(mesh->num_reply_states > 0); - mesh->num_reply_states--; - if(mstate->super_set.count == 0) { - mesh->num_detached_states++; - } - } for(; r; r = r->next) { /* If address info is returned, it means the action should be an * 'inform' variant and the information should be logged. */ @@ -2000,6 +1992,14 @@ mesh_serve_expired_callback(void* arg) mesh->ans_expired++; } + mstate->reply_list = NULL; + if(!mstate->reply_list && !mstate->cb_list && r) { + log_assert(mesh->num_reply_states > 0); + mesh->num_reply_states--; + if(mstate->super_set.count == 0) { + mesh->num_detached_states++; + } + } while((c = mstate->cb_list) != NULL) { /* take this cb off the list; so that the list can be * changed, eg. by adds from the callback routine */ From 6f0c2956ac8834a1854fb1e811983d23d3ef0f92 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 30 Jun 2020 15:48:11 +0200 Subject: [PATCH 04/81] - Also move reply list clean for mesh callbacks to the scrip callback can see the reply_info. - Fix for mesh accounting if the reply list already empty to begin with. --- doc/Changelog | 4 ++++ services/mesh.c | 46 ++++++++++++++++++++-------------------------- 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 197e4b29b..64e1f50aa 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,10 @@ 29 June 2020: Wouter - Move reply list clean for serve expired mesh callback to after the reply is sent, so that script callbacks have reply_info. + - Also move reply list clean for mesh callbacks to the scrip callback + can see the reply_info. + - Fix for mesh accounting if the reply list already empty to begin + with. 24 June 2020: Wouter - iana portlist updated. diff --git a/services/mesh.c b/services/mesh.c index 223414415..b5d4aeeab 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1320,26 +1320,7 @@ void mesh_query_done(struct mesh_state* mstate) free(err); } } - if(mstate->reply_list) { - /* set the reply_list to NULL during the mesh_query_done - * processing, so that calls back into the mesh from - * tcp_req_info (deciding to drop the reply and thus - * unregister the mesh_reply from the mstate) are stopped - * because the list is empty. - * The mstate is then likely not a reply_state, and maybe - * also a detached_state. - */ - reply_list = mstate->reply_list; - mstate->reply_list = NULL; - if(!mstate->reply_list && !mstate->cb_list) { - /* was a reply state, not anymore */ - log_assert(mstate->s.env->mesh->num_reply_states > 0); - mstate->s.env->mesh->num_reply_states--; - } - if(!mstate->reply_list && !mstate->cb_list && - mstate->super_set.count == 0) - mstate->s.env->mesh->num_detached_states++; - } + reply_list = mstate->reply_list; for(r = reply_list; r; r = r->next) { /* if a response-ip address block has been stored the * information should be logged for each client. */ @@ -1381,6 +1362,17 @@ void mesh_query_done(struct mesh_state* mstate) prev_buffer = r_buffer; } } + if(mstate->reply_list) { + mstate->reply_list = NULL; + if(!mstate->reply_list && !mstate->cb_list) { + /* was a reply state, not anymore */ + log_assert(mstate->s.env->mesh->num_reply_states > 0); + mstate->s.env->mesh->num_reply_states--; + } + if(!mstate->reply_list && !mstate->cb_list && + mstate->super_set.count == 0) + mstate->s.env->mesh->num_detached_states++; + } mstate->replies_sent = 1; while((c = mstate->cb_list) != NULL) { /* take this cb off the list; so that the list can be @@ -1992,12 +1984,14 @@ mesh_serve_expired_callback(void* arg) mesh->ans_expired++; } - mstate->reply_list = NULL; - if(!mstate->reply_list && !mstate->cb_list && r) { - log_assert(mesh->num_reply_states > 0); - mesh->num_reply_states--; - if(mstate->super_set.count == 0) { - mesh->num_detached_states++; + if(mstate->reply_list) { + mstate->reply_list = NULL; + if(!mstate->reply_list && !mstate->cb_list && r) { + log_assert(mesh->num_reply_states > 0); + mesh->num_reply_states--; + if(mstate->super_set.count == 0) { + mesh->num_detached_states++; + } } } while((c = mstate->cb_list) != NULL) { From 84b020795676bf08730ff53c2b0bd594309e6c1b Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 30 Jun 2020 16:20:09 +0200 Subject: [PATCH 05/81] - Fix for mesh accounting when rpz decides to drop a reply with a tcp stream waiting for it. --- doc/Changelog | 2 ++ services/mesh.c | 16 +++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 64e1f50aa..878ea3aa7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -5,6 +5,8 @@ can see the reply_info. - Fix for mesh accounting if the reply list already empty to begin with. + - Fix for mesh accounting when rpz decides to drop a reply with a + tcp stream waiting for it. 24 June 2020: Wouter - iana portlist updated. diff --git a/services/mesh.c b/services/mesh.c index b5d4aeeab..12f861c7b 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1296,7 +1296,7 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, void mesh_query_done(struct mesh_state* mstate) { - struct mesh_reply* r, *reply_list = NULL; + struct mesh_reply* r; struct mesh_reply* prev = NULL; struct sldns_buffer* prev_buffer = NULL; struct mesh_cb* c; @@ -1320,8 +1320,7 @@ void mesh_query_done(struct mesh_state* mstate) free(err); } } - reply_list = mstate->reply_list; - for(r = reply_list; r; r = r->next) { + for(r = mstate->reply_list; r; r = r->next) { /* if a response-ip address block has been stored the * information should be logged for each client. */ if(mstate->s.respip_action_info && @@ -1345,7 +1344,15 @@ void mesh_query_done(struct mesh_state* mstate) /* if this query is determined to be dropped during the * mesh processing, this is the point to take that action. */ if(mstate->s.is_drop) { + /* briefly set the reply_list to NULL, so that the + * tcp req info cleanup routine that calls the mesh + * to deregister the meshstate for it is not done + * because the list is NULL and also accounting is not + * done there, but instead we do that here. */ + struct mesh_reply* reply_list = mstate->reply_list; + mstate->reply_list = NULL; comm_point_drop_reply(&r->query_reply); + mstate->reply_list = reply_list; } else { struct sldns_buffer* r_buffer = r->query_reply.c->buffer; if(r->query_reply.c->tcp_req_info) { @@ -1950,8 +1957,7 @@ mesh_serve_expired_callback(void* arg) if(verbosity >= VERB_ALGO) log_dns_msg("Serve expired lookup", &qstate->qinfo, msg->rep); - r = mstate->reply_list; - for(; r; r = r->next) { + for(r = mstate->reply_list; r; r = r->next) { /* If address info is returned, it means the action should be an * 'inform' variant and the information should be logged. */ if(actinfo.addrinfo) { From 52774b6b20a6d79f5500386976dc59cbe38a31f0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 30 Jun 2020 16:35:48 +0200 Subject: [PATCH 06/81] - Review fix for number of detached states due to use of variable after end of loop. --- doc/Changelog | 2 ++ services/mesh.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 878ea3aa7..a9c23bcab 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -7,6 +7,8 @@ with. - Fix for mesh accounting when rpz decides to drop a reply with a tcp stream waiting for it. + - Review fix for number of detached states due to use of variable + after end of loop. 24 June 2020: Wouter - iana portlist updated. diff --git a/services/mesh.c b/services/mesh.c index 12f861c7b..922e6b32e 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1992,7 +1992,7 @@ mesh_serve_expired_callback(void* arg) } if(mstate->reply_list) { mstate->reply_list = NULL; - if(!mstate->reply_list && !mstate->cb_list && r) { + if(!mstate->reply_list && !mstate->cb_list) { log_assert(mesh->num_reply_states > 0); mesh->num_reply_states--; if(mstate->super_set.count == 0) { From 06d33f61c1f90aa551b644d12d9c70594f5377f7 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 30 Jun 2020 17:22:43 +0200 Subject: [PATCH 07/81] - Fix tcp req info drop due to size call into mesh accounting removal of mesh state during mesh send reply. --- doc/Changelog | 2 ++ services/mesh.c | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index a9c23bcab..f5aca5af6 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -9,6 +9,8 @@ tcp stream waiting for it. - Review fix for number of detached states due to use of variable after end of loop. + - Fix tcp req info drop due to size call into mesh accounting + removal of mesh state during mesh send reply. 24 June 2020: Wouter - iana portlist updated. diff --git a/services/mesh.c b/services/mesh.c index 922e6b32e..4b0c5db41 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -1355,12 +1355,20 @@ void mesh_query_done(struct mesh_state* mstate) mstate->reply_list = reply_list; } else { struct sldns_buffer* r_buffer = r->query_reply.c->buffer; + struct mesh_reply* rlist = mstate->reply_list; if(r->query_reply.c->tcp_req_info) { r_buffer = r->query_reply.c->tcp_req_info->spool_buffer; prev_buffer = NULL; } + /* briefly set the replylist to null in case the + * meshsendreply calls tcpreqinfo sendreply that + * comm_point_drops because of size, and then the + * null stops the mesh state remove and thus + * reply_list modification and accounting */ + mstate->reply_list = NULL; mesh_send_reply(mstate, mstate->s.return_rcode, rep, r, r_buffer, prev, prev_buffer); + mstate->reply_list = rlist; if(r->query_reply.c->tcp_req_info) { tcp_req_info_remove_mesh_state(r->query_reply.c->tcp_req_info, mstate); r_buffer = NULL; @@ -1874,7 +1882,7 @@ mesh_serve_expired_callback(void* arg) { struct mesh_state* mstate = (struct mesh_state*) arg; struct module_qstate* qstate = &mstate->s; - struct mesh_reply* r; + struct mesh_reply* r, *rlist; struct mesh_area* mesh = qstate->env->mesh; struct dns_msg* msg; struct mesh_cb* c; @@ -1979,8 +1987,15 @@ mesh_serve_expired_callback(void* arg) r_buffer = r->query_reply.c->buffer; if(r->query_reply.c->tcp_req_info) r_buffer = r->query_reply.c->tcp_req_info->spool_buffer; + /* briefly set the replylist to null in case the meshsendreply + * calls tcpreqinfo sendreply that comm_point_drops because + * of size, and then the null stops the mesh state remove and + * thus reply_list modification and accounting */ + rlist = mstate->reply_list; + mstate->reply_list = NULL; mesh_send_reply(mstate, LDNS_RCODE_NOERROR, msg->rep, r, r_buffer, prev, prev_buffer); + mstate->reply_list = rlist; if(r->query_reply.c->tcp_req_info) tcp_req_info_remove_mesh_state(r->query_reply.c->tcp_req_info, mstate); prev = r; From 233c14a47699b16792c05507c496eadab5679634 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 6 Jul 2020 11:33:07 +0200 Subject: [PATCH 08/81] - run_vm cleanup better and removes trailing slash on single argument. --- doc/Changelog | 3 +++ testcode/run_vm.sh | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index f5aca5af6..58f0493bd 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +6 July 2020: Wouter + - run_vm cleanup better and removes trailing slash on single argument. + 29 June 2020: Wouter - Move reply list clean for serve expired mesh callback to after the reply is sent, so that script callbacks have reply_info. diff --git a/testcode/run_vm.sh b/testcode/run_vm.sh index d14c63742..5f599e144 100644 --- a/testcode/run_vm.sh +++ b/testcode/run_vm.sh @@ -26,12 +26,17 @@ cd testdata TPKG=../testcode/mini_tdir.sh #RUNLIST=`(ls -1d *.tdir|grep -v '^0[016]')` RUNLIST=`(ls -1d *.tdir)` -if test "$#" = "1"; then RUNLIST="$1"; fi +if test "$#" = "1"; then + RUNLIST="$1"; + if echo "$RUNLIST" | grep '/$' >/dev/null; then + RUNLIST=`echo "$RUNLIST" | sed -e 's?/$??'` + fi +fi # fix up tdir that was edited on keyboard interrupt. cleanup() { echo cleanup - if test -f "$t.bak"; then mv "$t.bak" "$t"; fi + if test -f "$t.bak"; then rm -fr "${t}"; mv "$t.bak" "$t"; fi exit 0 } trap cleanup INT From 4d009e19fc80b2642c2ce0fd04b819ca70102ca4 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 7 Jul 2020 09:00:04 +0200 Subject: [PATCH 09/81] - Fix #259: Fix unbound-checkconf does not check view existence. unbound-checkconf checks access-control-view, access-control-tags, access-control-tag-actions and access-control-tag-datas. - Fix offset of error printout for access-control-tag-datas. --- daemon/acl_list.c | 2 +- doc/Changelog | 6 +++ smallapp/unbound-checkconf.c | 90 ++++++++++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+), 1 deletion(-) diff --git a/daemon/acl_list.c b/daemon/acl_list.c index c16a920d9..84324575e 100644 --- a/daemon/acl_list.c +++ b/daemon/acl_list.c @@ -273,7 +273,7 @@ check_data(const char* data, const struct config_strlist* head) if(res == 0) return 1; log_err("rr data [char %d] parse error %s", - (int)LDNS_WIREPARSE_OFFSET(res)-13, + (int)LDNS_WIREPARSE_OFFSET(res)-2, sldns_get_errorstr_parse(res)); return 0; } diff --git a/doc/Changelog b/doc/Changelog index 58f0493bd..93d69d945 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +7 July 2020: Wouter + - Fix #259: Fix unbound-checkconf does not check view existence. + unbound-checkconf checks access-control-view, access-control-tags, + access-control-tag-actions and access-control-tag-datas. + - Fix offset of error printout for access-control-tag-datas. + 6 July 2020: Wouter - run_vm cleanup better and removes trailing slash on single argument. diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 54a0ab78c..409d29fea 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -58,6 +58,7 @@ #include "services/authzone.h" #include "respip/respip.h" #include "sldns/sbuffer.h" +#include "sldns/str2wire.h" #ifdef HAVE_GETOPT_H #include #endif @@ -194,6 +195,94 @@ localzonechecks(struct config_file* cfg) local_zones_delete(zs); } +/** checks for acl and views */ +static void +acl_view_checks(struct config_file* cfg, struct views* views) +{ + int d; + struct sockaddr_storage a; + socklen_t alen; + struct config_str2list* acl; + struct config_str3list* s3; + struct config_strbytelist* sb; + struct view* v; + + /* acl_view */ + for(acl=cfg->acl_view; acl; acl = acl->next) { + if(!netblockstrtoaddr(acl->str, UNBOUND_DNS_PORT, &a, &alen, + &d)) { + fatal_exit("cannot parse access-control-view " + "address %s %s", acl->str, acl->str2); + } + v = views_find_view(views, acl->str2, 0); + if(!v) { + fatal_exit("cannot find view for " + "access-control-view: %s %s", + acl->str, acl->str2); + } + lock_rw_unlock(&v->lock); + } + + /* acl_tags */ + for(sb=cfg->acl_tags; sb; sb = sb->next) { + if(!netblockstrtoaddr(sb->str, UNBOUND_DNS_PORT, &a, &alen, + &d)) { + fatal_exit("cannot parse access-control-tags " + "address %s", sb->str); + } + } + + /* acl_tag_actions */ + for(s3=cfg->acl_tag_actions; s3; s3 = s3->next) { + enum localzone_type t; + if(!netblockstrtoaddr(s3->str, UNBOUND_DNS_PORT, &a, &alen, + &d)) { + fatal_exit("cannot parse access-control-tag-actions " + "address %s %s %s", + s3->str, s3->str2, s3->str3); + } + if(find_tag_id(cfg, s3->str2) == -1) { + fatal_exit("cannot parse tag %s (define-tag it), " + "for access-control-tag-actions: %s %s %s", + s3->str2, s3->str, s3->str2, s3->str3); + } + if(!local_zone_str2type(s3->str3, &t)) { + fatal_exit("cannot parse access control action type %s" + " for access-control-tag-actions: %s %s %s", + s3->str3, s3->str, s3->str2, s3->str3); + } + } + + /* acl_tag_datas */ + for(s3=cfg->acl_tag_datas; s3; s3 = s3->next) { + char buf[65536]; + uint8_t rr[LDNS_RR_BUF_SIZE]; + size_t len = sizeof(rr); + int res; + if(!netblockstrtoaddr(s3->str, UNBOUND_DNS_PORT, &a, &alen, + &d)) { + fatal_exit("cannot parse access-control-tag-datas address %s %s '%s'", + s3->str, s3->str2, s3->str3); + } + if(find_tag_id(cfg, s3->str2) == -1) { + fatal_exit("cannot parse tag %s (define-tag it), " + "for access-control-tag-datas: %s %s '%s'", + s3->str2, s3->str, s3->str2, s3->str3); + } + /* '.' is sufficient for validation, and it makes the call to + * sldns_wirerr_get_type() simpler below. */ + snprintf(buf, sizeof(buf), "%s %s", ".", s3->str3); + res = sldns_str2wire_rr_buf(buf, rr, &len, NULL, 3600, NULL, + 0, NULL, 0); + if(res != 0) { + fatal_exit("cannot parse rr data [char %d] parse error %s, for access-control-tag-datas: %s %s '%s'", + (int)LDNS_WIREPARSE_OFFSET(res)-2, + sldns_get_errorstr_parse(res), + s3->str, s3->str2, s3->str3); + } + } +} + /** check view and response-ip configuration */ static void view_and_respipchecks(struct config_file* cfg) @@ -211,6 +300,7 @@ view_and_respipchecks(struct config_file* cfg) fatal_exit("Could not setup respip set"); if(!respip_views_apply_cfg(views, cfg, &ignored)) fatal_exit("Could not setup per-view respip sets"); + acl_view_checks(cfg, views); views_delete(views); respip_set_delete(respip); } From d84529cc0ec73564a761c732e709702c72a44d32 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 7 Jul 2020 10:18:56 +0200 Subject: [PATCH 10/81] - Review fixes for checkconf #259 change. --- doc/Changelog | 1 + smallapp/unbound-checkconf.c | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 93d69d945..ff1f36bbe 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,7 @@ unbound-checkconf checks access-control-view, access-control-tags, access-control-tag-actions and access-control-tag-datas. - Fix offset of error printout for access-control-tag-datas. + - Review fixes for checkconf #259 change. 6 July 2020: Wouter - run_vm cleanup better and removes trailing slash on single argument. diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 409d29fea..0cf348add 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -197,7 +197,7 @@ localzonechecks(struct config_file* cfg) /** checks for acl and views */ static void -acl_view_checks(struct config_file* cfg, struct views* views) +acl_view_tag_checks(struct config_file* cfg, struct views* views) { int d; struct sockaddr_storage a; @@ -205,10 +205,10 @@ acl_view_checks(struct config_file* cfg, struct views* views) struct config_str2list* acl; struct config_str3list* s3; struct config_strbytelist* sb; - struct view* v; /* acl_view */ for(acl=cfg->acl_view; acl; acl = acl->next) { + struct view* v; if(!netblockstrtoaddr(acl->str, UNBOUND_DNS_PORT, &a, &alen, &d)) { fatal_exit("cannot parse access-control-view " @@ -300,7 +300,7 @@ view_and_respipchecks(struct config_file* cfg) fatal_exit("Could not setup respip set"); if(!respip_views_apply_cfg(views, cfg, &ignored)) fatal_exit("Could not setup per-view respip sets"); - acl_view_checks(cfg, views); + acl_view_tag_checks(cfg, views); views_delete(views); respip_set_delete(respip); } From ff50993f3614c11c5c367b83e4e259f8b3e673fb Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 8 Jul 2020 11:43:50 +0200 Subject: [PATCH 11/81] - Fix add missing DSA header, for compilation without deprecated OpenSSL APIs. --- doc/Changelog | 4 ++++ validator/val_secalgo.c | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index ff1f36bbe..5c257c7dc 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +8 July 2020: Wouter + - Fix add missing DSA header, for compilation without deprecated + OpenSSL APIs. + 7 July 2020: Wouter - Fix #259: Fix unbound-checkconf does not check view existence. unbound-checkconf checks access-control-view, access-control-tags, diff --git a/validator/val_secalgo.c b/validator/val_secalgo.c index 3dbbe9ac9..65bca8b69 100644 --- a/validator/val_secalgo.c +++ b/validator/val_secalgo.c @@ -77,6 +77,10 @@ int fake_sha1 = 0; #include #endif +#if defined(HAVE_OPENSSL_DSA_H) && defined(USE_DSA) +#include +#endif + /** * Output a libcrypto openssl error to the logfile. * @param str: string to add to it. From e99b5046ebaca64d48b5fa26b323a14f8bb1b6ef Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 8 Jul 2020 16:22:39 +0200 Subject: [PATCH 12/81] - Fix to use SSL_CTX_set_tlsext_ticket_key_evp_cb in OpenSSL 3.0.0-alpha4. - Longer keys for the test set, this avoids weak crypto errors. --- config.h.in | 8 ++- configure | 6 +- configure.ac | 6 +- doc/Changelog | 3 + .../09-unbound-control.tdir/bad_control.key | 50 ++++++++++---- .../09-unbound-control.tdir/bad_control.pem | 29 +++++--- .../09-unbound-control.tdir/bad_server.key | 50 ++++++++++---- .../09-unbound-control.tdir/bad_server.pem | 29 +++++--- .../unbound_control.key | 50 ++++++++++---- .../unbound_control.pem | 29 +++++--- .../unbound_server.key | 50 ++++++++++---- .../unbound_server.pem | 29 +++++--- .../10-unbound-anchor.tdir/keys/test_cert.pem | 26 +++---- .../keys/unbound-control-setup | 2 +- .../keys/unbound_control.key | 56 ++++++++++------ .../keys/unbound_control.pem | 29 ++++---- .../keys/unbound_server.key | 56 ++++++++++------ .../keys/unbound_server.pem | 32 +++++---- testdata/ctrl_itr.tdir/unbound_control.key | 50 ++++++++++---- testdata/ctrl_itr.tdir/unbound_control.pem | 29 +++++--- testdata/ctrl_itr.tdir/unbound_server.key | 50 ++++++++++---- testdata/ctrl_itr.tdir/unbound_server.pem | 29 +++++--- testdata/ctrl_pipe.tdir/unbound_control.key | 50 ++++++++++---- testdata/ctrl_pipe.tdir/unbound_control.pem | 29 +++++--- testdata/ctrl_pipe.tdir/unbound_server.key | 50 ++++++++++---- testdata/ctrl_pipe.tdir/unbound_server.pem | 29 +++++--- testdata/dnstap.tdir/unbound_control.key | 50 ++++++++++---- testdata/dnstap.tdir/unbound_control.pem | 29 +++++--- testdata/dnstap.tdir/unbound_server.key | 50 ++++++++++---- testdata/dnstap.tdir/unbound_server.pem | 29 +++++--- .../dnstap_reconnect.tdir/unbound_control.key | 50 ++++++++++---- .../dnstap_reconnect.tdir/unbound_control.pem | 29 +++++--- .../dnstap_reconnect.tdir/unbound_server.key | 50 ++++++++++---- .../dnstap_reconnect.tdir/unbound_server.pem | 29 +++++--- testdata/dnstap_tcp.tdir/unbound_control.key | 50 ++++++++++---- testdata/dnstap_tcp.tdir/unbound_control.pem | 29 +++++--- testdata/dnstap_tcp.tdir/unbound_server.key | 50 ++++++++++---- testdata/dnstap_tcp.tdir/unbound_server.pem | 29 +++++--- testdata/dnstap_tls.tdir/unbound_control.key | 50 ++++++++++---- testdata/dnstap_tls.tdir/unbound_control.pem | 29 +++++--- testdata/dnstap_tls.tdir/unbound_server.key | 50 ++++++++++---- testdata/dnstap_tls.tdir/unbound_server.pem | 29 +++++--- .../unbound_control.key | 50 ++++++++++---- .../unbound_control.pem | 29 +++++--- .../unbound_server.key | 50 ++++++++++---- .../unbound_server.pem | 29 +++++--- .../unbound_control.key | 50 ++++++++++---- .../unbound_control.pem | 29 +++++--- .../unbound_server.key | 50 ++++++++++---- .../unbound_server.pem | 29 +++++--- .../unbound_control.key | 50 ++++++++++---- .../unbound_control.pem | 29 +++++--- .../unbound_server.key | 50 ++++++++++---- .../unbound_server.pem | 29 +++++--- .../unbound_control.key | 50 ++++++++++---- .../unbound_control.pem | 29 +++++--- .../unbound_server.key | 50 ++++++++++---- .../unbound_server.pem | 29 +++++--- testdata/dynlibmod.tdir/unbound_control.key | 50 ++++++++++---- testdata/dynlibmod.tdir/unbound_control.pem | 29 +++++--- testdata/dynlibmod.tdir/unbound_server.key | 50 ++++++++++---- testdata/dynlibmod.tdir/unbound_server.pem | 29 +++++--- testdata/fwd_bogus.tdir/unbound_control.key | 50 ++++++++++---- testdata/fwd_bogus.tdir/unbound_control.pem | 29 +++++--- testdata/fwd_bogus.tdir/unbound_server.key | 50 ++++++++++---- testdata/fwd_bogus.tdir/unbound_server.pem | 29 +++++--- .../remote-threaded.tdir/unbound_control.key | 50 ++++++++++---- .../remote-threaded.tdir/unbound_control.pem | 29 +++++--- .../remote-threaded.tdir/unbound_server.key | 50 ++++++++++---- .../remote-threaded.tdir/unbound_server.pem | 29 +++++--- .../ssl_req_order.tdir/unbound_server.key | 50 ++++++++++---- .../ssl_req_order.tdir/unbound_server.pem | 29 +++++--- .../ssl_req_timeout.tdir/unbound_server.key | 50 ++++++++++---- .../ssl_req_timeout.tdir/unbound_server.pem | 29 +++++--- testdata/stream_ssl.tdir/unbound_control.key | 50 ++++++++++---- testdata/stream_ssl.tdir/unbound_control.pem | 29 +++++--- testdata/stream_ssl.tdir/unbound_server.key | 50 ++++++++++---- testdata/stream_ssl.tdir/unbound_server.pem | 29 +++++--- util/net_help.c | 67 ++++++++++++++++++- util/net_help.h | 14 ---- 80 files changed, 2142 insertions(+), 849 deletions(-) diff --git a/config.h.in b/config.h.in index aa3e6665b..f7a4095ed 100644 --- a/config.h.in +++ b/config.h.in @@ -386,6 +386,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_CONF_H +/* Define to 1 if you have the header file. */ +#undef HAVE_OPENSSL_CORE_NAMES_H + /* Define to 1 if you have the header file. */ #undef HAVE_OPENSSL_DH_H @@ -500,8 +503,9 @@ /* Define to 1 if you have the `SSL_CTX_set_security_level' function. */ #undef HAVE_SSL_CTX_SET_SECURITY_LEVEL -/* Define to 1 if you have the `SSL_CTX_set_tlsext_ticket_key_cb' function. */ -#undef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_CB +/* Define to 1 if you have the `SSL_CTX_set_tlsext_ticket_key_evp_cb' + function. */ +#undef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB /* Define to 1 if you have the `SSL_get0_peername' function. */ #undef HAVE_SSL_GET0_PEERNAME diff --git a/configure b/configure index 6c3e695fa..ae72d891e 100755 --- a/configure +++ b/configure @@ -18326,7 +18326,7 @@ else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi -for ac_header in openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h +for ac_header in openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h openssl/core_names.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default @@ -18340,7 +18340,7 @@ fi done -for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify SSL_CTX_set_tlsext_ticket_key_cb EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback +for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -18356,7 +18356,7 @@ done # these check_funcs need -lssl BAKLIBS="$LIBS" LIBS="-lssl $LIBS" -for ac_func in OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites +for ac_func in OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/configure.ac b/configure.ac index d1f7998e2..5c373d9d8 100644 --- a/configure.ac +++ b/configure.ac @@ -850,13 +850,13 @@ if grep VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/ else AC_MSG_RESULT([no]) fi -AC_CHECK_HEADERS([openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h],,, [AC_INCLUDES_DEFAULT]) -AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify SSL_CTX_set_tlsext_ticket_key_cb EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback]) +AC_CHECK_HEADERS([openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h openssl/core_names.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback]) # these check_funcs need -lssl BAKLIBS="$LIBS" LIBS="-lssl $LIBS" -AC_CHECK_FUNCS([OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites]) +AC_CHECK_FUNCS([OPENSSL_init_ssl SSL_CTX_set_security_level SSL_set1_host SSL_get0_peername X509_VERIFY_PARAM_set1_host SSL_CTX_set_ciphersuites SSL_CTX_set_tlsext_ticket_key_evp_cb]) LIBS="$BAKLIBS" AC_CHECK_DECLS([SSL_COMP_get_compression_methods,sk_SSL_COMP_pop_free,SSL_CTX_set_ecdh_auto], [], [], [ diff --git a/doc/Changelog b/doc/Changelog index 5c257c7dc..f4304bddf 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,9 @@ 8 July 2020: Wouter - Fix add missing DSA header, for compilation without deprecated OpenSSL APIs. + - Fix to use SSL_CTX_set_tlsext_ticket_key_evp_cb in OpenSSL + 3.0.0-alpha4. + - Longer keys for the test set, this avoids weak crypto errors. 7 July 2020: Wouter - Fix #259: Fix unbound-checkconf does not check view existence. diff --git a/testdata/09-unbound-control.tdir/bad_control.key b/testdata/09-unbound-control.tdir/bad_control.key index d29cdbc91..84d3883ed 100644 --- a/testdata/09-unbound-control.tdir/bad_control.key +++ b/testdata/09-unbound-control.tdir/bad_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/09-unbound-control.tdir/bad_control.pem b/testdata/09-unbound-control.tdir/bad_control.pem index e06b84720..0785acaeb 100644 --- a/testdata/09-unbound-control.tdir/bad_control.pem +++ b/testdata/09-unbound-control.tdir/bad_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQDd5/rocjG5vDANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkyNjEyMjQ0NFoXDTI4MDYxMzEyMjQ0NFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDt -i51Z6qASvAjPFFhLLlq8BwtsnmfqMPMn57dKAghb4OifeL4GSLOE02/hKDkdkOva -UG2UqDNh2OoPTuJk4A+mG2LJoziFhHKlIebo9v2YiFWOBVtODWc3tXPT1IlSEN0x -nAGelMmeLcPeCPe+A5IDlIHzF/+YiDgS38S9dL17owIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAHpvcKqY48X9WsqogV16L+zT7iXhZ4tySA9EBk1a+0gud/iDPKSBi7mK -4rzphVfb4S207dVmTG+1WNpa6l3pTGML6XLElxqIu/kr7w4cF0rKvZxWPsBRqYjH -5HrK8CrQ0+YvUHXiu7IaACLGvKXY4Tqa3HQyvEtzLWJ4HhOrGx8F +MIIDszCCAhsCFEm6EpzKglG+V66IyIlx6Q2y3y8nMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMzA3WhcNNDAwMzI1MTMzMzA3 +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQC3/c89kYzt5J0KcRDTh/pj5eeanXTmC3GqgfEd/IYUbyWM +1J1PWEoGOuDUFFWzNOD5N3lX5ji8AdbbkS2+6+DQNAE0Mq2sxNNtNkpBtPoDteDK +njY6PwTJcVazwE3H+OgjWwAxSIKM8qkoAjlsgdXXwi3ifbwxdZNVfmZ/ByPzZc9N +CU7o6FNe0DjmJ08sUqQKngfzv0Qh8ijWx+T45MuOhI0tcU3cGgj0IhPpZkqtjSkC +J4uN2i1KWKvH9SnCmiMCnohXHONnY8ecllsHAfFU9ifKwyiBwpD0LIvWMFPamFZV +7YlgkXDAaDOIkfkIkQZWBaRy0S2C4q5vNIIh/1G5fqP+ffZlG0B5yGbY6LZbDEav +20W7MteBiy78xD4CHNwU/UwQaXIKTIvZ/GAOvLfhGrtFVBAv0+iWEFiTaithOWyM +JVGQbNe+kUgXw48MQSxfPZNMzaeSIKVrUaqwZcvfG48WMYP4IQwjmMHtT6PW4vb7 +Fv+BVQwDG+k0cANxbX8CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEATI+xHWEiq3SK +9Dw2FBiD7GPaaPAh/u5h+QxaLS9G5a6Djh6F9RT3To+gRVeiaAaIPg53asGM5TGR +ojv9nI8cIvi3dL6VKhHSdomldFjfQYmF/uSKEYsHaggceGE/GsG8J8g79HXGRp2y +m5hkACKFh5ZcSHeJBplv7agDbBZ6w5qQaY6QsnYLrAK7B3Jo1Xx+JEKzmgnp4TwV +Ni4wezgLiG+buJ5lXEYr2Rm7HR/cxLRN7CFrpUoavFUvqLKNpXO8MJFx+BkO5/JT +pgv0O/ll9aT+kuegUpf9kcUzhpsw1N4W/JzZOyJAdxrrQ88aNZm+7d433wDBt/WF +BCV4d5wEASxfQALEQa+/1FebIsDfQyBAOHdTAVkupZ00oeNerKe+mHFmNjj04vn8 +LwGgVuADCBJVCDhEqHLEXUqiGeSHJhAJO9pjma7r7H81OtAs/xVC8j8hqe8wLBKg +XNjWQ9QmNXt9VVQCMomro9lmoDozr9k1vsGtUsT3yQEAABQYwIjp -----END CERTIFICATE----- diff --git a/testdata/09-unbound-control.tdir/bad_server.key b/testdata/09-unbound-control.tdir/bad_server.key index 0dbb134b5..d64d05bf5 100644 --- a/testdata/09-unbound-control.tdir/bad_server.key +++ b/testdata/09-unbound-control.tdir/bad_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/09-unbound-control.tdir/bad_server.pem b/testdata/09-unbound-control.tdir/bad_server.pem index 983247ac7..b81fb19f2 100644 --- a/testdata/09-unbound-control.tdir/bad_server.pem +++ b/testdata/09-unbound-control.tdir/bad_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQCDugnhq8B6LzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkyNjEyMjQ0M1oXDTI4MDYxMzEyMjQ0M1owEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvYbqzRwbQe0B -RLjyTpwspVFlBdv1Et7/ckEEF57LblzEF0Wqtdbr4i5sGhrq1fbZ4F+fRyE7AU++ -DUK7RSnxAy1Yi65tmqwDPTs7J+LZ799B1z0Q41DnNTNOUO1M42kqzr/k5DxKsobV -Mmj9Q2KNG3Jm8bUpGHNmRFgsIT5JVMECAwEAATANBgkqhkiG9w0BAQUFAAOBgQCy -zGMW35/9xXoEWsuLFWUOaEKVq5DXuXtXbcMpDW6k2ELoraa305vh7Zwhj5JSqfcm -O0xyqIzXvz/cYdyOTgEkdMDZ/EvQsxKTwvj6eA4614yB1r3Ju5eZd4Gpo6BHhSpu -oqsrr0duJ+JOANTyaBplIxM1sjHbR4FGtmrFknBYBQ== +MIIDqzCCAhMCFFzmVNbhjiApmjK3VeO/j9TBp8yOMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMzA3WhcNNDAwMzI1MTMzMzA3 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAr7FId+AlZUWP6MK9xfV0hJ9ooJdcL0sm9yZsWY4UYOlqcTGERah/XvQm +sOaKcMg8Wof24LAvo2vmariBYZoS61AAi6MeHHrPh8M2ZDMZQgW4nZC8A0biro93 +nMLU1VxgycSVmj29p18IdNzsYWxC7t+/6AWQSlwD+9YFOYrVWQYxEcSZ7gZqoh08 +mDsNRjnVs7nagPAbk/B9jj9zhvgp+0d5h25Ms7Td22t7DfsGlL8Ei3ewFwaqjThh +hVHEVwARBLYGb2ZsZS5EMJv2W/V0k6yQZ+rV07+i0oZQ0cGxOuUy9TNO7HfiI4ri +2x26Wm0YH1qgK5miUIAkbL2E/iWVxMfQOdEAZuOmUpUFOFpm/XHL1/pCyiqOb98j +jLE93UoNPZdsjrbjfQ/WPkap+vtigVZJJPet6F9x4S5XvrhXkV2JWIYMvhnrs9Np +veCOe1lcxNVSsIAtMxsZKi2dIq+mRhfm9/UGoOmj8UxIQUepJJv1IHcdASWkTAMm +USyF7z7DAgMBAAEwDQYJKoZIhvcNAQELBQADggGBAG+IhOsdEiaVCOB8PBRGJQ8F +/kyeQOtE7pPPkH57qYwAW9cxdSoiIxrvase30IGLWmOzjiAc/igf1qz/bVpwFXQr +XohzyeQJ2znlGzUbo67c8rocvWxHzvZwFuQEysJp/E9ft5kiWwoU/xVpoK5p9sxW +zRTTdpA24x6rqvk1ZFzwWGSg0yhjOYfwvwg3kGCbwe3GzAk1J65E+uJPFoLySbNL +p3eUDA2rUKDjVobJOEhtV8k/l+hB0kKwiz/A2sbMT/OoByWMNFKSkmDbNi5m5gJH +FHsZsucbL6ppLy7fmOiPlx6xejbiTR3uAn0aQImdHA5kyfAXLKhTkyYdjWHiHqdQ +XMxi0Ci7/HO9mRupbcjRZEPs//ozMxjOAg4VNasDLdnDI4EKrClqYPjsfoXXXiZf +YTPH9QypxJFGmGEH865BNacEjDBeag8ck1ZTiK/GlrAJMqfV5/60GWBGRQVV/Tvd +WXWY2x0gVp2fxtxF8JCvHKAcfUg2+LrUS7fbMx2Niw== -----END CERTIFICATE----- diff --git a/testdata/09-unbound-control.tdir/unbound_control.key b/testdata/09-unbound-control.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/09-unbound-control.tdir/unbound_control.key +++ b/testdata/09-unbound-control.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/09-unbound-control.tdir/unbound_control.pem b/testdata/09-unbound-control.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/09-unbound-control.tdir/unbound_control.pem +++ b/testdata/09-unbound-control.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/09-unbound-control.tdir/unbound_server.key b/testdata/09-unbound-control.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/09-unbound-control.tdir/unbound_server.key +++ b/testdata/09-unbound-control.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/09-unbound-control.tdir/unbound_server.pem b/testdata/09-unbound-control.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/09-unbound-control.tdir/unbound_server.pem +++ b/testdata/09-unbound-control.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/10-unbound-anchor.tdir/keys/test_cert.pem b/testdata/10-unbound-anchor.tdir/keys/test_cert.pem index 6e588a4ab..1db9680cb 100644 --- a/testdata/10-unbound-anchor.tdir/keys/test_cert.pem +++ b/testdata/10-unbound-anchor.tdir/keys/test_cert.pem @@ -1,15 +1,15 @@ -----BEGIN CERTIFICATE----- -MIICWTCCAYKgAwIBAgIJAN5YIkuCvJf5MA0GCSqGSIb3DQEBBQUAMCYxDjAMBgNV -BAMTBXBldGFsMRQwEgYJKoZIhvcNAQkBFgVwZXRhbDAeFw0xMzAxMTcxMTUyNDVa -Fw0zMjEwMDQxMTUyNDVaMCYxDjAMBgNVBAMTBXBldGFsMRQwEgYJKoZIhvcNAQkB -FgVwZXRhbDCB3zANBgkqhkiG9w0BAQEFAAOBzQAwgckCgcEAuPBoYZiFOuk2SnN0 -IsheC+W7JvAJcv8tksyz/hgAnqStDnDrQ4trF607aCQ7xjj2fSAqpiMvLv0P3Ctu -rcTRHmRXApS3GBf1PjWqoxMK8JBxCIHN4PKpyq4czOtSPH6AFlU+3KsRRwymLgpT -SE15NYv/2M6Z3/cL1SkOdVvVDrZv1gO4OCAxwrgI6HMsjQtwe16mGsBQzrHTCOGV -u4QtISEUDrwZL272PFsZrEpHXd9LtSpqCEoOMujr54pKxBEJAgMBAAGjDzANMAsG -A1UdDwQEAwIChDANBgkqhkiG9w0BAQUFAAOBwQCaA3ys5hDPMNV1oXIxH6u2KfAX -C9tYJId/SR0x8whsZuNaSEZAgImdM5dnyWdjey8Pio772E9/F2aUBGFkdadZx4My -d7hBfEi/NECEKs86k9g0ijbin41NKtnajb6GwyNQ9vDx7Z5FS8BZ3CD0BZIdCQUE -gKuDSWBROQU3tqrjdk2QTwGQkj2mgzT871Jn1MwZw0mczPjS1y469Ejym8wi3uCd -EboDOoGBCpmUQbxBv6JI75cUCdmNNEwjQjZ0XQw= +MIICZDCCAY2gAwIBAgIURC8vM7SbxPTMmosTyBzLlqxgsUAwDQYJKoZIhvcNAQEF +BQAwJjEOMAwGA1UEAwwFcGV0YWwxFDASBgkqhkiG9w0BCQEWBXBldGFsMB4XDTIw +MDcwODE0MDk0MloXDTQwMDMyNTE0MDk0MlowJjEOMAwGA1UEAwwFcGV0YWwxFDAS +BgkqhkiG9w0BCQEWBXBldGFsMIHfMA0GCSqGSIb3DQEBAQUAA4HNADCByQKBwQC4 +8GhhmIU66TZKc3QiyF4L5bsm8Aly/y2SzLP+GACepK0OcOtDi2sXrTtoJDvGOPZ9 +ICqmIy8u/Q/cK26txNEeZFcClLcYF/U+NaqjEwrwkHEIgc3g8qnKrhzM61I8foAW +VT7cqxFHDKYuClNITXk1i//Yzpnf9wvVKQ51W9UOtm/WA7g4IDHCuAjocyyNC3B7 +XqYawFDOsdMI4ZW7hC0hIRQOvBkvbvY8WxmsSkdd30u1KmoISg4y6OvnikrEEQkC +AwEAAaMPMA0wCwYDVR0PBAQDAgKEMA0GCSqGSIb3DQEBBQUAA4HBAHX0rIirg2Rt ++rp7BnR3riq81b0cWm4Y/UUdGmLtbPTJLuZogfLZhb9hf+185ub/8ZbuwuUFaiUY +zEcAjaOlPjBeRbNku1xnAVhlgtCIsCOyI37Ey+65OuJxL+0Rpwsyfh0WuR8SdBE5 +OdJ2DuH2yRkTd2JEsNi+DZVIEeaKwXtLGUvsqYWu0GrnXORwGsezfiLM4uAJW+tp +VA95CKpfS98l1MJIHtlcpffAjfRVZAJnGcXv+P/DtefC8aNukoiqvA== -----END CERTIFICATE----- diff --git a/testdata/10-unbound-anchor.tdir/keys/unbound-control-setup b/testdata/10-unbound-anchor.tdir/keys/unbound-control-setup index 3e5931199..2492f47b4 100755 --- a/testdata/10-unbound-anchor.tdir/keys/unbound-control-setup +++ b/testdata/10-unbound-anchor.tdir/keys/unbound-control-setup @@ -46,7 +46,7 @@ CLIENTNAME=unbound-anchor DAYS=7200 # size of keys in bits -BITS=1536 +BITS=3072 # hash algorithm HASH=sha1 diff --git a/testdata/10-unbound-anchor.tdir/keys/unbound_control.key b/testdata/10-unbound-anchor.tdir/keys/unbound_control.key index 47d15dd37..68b514f83 100644 --- a/testdata/10-unbound-anchor.tdir/keys/unbound_control.key +++ b/testdata/10-unbound-anchor.tdir/keys/unbound_control.key @@ -1,21 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/10-unbound-anchor.tdir/keys/unbound_control.pem b/testdata/10-unbound-anchor.tdir/keys/unbound_control.pem index ec7cd7e78..e7fe79bc3 100644 --- a/testdata/10-unbound-anchor.tdir/keys/unbound_control.pem +++ b/testdata/10-unbound-anchor.tdir/keys/unbound_control.pem @@ -1,14 +1,19 @@ -----BEGIN CERTIFICATE----- -MIICNjCCAV8CCQCbt2WrJa/ewzANBgkqhkiG9w0BAQUFADAmMQ4wDAYDVQQDEwVw -ZXRhbDEUMBIGCSqGSIb3DQEJARYFcGV0YWwwHhcNMTMwMTE3MTE1MjQ1WhcNMzIx -MDA0MTE1MjQ1WjAZMRcwFQYDVQQDEw51bmJvdW5kLWFuY2hvcjCB3zANBgkqhkiG -9w0BAQEFAAOBzQAwgckCgcEAtqdDE1VRH7zqWlpSOqyyhsWh38P+CVMVwsAx0ZJM -gdIZCEkTMfIpgfoqNGmNlHJPc5dAU4D2irRXgNPpbpGZO+ZHjrgEzxWcGwhrPuk8 -eQKDePjcyGlWsuQLjvBNbugFXZnAKgcj/kfdss+X90/d/3ErGM6j2emNcDvbGm7a -5Bk2MJ3zIJ0rbcr5QSIUQ1mxDvq1i9ggotCba56YivLGtsrEAqvWOmYho0/TxFiG -cJMUOsuUyFlbcoraJJ6Q4XmXAgMBAAEwDQYJKoZIhvcNAQEFBQADgcEAhc3wYcbD -Uu9Osbu3bhbxLCkhedq/3weEO8RDU3AyB8diioAikagIOb99UeVE3WIds+JIPD6J -mK5UvS+lPR8SEOMRd0H91bEEp1Zn+gHAS/Z7k/x9t38Xk1N0jOnElc6n4vl42KLO -z2laJWcte7YXjzFjaNxP9fsGgEx1vRxcjtpXQWSY+oj+RVm5kRs5WKX5MCyD/p+y -Xitg7/a0ITKbW1GpVwaX6nPaeoze68m3qmy64l080XCna3igbhi3h2ay +MIIDBTCCAi4CFG36qDt2k02biKtMYGtLy9khnP+eMA0GCSqGSIb3DQEBBQUAMCYx +DjAMBgNVBAMMBXBldGFsMRQwEgYJKoZIhvcNAQkBFgVwZXRhbDAeFw0yMDA3MDgx +NDA5NDJaFw00MDAzMjUxNDA5NDJaMBkxFzAVBgNVBAMMDnVuYm91bmQtYW5jaG9y +MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAzDESJ2lpIno7KpSrYBeB +shT8H5dbtNF9rVBONsCmwSSqclLRixZ62OKrUKMVCEpZ0zj4yZOu3DGTfL9V9pEk +3dCD8mFmylidYeLh5GHGMcDVWOzDVPsnQ9y43KWYeURpGy4QSCxYDb5rrPysleSZ +wuN5D4lbs/AKdpubAHj6z37Zbrs2GjofHp6TaD6ck7jyRXDtqShrnsVXq9U1CadY +DOPiE4aZ1TvusRzhhjmDm8GQXalrtIBJ5j5EcmRamFhONGLshfj5ECZrKo9L17kO +d8PyRMaXNfvl2tpx1qtMxmp7FDpboGGIzP7F7hyaWMI/zAzkTMAtjGkAJWqHgTbS +fvlVul23RLvovM3fD/ZiugBuTWY/CRpmN7CQFFV6iFyLGjRp8vV7BojUIQX7is8Q +TxSqW12SsElMXOuUmcCnuIaoGF4nAoG6vNLFECtSdLTjQ0uXawIp7dOww4zS8j1/ +dZzXsVF4G4V7GjeWD8eX7n+HNWoc3ojjuYzbWfWvLIQbAgMBAAEwDQYJKoZIhvcN +AQEFBQADgcEAPz9Iw956A8piiC5y3hJXAEJ0JYdNrpsgdj7n6iAXRU2EY+juzcKU +D+zcNEcebQJJxayr4eEMfUOUO1wH5uPkWBhKOC/qm6T6i/+/xNsksOeHm12G4/vH +VYPXTxMS+K+mz5HLmLcR0kuQMnCK22FFQj86fhr2vHBGHqINR6MxwvLCES37FWvr +qVZSseK6/6IwRgsjN101JUpaSnM88cMDpuUcqQrAbSSBRKDvjYMkcYcYuvchab26 +G0jEU4KgxaOs -----END CERTIFICATE----- diff --git a/testdata/10-unbound-anchor.tdir/keys/unbound_server.key b/testdata/10-unbound-anchor.tdir/keys/unbound_server.key index 6614e498f..370a7bbb2 100644 --- a/testdata/10-unbound-anchor.tdir/keys/unbound_server.key +++ b/testdata/10-unbound-anchor.tdir/keys/unbound_server.key @@ -1,21 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/10-unbound-anchor.tdir/keys/unbound_server.pem b/testdata/10-unbound-anchor.tdir/keys/unbound_server.pem index 19c8b895b..986807310 100644 --- a/testdata/10-unbound-anchor.tdir/keys/unbound_server.pem +++ b/testdata/10-unbound-anchor.tdir/keys/unbound_server.pem @@ -1,14 +1,22 @@ -----BEGIN CERTIFICATE----- -MIICFzCCAUACCQDO660L5y5LGDANBgkqhkiG9w0BAQUFADAQMQ4wDAYDVQQDEwVw -ZXRhbDAeFw0xMDA5MzAxMzQzMDFaFw0zMDA2MTcxMzQzMDFaMBAxDjAMBgNVBAMT -BXBldGFsMIHfMA0GCSqGSIb3DQEBAQUAA4HNADCByQKBwQC1xQ/Kca6zszZbcCtd -OTIH2Uy2gOy/DfabMUU7TmNPm0dVE0NJRuN+Rm304SonpwghfP2/ULZNnuDgpG03 -/32yI7k/VzG6iA4hiF7tT/KAAWC/+2l1QCsawCV2bSrFK0VhcZr7ALqXd8vkDaQ8 -67K029ypjOQtAJ85qdO3mERy7TGtdUcuO6hLeVet419YeQ2F8cfNxn63d7bOzNGL -PW5xwaCd3UcgD+Ib0k4xfFvbinvPQUeUJ/i4YDWexFYSL+ECAwEAATANBgkqhkiG -9w0BAQUFAAOBwQBBkX9KDP2RXbg+xPmdJ4P6CwvA5x1LZwC++ydVx4NlvT0pWicD -ZUnXjcWAJlkeOuUBAqFG7WHTrXpUUAjmdqFVq2yFjteUYBdrFz0RDB2jM9feeKYO -mTgxdZyT9a6humxCxt5VfgT02axLjm/2AqCyFPMbf4PASoJDln01AEuZLZ8Xl2gV -bYHMnHTGoD1Hu6FNEzRgkMC6XT8X3YjHvzQhpc/qL5wEfEsinQGdX4twsuWbf8xd -q7miNnkO8vd0maw= +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/ctrl_itr.tdir/unbound_control.key b/testdata/ctrl_itr.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/ctrl_itr.tdir/unbound_control.key +++ b/testdata/ctrl_itr.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/ctrl_itr.tdir/unbound_control.pem b/testdata/ctrl_itr.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/ctrl_itr.tdir/unbound_control.pem +++ b/testdata/ctrl_itr.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/ctrl_itr.tdir/unbound_server.key b/testdata/ctrl_itr.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/ctrl_itr.tdir/unbound_server.key +++ b/testdata/ctrl_itr.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/ctrl_itr.tdir/unbound_server.pem b/testdata/ctrl_itr.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/ctrl_itr.tdir/unbound_server.pem +++ b/testdata/ctrl_itr.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/ctrl_pipe.tdir/unbound_control.key b/testdata/ctrl_pipe.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/ctrl_pipe.tdir/unbound_control.key +++ b/testdata/ctrl_pipe.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/ctrl_pipe.tdir/unbound_control.pem b/testdata/ctrl_pipe.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/ctrl_pipe.tdir/unbound_control.pem +++ b/testdata/ctrl_pipe.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/ctrl_pipe.tdir/unbound_server.key b/testdata/ctrl_pipe.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/ctrl_pipe.tdir/unbound_server.key +++ b/testdata/ctrl_pipe.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/ctrl_pipe.tdir/unbound_server.pem b/testdata/ctrl_pipe.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/ctrl_pipe.tdir/unbound_server.pem +++ b/testdata/ctrl_pipe.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap.tdir/unbound_control.key b/testdata/dnstap.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap.tdir/unbound_control.key +++ b/testdata/dnstap.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap.tdir/unbound_control.pem b/testdata/dnstap.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap.tdir/unbound_control.pem +++ b/testdata/dnstap.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap.tdir/unbound_server.key b/testdata/dnstap.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap.tdir/unbound_server.key +++ b/testdata/dnstap.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -MIICWwIBAAKBgQC3F7Jsv2u01pLL9rFnjsMU/IaCFUIz/624DcaE84Z4gjMl5kWA -3axQcqul1wlwSrbKwrony+d9hH/+MX0tZwvl8w3OmhmOAiaQ+SHCsIuOjVwQjX0s -RLB61Pz5+PAiVvnPa9JIYB5QrK6DVEsxIHj8MOc5JKORrnESsFDh6yeMeQIDAQAB -AoGAAuWoGBprTOA8UGfl5LqYkaNxSWumsYXxLMFjC8WCsjN1NbtQDDr1uAwodSZS -6ujzvX+ZTHnofs7y64XC8k34HTOCD2zlW7kijWbT8YjRYFU6o9F5zUGD9RCan0ds -sVscT2psLSzfdsmFAcbmnGdxYkXk2PC1FHtaqExxehralGUCQQDcqrg9uQKXlhQi -XAaPr8SiWvtRm2a9IMMZkRfUWZclPHq6fCWNuUaCD+cTat4wAuqeknAz33VEosw3 -fXGsok//AkEA1GjIHXrOcSlpfVJb6NeOBugjRtZ7ZDT5gbtnMS9ob0qntKV6saaL -CNmJwuD9Q3XkU5j1+uHvYGP2NzcJd2CjhwJACV0hNlVMe9w9fHvFN4Gw6WbM9ViP -0oS6YrJafYNTu5vGZXVxLoNnL4u3NYa6aPUmuZXjNwBLfJ8f5VboZPf6RwJAINd2 -oYA8bSi/A755MX4qmozH74r4Fx1Nuq5UHTm8RwDe/0Javx8F/j9MWpJY9lZDEF3l -In5OebPa/NyInSmW/wJAZuP9aRn0nDBkHYri++1A7NykMiJ/nH0mDECbnk+wxx0S -LwqIetBhxb8eQwMg45+iAH7CHAMQ8BQuF/nFE6eotg== +MIIG5AIBAAKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI +0x41iG32a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+Nqq +GRS7XVQ24vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Z +uh9MDgotaBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8K +WaBe1ca4TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5 +FzUReSXZuTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xP +q6O9UPj4+nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XL +A5UoZgRzXgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP +7kFZSngxdy1+A/bNAgMBAAECggGBALpTOIqQwVg4CFBylL/a8K1IWJTI/I65sklf +XxYL7G7SB2HlEJ//z+E+F0+S4Vlao1vyLQ5QkgE82pAUB8FoMWvY1qF0Y8A5wtm6 +iZSGk4OLK488ZbT8Ii9i+AGKgPe2XbVxsJwj8N4k7Zooqec9hz73Up8ATEWJkRz7 +2u7oMGG4z91E0PULA64dOi3l/vOQe5w/Aa+CwVbAWtI05o7kMvQEBMDJn6C7CByo +MB5op9wueJMnz7PM7hns+U7Dy6oE4ljuolJUy51bDzFWwoM54cRoQqLFNHd8JVQj +WxldCkbfF43iyprlsEcUrTyUjtdA+ZeiG39vg/mtdmgNpGmdupHJZQvSuG8IcVlz +O+eMSeQS1QXPD6Ik8UK4SU0h+zOl8xIWtRrsxQuh4fnTN40udm/YUWl/6gOebsBI +IrVLlKGqJSfB3tMjpCRqdTzJ0dA9keVpkqm2ugZkxEf1+/efq/rFIQ2pUBLCqNTN +qpNqruK8y8FphP30I2uI4Ej2UIB8AQKBwQDd2Yptj2FyDyaXCycsyde0wYkNyzGU +dRnzdibfHnMZwjgTjwAwgIUBVIS8H0/z7ZJQKN7osJfddMrtjJtYYUk9g/dCpHXs +bNh2QSoWah3FdzNGuWd0iRf9+LFxhjAAMo/FS8zFJAJKrFsBdCGTfFUMdsLC0bjr +YjiWBuvV72uKf8XIZX5KIZruKdWBBcWukcb21R1UDyFYyXRBsly5XHaIYKZql3km +7pV7MKWO0IYgHbHIqGUqPQlzZ/lkunS1jKECgcEA23wHffD6Ou9/x3okPx2AWpTr +gh8rgqbyo6hQkBW5Y90Wz824cqaYebZDaBR/xlVx/YwjKkohv8Bde2lpH/ZxRZ1Z +5Sk2s6GJ/vU0L9RsJZgCgj4L6Coal1NMxuZtCXAlnOpiCdxSZgfqbshbTVz30KsG +ZJG361Cua1ScdAHxlZBxT52/1Sm0zRC2hnxL7h4qo7Idmtzs40LAJvYOKekR0pPN +oWeJfra7vgx/jVNvMFWoOoSLpidVO4g+ot4ery6tAoHAdW3rCic1C2zdnmH28Iw+ +s50l8Lk3mz+I5wgJd1zkzCO0DxZIoWPGA3g7cmCYr6N3KRsZMs4W9NAXgjpFGDkW +zYsG3K21BdpvkdjYcFjnPVjlOXB2RIc0vehf9Jl02wXoeCSxVUDEPcaRvWk9RJYx +ZpGOchUU7vNkxHURbIJ4yCzuAi9G8/Jp0dsu+kaV5tufF5SjG5WOrzKjaQsCbdN1 +oqaWMCHRrTvov/Z2C+xwsptFOdN5CSyZzg6hQiI4GMlBAoHAXyb6KINcOEi0YMp3 +BFXJ23tMTnEs78tozcKeipigcsbaqORK3omS+NEnj+uzKUzJyl4CsMbKstK2tFYS +mSTCHqgE3PBtIpsZtEqhgUraR8IK9GPpzZDTTl9ynZgwFTNlWw3RyuyVXF56J+T8 +kCGJ3hEHCHqT/ZRQyX85BKIDFhA0z4tYKxWVqIFiYBNq56R0X9tMMmMs36mEnF93 +7Ht6mowxTZQRa7nU0qOgeKh/P7ki4Zus3y+WJ+T9IqahLtlRAoHBAIhqMrcxSAB8 +RpB9jukJlAnidw2jCMPgrFE8tP0khhVvGrXMldxAUsMKntDIo8dGCnG1KTcWDI0O +jepvSPHSsxVLFugL79h0eVIS5z4huW48i9xgU8VlHdgAcgEPIAOFcOw2BCu/s0Vp +O+MM/EyUOdo3NsibB3qc/GJI6iNBYS7AljYEVo6rXo5V/MZvZUF4vClen6Obzsre +MTTb+4sJjfqleWuvr1XNMeu2mBfXBQkWGZP1byBK0MvD/aQ2PWq92A== -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap.tdir/unbound_server.pem b/testdata/dnstap.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap.tdir/unbound_server.pem +++ b/testdata/dnstap.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_reconnect.tdir/unbound_control.key b/testdata/dnstap_reconnect.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_reconnect.tdir/unbound_control.key +++ b/testdata/dnstap_reconnect.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_reconnect.tdir/unbound_control.pem b/testdata/dnstap_reconnect.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_reconnect.tdir/unbound_control.pem +++ b/testdata/dnstap_reconnect.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_reconnect.tdir/unbound_server.key b/testdata/dnstap_reconnect.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_reconnect.tdir/unbound_server.key +++ b/testdata/dnstap_reconnect.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_reconnect.tdir/unbound_server.pem b/testdata/dnstap_reconnect.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_reconnect.tdir/unbound_server.pem +++ b/testdata/dnstap_reconnect.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tcp.tdir/unbound_control.key b/testdata/dnstap_tcp.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tcp.tdir/unbound_control.key +++ b/testdata/dnstap_tcp.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tcp.tdir/unbound_control.pem b/testdata/dnstap_tcp.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tcp.tdir/unbound_control.pem +++ b/testdata/dnstap_tcp.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tcp.tdir/unbound_server.key b/testdata/dnstap_tcp.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tcp.tdir/unbound_server.key +++ b/testdata/dnstap_tcp.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tcp.tdir/unbound_server.pem b/testdata/dnstap_tcp.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tcp.tdir/unbound_server.pem +++ b/testdata/dnstap_tcp.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls.tdir/unbound_control.key b/testdata/dnstap_tls.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tls.tdir/unbound_control.key +++ b/testdata/dnstap_tls.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls.tdir/unbound_control.pem b/testdata/dnstap_tls.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tls.tdir/unbound_control.pem +++ b/testdata/dnstap_tls.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls.tdir/unbound_server.key b/testdata/dnstap_tls.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tls.tdir/unbound_server.key +++ b/testdata/dnstap_tls.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls.tdir/unbound_server.pem b/testdata/dnstap_tls.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tls.tdir/unbound_server.pem +++ b/testdata/dnstap_tls.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_badcert.tdir/unbound_control.key b/testdata/dnstap_tls_badcert.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tls_badcert.tdir/unbound_control.key +++ b/testdata/dnstap_tls_badcert.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_badcert.tdir/unbound_control.pem b/testdata/dnstap_tls_badcert.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tls_badcert.tdir/unbound_control.pem +++ b/testdata/dnstap_tls_badcert.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_badcert.tdir/unbound_server.key b/testdata/dnstap_tls_badcert.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tls_badcert.tdir/unbound_server.key +++ b/testdata/dnstap_tls_badcert.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_badcert.tdir/unbound_server.pem b/testdata/dnstap_tls_badcert.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tls_badcert.tdir/unbound_server.pem +++ b/testdata/dnstap_tls_badcert.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_badname.tdir/unbound_control.key b/testdata/dnstap_tls_badname.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tls_badname.tdir/unbound_control.key +++ b/testdata/dnstap_tls_badname.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_badname.tdir/unbound_control.pem b/testdata/dnstap_tls_badname.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tls_badname.tdir/unbound_control.pem +++ b/testdata/dnstap_tls_badname.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_badname.tdir/unbound_server.key b/testdata/dnstap_tls_badname.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tls_badname.tdir/unbound_server.key +++ b/testdata/dnstap_tls_badname.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_badname.tdir/unbound_server.pem b/testdata/dnstap_tls_badname.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tls_badname.tdir/unbound_server.pem +++ b/testdata/dnstap_tls_badname.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_clientauth.tdir/unbound_control.key b/testdata/dnstap_tls_clientauth.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tls_clientauth.tdir/unbound_control.key +++ b/testdata/dnstap_tls_clientauth.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_clientauth.tdir/unbound_control.pem b/testdata/dnstap_tls_clientauth.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tls_clientauth.tdir/unbound_control.pem +++ b/testdata/dnstap_tls_clientauth.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_clientauth.tdir/unbound_server.key b/testdata/dnstap_tls_clientauth.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tls_clientauth.tdir/unbound_server.key +++ b/testdata/dnstap_tls_clientauth.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_clientauth.tdir/unbound_server.pem b/testdata/dnstap_tls_clientauth.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tls_clientauth.tdir/unbound_server.pem +++ b/testdata/dnstap_tls_clientauth.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_peername.tdir/unbound_control.key b/testdata/dnstap_tls_peername.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dnstap_tls_peername.tdir/unbound_control.key +++ b/testdata/dnstap_tls_peername.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_peername.tdir/unbound_control.pem b/testdata/dnstap_tls_peername.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dnstap_tls_peername.tdir/unbound_control.pem +++ b/testdata/dnstap_tls_peername.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dnstap_tls_peername.tdir/unbound_server.key b/testdata/dnstap_tls_peername.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dnstap_tls_peername.tdir/unbound_server.key +++ b/testdata/dnstap_tls_peername.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dnstap_tls_peername.tdir/unbound_server.pem b/testdata/dnstap_tls_peername.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dnstap_tls_peername.tdir/unbound_server.pem +++ b/testdata/dnstap_tls_peername.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/dynlibmod.tdir/unbound_control.key b/testdata/dynlibmod.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/dynlibmod.tdir/unbound_control.key +++ b/testdata/dynlibmod.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dynlibmod.tdir/unbound_control.pem b/testdata/dynlibmod.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/dynlibmod.tdir/unbound_control.pem +++ b/testdata/dynlibmod.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/dynlibmod.tdir/unbound_server.key b/testdata/dynlibmod.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/dynlibmod.tdir/unbound_server.key +++ b/testdata/dynlibmod.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/dynlibmod.tdir/unbound_server.pem b/testdata/dynlibmod.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/dynlibmod.tdir/unbound_server.pem +++ b/testdata/dynlibmod.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/fwd_bogus.tdir/unbound_control.key b/testdata/fwd_bogus.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/fwd_bogus.tdir/unbound_control.key +++ b/testdata/fwd_bogus.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/fwd_bogus.tdir/unbound_control.pem b/testdata/fwd_bogus.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/fwd_bogus.tdir/unbound_control.pem +++ b/testdata/fwd_bogus.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/fwd_bogus.tdir/unbound_server.key b/testdata/fwd_bogus.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/fwd_bogus.tdir/unbound_server.key +++ b/testdata/fwd_bogus.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/fwd_bogus.tdir/unbound_server.pem b/testdata/fwd_bogus.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/fwd_bogus.tdir/unbound_server.pem +++ b/testdata/fwd_bogus.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/remote-threaded.tdir/unbound_control.key b/testdata/remote-threaded.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/remote-threaded.tdir/unbound_control.key +++ b/testdata/remote-threaded.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/remote-threaded.tdir/unbound_control.pem b/testdata/remote-threaded.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/remote-threaded.tdir/unbound_control.pem +++ b/testdata/remote-threaded.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/remote-threaded.tdir/unbound_server.key b/testdata/remote-threaded.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/remote-threaded.tdir/unbound_server.key +++ b/testdata/remote-threaded.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/remote-threaded.tdir/unbound_server.pem b/testdata/remote-threaded.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/remote-threaded.tdir/unbound_server.pem +++ b/testdata/remote-threaded.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/ssl_req_order.tdir/unbound_server.key b/testdata/ssl_req_order.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/ssl_req_order.tdir/unbound_server.key +++ b/testdata/ssl_req_order.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/ssl_req_order.tdir/unbound_server.pem b/testdata/ssl_req_order.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/ssl_req_order.tdir/unbound_server.pem +++ b/testdata/ssl_req_order.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/ssl_req_timeout.tdir/unbound_server.key b/testdata/ssl_req_timeout.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/ssl_req_timeout.tdir/unbound_server.key +++ b/testdata/ssl_req_timeout.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/ssl_req_timeout.tdir/unbound_server.pem b/testdata/ssl_req_timeout.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/ssl_req_timeout.tdir/unbound_server.pem +++ b/testdata/ssl_req_timeout.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/testdata/stream_ssl.tdir/unbound_control.key b/testdata/stream_ssl.tdir/unbound_control.key index d7c43a06b..753a4ef61 100644 --- a/testdata/stream_ssl.tdir/unbound_control.key +++ b/testdata/stream_ssl.tdir/unbound_control.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/stream_ssl.tdir/unbound_control.pem b/testdata/stream_ssl.tdir/unbound_control.pem index 8f1ba87f1..a1edf7017 100644 --- a/testdata/stream_ssl.tdir/unbound_control.pem +++ b/testdata/stream_ssl.tdir/unbound_control.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBozCCAQwCCQD6XaN6FzW/4DANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowGjEYMBYGA1UE -AxMPdW5ib3VuZC1jb250cm9sMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDD -6DogNCsSeEa1u99+6PUVbGzjMzzei9MIK6s94+zcpp7OAOBarzPA0vlyuNtUsEN3 -qwPomQQQmIgbT7OXkzC1wqioxwa609xoL8oW/I7e336rEyvHST6JwUdIg0Lzg/US -J81eTwMnzYSd4Bpsqr9eP33ubaR7Gh/6o76loLOlcQIDAQABMA0GCSqGSIb3DQEB -BQUAA4GBAGFAXmaQHuFgAuc6HVhYZJdToxLBhfxGpot4oZNjcb1Cdoz3OL34MU1B -9E5psj2PpGPIi8/RwoqBtAJHJ+J5cWngo03o4ZmdwKNSzaxlp141z/3rUtFqEHEC -iO6gPCT3U7dt6MyC7r6vdMqyW6aldP3CtwD0gQziKAMoj+TAfAcq +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte -----END CERTIFICATE----- diff --git a/testdata/stream_ssl.tdir/unbound_server.key b/testdata/stream_ssl.tdir/unbound_server.key index 4256c421d..370a7bbb2 100644 --- a/testdata/stream_ssl.tdir/unbound_server.key +++ b/testdata/stream_ssl.tdir/unbound_server.key @@ -1,15 +1,39 @@ -----BEGIN RSA PRIVATE KEY----- -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 -----END RSA PRIVATE KEY----- diff --git a/testdata/stream_ssl.tdir/unbound_server.pem b/testdata/stream_ssl.tdir/unbound_server.pem index aeda3ff11..986807310 100644 --- a/testdata/stream_ssl.tdir/unbound_server.pem +++ b/testdata/stream_ssl.tdir/unbound_server.pem @@ -1,11 +1,22 @@ -----BEGIN CERTIFICATE----- -MIIBmzCCAQQCCQDsNJ1UmphEFzANBgkqhkiG9w0BAQUFADASMRAwDgYDVQQDEwd1 -bmJvdW5kMB4XDTA4MDkxMTA5MDk0MFoXDTI4MDUyOTA5MDk0MFowEjEQMA4GA1UE -AxMHdW5ib3VuZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAtxeybL9rtNaS -y/axZ47DFPyGghVCM/+tuA3GhPOGeIIzJeZFgN2sUHKrpdcJcEq2ysK6J8vnfYR/ -/jF9LWcL5fMNzpoZjgImkPkhwrCLjo1cEI19LESwetT8+fjwIlb5z2vSSGAeUKyu -g1RLMSB4/DDnOSSjka5xErBQ4esnjHkCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAZ -9N0lnLENs4JMvPS+mn8C5m9bkkFITd32IiLjf0zgYpIUbFXH6XaEr9GNZBUG8feG -l/6WRXnbnVSblI5odQ4XxGZ9inYY6qtW30uv76HvoKp+QZ1c3460ddR8NauhcCHH -Z7S+QbLXi+r2JAhpPozZCjBHlRD0ixzA1mKQTJhJZg== +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== -----END CERTIFICATE----- diff --git a/util/net_help.c b/util/net_help.c index e287f90aa..a00fe2e2f 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -55,6 +55,9 @@ #ifdef HAVE_OPENSSL_ERR_H #include #endif +#ifdef HAVE_OPENSSL_CORE_NAMES_H +#include +#endif #ifdef USE_WINSOCK #include #endif @@ -79,6 +82,30 @@ static struct tls_session_ticket_key { unsigned char *hmac_key; } *ticket_keys; +/** + * callback TLS session ticket encrypt and decrypt + * For use with SSL_CTX_set_tlsext_ticket_key_cb or + * SSL_CTX_set_tlsext_ticket_key_evp_cb + * @param s: the SSL_CTX to use (from connect_sslctx_create()) + * @param key_name: secret name, 16 bytes + * @param iv: up to EVP_MAX_IV_LENGTH. + * @param evp_ctx: the evp cipher context, function sets this. + * @param hmac_ctx: the hmac context, function sets this. + * with ..key_cb it is of type HMAC_CTX* + * with ..key_evp_cb it is of type EVP_MAC_CTX* + * @param enc: 1 is encrypt, 0 is decrypt + * @return 0 on no ticket, 1 for okay, and 2 for okay but renew the ticket + * (the ticket is decrypt only). and <0 for failures. + */ +int tls_session_ticket_key_cb(SSL *s, unsigned char* key_name, + unsigned char* iv, EVP_CIPHER_CTX *evp_ctx, +#ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + EVP_MAC_CTX *hmac_ctx, +#else + HMAC_CTX* hmac_ctx, +#endif + int enc); + /* returns true is string addr is an ip6 specced address */ int str_is_ip6(const char* str) @@ -1387,10 +1414,17 @@ int listen_sslctx_setup_ticket_keys(void* sslctx, struct config_strlist* tls_ses } /* terminate array with NULL key name entry */ keys->key_name = NULL; +# ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + if(SSL_CTX_set_tlsext_ticket_key_evp_cb(sslctx, tls_session_ticket_key_cb) == 0) { + log_err("no support for TLS session ticket"); + return 0; + } +# else if(SSL_CTX_set_tlsext_ticket_key_cb(sslctx, tls_session_ticket_key_cb) == 0) { log_err("no support for TLS session ticket"); return 0; } +# endif return 1; #else (void)sslctx; @@ -1400,13 +1434,26 @@ int listen_sslctx_setup_ticket_keys(void* sslctx, struct config_strlist* tls_ses } -int tls_session_ticket_key_cb(void *ATTR_UNUSED(sslctx), unsigned char* key_name, unsigned char* iv, void *evp_sctx, void *hmac_ctx, int enc) +int tls_session_ticket_key_cb(SSL *ATTR_UNUSED(sslctx), unsigned char* key_name, + unsigned char* iv, EVP_CIPHER_CTX *evp_sctx, +#ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + EVP_MAC_CTX *hmac_ctx, +#else + HMAC_CTX* hmac_ctx, +#endif + int enc) { #ifdef HAVE_SSL +# ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + OSSL_PARAM params[3]; +# else const EVP_MD *digest; +# endif const EVP_CIPHER *cipher; int evp_cipher_length; +# ifndef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB digest = EVP_sha256(); +# endif cipher = EVP_aes_256_cbc(); evp_cipher_length = EVP_CIPHER_iv_length(cipher); if( enc == 1 ) { @@ -1421,7 +1468,14 @@ int tls_session_ticket_key_cb(void *ATTR_UNUSED(sslctx), unsigned char* key_name verbose(VERB_CLIENT, "EVP_EncryptInit_ex failed"); return -1; } -#ifndef HMAC_INIT_EX_RETURNS_VOID +#ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + params[0] = OSSL_PARAM_construct_octet_string(OSSL_MAC_PARAM_KEY, + ticket_keys->hmac_key, 32); + params[1] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, + "sha256", 0); + params[2] = OSSL_PARAM_construct_end(); + EVP_MAC_set_ctx_params(hmac_ctx, params); +#elif !defined(HMAC_INIT_EX_RETURNS_VOID) if (HMAC_Init_ex(hmac_ctx, ticket_keys->hmac_key, 32, digest, NULL) != 1) { verbose(VERB_CLIENT, "HMAC_Init_ex failed"); return -1; @@ -1445,7 +1499,14 @@ int tls_session_ticket_key_cb(void *ATTR_UNUSED(sslctx), unsigned char* key_name return 0; } -#ifndef HMAC_INIT_EX_RETURNS_VOID +#ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB + params[0] = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_KEY, + key->hmac_key, 32); + params[1] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, + "sha256", 0); + params[2] = OSSL_PARAM_construct_end(); + EVP_MAC_set_ctx_params(hmac_ctx, params); +#elif !defined(HMAC_INIT_EX_RETURNS_VOID) if (HMAC_Init_ex(hmac_ctx, key->hmac_key, 32, digest, NULL) != 1) { verbose(VERB_CLIENT, "HMAC_Init_ex failed"); return -1; diff --git a/util/net_help.h b/util/net_help.h index c1bb13923..29943ada0 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -478,20 +478,6 @@ void ub_openssl_lock_delete(void); int listen_sslctx_setup_ticket_keys(void* sslctx, struct config_strlist* tls_session_ticket_keys); -/** - * callback TLS session ticket encrypt and decrypt - * For use with SSL_CTX_set_tlsext_ticket_key_cb - * @param s: the SSL_CTX to use (from connect_sslctx_create()) - * @param key_name: secret name, 16 bytes - * @param iv: up to EVP_MAX_IV_LENGTH. - * @param evp_ctx: the evp cipher context, function sets this. - * @param hmac_ctx: the hmax context, function sets this. - * @param enc: 1 is encrypt, 0 is decrypt - * @return 0 on no ticket, 1 for okay, and 2 for okay but renew the ticket - * (the ticket is decrypt only). and <0 for failures. - */ -int tls_session_ticket_key_cb(void *s, unsigned char* key_name,unsigned char* iv, void *evp_ctx, void *hmac_ctx, int enc); - /** Free memory used for TLS session ticket keys */ void listen_sslctx_delete_ticket_keys(void); From 9cebc131500081dc2a0f6a079ed4e2192e54151f Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Mon, 13 Jul 2020 17:28:50 +0200 Subject: [PATCH 13/81] - Add option to send DNSTAP messages over bidirectional frame streams --- dnstap/dnstap_fstrm.c | 28 + dnstap/dnstap_fstrm.h | 15 + dnstap/dtstream.c | 314 ++- dnstap/dtstream.h | 31 + dnstap/unbound-dnstap-socket.c | 34 +- doc/example.conf.in | 2 + doc/unbound.conf.5.in | 4 + util/config_file.c | 3 + util/config_file.h | 2 + util/configlexer.c | 3857 ++++++++++++++++---------------- util/configlexer.lex | 1 + util/configparser.c | 2979 ++++++++++++------------ util/configparser.h | 516 ++--- util/configparser.y | 14 +- 14 files changed, 4136 insertions(+), 3664 deletions(-) diff --git a/dnstap/dnstap_fstrm.c b/dnstap/dnstap_fstrm.c index cce16e2e4..289e78bdf 100644 --- a/dnstap/dnstap_fstrm.c +++ b/dnstap/dnstap_fstrm.c @@ -92,6 +92,34 @@ void* fstrm_create_control_frame_stop(size_t* len) return control; } +void* fstrm_create_control_frame_ready(char* contenttype, size_t* len) +{ + uint32_t* control; + size_t n; + /* start bidirectional stream: + * 4 bytes 0 escape + * 4 bytes bigendian length of frame + * 4 bytes bigendian type READY + * 4 bytes bigendian frame option content type + * 4 bytes bigendian length of string + * string of content type. + */ + /* len includes the escape and framelength */ + n = 4+4+4+4+4+strlen(contenttype); + control = malloc(n); + if(!control) { + return NULL; + } + control[0] = 0; + control[1] = htonl(4+4+4+strlen(contenttype)); + control[2] = htonl(FSTRM_CONTROL_FRAME_READY); + control[3] = htonl(FSTRM_CONTROL_FIELD_TYPE_CONTENT_TYPE); + control[4] = htonl(strlen(contenttype)); + memmove(&control[5], contenttype, strlen(contenttype)); + *len = n; + return control; +} + void* fstrm_create_control_frame_accept(char* contenttype, size_t* len) { uint32_t* control; diff --git a/dnstap/dnstap_fstrm.h b/dnstap/dnstap_fstrm.h index f0cf93628..8b37d5f9e 100644 --- a/dnstap/dnstap_fstrm.h +++ b/dnstap/dnstap_fstrm.h @@ -127,6 +127,21 @@ */ void* fstrm_create_control_frame_start(char* contenttype, size_t* len); +/** + * This creates an FSTRM control frame of type READY. + * @param contenttype: a zero delimited string with the content type. + * eg. use the constant DNSTAP_CONTENT_TYPE, which is defined as + * "protobuf:dnstap.Dnstap", for a dnstap frame stream. + * @param len: if a buffer is returned this is the length of that buffer. + * @return NULL on malloc failure. Returns a malloced buffer with the + * protocol message. The buffer starts with the 4 bytes of 0 that indicate + * a control frame. The buffer should be sent without preceding it with + * the 'len' variable (like data frames are), but straight the content of the + * buffer, because the lengths are included in the buffer. This is so that + * the zero control indicator can be included before the control frame length. + */ +void* fstrm_create_control_frame_ready(char* contenttype, size_t* len); + /** * This creates an FSTRM control frame of type STOP. * @param len: if a buffer is returned this is the length of that buffer. diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 4081a6372..f5fae08dc 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -48,6 +48,7 @@ #include "util/ub_event.h" #include "util/net_help.h" #include "services/outside_network.h" +#include "sldns/sbuffer.h" #ifdef HAVE_SYS_UN_H #include #endif @@ -85,6 +86,8 @@ static int dtio_add_output_event_write(struct dt_io_thread* dtio); static void dtio_reconnect_enable(struct dt_io_thread* dtio); /** stop from stop_flush event loop */ static void dtio_stop_flush_exit(struct stop_flush_info* info); +/** setup a start control message */ +static int dtio_control_start_send(struct dt_io_thread* dtio); #ifdef HAVE_SSL /** enable briefly waiting for a read event, for SSL negotiation */ static int dtio_enable_brief_read(struct dt_io_thread* dtio); @@ -261,6 +264,7 @@ int dt_io_thread_apply_cfg(struct dt_io_thread* dtio, struct config_file *cfg) } else { dtio->upstream_is_unix = 1; } + dtio->is_bidirectional = cfg->dnstap_bidirectional; if(dtio->upstream_is_unix) { if(!cfg->dnstap_socket_path || @@ -551,6 +555,20 @@ static void dtio_cur_msg_free(struct dt_io_thread* dtio) dtio->cur_msg_len_done = 0; } +/** delete the buffer and counters used to read frame */ +static void dtio_read_frame_free(struct dt_frame_read_buf* rb) +{ + if(rb->buf) { + free(rb->buf); + rb->buf = NULL; + } + rb->buf_count = 0; + rb->buf_cap = 0; + rb->frame_len = 0; + rb->frame_len_done = 0; + rb->control_frame = 0; +} + /** del the output file descriptor event for listening */ static void dtio_del_output_event(struct dt_io_thread* dtio) { @@ -594,6 +612,11 @@ static void dtio_close_output(struct dt_io_thread* dtio) if(dtio->cur_msg) { dtio_cur_msg_free(dtio); } + + dtio->ready_frame_sent = 0; + dtio->accept_frame_received = 0; + dtio_read_frame_free(&dtio->read_frame); + dtio_reconnect_enable(dtio); } @@ -855,6 +878,94 @@ static int dtio_write_more(struct dt_io_thread* dtio) return 1; } +/** Receive bytes from dtio->fd, store in buffer. Returns 0: closed, + * -1: continue, >0: number of bytes read into buffer */ +static ssize_t receive_bytes(struct dt_io_thread* dtio, void* buf, size_t len) { + ssize_t r; + r = recv(dtio->fd, (void*)buf, len, 0); + if(r == -1) { + char* to = dtio->socket_path; + if(!to) to = dtio->ip_str; + if(!to) to = ""; +#ifndef USE_WINSOCK + if(errno == EINTR || errno == EAGAIN) + return -1; /* try later */ +#else + if(WSAGetLastError() == WSAEINPROGRESS) { + return -1; /* try later */ + } else if(WSAGetLastError() == WSAEWOULDBLOCK) { + ub_winsock_tcp_wouldblock( + (dtio->stop_flush_event? + dtio->stop_flush_event:dtio->event), + UB_EV_READ); + return -1; /* try later */ + } +#endif + if(dtio->reconnect_timeout > DTIO_RECONNECT_TIMEOUT_MIN && + verbosity < 4) + return 0; /* no log retries on low verbosity */ + log_err("dnstap io: output closed, recv %s: %s", to, + strerror(errno)); + /* and close below */ + return 0; + } + if(r == 0) { + if(dtio->reconnect_timeout > DTIO_RECONNECT_TIMEOUT_MIN && + verbosity < 4) + return 0; /* no log retries on low verbosity */ + verbose(VERB_DETAIL, "dnstap io: output closed by the other side"); + /* and close below */ + return 0; + } + /* something was received */ + return r; +} + +#ifdef HAVE_SSL +/** Receive bytes over TLS from dtio->fd, store in buffer. Returns 0: closed, + * -1: continue, >0: number of bytes read into buffer */ +static int ssl_read_bytes(struct dt_io_thread* dtio, void* buf, size_t len) +{ + int r; + ERR_clear_error(); + r = SSL_read(dtio->ssl, buf, len); + if(r <= 0) { + int want = SSL_get_error(dtio->ssl, r); + if(want == SSL_ERROR_ZERO_RETURN) { + if(dtio->reconnect_timeout > DTIO_RECONNECT_TIMEOUT_MIN && + verbosity < 4) + return 0; /* no log retries on low verbosity */ + verbose(VERB_DETAIL, "dnstap io: output closed by the " + "other side"); + return 0; + } else if(want == SSL_ERROR_WANT_READ) { + /* continue later */ + return -1; + } else if(want == SSL_ERROR_WANT_WRITE) { + (void)dtio_add_output_event_write(dtio); + return -1; + } else if(want == SSL_ERROR_SYSCALL) { +#ifdef ECONNRESET + if(dtio->reconnect_timeout > DTIO_RECONNECT_TIMEOUT_MIN && + errno == ECONNRESET && verbosity < 4) + return 0; /* silence reset by peer */ +#endif + if(errno != 0) + log_err("SSL_read syscall: %s", + strerror(errno)); + verbose(VERB_DETAIL, "dnstap io: output closed by the " + "other side"); + return 0; + } + log_crypto_err("could not SSL_read"); + verbose(VERB_DETAIL, "dnstap io: output closed by the " + "other side"); + return 0; + } + return r; +} +#endif /* HAVE_SSL */ + /** check if the output fd has been closed, * it returns false if the stream is closed. */ static int dtio_check_close(struct dt_io_thread* dtio) @@ -864,44 +975,17 @@ static int dtio_check_close(struct dt_io_thread* dtio) * packets is okay for the framestream protocol. And also, the * read call can return that the stream has been closed by the * other side. */ - ssize_t r; uint8_t buf[1024]; + int r = -1; + + if(dtio->fd == -1) return 0; - while(1) { - r = recv(dtio->fd, (void*)buf, sizeof(buf), 0); - if(r == -1) { - char* to = dtio->socket_path; - if(!to) to = dtio->ip_str; - if(!to) to = ""; -#ifndef USE_WINSOCK - if(errno == EINTR || errno == EAGAIN) - return 1; /* try later */ -#else - if(WSAGetLastError() == WSAEINPROGRESS) { - return 1; /* try later */ - } else if(WSAGetLastError() == WSAEWOULDBLOCK) { - ub_winsock_tcp_wouldblock( - (dtio->stop_flush_event? - dtio->stop_flush_event:dtio->event), - UB_EV_READ); - return 1; /* try later */ - } -#endif - if(dtio->reconnect_timeout > DTIO_RECONNECT_TIMEOUT_MIN && verbosity < 4) - break; /* no log retries on low verbosity */ - log_err("dnstap io: output closed, recv %s: %s", to, - strerror(errno)); - /* and close below */ - break; - } - if(r == 0) { - if(dtio->reconnect_timeout > DTIO_RECONNECT_TIMEOUT_MIN && verbosity < 4) - break; /* no log retries on low verbosity */ - verbose(VERB_DETAIL, "dnstap io: output closed by the other side"); - /* and close below */ - break; - } - /* something was received, ignore it */ + + while(r != 0) { + /* not interested in buffer content, overwrite */ + r = receive_bytes(dtio, (void*)buf, sizeof(buf)); + if(r == -1) + return 1; } /* the other end has been closed */ /* close the channel */ @@ -910,6 +994,118 @@ static int dtio_check_close(struct dt_io_thread* dtio) return 0; } +/** Read accept frame. Returns -1: continue reading, 0: closed, + * 1: valid accept received. */ +static int dtio_read_accept_frame(struct dt_io_thread* dtio) +{ + int r; + while(dtio->read_frame.frame_len_done < 4) { +#ifdef HAVE_SSL + if(dtio->ssl) { + r = ssl_read_bytes(dtio, + (uint8_t*)&dtio->read_frame.frame_len+ + dtio->read_frame.frame_len_done, + 4-dtio->read_frame.frame_len_done); + } else { +#endif + r = receive_bytes(dtio, + (uint8_t*)&dtio->read_frame.frame_len+ + dtio->read_frame.frame_len_done, + 4-dtio->read_frame.frame_len_done); +#ifdef HAVE_SSL + } +#endif + if(r == -1) + return -1; /* continue reading */ + if(r == 0) { + /* connection closed */ + goto close_connection; + } + dtio->read_frame.frame_len_done += r; + if(dtio->read_frame.frame_len_done < 4) + return -1; /* continue reading */ + + if(dtio->read_frame.frame_len == 0) { + dtio->read_frame.frame_len_done = 0; + dtio->read_frame.control_frame = 1; + continue; + } + dtio->read_frame.frame_len = ntohl(dtio->read_frame.frame_len); + dtio->read_frame.buf = calloc(1, dtio->read_frame.frame_len); + dtio->read_frame.buf_cap = dtio->read_frame.frame_len; + if(!dtio->read_frame.buf) { + log_err("dnstap io: out of memory (creating read " + "buffer)"); + goto close_connection; + } + } + if(dtio->read_frame.buf_count < dtio->read_frame.frame_len) { +#ifdef HAVE_SSL + if(dtio->ssl) { + r = ssl_read_bytes(dtio, dtio->read_frame.buf+ + dtio->read_frame.buf_count, + dtio->read_frame.buf_cap- + dtio->read_frame.buf_count); + } else { +#endif + r = receive_bytes(dtio, dtio->read_frame.buf+ + dtio->read_frame.buf_count, + dtio->read_frame.buf_cap- + dtio->read_frame.buf_count); +#ifdef HAVE_SSL + } +#endif + if(r == -1) + return -1; /* continue reading */ + if(r == 0) { + /* connection closed */ + goto close_connection; + } + dtio->read_frame.buf_count += r; + if(dtio->read_frame.buf_count < dtio->read_frame.frame_len) + return -1; /* continue reading */ + } + + /* Complete frame received, check if this is a valid ACCEPT control + * frame. */ + if(dtio->read_frame.frame_len < 4) { + verbose(VERB_OPS, "dnstap: invalid data received"); + goto close_connection; + } + if(sldns_read_uint32(dtio->read_frame.buf) != + FSTRM_CONTROL_FRAME_ACCEPT) { + verbose(VERB_ALGO, "dnstap: invalid control type received, " + "ignored"); + dtio->ready_frame_sent = 0; + dtio->accept_frame_received = 0; + dtio_read_frame_free(&dtio->read_frame); + return -1; + } + + if(dtio->read_frame.frame_len != 4+4+4+strlen(DNSTAP_CONTENT_TYPE) || + memcmp(dtio->read_frame.buf+4+4+4, DNSTAP_CONTENT_TYPE, + strlen(DNSTAP_CONTENT_TYPE)) != 0) { + verbose(VERB_OPS, "dnstap: invalid content type on ACCEPT " + "frame"); + goto close_connection; + } + + if(!dtio_control_start_send(dtio)) { + verbose(VERB_OPS, "dnstap io: out of memory while sending " + "START frame"); + goto close_connection; + } + + dtio->accept_frame_received = 1; + return 1; + +close_connection: + dtio_del_output_event(dtio); + dtio_reconnect_slow(dtio, DTIO_RECONNECT_TIMEOUT_SLOW); + dtio_close_output(dtio); + return 0; +} + /** add the output file descriptor event for listening, read only */ static int dtio_add_output_event_read(struct dt_io_thread* dtio) { @@ -1176,7 +1372,10 @@ void dtio_output_cb(int ATTR_UNUSED(fd), short bits, void* arg) #endif if((bits&UB_EV_READ)) { - if(!dtio_check_close(dtio)) + if(dtio->ready_frame_sent && !dtio->accept_frame_received) { + if(dtio_read_accept_frame(dtio) <= 0) + return; + } else if(!dtio_check_close(dtio)) return; } @@ -1208,6 +1407,15 @@ void dtio_output_cb(int ATTR_UNUSED(fd), short bits, void* arg) /* done with the current message */ dtio_cur_msg_free(dtio); + + /* If this is a bidirectional stream the first message will be + * the READY control frame. We can only continue writing after + * receiving an ACCEPT control frame. */ + if(dtio->is_bidirectional && !dtio->ready_frame_sent) { + dtio->ready_frame_sent = 1; + (void)dtio_add_output_event_read(dtio); + break; + } } } @@ -1240,6 +1448,13 @@ void dtio_cmd_cb(int fd, short ATTR_UNUSED(bits), void* arg) verbose(VERB_ALGO, "dnstap io: cmd channel cmd quit"); } else if(r == 1 && cmd == DTIO_COMMAND_WAKEUP) { verbose(VERB_ALGO, "dnstap io: cmd channel cmd wakeup"); + + if(dtio->is_bidirectional && !dtio->accept_frame_received) { + verbose(VERB_ALGO, "dnstap io: cmd wakeup ignored, " + "waiting for ACCEPT control frame"); + return; + } + /* reregister event */ if(!dtio_add_output_event_write(dtio)) return; @@ -1561,6 +1776,25 @@ static int dtio_control_start_send(struct dt_io_thread* dtio) return 1; } +/** setup a ready control message */ +static int dtio_control_ready_send(struct dt_io_thread* dtio) +{ + log_assert(dtio->cur_msg == NULL && dtio->cur_msg_len == 0); + dtio->cur_msg = fstrm_create_control_frame_ready(DNSTAP_CONTENT_TYPE, + &dtio->cur_msg_len); + if(!dtio->cur_msg) { + return 0; + } + /* setup to send the control message */ + /* set that the buffer needs to be sent, but the length + * of that buffer is already written, that way the buffer can + * start with 0 length and then the length of the control frame + * in it */ + dtio->cur_msg_done = 0; + dtio->cur_msg_len_done = 4; + return 1; +} + /** open the output file descriptor for af_local */ static int dtio_open_output_local(struct dt_io_thread* dtio) { @@ -1693,7 +1927,8 @@ static void dtio_open_output(struct dt_io_thread* dtio) } dtio->check_nb_connect = 1; - /* the EV_READ is to catch channel close, write to write packets */ + /* the EV_READ is to read ACCEPT control messages, and catch channel + * close. EV_WRITE is to write packets */ ev = ub_event_new(dtio->event_base, dtio->fd, UB_EV_READ | UB_EV_WRITE | UB_EV_PERSIST, &dtio_output_cb, dtio); @@ -1712,7 +1947,8 @@ static void dtio_open_output(struct dt_io_thread* dtio) dtio->event = ev; /* setup protocol control message to start */ - if(!dtio_control_start_send(dtio)) { + if((!dtio->is_bidirectional && !dtio_control_start_send(dtio)) || + (dtio->is_bidirectional && !dtio_control_ready_send(dtio)) ) { log_err("dnstap io: out of memory"); ub_event_free(dtio->event); dtio->event = NULL; diff --git a/dnstap/dtstream.h b/dnstap/dtstream.h index 03346c213..d93714baf 100644 --- a/dnstap/dtstream.h +++ b/dnstap/dtstream.h @@ -88,6 +88,27 @@ struct dt_msg_entry { size_t len; }; +/** + * Containing buffer and counter for reading DNSTAP frames. + */ +struct dt_frame_read_buf { + /** Buffer containing frame, except length counter(s). */ + void* buf; + /** Number of bytes written to buffer. */ + size_t buf_count; + /** Capacity of the buffer. */ + size_t buf_cap; + + /** Frame length field. Will contain the 2nd length field for control + * frames. */ + uint32_t frame_len; + /** Number of bytes that have been written to the frame_length field. */ + size_t frame_len_done; + + /** Set to 1 if this is a control frame, 0 otherwise (ie data frame). */ + int control_frame; +}; + /** * IO thread that reads from the queues and writes them. */ @@ -171,6 +192,16 @@ struct dt_io_thread { * and client certificates can be used for authentication. */ int upstream_is_tls; + /** Perform bidirectional Frame Streams handshake before sending + * messages. */ + int is_bidirectional; + /** Set if the READY control frame has been sent. */ + int ready_frame_sent; + /** Set if valid ACCEPT frame is received. */ + int accept_frame_received; + /** (partially) read frame */ + struct dt_frame_read_buf read_frame; + /** the file path for unix socket (or NULL) */ char* socket_path; /** the ip address and port number (or NULL) */ diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 97ed7a087..d530b9a89 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -770,10 +770,11 @@ void tap_data_free(struct tap_data* data) /** reply with ACCEPT control frame to bidirectional client, * returns 0 on error */ -static int reply_with_accept(int fd) +static int reply_with_accept(struct tap_data* data) { #ifdef USE_DNSTAP /* len includes the escape and framelength */ + int r; size_t len = 0; void* acceptframe = fstrm_create_control_frame_accept( DNSTAP_CONTENT_TYPE, &len); @@ -782,21 +783,34 @@ static int reply_with_accept(int fd) return 0; } - fd_set_block(fd); - if(send(fd, acceptframe, len, 0) == -1) { + fd_set_block(data->fd); + if(data->ssl) { + if((r=SSL_write(data->ssl, acceptframe, len)) <= 0) { + if(SSL_get_error(data->ssl, r) == SSL_ERROR_ZERO_RETURN) + log_err("SSL_write, peer closed connection"); + else + log_err("could not SSL_write"); + fd_set_nonblock(data->fd); + free(acceptframe); + return 0; + } + } else { + if(send(data->fd, acceptframe, len, 0) == -1) { #ifndef USE_WINSOCK - log_err("send failed: %s", strerror(errno)); + log_err("send failed: %s", strerror(errno)); #else - log_err("send failed: %s", wsa_strerror(WSAGetLastError())); + log_err("send failed: %s", + wsa_strerror(WSAGetLastError())); #endif - fd_set_nonblock(fd); - free(acceptframe); - return 0; + fd_set_nonblock(data->fd); + free(acceptframe); + return 0; + } } if(verbosity) log_info("sent control frame(accept) content-type:(%s)", DNSTAP_CONTENT_TYPE); - fd_set_nonblock(fd); + fd_set_nonblock(data->fd); free(acceptframe); return 1; #else @@ -1033,7 +1047,7 @@ void dtio_tap_callback(int fd, short ATTR_UNUSED(bits), void* arg) FSTRM_CONTROL_FRAME_READY) { data->is_bidirectional = 1; if(verbosity) log_info("bidirectional stream"); - if(!reply_with_accept(fd)) { + if(!reply_with_accept(data)) { tap_data_free(data); } } else if(data->len >= 4 && sldns_read_uint32(data->frame) == diff --git a/doc/example.conf.in b/doc/example.conf.in index 70560273f..b1a304a4b 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -1046,6 +1046,8 @@ remote-control: # upstream log destination, by socket path, TCP or TLS destination. # dnstap: # dnstap-enable: no +# # if set to yes frame streams will be used in bidirectional mode +# dnstap-bidirectional: yes # dnstap-socket-path: "@DNSTAP_SOCKET_PATH@" # # if "" use the unix socket in dnstap-socket-path, otherwise, # # set it to "IPaddress[@port]" of the destination. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index de5a333bd..d8f23576c 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2183,6 +2183,10 @@ If dnstap is enabled. Default no. If yes, it connects to the dnstap server and if any of the dnstap-log-..-messages options is enabled it sends logs for those messages to the server. .TP +.B dnstap-bidirectional: \fI +Use frame streams in bidirectional mode to transfer DNSTAP messages. Default is +yes. +.TP .B dnstap-socket-path: \fI Sets the unix socket file name for connecting to the server that is listening on that socket. Default is "@DNSTAP_SOCKET_PATH@". diff --git a/util/config_file.c b/util/config_file.c index b1420d508..0e9ee471b 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -298,6 +298,7 @@ config_create(void) if(!(cfg->dnstap_socket_path = strdup(DNSTAP_SOCKET_PATH))) goto error_exit; #endif + cfg->dnstap_bidirectional = 1; cfg->dnstap_tls = 1; cfg->disable_dnssec_lame_check = 0; cfg->ip_ratelimit = 0; @@ -639,6 +640,7 @@ int config_set_option(struct config_file* cfg, const char* opt, #endif #ifdef USE_DNSTAP else S_YNO("dnstap-enable:", dnstap) + else S_YNO("dnstap-bidirectional:", dnstap_bidirectional) else S_STR("dnstap-socket-path:", dnstap_socket_path) else S_STR("dnstap-ip:", dnstap_ip) else S_YNO("dnstap-tls:", dnstap_tls) @@ -1055,6 +1057,7 @@ config_get_option(struct config_file* cfg, const char* opt, #endif #ifdef USE_DNSTAP else O_YNO(opt, "dnstap-enable", dnstap) + else O_YNO(opt, "dnstap-bidirectional", dnstap_bidirectional) else O_STR(opt, "dnstap-socket-path", dnstap_socket_path) else O_STR(opt, "dnstap-ip", dnstap_ip) else O_YNO(opt, "dnstap-tls", dnstap_tls) diff --git a/util/config_file.h b/util/config_file.h index fa7e5c592..66e5025d0 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -481,6 +481,8 @@ struct config_file { /** true to enable dnstap support */ int dnstap; + /** using bidirectional frame streams if true */ + int dnstap_bidirectional; /** dnstap socket path */ char* dnstap_socket_path; /** dnstap IP */ diff --git a/util/configlexer.c b/util/configlexer.c index a4ac74066..b9fcf7b21 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -1,7 +1,7 @@ #include "config.h" #include "util/configyyrename.h" -#line 2 "" +#line 3 "" #define YY_INT_ALIGNED short int @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 314 -#define YY_END_OF_BUFFER 315 +#define YY_NUM_RULES 315 +#define YY_END_OF_BUFFER 316 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,347 +363,349 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3083] = +static const flex_int16_t yy_accept[3097] = { 0, - 1, 1, 296, 296, 300, 300, 304, 304, 308, 308, - 1, 1, 315, 312, 1, 294, 294, 313, 2, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 296, 297, 297, 298, 313, 300, 301, 301, - 302, 313, 307, 304, 305, 305, 306, 313, 308, 309, - 309, 310, 313, 311, 295, 2, 299, 313, 311, 312, - 0, 1, 2, 2, 2, 2, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 1, 1, 297, 297, 301, 301, 305, 305, 309, 309, + 1, 1, 316, 313, 1, 295, 295, 314, 2, 314, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 297, 298, 298, 299, 314, 301, 302, 302, + 303, 314, 308, 305, 306, 306, 307, 314, 309, 310, + 310, 311, 314, 312, 296, 2, 300, 314, 312, 313, + 0, 1, 2, 2, 2, 2, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 296, 0, 300, 0, 307, 0, 304, 308, 0, - 311, 0, 2, 2, 311, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 297, 0, 301, 0, 308, 0, 305, 309, 0, + 312, 0, 2, 2, 312, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 311, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 312, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 115, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 123, - 312, 312, 312, 312, 312, 312, 312, 311, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 115, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 123, + 313, 313, 313, 313, 313, 313, 313, 312, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 99, 312, 312, 312, 312, 312, - 312, 8, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 116, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 99, 313, 313, 313, 313, 313, + 313, 8, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 116, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 128, 312, 311, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 289, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 128, 313, 312, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 290, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 311, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 57, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 227, 312, 14, 15, 312, 19, 18, 312, 312, 211, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 312, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 57, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 227, 313, 14, 15, 313, 19, 18, 313, 313, 211, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 122, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 209, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 3, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 122, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 209, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 3, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 311, 312, 312, - 312, 312, 312, 312, 312, 283, 312, 312, 282, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 303, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 312, 313, 313, + 313, 313, 313, 313, 313, 284, 313, 313, 283, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 304, 313, 313, 313, - 312, 312, 312, 56, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 60, 312, 257, 312, 312, 312, 312, 312, 312, 312, - 312, 290, 291, 312, 312, 312, 312, 312, 61, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 119, 312, 312, 312, 312, - 312, 312, 312, 312, 198, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 21, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 56, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 60, 313, 258, 313, 313, 313, 313, 313, 313, + 313, 313, 291, 292, 313, 313, 313, 313, 313, 61, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 119, 313, 313, 313, + 313, 313, 313, 313, 313, 198, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 21, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 147, 312, 312, 303, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 97, 312, - 312, 312, 312, 312, 312, 312, 265, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 170, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 146, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 147, 313, 313, 304, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 97, + 313, 313, 313, 313, 313, 313, 313, 266, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 170, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 146, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 96, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 32, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 33, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 58, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 121, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 96, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 32, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 33, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 58, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 114, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 59, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 230, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 171, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 47, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 121, 313, 313, 313, 313, 313, 114, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 59, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 231, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 171, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 47, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 248, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 51, 312, 52, 312, 312, 312, 312, - 312, 100, 312, 101, 312, 312, 312, 312, 98, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 7, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 249, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 51, 313, 52, 313, + 313, 313, 313, 313, 100, 313, 101, 313, 313, 313, + 313, 98, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 7, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 220, 312, 312, 312, - 312, 149, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 231, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 48, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 190, 312, - 189, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 220, + 313, 313, 313, 313, 149, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 232, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 48, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 190, 313, 189, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 16, 17, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 62, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 197, 312, 312, 312, 312, 312, - 312, 103, 312, 102, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 181, 312, 312, 312, 312, - 312, 312, 312, 312, 129, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 81, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 16, 17, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 62, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 197, 313, + 313, 313, 313, 313, 313, 103, 313, 102, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 181, + 313, 313, 313, 313, 313, 313, 313, 313, 129, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 81, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 210, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 85, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 55, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 184, - 185, 312, 312, 312, 259, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 6, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 210, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 85, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 55, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 184, 185, 313, 313, 313, 260, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 6, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 263, - 312, 312, 312, 312, 312, 312, 284, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 42, 312, 312, - 312, 312, 44, 312, 312, 312, 312, 312, 312, 312, - 312, 45, 312, 312, 312, 312, 312, 312, 312, 312, - 177, 312, 312, 312, 124, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 202, 312, 178, 312, 312, - 312, 217, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 264, 313, 313, 313, 313, 313, + 313, 285, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 42, 313, 313, 313, 313, 44, 313, 313, + 313, 313, 313, 313, 313, 313, 45, 313, 313, 313, + 313, 313, 313, 313, 313, 177, 313, 313, 313, 124, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 202, 313, 178, 313, 313, 313, 217, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 46, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 126, 108, 312, 109, 312, 312, 312, 107, 312, - 312, 312, 312, 312, 312, 312, 312, 144, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 247, - 312, 312, 312, 312, 312, 312, 312, 312, 179, 312, - 312, 312, 312, 312, 182, 312, 188, 312, 312, 312, - 312, 312, 216, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 95, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 120, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 313, 46, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 126, 108, 313, + 109, 313, 313, 313, 107, 313, 313, 313, 313, 313, + 313, 313, 313, 144, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 248, 313, 313, 313, 313, + 313, 313, 313, 313, 179, 313, 313, 313, 313, 313, + 182, 313, 188, 313, 313, 313, 313, 313, 216, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 95, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 53, 312, 312, 312, 26, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 20, 312, 312, - 312, 312, 312, 312, 27, 36, 312, 154, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 70, 72, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 267, 312, 312, 312, 228, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 110, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 143, 312, + 313, 313, 120, 313, 313, 313, 313, 313, 313, 53, + 313, 313, 313, 26, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 20, 313, 313, 313, 313, 313, 313, + 27, 36, 313, 154, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 70, 72, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 268, 313, + 313, 313, 313, 228, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 110, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 278, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 148, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 208, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 287, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 165, - 312, 312, 312, 312, 312, 312, 312, 312, 104, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 160, 312, + 313, 313, 313, 313, 313, 143, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 279, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 148, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 208, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 288, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 165, 313, 313, 313, + 313, 313, 313, 313, 313, 104, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, - 172, 312, 312, 312, 312, 312, 132, 312, 312, 312, - 312, 312, 91, 312, 312, 312, 312, 200, 312, 312, - 312, 312, 312, 312, 218, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 239, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 125, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 164, 312, 312, 312, 312, 312, 73, 74, 312, - 312, 312, 312, 312, 54, 312, 312, 312, 312, 312, - 80, 173, 312, 191, 312, 221, 312, 312, 183, 260, - 312, 312, 312, 312, 312, 66, 312, 175, 312, 312, + 313, 313, 313, 313, 313, 160, 313, 172, 313, 313, + 313, 313, 313, 132, 313, 313, 313, 313, 313, 91, + 313, 313, 313, 313, 200, 313, 313, 313, 313, 313, + 313, 218, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 240, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 125, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 164, + 313, 313, 313, 313, 313, 73, 74, 313, 313, 313, + 313, 313, 54, 313, 313, 313, 313, 313, 80, 173, + 313, 191, 313, 221, 313, 313, 183, 261, 313, 313, - 312, 312, 312, 9, 312, 312, 312, 94, 312, 312, - 312, 312, 252, 312, 312, 312, 312, 199, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 163, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 150, 312, - 266, 312, 312, 312, 312, 238, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 212, 312, 312, + 313, 313, 313, 66, 313, 175, 313, 313, 313, 313, + 313, 9, 313, 313, 313, 94, 313, 313, 313, 313, + 253, 313, 313, 313, 313, 199, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 163, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 150, 313, 267, 313, + 313, 313, 313, 313, 239, 313, 313, 313, 313, 313, - 312, 312, 258, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 281, 312, 174, - 312, 312, 312, 312, 312, 312, 312, 65, 67, 312, - 312, 312, 312, 312, 312, 312, 93, 312, 312, 312, - 312, 250, 312, 312, 312, 312, 262, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 204, 34, - 28, 30, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 35, 312, 29, 31, 312, 312, 312, 312, 312, - 312, 312, 312, 90, 312, 312, 312, 312, 312, 312, + 313, 313, 313, 313, 313, 313, 212, 313, 313, 313, + 313, 259, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 282, 313, 174, 313, + 313, 313, 313, 313, 313, 313, 65, 67, 313, 313, + 313, 313, 313, 313, 313, 93, 313, 313, 313, 313, + 251, 313, 313, 313, 313, 263, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 204, 34, 28, + 30, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 35, 313, 29, 31, 313, 313, 313, 313, 313, 313, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 206, 203, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 64, 312, 312, 127, 312, 111, 312, 312, 312, 312, - 312, 312, 312, 312, 145, 13, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 276, 312, 279, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 12, 312, - 312, 22, 312, 312, 312, 256, 312, 312, 312, 312, - 264, 312, 312, 312, 68, 312, 214, 312, 312, 312, - 312, 205, 312, 312, 63, 312, 312, 312, 312, 23, + 313, 313, 90, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 206, 203, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 64, 313, 313, 127, 313, 111, 313, 313, 313, 313, + 313, 313, 313, 313, 145, 13, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 277, 313, 280, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 12, 313, + 313, 22, 313, 313, 313, 257, 313, 313, 313, 313, + 265, 313, 313, 313, 68, 313, 214, 313, 313, 313, - 312, 43, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 159, 158, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 207, 201, 312, 219, 312, - 312, 268, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 75, - 312, 312, 312, 251, 312, 312, 312, 312, 187, 312, - 312, 312, 312, 213, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 285, 286, 156, 312, 312, 69, 312, - 312, 312, 312, 166, 312, 312, 105, 106, 312, 312, + 313, 205, 313, 313, 63, 313, 313, 313, 313, 23, + 313, 43, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 159, 158, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 207, 201, 313, 219, 313, + 313, 269, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 75, 313, 313, 313, 252, 313, 313, 313, 313, 187, + 313, 313, 313, 313, 213, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 286, 287, 156, 313, 313, 69, - 312, 312, 151, 312, 153, 312, 192, 312, 312, 312, - 312, 157, 312, 312, 222, 312, 312, 312, 312, 312, - 312, 312, 134, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 229, 312, 312, 312, 312, 312, - 312, 312, 24, 312, 261, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 193, 312, 312, 249, - 312, 280, 312, 186, 312, 312, 312, 312, 49, 312, - 312, 312, 312, 4, 312, 312, 312, 312, 118, 133, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 225, 37, + 313, 313, 313, 313, 166, 313, 313, 105, 106, 313, + 313, 313, 313, 151, 313, 153, 313, 192, 313, 313, + 313, 313, 157, 313, 313, 222, 313, 313, 313, 313, + 313, 313, 313, 134, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 230, 313, 313, 313, + 313, 313, 313, 313, 24, 313, 262, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 193, 313, + 313, 250, 313, 281, 313, 186, 313, 313, 313, 313, + 49, 313, 313, 313, 313, 4, 313, 313, 313, 313, + 118, 133, 313, 313, 313, 313, 313, 313, 313, 313, - 38, 312, 312, 312, 312, 312, 312, 312, 269, 312, - 312, 312, 312, 312, 312, 237, 312, 312, 312, 312, - 312, 312, 312, 196, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 78, 312, 50, 255, 312, 226, 312, - 312, 312, 312, 11, 312, 312, 312, 312, 312, 312, - 117, 312, 312, 312, 312, 194, 82, 312, 40, 312, - 312, 312, 312, 312, 312, 312, 312, 162, 312, 312, - 312, 312, 312, 136, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 236, 312, 312, 312, 312, 130, 312, - 312, 112, 113, 312, 312, 312, 84, 88, 83, 312, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 225, 37, 38, 313, 313, 313, 313, 313, 313, 313, + 270, 313, 313, 313, 313, 313, 313, 313, 238, 313, + 313, 313, 313, 313, 313, 313, 196, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 78, 313, 50, 256, + 313, 226, 313, 313, 313, 313, 11, 313, 313, 313, + 313, 313, 313, 117, 313, 313, 313, 313, 194, 82, + 313, 40, 313, 313, 313, 313, 313, 313, 313, 313, + 162, 313, 313, 313, 313, 313, 136, 313, 313, 313, + 313, 229, 313, 313, 313, 313, 313, 237, 313, 313, - 76, 312, 312, 312, 312, 312, 10, 312, 312, 312, - 253, 288, 312, 312, 312, 312, 293, 39, 312, 312, - 312, 312, 312, 161, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 89, 87, 312, 77, - 277, 312, 312, 312, 312, 312, 312, 312, 180, 312, - 312, 312, 312, 312, 195, 312, 312, 312, 312, 312, - 312, 312, 312, 152, 71, 312, 312, 312, 312, 312, - 270, 312, 312, 312, 312, 312, 312, 312, 233, 312, - 312, 232, 131, 312, 86, 137, 138, 141, 142, 139, + 313, 313, 130, 313, 313, 112, 113, 313, 313, 313, + 84, 88, 83, 313, 76, 313, 313, 313, 313, 313, + 10, 313, 313, 313, 254, 289, 313, 313, 313, 313, + 294, 39, 313, 313, 313, 313, 313, 161, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 89, 87, 313, 77, 278, 313, 313, 313, 313, 313, + 313, 313, 180, 313, 313, 313, 313, 313, 195, 313, + 313, 313, 313, 313, 313, 313, 313, 152, 71, 313, + 313, 313, 313, 313, 271, 313, 313, 313, 313, 313, - 140, 79, 312, 254, 312, 312, 312, 312, 155, 312, - 312, 312, 312, 312, 224, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 168, 167, 41, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 92, - 312, 223, 312, 246, 274, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 5, 312, 312, - 215, 312, 312, 275, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 234, 25, 312, 312, 312, 312, 312, + 313, 313, 234, 313, 313, 233, 131, 313, 86, 137, + 138, 141, 142, 139, 140, 79, 313, 255, 313, 313, + 313, 313, 155, 313, 313, 313, 313, 313, 224, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 168, 167, 41, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 92, 313, 223, 313, 247, 275, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 5, 313, 313, 215, 313, 313, 276, 313, 313, + + 313, 313, 313, 313, 313, 313, 313, 235, 25, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 236, 313, 313, 313, 135, 313, 313, 313, 313, + 313, 313, 313, 313, 169, 313, 176, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 272, 313, 313, 313, + 313, 313, 313, 313, 313, 313, 313, 313, 313, 313, + 313, 313, 313, 313, 293, 313, 313, 243, 313, 313, + 313, 313, 313, 273, 313, 313, 313, 313, 313, 313, + 274, 313, 313, 313, 241, 313, 244, 245, 313, 313, + 313, 313, 313, 242, 246, 0 - 312, 312, 312, 312, 312, 312, 312, 235, 312, 312, - 312, 135, 312, 312, 312, 312, 312, 312, 312, 312, - 169, 312, 176, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 271, 312, 312, 312, 312, 312, 312, 312, - 312, 312, 312, 312, 312, 312, 312, 312, 312, 312, - 292, 312, 312, 242, 312, 312, 312, 312, 312, 272, - 312, 312, 312, 312, 312, 312, 273, 312, 312, 312, - 240, 312, 243, 244, 312, 312, 312, 312, 312, 241, - 245, 0 } ; static const YY_CHAR yy_ec[256] = @@ -746,15 +748,15 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3097] = +static const flex_int16_t yy_base[3111] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 1616, 1559, 81, 6016, 6016, 6016, 96, 52, + 90, 112, 1616, 1547, 81, 6048, 6048, 6048, 96, 52, 106, 63, 107, 128, 70, 116, 123, 134, 57, 88, 76, 145, 151, 114, 158, 97, 169, 181, 179, 188, - 194, 129, 1447, 6016, 6016, 6016, 135, 1315, 6016, 6016, - 6016, 146, 1142, 1110, 6016, 6016, 6016, 220, 1034, 6016, - 6016, 6016, 171, 903, 6016, 224, 6016, 228, 157, 818, + 194, 129, 1447, 6048, 6048, 6048, 135, 1315, 6048, 6048, + 6048, 146, 1142, 1110, 6048, 6048, 6048, 220, 1034, 6048, + 6048, 6048, 171, 903, 6048, 224, 6048, 228, 157, 818, 232, 167, 0, 239, 0, 0, 165, 205, 85, 166, 226, 190, 233, 234, 228, 240, 241, 242, 98, 130, 250, 243, 245, 248, 258, 256, 262, 267, 273, 251, @@ -783,9 +785,9 @@ static const flex_int16_t yy_base[3097] = 701, 703, 717, 705, 710, 718, 719, 727, 712, 720, 739, 744, 745, 733, 731, 747, 749, 752, 754, 760, - 755, 757, 763, 764, 765, 766, 773, 768, 6016, 772, + 755, 757, 763, 764, 765, 766, 773, 768, 6048, 772, 774, 782, 784, 786, 790, 787, 796, 794, 777, 804, - 806, 802, 810, 832, 788, 800, 809, 811, 814, 6016, + 806, 802, 810, 832, 788, 800, 809, 811, 814, 6048, 822, 816, 856, 827, 820, 840, 837, 836, 844, 845, 838, 846, 867, 850, 849, 852, 879, 854, 862, 864, 874, 880, 878, 887, 890, 886, 888, 894, 898, 895, @@ -795,21 +797,21 @@ static const flex_int16_t yy_base[3097] = 937, 943, 955, 950, 951, 959, 961, 960, 953, 966, 962, 969, 972, 970, 978, 980, 981, 976, 982, 984, 987, 993, 986, 988, 995, 997, 996, 1000, 1005, 1006, - 1010, 990, 1018, 1001, 6016, 1020, 1012, 1014, 1016, 1024, - 1026, 6016, 1027, 1028, 1029, 1036, 1031, 1041, 1032, 1039, + 1010, 990, 1018, 1001, 6048, 1020, 1012, 1014, 1016, 1024, + 1026, 6048, 1027, 1028, 1029, 1036, 1031, 1041, 1032, 1039, 1046, 1049, 1042, 1050, 1061, 1051, 1059, 1064, 1060, 1063, 1066, 1069, 1072, 1070, 1077, 1073, 1067, 935, 1080, 1094, - 6016, 1079, 1081, 1085, 1084, 1091, 1097, 1106, 1104, 1112, + 6048, 1079, 1081, 1085, 1084, 1091, 1097, 1106, 1104, 1112, 1105, 1109, 1122, 1123, 1125, 1126, 1130, 1086, 1129, 1131, 1133, 1134, 1136, 1137, 1135, 1138, 1144, 1140, 1145, 1141, - 6016, 1152, 1158, 1169, 1155, 1164, 1165, 1166, 1168, 1170, + 6048, 1152, 1158, 1169, 1155, 1164, 1165, 1166, 1168, 1170, 1171, 1172, 1174, 1173, 1178, 1192, 1182, 1193, 1189, 1195, 1190, 1191, 1197, 1196, 1200, 1205, 1213, 1210, 1215, 1218, 1226, 1225, 1228, 1235, 1237, 1211, 1230, 1203, 1222, 1234, 1240, 1239, 1238, 1245, 1246, 1253, 1248, 1249, 1251, 1254, 1263, 1255, 1258, 1265, 1262, 1269, 1266, 1259, 1271, 1278, - 1279, 1281, 6016, 1288, 1285, 1286, 1287, 1290, 1297, 1298, + 1279, 1281, 6048, 1288, 1285, 1286, 1287, 1290, 1297, 1298, 1292, 1299, 1302, 1301, 1305, 1304, 1307, 1311, 1312, 1316, 1318, 1321, 1325, 1322, 1323, 1337, 1336, 1338, 1329, 1330, 1346, 1345, 1348, 1349, 1351, 1359, 1341, 1355, 1357, 1366, @@ -821,622 +823,624 @@ static const flex_int16_t yy_base[3097] = 1442, 1443, 1446, 1454, 1452, 1444, 1462, 1450, 1465, 1466, 1467, 1468, 1469, 1472, 1471, 1474, 1475, 1483, 1484, 1485, 1488, 1487, 1492, 1490, 1497, 1489, 1498, 1499, 1503, 1505, - 1506, 1510, 1513, 1516, 1511, 6016, 1507, 1523, 1521, 1524, + 1506, 1510, 1513, 1516, 1511, 6048, 1507, 1523, 1521, 1524, 1525, 1529, 1530, 1538, 1531, 1533, 1534, 1535, 1536, 1561, - 6016, 1542, 6016, 6016, 1545, 6016, 6016, 1544, 1543, 6016, + 6048, 1542, 6048, 6048, 1545, 6048, 6048, 1544, 1543, 6048, - 1558, 1547, 1546, 1567, 1571, 1565, 1551, 1574, 1555, 1584, - 1589, 1577, 1579, 1585, 1586, 1592, 1598, 1587, 1604, 1599, - 1609, 1612, 1613, 1615, 1619, 1621, 1622, 1606, 1624, 1626, - 1629, 1627, 1630, 1632, 1636, 1637, 1633, 1640, 1639, 1649, - 1653, 1642, 1660, 6016, 1657, 1669, 1670, 1666, 1673, 1665, - 1672, 1674, 1645, 1656, 1675, 1676, 1679, 1680, 1677, 1686, - 1681, 1689, 1698, 1688, 6016, 1691, 1693, 1695, 1699, 1701, - 1703, 1708, 1709, 1705, 1711, 1712, 1722, 1714, 1717, 1718, - 1724, 1726, 1728, 6016, 1727, 1735, 1736, 1738, 1740, 1742, - 1744, 1741, 1745, 1746, 1747, 1748, 1749, 1753, 1760, 1759, + 1558, 1551, 1546, 1568, 1571, 1565, 1559, 1574, 1555, 1584, + 1589, 1582, 1579, 1585, 1586, 1592, 1598, 1599, 1604, 1594, + 1612, 1610, 1614, 1616, 1619, 1620, 1623, 1624, 1625, 1626, + 1628, 1630, 1631, 1627, 1634, 1636, 1633, 1640, 1639, 1650, + 1649, 1656, 1659, 6048, 1657, 1666, 1669, 1665, 1673, 1668, + 1672, 1674, 1676, 1680, 1677, 1681, 1683, 1684, 1645, 1687, + 1689, 1692, 1696, 1693, 6048, 1694, 1695, 1697, 1701, 1702, + 1705, 1709, 1710, 1707, 1713, 1715, 1726, 1716, 1718, 1719, + 1727, 1723, 1731, 6048, 1735, 1730, 1739, 1740, 1741, 1743, + 1744, 1746, 1749, 1748, 1750, 1751, 1752, 1753, 1765, 1758, - 1766, 1756, 1769, 1771, 1773, 1774, 1781, 1776, 1782, 1784, - 1785, 1786, 1788, 1789, 1792, 1800, 1801, 1797, 1805, 1798, - 1809, 1813, 1815, 1802, 1814, 1817, 1816, 1823, 1831, 1827, - 1820, 1828, 1835, 1832, 1840, 1833, 1842, 1844, 1845, 1846, - 1848, 1836, 1853, 1854, 1855, 6016, 1856, 1857, 6016, 1861, - 1862, 1884, 1863, 1865, 1867, 1876, 1866, 1868, 1870, 1878, - 1894, 1888, 1904, 1896, 1897, 1906, 1907, 1908, 1909, 1911, - 1915, 1916, 1877, 1917, 1924, 1932, 1928, 1934, 1937, 1919, - 1933, 1935, 1954, 1938, 1939, 1942, 1945, 1946, 1943, 1951, - 1949, 1958, 1964, 1966, 1967, 6016, 1975, 1976, 1970, 1972, + 1754, 1756, 1771, 1774, 1776, 1777, 1779, 1761, 1783, 1784, + 1786, 1787, 1788, 1789, 1791, 1799, 1801, 1798, 1802, 1797, + 1806, 1809, 1814, 1805, 1813, 1815, 1816, 1821, 1829, 1827, + 1826, 1819, 1834, 1831, 1836, 1838, 1840, 1842, 1839, 1843, + 1848, 1846, 1850, 1852, 1853, 6048, 1855, 1859, 6048, 1858, + 1860, 1882, 1861, 1863, 1865, 1875, 1864, 1884, 1871, 1869, + 1890, 1892, 1900, 1896, 1897, 1904, 1901, 1902, 1909, 1910, + 1912, 1913, 1914, 1918, 1919, 1929, 1930, 1877, 1936, 1938, + 1922, 1933, 1935, 1954, 1937, 1940, 1942, 1939, 1946, 1943, + 1950, 1957, 1959, 1963, 1965, 1966, 6048, 1967, 1969, 1975, - 1984, 1981, 1982, 6016, 1987, 1988, 1990, 1998, 1991, 1993, - 1994, 1995, 2002, 2003, 2005, 2004, 2009, 2008, 2007, 2025, - 6016, 2010, 6016, 2020, 2011, 2021, 2022, 2027, 2028, 2030, - 2032, 6016, 6016, 2033, 2039, 2041, 2050, 2046, 6016, 2047, - 2055, 2052, 2057, 2051, 2058, 2061, 2062, 2066, 2067, 2070, - 2068, 2075, 2071, 2076, 2073, 6016, 2089, 1940, 2085, 2091, - 2083, 2093, 2095, 2072, 6016, 2097, 2094, 2101, 2108, 2105, - 2106, 2109, 2111, 2112, 2116, 2117, 2118, 2119, 2120, 2129, - 2130, 2121, 2132, 2135, 2131, 6016, 2128, 2139, 2147, 2143, - 2145, 2142, 2149, 2150, 2152, 2153, 2154, 1879, 2155, 2160, + 1976, 1983, 1979, 1981, 6048, 1986, 1987, 1985, 1997, 1990, + 1988, 1993, 1992, 2002, 2003, 2005, 2004, 2006, 2008, 2009, + 2024, 6048, 2011, 6048, 2019, 2010, 2020, 2021, 2022, 2028, + 2029, 2031, 6048, 6048, 2032, 2038, 2041, 2050, 2045, 6048, + 2046, 2054, 2051, 2056, 2049, 2057, 2060, 2061, 2065, 2066, + 2070, 2067, 2074, 2069, 2075, 2071, 6048, 2083, 2072, 2089, + 2090, 2082, 2091, 2092, 2088, 6048, 2099, 2101, 2102, 2109, + 2107, 2104, 2110, 2111, 2115, 2112, 2118, 2119, 2120, 2121, + 2131, 2132, 2122, 2124, 2133, 2141, 6048, 2136, 2140, 2148, + 2144, 2146, 2143, 2147, 2150, 2151, 2155, 2159, 2153, 2157, - 2161, 2169, 2170, 2162, 2174, 2166, 2167, 2175, 2176, 2182, - 2181, 2183, 2184, 2185, 6016, 2187, 2191, 147, 2193, 2194, - 2196, 2195, 2202, 2198, 2201, 2218, 2219, 2215, 2214, 2217, - 2223, 2224, 2225, 2226, 2227, 1751, 2228, 2229, 6016, 2205, - 2231, 2232, 2234, 2233, 2235, 2242, 6016, 2251, 2254, 2263, - 2253, 2257, 2264, 2265, 2268, 2266, 2269, 2270, 2273, 2272, - 2276, 2278, 6016, 2280, 2283, 2290, 2281, 2291, 2236, 2293, - 2292, 2294, 2298, 2299, 2300, 2303, 2304, 2305, 2306, 2308, - 2312, 2313, 2314, 2319, 2320, 6016, 2331, 2321, 2322, 2323, - 2332, 2333, 2342, 2338, 2340, 2346, 2347, 2360, 2349, 2344, + 2161, 2163, 2171, 2172, 2169, 2174, 2177, 2167, 2178, 2181, + 2187, 2180, 2185, 2188, 2189, 6048, 2190, 2196, 147, 2191, + 2197, 2199, 2201, 2204, 2203, 2200, 2216, 2221, 2217, 2223, + 2219, 2218, 2226, 2228, 2227, 2229, 2230, 2231, 2234, 6048, + 2236, 2238, 2239, 2241, 2243, 2244, 2254, 6048, 2247, 2260, + 2245, 2263, 2258, 2255, 2271, 2266, 2272, 2267, 2275, 2277, + 2279, 2278, 2281, 2282, 6048, 2287, 2284, 2288, 2294, 2295, + 2298, 2297, 2303, 2304, 2305, 2299, 2307, 2308, 2309, 2310, + 2312, 2313, 2317, 2320, 2316, 2325, 2328, 6048, 2332, 2327, + 2330, 2334, 2339, 2340, 2348, 2343, 2346, 2350, 2355, 2364, - 2356, 2351, 2358, 2355, 2367, 2366, 2370, 2376, 2372, 2380, - 2382, 2374, 2378, 2386, 2384, 2392, 2388, 2389, 2405, 2406, - 2398, 2408, 2401, 2390, 2416, 2409, 6016, 2418, 2411, 2423, - 2424, 2431, 2427, 2428, 2429, 2432, 2435, 2437, 2438, 2439, - 2448, 2451, 2447, 2440, 2458, 2445, 2460, 2443, 2449, 2462, - 2465, 2466, 2471, 2473, 6016, 2476, 2472, 2468, 2480, 2483, - 2478, 2485, 2490, 2488, 2486, 2492, 2495, 2496, 2497, 2499, - 2501, 2502, 2503, 2504, 6016, 2509, 2508, 2510, 2514, 2520, - 2518, 2524, 2527, 2530, 2533, 2517, 2534, 2536, 2537, 6016, - 2545, 2547, 2544, 2548, 2546, 2551, 2552, 2554, 2556, 6016, + 2353, 2349, 2357, 2367, 2365, 2371, 2381, 2374, 2384, 2385, + 2361, 2390, 2392, 2376, 2388, 2393, 2378, 2394, 2400, 2401, + 2409, 2410, 2407, 2411, 2408, 2420, 2432, 2405, 6048, 2423, + 2418, 2413, 2425, 2441, 2436, 2437, 2438, 2439, 2442, 2444, + 2446, 2447, 2454, 2449, 2452, 2455, 2457, 2456, 2458, 2464, + 2466, 2468, 2472, 2474, 2476, 2477, 6048, 2478, 2480, 2483, + 2484, 2487, 2488, 2495, 2496, 2498, 2490, 2492, 2500, 2501, + 2504, 2505, 2509, 2506, 2510, 2516, 6048, 2517, 2518, 2519, + 2522, 2523, 2527, 2526, 2532, 2529, 2538, 2539, 2540, 2541, + 2542, 6048, 2550, 2551, 2547, 2559, 2549, 2554, 2556, 2561, - 2557, 2558, 2565, 2566, 2561, 6016, 2568, 2564, 2569, 2571, - 2572, 2573, 2574, 2579, 2580, 2582, 2585, 2588, 2592, 2593, - 6016, 2594, 2602, 2603, 2595, 2606, 2597, 2607, 2608, 2612, - 2616, 2610, 6016, 2625, 2627, 2628, 2635, 2630, 2632, 2633, - 2636, 2637, 2638, 2640, 2643, 6016, 2646, 2644, 2647, 2652, - 2650, 2648, 2655, 2667, 2657, 2659, 2668, 2664, 2670, 2671, - 2672, 2673, 2676, 2675, 2683, 2686, 2684, 2688, 2689, 2691, - 2701, 2703, 2704, 2706, 6016, 2709, 2698, 2711, 2700, 2712, - 2713, 2714, 2715, 2717, 2719, 2724, 2722, 2723, 2731, 2739, - 2732, 2734, 2740, 2741, 2744, 2743, 2745, 2746, 2747, 2755, + 2562, 6048, 2563, 2564, 2571, 2572, 2568, 6048, 2575, 2570, + 2576, 2577, 2578, 2579, 2580, 2585, 2586, 2588, 2593, 2595, + 2591, 2599, 6048, 2600, 2608, 2603, 2601, 2609, 2612, 2613, + 2615, 2624, 2616, 2618, 2622, 6048, 2637, 2623, 2634, 2641, + 2638, 2639, 2642, 2643, 2644, 2646, 2647, 2650, 6048, 2653, + 2651, 2654, 2655, 2658, 2659, 2661, 2674, 2663, 2666, 2673, + 2671, 2676, 2678, 2679, 2681, 2689, 2682, 2683, 2695, 2690, + 2693, 2698, 2701, 2708, 2709, 2710, 2712, 6048, 2715, 2716, + 2717, 2704, 2707, 2718, 2723, 2724, 2727, 2728, 2729, 2731, + 2732, 2741, 2743, 2738, 2748, 2744, 2746, 2750, 2752, 2753, - 2751, 2750, 2763, 2754, 2761, 2768, 2758, 2769, 2770, 2771, - 2772, 2774, 2778, 2779, 2781, 2775, 2783, 2792, 2794, 2796, - 2785, 2797, 2801, 2802, 6016, 2805, 2807, 2803, 2809, 2810, - 2816, 2817, 2819, 2820, 2811, 2825, 2827, 2828, 2833, 2834, - 2836, 2843, 2839, 6016, 2840, 6016, 2841, 2842, 2844, 2854, - 2846, 6016, 2850, 6016, 2857, 2864, 2851, 2855, 6016, 2865, - 2859, 2861, 2872, 2869, 2874, 2875, 2876, 2877, 2882, 2878, - 2880, 2885, 2886, 2888, 2890, 2892, 2896, 2893, 2903, 2905, - 2897, 2906, 2899, 2912, 2914, 2913, 2915, 6016, 2925, 2916, - 2919, 2922, 2926, 2927, 2928, 2930, 2931, 2936, 2937, 2938, + 2754, 2755, 2762, 2761, 2760, 2770, 2768, 2769, 2777, 2776, + 2778, 2779, 2780, 2767, 2782, 2785, 2783, 2788, 2789, 2793, + 2805, 2802, 2790, 2796, 2806, 2808, 2810, 6048, 2813, 2814, + 2811, 2817, 2818, 2823, 2820, 2830, 2827, 2828, 2833, 2832, + 2835, 2840, 2843, 2844, 2851, 2847, 6048, 2848, 6048, 2849, + 2850, 2852, 2862, 2854, 6048, 2858, 6048, 2865, 2872, 2859, + 2863, 6048, 2873, 2867, 2869, 2880, 2877, 2882, 2883, 2884, + 2885, 2890, 2886, 2888, 2893, 2894, 2896, 2898, 2900, 2904, + 2901, 2911, 2913, 2905, 2914, 2907, 2920, 2922, 2921, 2923, + 6048, 2933, 2924, 2927, 2930, 2934, 2935, 2936, 2938, 2939, - 2939, 2945, 2944, 2954, 2950, 2961, 6016, 2953, 2958, 2960, - 2962, 6016, 2964, 2963, 2965, 2971, 2974, 2973, 2975, 2977, - 2981, 2983, 2976, 2986, 2984, 2993, 2994, 6016, 2999, 3000, - 2985, 3003, 3002, 3015, 3007, 3016, 3018, 3020, 3021, 3011, - 3022, 3023, 3025, 3027, 3034, 3035, 3031, 3038, 3033, 3039, - 3047, 3043, 3037, 3041, 3049, 3050, 3051, 3054, 3057, 3058, - 3053, 3059, 3060, 3062, 6016, 3068, 3071, 3072, 3075, 3063, - 3080, 3081, 3082, 3084, 3086, 3085, 3087, 3088, 6016, 3095, - 6016, 3089, 3103, 3098, 3108, 3090, 3109, 3113, 3112, 3117, - 3118, 3119, 3120, 3121, 3122, 3123, 3126, 3134, 3133, 3135, + 2944, 2945, 2946, 2947, 2953, 2952, 2962, 2958, 2969, 6048, + 2961, 2966, 2968, 2970, 6048, 2972, 2971, 2973, 2979, 2982, + 2981, 2983, 2985, 2989, 2984, 2991, 2986, 2994, 3007, 3004, + 3005, 6048, 3010, 3011, 2992, 3015, 3014, 3026, 3022, 3028, + 3030, 3038, 3034, 3023, 3025, 3021, 3033, 3041, 3048, 3051, + 3047, 3055, 3035, 3054, 3057, 3060, 3046, 3050, 3061, 3062, + 3063, 3066, 3067, 3074, 3069, 3071, 3072, 3073, 6048, 3083, + 3075, 3079, 3087, 3085, 3090, 3092, 3093, 3096, 3097, 3099, + 3098, 3101, 6048, 3103, 6048, 3102, 3119, 3109, 3114, 3120, + 3115, 3121, 3126, 3128, 3129, 3130, 3131, 3134, 3138, 3137, - 3148, 3131, 3128, 3136, 3139, 3144, 3149, 6016, 6016, 3150, - 3152, 3155, 3157, 3158, 3159, 3162, 3169, 3166, 3165, 3168, - 3172, 3180, 6016, 3182, 3176, 3184, 3187, 3194, 3185, 3198, - 3199, 3195, 3207, 3202, 6016, 3204, 3205, 3215, 3210, 3211, - 3218, 6016, 3213, 6016, 3216, 3217, 3222, 3225, 3226, 3227, - 3228, 3229, 3232, 3244, 3247, 3233, 3249, 3237, 3245, 3250, - 3251, 3258, 3254, 3255, 3256, 6016, 3260, 3261, 3262, 3265, - 3267, 3268, 3275, 3277, 6016, 3278, 3280, 3282, 3283, 3285, - 3287, 3288, 3289, 3291, 3294, 3290, 3292, 3305, 3298, 3297, - 3307, 3317, 3308, 3319, 6016, 3320, 3314, 3327, 3329, 3322, + 3139, 3140, 3142, 3150, 3156, 3143, 3147, 3157, 3145, 3161, + 3162, 6048, 6048, 3164, 3165, 3166, 3168, 3169, 3171, 3172, + 3170, 3180, 3181, 3186, 3188, 3196, 6048, 3191, 3193, 3192, + 3197, 3200, 3198, 3204, 3215, 3212, 3219, 3218, 6048, 3201, + 3211, 3226, 3210, 3227, 3228, 6048, 3229, 6048, 3231, 3232, + 3233, 3234, 3235, 3239, 3240, 3242, 3245, 3253, 3255, 3246, + 3258, 3260, 3261, 3262, 3263, 3270, 3265, 3267, 3268, 6048, + 3272, 3269, 3273, 3285, 3288, 3291, 3275, 3274, 6048, 3292, + 3295, 3282, 3298, 3299, 3303, 3300, 3304, 3305, 3308, 3306, + 3309, 3319, 3312, 3315, 3316, 3327, 3328, 3335, 6048, 3332, - 3324, 3330, 3331, 3332, 3335, 3337, 3336, 3338, 3340, 3342, - 3339, 3349, 3343, 3356, 3345, 3359, 3365, 3366, 3346, 6016, - 3362, 3369, 3370, 3373, 3372, 3376, 3379, 3383, 3380, 3392, - 3393, 3384, 3387, 3396, 3397, 3404, 3399, 6016, 3409, 3389, - 3412, 3410, 3411, 3416, 3417, 3419, 3420, 3421, 3422, 3429, - 3424, 6016, 3431, 3426, 3436, 3437, 3428, 3451, 3446, 3427, - 3449, 3453, 3450, 3456, 3454, 3458, 3459, 3462, 3463, 6016, - 6016, 3465, 3466, 3468, 6016, 3469, 3467, 3479, 3472, 3475, - 3482, 3485, 3481, 3484, 3486, 3489, 3493, 6016, 3494, 3501, - 3498, 3500, 3508, 3511, 3504, 3512, 3513, 3506, 3514, 3516, + 3321, 3342, 3339, 3340, 3341, 3344, 3345, 3346, 3348, 3349, + 3350, 3351, 3353, 3357, 3358, 3354, 3361, 3360, 3372, 3371, + 3363, 3375, 3385, 3381, 6048, 3382, 3387, 3386, 3388, 3391, + 3392, 3395, 3397, 3389, 3399, 3410, 3400, 3404, 3413, 3414, + 3422, 3417, 6048, 3429, 3408, 3430, 3415, 3428, 3433, 3434, + 3442, 3437, 3419, 3427, 3444, 3441, 6048, 3454, 3443, 3458, + 3452, 3455, 3465, 3462, 3446, 3464, 3468, 3469, 3472, 3474, + 3475, 3476, 3479, 3480, 6048, 6048, 3482, 3483, 3484, 6048, + 3487, 3486, 3498, 3489, 3490, 3491, 3502, 3501, 3499, 3503, + 3505, 3512, 6048, 3513, 3520, 3515, 3516, 3527, 3530, 3533, - 3520, 3519, 3521, 3524, 3535, 3536, 3531, 3527, 3534, 6016, - 3532, 3539, 3540, 3544, 3541, 3548, 6016, 3546, 3549, 3550, - 3555, 3558, 3562, 3559, 3568, 3569, 3571, 3572, 3573, 3574, - 3576, 3583, 3580, 3579, 3582, 3586, 3588, 6016, 3589, 3593, - 3597, 3600, 6016, 3602, 3611, 3612, 3613, 3603, 3614, 3608, - 3621, 6016, 3616, 3618, 3623, 3624, 3631, 3626, 3633, 3630, - 6016, 3632, 3634, 3636, 6016, 3637, 3638, 3646, 3651, 3643, - 3658, 3654, 3656, 3659, 3655, 6016, 3657, 6016, 3666, 3667, - 3670, 6016, 3668, 3672, 3673, 3675, 3676, 3677, 3681, 3688, - 3683, 3689, 3690, 3691, 3692, 3694, 3701, 3693, 3697, 3700, + 3517, 3529, 3519, 3526, 3534, 3537, 3536, 3541, 3542, 3550, + 3553, 3548, 3549, 3551, 6048, 3552, 3556, 3557, 3559, 3560, + 3561, 6048, 3563, 3565, 3574, 3566, 3584, 3573, 3570, 3588, + 3585, 3589, 3590, 3591, 3592, 3593, 3600, 3595, 3597, 3599, + 3604, 3607, 6048, 3608, 3614, 3601, 3616, 6048, 3619, 3628, + 3626, 3629, 3624, 3631, 3632, 3639, 6048, 3634, 3637, 3635, + 3638, 3648, 3640, 3649, 3645, 6048, 3652, 3651, 3653, 6048, + 3656, 3654, 3661, 3666, 3667, 3674, 3669, 3671, 3672, 3673, + 6048, 3679, 6048, 3677, 3681, 3685, 6048, 3683, 3688, 3689, + 3691, 3692, 3697, 3698, 3696, 3705, 3706, 3707, 3709, 3710, - 3702, 6016, 3712, 3704, 3705, 3719, 3717, 3709, 3707, 3725, - 3723, 6016, 6016, 3732, 6016, 3734, 3727, 3729, 6016, 3733, - 3735, 3744, 3739, 3740, 3750, 3747, 3751, 6016, 3753, 3742, - 3754, 3757, 3758, 3761, 3763, 3764, 3765, 3767, 3768, 6016, - 3769, 3771, 3778, 3770, 3772, 3781, 3780, 3786, 6016, 3790, - 3794, 3793, 3797, 3798, 6016, 3799, 6016, 3800, 3801, 3803, - 3807, 3804, 6016, 3812, 3813, 3817, 3819, 3820, 3822, 3821, - 3828, 3829, 3830, 3837, 3834, 3835, 3832, 6016, 3836, 3838, - 3842, 3843, 3846, 3849, 3857, 3853, 3854, 3859, 3860, 3863, - 3866, 3864, 3870, 3872, 3874, 3867, 6016, 3875, 3880, 3873, + 3708, 3713, 3717, 3714, 3715, 3719, 3720, 6048, 3721, 3723, + 3730, 3735, 3731, 3738, 3725, 3742, 3743, 6048, 6048, 3745, + 6048, 3748, 3749, 3752, 6048, 3754, 3753, 3761, 3757, 3758, + 3760, 3764, 3770, 6048, 3766, 3771, 3775, 3772, 3777, 3780, + 3782, 3783, 3779, 3784, 3787, 6048, 3788, 3785, 3790, 3786, + 3796, 3800, 3802, 3801, 6048, 3809, 3810, 3811, 3813, 3815, + 6048, 3817, 6048, 3819, 3823, 3824, 3825, 3820, 6048, 3828, + 3831, 3834, 3835, 3838, 3840, 3841, 3844, 3847, 3848, 3856, + 3852, 3851, 3854, 6048, 3853, 3855, 3859, 3866, 3860, 3863, + 3876, 3873, 3877, 3871, 3874, 3881, 3884, 3885, 3887, 3891, - 3889, 3886, 3890, 6016, 3891, 3892, 3893, 6016, 3896, 3899, - 3901, 3905, 3900, 3906, 3907, 3908, 3911, 6016, 3913, 3915, - 3912, 3916, 3928, 3920, 6016, 6016, 3930, 6016, 3931, 3917, - 3935, 3934, 3914, 3938, 3942, 3944, 3946, 3943, 3951, 3954, - 3948, 3964, 3966, 3971, 3967, 3968, 3957, 6016, 6016, 3973, - 3974, 3969, 3980, 3981, 3983, 3984, 3991, 3987, 3993, 3997, - 3998, 4005, 6016, 3986, 3988, 4006, 6016, 4001, 4004, 4007, - 4012, 4011, 4013, 4017, 4014, 4015, 4018, 4022, 4019, 4024, - 4032, 4025, 4029, 4028, 4038, 4035, 4036, 4045, 6016, 4042, - 4046, 4049, 4052, 4053, 4055, 4057, 4058, 4059, 6016, 4056, + 3892, 3893, 6048, 3894, 3899, 3895, 3908, 3904, 3898, 6048, + 3905, 3909, 3915, 6048, 3912, 3918, 3919, 3922, 3923, 3924, + 3927, 3926, 3929, 6048, 3933, 3934, 3930, 3931, 3932, 3939, + 6048, 6048, 3947, 6048, 3949, 3935, 3952, 3951, 3954, 3956, + 3960, 3961, 3963, 3957, 3964, 3972, 3971, 3981, 3988, 3989, + 3987, 3978, 3973, 6048, 6048, 3992, 3994, 3996, 3998, 3999, + 4001, 3985, 4008, 4006, 4014, 4017, 4007, 4010, 6048, 4018, + 4019, 4021, 4023, 6048, 4024, 4026, 4027, 4029, 4028, 4030, + 4035, 4032, 4036, 4034, 4038, 4042, 4040, 4053, 4045, 4047, + 4054, 4057, 4061, 4060, 4064, 6048, 4067, 4065, 4066, 4068, - 4061, 4063, 4069, 4062, 4072, 4083, 4087, 4089, 4064, 4081, - 4090, 4092, 4096, 4093, 6016, 4097, 4099, 4100, 4103, 4106, - 4108, 4109, 4111, 4112, 4114, 4116, 4117, 4124, 4126, 4118, - 4127, 4121, 4129, 6016, 4133, 4140, 4134, 4142, 4137, 4067, - 4143, 4144, 4150, 4147, 4152, 4151, 4157, 6016, 4154, 4158, - 4161, 4159, 4165, 4168, 4172, 4169, 4171, 6016, 4179, 4162, - 4173, 4175, 4183, 4185, 4188, 4190, 4193, 4192, 4195, 6016, - 4196, 4199, 4200, 4197, 4206, 4207, 4211, 4209, 6016, 4212, - 4218, 4210, 4226, 4221, 4230, 4227, 4229, 4231, 4233, 4236, - 4238, 4240, 4241, 4243, 4237, 4254, 4259, 4257, 6016, 4244, + 4069, 4070, 4076, 4080, 4077, 6048, 4072, 4082, 4083, 4088, + 4090, 4094, 4095, 4100, 4103, 4105, 4106, 4108, 4112, 4111, + 4113, 6048, 4117, 4114, 4115, 4116, 4126, 4130, 4123, 4132, + 4127, 4137, 4133, 4138, 4140, 4147, 4141, 4144, 4149, 4150, + 6048, 4151, 4158, 4152, 4160, 4154, 4161, 4162, 4173, 4176, + 4164, 4166, 4168, 4178, 6048, 4170, 4179, 4180, 4182, 4185, + 4188, 4191, 4193, 4194, 6048, 4198, 4192, 4199, 4200, 4201, + 4203, 4204, 4210, 4213, 4215, 4220, 6048, 4216, 4224, 4226, + 4218, 4232, 4225, 4234, 4227, 6048, 4236, 4237, 4233, 4250, + 4235, 4255, 4247, 4254, 4251, 4257, 4258, 4260, 4262, 4263, - 6016, 4258, 4262, 4266, 4268, 4265, 6016, 4255, 4270, 4273, - 4274, 4275, 6016, 4276, 4278, 4280, 4279, 6016, 4290, 4292, - 4281, 4296, 4283, 4298, 6016, 4303, 4304, 4300, 4312, 4315, - 4311, 4313, 4316, 4314, 4318, 4319, 4320, 4328, 4323, 4324, - 6016, 4330, 4333, 4340, 4341, 4335, 4325, 4343, 4349, 4342, - 6016, 4351, 4350, 4352, 4353, 4354, 4357, 4359, 4366, 4362, - 4361, 6016, 4365, 4369, 4382, 4363, 4373, 6016, 6016, 4378, - 4383, 4385, 4380, 4386, 6016, 4389, 4396, 4391, 4395, 4398, - 6016, 6016, 4400, 6016, 4397, 6016, 4402, 4401, 6016, 6016, - 4404, 4405, 4408, 4414, 4411, 6016, 4421, 6016, 4418, 4422, + 4264, 4265, 4274, 4281, 4278, 6048, 4266, 6048, 4280, 4283, + 4291, 4287, 4277, 6048, 4290, 4292, 4294, 4295, 4298, 6048, + 4300, 4301, 4303, 4302, 6048, 4313, 4304, 4305, 4311, 4320, + 4321, 6048, 4327, 4328, 4324, 4336, 4338, 4333, 4335, 4337, + 4339, 4341, 4343, 4344, 4345, 4354, 4347, 4350, 6048, 4352, + 4359, 4365, 4366, 4349, 4360, 4368, 4370, 4373, 6048, 4374, + 4367, 4375, 4376, 4377, 4378, 4383, 4391, 4393, 4382, 6048, + 4389, 4392, 4402, 4401, 4404, 6048, 6048, 4394, 4410, 4412, + 4403, 4413, 6048, 4416, 4423, 4407, 4422, 4418, 6048, 6048, + 4425, 6048, 4426, 6048, 4428, 4430, 6048, 6048, 4431, 4432, - 4424, 4425, 4427, 6016, 4426, 4429, 4434, 6016, 4428, 4436, - 4435, 4439, 6016, 4443, 4446, 4438, 4444, 6016, 4450, 4456, - 4458, 4448, 4452, 4459, 4465, 4460, 4468, 4469, 4470, 4471, - 4472, 4479, 4484, 4486, 4488, 4480, 4476, 4490, 4496, 4498, - 4489, 4493, 4500, 4502, 4504, 4506, 4508, 4510, 4511, 4512, - 4514, 4515, 4513, 4523, 4516, 4517, 4530, 4526, 4519, 4531, - 4534, 4532, 4538, 4539, 4541, 4542, 4543, 6016, 4544, 4546, - 4548, 4560, 4553, 4549, 4559, 4566, 4570, 4572, 6016, 4574, - 6016, 4576, 4561, 4578, 4580, 6016, 4581, 4582, 4583, 4584, - 4585, 4586, 4588, 4587, 4591, 4592, 4595, 6016, 4598, 4593, + 4433, 4434, 4441, 6048, 4448, 6048, 4443, 4449, 4435, 4445, + 4452, 6048, 4453, 4454, 4456, 6048, 4459, 4469, 4460, 4461, + 6048, 4465, 4470, 4462, 4471, 6048, 4474, 4480, 4477, 4483, + 4484, 4485, 4486, 4491, 4492, 4487, 4495, 4494, 4497, 4504, + 4508, 4510, 4512, 4513, 4498, 4515, 4517, 4521, 4519, 4523, + 4524, 4526, 4528, 4529, 4533, 4537, 4530, 4534, 4538, 4539, + 4540, 4547, 4543, 4549, 4554, 4550, 4555, 4556, 4557, 4558, + 4561, 4564, 4562, 4568, 4572, 6048, 4566, 4567, 4573, 4574, + 4578, 4580, 4586, 4594, 4598, 4599, 6048, 4601, 6048, 4603, + 4588, 4579, 4595, 4605, 6048, 4607, 4608, 4609, 4610, 4612, - 4602, 4613, 6016, 4608, 4619, 4603, 4614, 4616, 4620, 4622, - 4624, 4625, 4626, 4628, 4630, 4637, 4633, 4634, 4636, 4638, - 4639, 4644, 4647, 4646, 4654, 4656, 4661, 6016, 4650, 6016, - 4657, 4662, 4663, 4665, 4667, 4668, 4670, 6016, 6016, 4671, - 4673, 4678, 4679, 4674, 4683, 4680, 6016, 4686, 4693, 4696, - 4687, 6016, 4690, 4698, 4699, 4703, 6016, 4704, 4706, 4707, - 4709, 4710, 4713, 4717, 4714, 4720, 4721, 4725, 6016, 6016, - 6016, 6016, 4726, 4728, 4731, 4732, 4734, 4735, 4737, 4739, - 4740, 6016, 4742, 6016, 6016, 4743, 4749, 4751, 4752, 4753, - 4756, 4758, 4760, 6016, 4759, 4764, 4766, 4762, 4773, 4779, + 4613, 4615, 4616, 4611, 4619, 4622, 6048, 4625, 4618, 4632, + 4635, 6048, 4638, 4643, 4628, 4639, 4644, 4645, 4648, 4649, + 4652, 4650, 4654, 4656, 4664, 4659, 4661, 4662, 4665, 4663, + 4671, 4673, 4672, 4680, 4682, 4686, 6048, 4675, 6048, 4687, + 4688, 4689, 4690, 4692, 4693, 4695, 6048, 6048, 4698, 4699, + 4704, 4700, 4705, 4709, 4712, 6048, 4706, 4720, 4726, 4717, + 6048, 4719, 4711, 4722, 4728, 6048, 4729, 4735, 4732, 4738, + 4733, 4740, 4743, 4745, 4746, 4747, 4750, 6048, 6048, 6048, + 6048, 4755, 4751, 4758, 4753, 4761, 4760, 4763, 4765, 4767, + 6048, 4771, 6048, 6048, 4775, 4776, 4777, 4778, 4779, 4784, - 4763, 4776, 4780, 4782, 4789, 4785, 4786, 4784, 4788, 4792, - 4795, 6016, 6016, 4796, 4802, 4803, 4811, 4807, 4808, 4820, - 4815, 4816, 4817, 4818, 4822, 4804, 4829, 4834, 4827, 4824, - 6016, 4835, 4838, 6016, 4831, 6016, 4837, 4839, 4845, 4846, - 4847, 4848, 4849, 4851, 6016, 6016, 4852, 4853, 4855, 4862, - 4858, 4866, 4854, 4865, 4867, 6016, 4868, 6016, 4870, 4872, - 4879, 4880, 4887, 4888, 4891, 4893, 4889, 4894, 6016, 4895, - 4896, 6016, 4898, 4900, 4901, 6016, 4906, 4903, 4911, 4913, - 6016, 4918, 4915, 4920, 6016, 4923, 6016, 4908, 4924, 4926, - 4933, 6016, 4930, 4934, 6016, 4937, 4940, 4941, 4942, 6016, + 4785, 4788, 6048, 4786, 4790, 4792, 4789, 4799, 4806, 4793, + 4802, 4808, 4809, 4816, 4812, 4813, 4815, 4818, 4820, 4822, + 6048, 6048, 4811, 4829, 4831, 4838, 4835, 4836, 4825, 4848, + 4843, 4844, 4845, 4846, 4850, 4851, 4859, 4862, 4852, 4855, + 6048, 4860, 4863, 6048, 4864, 6048, 4868, 4869, 4870, 4871, + 4877, 4878, 4879, 4881, 6048, 6048, 4875, 4882, 4885, 4892, + 4889, 4896, 4883, 4900, 4893, 6048, 4895, 6048, 4897, 4903, + 4914, 4901, 4915, 4922, 4924, 4920, 4921, 4906, 6048, 4923, + 4925, 6048, 4927, 4928, 4930, 6048, 4933, 4935, 4937, 4940, + 6048, 4944, 4946, 4947, 6048, 4949, 6048, 4941, 4951, 4954, - 4931, 6016, 4943, 4946, 4947, 4952, 4953, 4957, 4954, 4958, - 4959, 4966, 4962, 4965, 6016, 6016, 4978, 4964, 4970, 4971, - 4974, 4981, 4979, 4982, 4984, 6016, 6016, 4988, 6016, 4989, - 4992, 6016, 4985, 4996, 4994, 4998, 5000, 5001, 5002, 5006, - 5008, 5014, 5009, 5007, 5019, 5030, 5013, 5034, 5035, 5037, - 5039, 5041, 5015, 5043, 5044, 5020, 5045, 5047, 5049, 6016, - 5051, 5052, 5053, 6016, 5057, 5058, 5060, 5061, 6016, 5063, - 5068, 5070, 5072, 6016, 5073, 5075, 5076, 5078, 5082, 5089, - 5085, 5084, 5086, 6016, 6016, 6016, 5094, 5096, 6016, 5101, - 5092, 5102, 5103, 6016, 5104, 5105, 6016, 6016, 5107, 5109, + 4963, 6048, 4955, 4958, 6048, 4965, 4968, 4969, 4960, 6048, + 4970, 6048, 4971, 4977, 4978, 4981, 4974, 4983, 4984, 4985, + 4986, 4993, 4995, 4992, 6048, 6048, 5005, 4990, 4998, 5001, + 5002, 5012, 5007, 5010, 5016, 6048, 6048, 5017, 6048, 5011, + 5020, 6048, 5009, 5024, 5025, 5028, 5030, 5029, 5031, 5036, + 5038, 5039, 5041, 5040, 5042, 5048, 5063, 5049, 5059, 5064, + 5066, 5069, 5071, 5060, 5073, 5055, 5074, 5077, 5079, 5081, + 6048, 5083, 5084, 5080, 6048, 5089, 5085, 5091, 5097, 6048, + 5094, 5095, 5096, 5103, 6048, 5106, 5108, 5109, 5110, 5111, + 5121, 5114, 5116, 5118, 6048, 6048, 6048, 5123, 5130, 6048, - 5108, 5116, 6016, 5111, 6016, 5112, 6016, 5114, 5115, 5124, - 5122, 6016, 5129, 5135, 6016, 5138, 5141, 5143, 5144, 5126, - 5130, 5145, 6016, 5154, 5147, 5151, 5158, 5155, 5159, 5160, - 5161, 5168, 5163, 5167, 6016, 5170, 5164, 5171, 5177, 5172, - 5175, 5181, 6016, 5183, 6016, 5184, 5185, 5189, 5186, 5187, - 5192, 5194, 5199, 5196, 5206, 5200, 6016, 5208, 5210, 6016, - 5212, 6016, 5214, 6016, 5215, 5216, 5218, 5220, 6016, 5224, - 5217, 5221, 5226, 6016, 5227, 5229, 5230, 5236, 6016, 6016, - 5238, 5246, 5242, 5239, 5251, 5253, 5248, 5255, 5256, 5257, - 5259, 5269, 5241, 5264, 5262, 5271, 5272, 5277, 6016, 6016, + 5132, 5133, 5117, 5134, 6048, 5135, 5136, 6048, 6048, 5137, + 5140, 5138, 5145, 6048, 5141, 6048, 5143, 6048, 5146, 5150, + 5156, 5154, 6048, 5160, 5166, 6048, 5169, 5172, 5174, 5175, + 5159, 5161, 5176, 6048, 5183, 5182, 5185, 5189, 5178, 5186, + 5191, 5192, 5193, 5200, 5195, 5202, 6048, 5199, 5204, 5205, + 5206, 5208, 5213, 5214, 6048, 5216, 6048, 5217, 5218, 5219, + 5224, 5221, 5222, 5232, 5238, 5225, 5236, 5226, 6048, 5247, + 5249, 6048, 5229, 6048, 5253, 6048, 5239, 5242, 5244, 5254, + 6048, 5257, 5261, 5262, 5263, 6048, 5264, 5266, 5267, 5269, + 6048, 6048, 5270, 5277, 5273, 5272, 5275, 5284, 5276, 5288, - 6016, 5273, 5280, 5287, 5284, 5286, 5294, 5290, 6016, 5291, - 5292, 5293, 5301, 5298, 5303, 6016, 5299, 5304, 5305, 5306, - 5310, 5307, 5314, 6016, 5318, 5321, 5324, 5313, 5328, 5332, - 5335, 5337, 5338, 6016, 5340, 6016, 6016, 5325, 6016, 5341, - 5342, 5345, 5346, 6016, 5349, 5351, 5350, 5352, 5354, 5356, - 6016, 5366, 5357, 5359, 5368, 6016, 6016, 5372, 6016, 5375, - 5376, 5369, 5385, 5380, 5382, 5387, 5384, 6016, 5388, 5391, - 5393, 5394, 5395, 6016, 5396, 5397, 5399, 5400, 5403, 5402, - 5405, 5407, 5409, 6016, 5410, 5412, 5430, 5426, 6016, 5413, - 5425, 6016, 6016, 5435, 5437, 5358, 6016, 6016, 6016, 5440, + 5289, 5292, 5279, 5297, 5293, 5298, 5295, 5303, 5305, 5313, + 6048, 6048, 6048, 5304, 5306, 5317, 5319, 5320, 5327, 5322, + 6048, 5324, 5331, 5328, 5325, 5338, 5334, 5336, 6048, 5337, + 5339, 5341, 5342, 5346, 5343, 5347, 6048, 5354, 5359, 5360, + 5350, 5363, 5370, 5372, 5374, 5375, 6048, 5377, 6048, 6048, + 5348, 6048, 5361, 5378, 5379, 5381, 6048, 5385, 5388, 5386, + 5387, 5390, 5392, 6048, 5399, 5394, 5397, 5398, 6048, 6048, + 5405, 6048, 5408, 5410, 5395, 5417, 5412, 5413, 5419, 5420, + 6048, 5422, 5423, 5426, 5427, 5428, 6048, 5429, 5430, 5432, + 5433, 6048, 5436, 5435, 5438, 5440, 5441, 6048, 5445, 5444, - 6016, 5442, 5446, 5450, 5454, 5445, 6016, 5456, 5453, 5458, - 6016, 6016, 5457, 5459, 5460, 5462, 6016, 6016, 5463, 5466, - 5464, 5467, 5469, 6016, 5474, 5478, 5480, 5483, 5486, 5475, - 5489, 5491, 5499, 5501, 5496, 5497, 5502, 5504, 5505, 5506, - 5508, 5517, 5513, 5515, 5527, 5524, 6016, 6016, 5531, 6016, - 6016, 5533, 5535, 5537, 5539, 5541, 5543, 5545, 6016, 5546, - 5548, 5549, 5417, 5550, 6016, 5552, 5554, 5551, 5556, 5516, - 5559, 5557, 5562, 6016, 6016, 5563, 5564, 5565, 5573, 5568, - 6016, 5575, 5582, 5579, 5580, 5577, 5583, 5584, 6016, 5588, - 5589, 6016, 6016, 5587, 6016, 6016, 6016, 6016, 6016, 6016, + 5463, 5460, 6048, 5447, 5458, 6048, 6048, 5469, 5473, 5462, + 6048, 6048, 6048, 5475, 6048, 5477, 5481, 5485, 5489, 5480, + 6048, 5491, 5470, 5492, 6048, 6048, 5493, 5494, 5495, 5497, + 6048, 6048, 5498, 5501, 5499, 5502, 5504, 6048, 5507, 5509, + 5515, 5521, 5527, 5517, 5505, 5522, 5530, 5539, 5512, 5528, + 5535, 5536, 5540, 5538, 5547, 5548, 5544, 5552, 5554, 5555, + 6048, 6048, 5559, 6048, 6048, 5562, 5564, 5566, 5568, 5570, + 5572, 5574, 6048, 5575, 5577, 5578, 5579, 5580, 6048, 5582, + 5586, 5581, 5589, 5583, 5592, 5588, 5598, 6048, 6048, 5590, + 5604, 5594, 5605, 5599, 6048, 5609, 5616, 5611, 5613, 5614, - 6016, 6016, 5592, 6016, 5590, 5605, 5607, 5609, 6016, 5597, - 5610, 5518, 5611, 5599, 6016, 5612, 5614, 5616, 5615, 5618, - 5622, 5624, 5626, 5628, 5627, 5629, 5632, 5630, 5636, 5634, - 5638, 5644, 6016, 6016, 6016, 5642, 5640, 5651, 5652, 5663, - 5664, 5667, 5669, 5653, 5657, 5670, 5671, 5674, 5659, 5675, - 5686, 5678, 5681, 5682, 5683, 5689, 5685, 5691, 5695, 6016, - 5696, 6016, 5697, 6016, 6016, 5699, 5701, 5704, 5705, 5713, - 5714, 5706, 5709, 5716, 5718, 5726, 5728, 6016, 5717, 5719, - 6016, 5729, 5730, 6016, 5721, 5731, 5732, 5733, 5737, 5740, - 5742, 5744, 5753, 6016, 6016, 5745, 5748, 5754, 5756, 5757, + 5619, 5615, 6048, 5621, 5623, 6048, 6048, 5624, 6048, 6048, + 6048, 6048, 6048, 6048, 6048, 6048, 5626, 6048, 5622, 5641, + 5643, 5645, 6048, 5628, 5638, 5630, 5636, 5646, 6048, 5648, + 5448, 5649, 5650, 5653, 5657, 5659, 5655, 5661, 5662, 5663, + 5665, 5664, 5669, 5666, 5670, 5677, 6048, 6048, 6048, 5675, + 5676, 5684, 5685, 5692, 5697, 5700, 5702, 5667, 5693, 5703, + 5704, 5705, 5695, 5707, 5714, 5711, 5712, 5716, 5715, 5718, + 5719, 5723, 5727, 6048, 5728, 6048, 5729, 6048, 6048, 5731, + 5732, 5736, 5737, 5745, 5746, 5738, 5741, 5748, 5750, 5758, + 5760, 6048, 5749, 5751, 6048, 5761, 5762, 6048, 5753, 5763, - 5764, 5760, 5763, 5767, 5769, 5770, 5777, 6016, 5776, 5778, - 5780, 6016, 5781, 5782, 5784, 5786, 5787, 5794, 5790, 5795, - 6016, 5792, 6016, 5797, 5798, 5799, 5800, 5802, 5803, 5811, - 5813, 5814, 6016, 5815, 5822, 5817, 5824, 5828, 5826, 5830, - 5820, 5833, 5835, 5842, 5846, 5843, 5847, 5834, 5851, 5838, - 6016, 5849, 5852, 6016, 5855, 5858, 5859, 5861, 5864, 6016, - 5867, 5862, 5868, 5869, 5873, 5875, 6016, 5877, 5884, 5879, - 6016, 5885, 6016, 6016, 5888, 5889, 5891, 5895, 5897, 6016, - 6016, 6016, 5924, 5931, 5938, 5945, 5952, 88, 5959, 5966, - 5973, 5980, 5987, 5994, 6001, 6008 + 5764, 5765, 5769, 5772, 5774, 5776, 5785, 6048, 6048, 5777, + 5780, 5786, 5788, 5789, 5796, 5792, 5795, 5799, 5801, 5802, + 5809, 6048, 5808, 5810, 5812, 6048, 5813, 5814, 5816, 5818, + 5819, 5826, 5822, 5827, 6048, 5824, 6048, 5829, 5830, 5831, + 5832, 5834, 5835, 5843, 5845, 5846, 6048, 5847, 5854, 5849, + 5856, 5860, 5858, 5862, 5852, 5865, 5867, 5874, 5878, 5875, + 5879, 5866, 5883, 5870, 6048, 5881, 5884, 6048, 5887, 5890, + 5891, 5893, 5896, 6048, 5899, 5894, 5900, 5901, 5905, 5907, + 6048, 5909, 5916, 5911, 6048, 5917, 6048, 6048, 5920, 5921, + 5923, 5927, 5929, 6048, 6048, 6048, 5956, 5963, 5970, 5977, + 5984, 88, 5991, 5998, 6005, 6012, 6019, 6026, 6033, 6040 } ; -static const flex_int16_t yy_def[3097] = +static const flex_int16_t yy_def[3111] = { 0, - 3082, 1, 3083, 3083, 3084, 3084, 3085, 3085, 3086, 3086, - 3087, 3087, 3082, 3088, 3082, 3082, 3082, 3082, 3089, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3090, 3082, 3082, 3082, 3090, 3091, 3082, 3082, - 3082, 3091, 3092, 3082, 3082, 3082, 3082, 3092, 3093, 3082, - 3082, 3082, 3093, 3094, 3082, 3095, 3082, 3094, 3094, 3088, - 3088, 3082, 3096, 3089, 3096, 3089, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3096, 1, 3097, 3097, 3098, 3098, 3099, 3099, 3100, 3100, + 3101, 3101, 3096, 3102, 3096, 3096, 3096, 3096, 3103, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3104, 3096, 3096, 3096, 3104, 3105, 3096, 3096, + 3096, 3105, 3106, 3096, 3096, 3096, 3096, 3106, 3107, 3096, + 3096, 3096, 3107, 3108, 3096, 3109, 3096, 3108, 3108, 3102, + 3102, 3096, 3110, 3103, 3110, 3103, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3090, 3090, 3091, 3091, 3092, 3092, 3082, 3093, 3093, - 3094, 3094, 3095, 3095, 3094, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3104, 3104, 3105, 3105, 3106, 3106, 3096, 3107, 3107, + 3108, 3108, 3109, 3109, 3108, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3094, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3108, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3094, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3108, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3082, 3088, 3094, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3096, 3102, 3108, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3094, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3082, 3082, 3088, 3082, 3082, 3088, 3088, 3082, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3108, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3096, 3096, 3102, 3096, 3096, 3102, 3102, 3096, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3094, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3108, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3096, 3096, 3102, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3094, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3108, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3096, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3096, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3096, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3082, 3088, 3082, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3096, 3102, + 3096, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3096, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3082, 3082, 3088, 3082, 3088, 3082, 3088, 3088, 3082, 3082, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3102, 3096, 3096, 3102, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3096, 3096, + 3102, 3096, 3102, 3096, 3102, 3102, 3096, 3096, 3102, 3102, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, + 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, - 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3096, 3096, + 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3096, 3096, 3102, 3102, 3102, 3102, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3082, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3096, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3096, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3102, 3102, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3082, 3082, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3082, 3082, 3088, 3088, + 3102, 3096, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3096, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3096, 3096, 3102, 3096, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3096, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3096, 3096, 3102, 3102, 3096, - 3088, 3088, 3082, 3088, 3082, 3088, 3082, 3088, 3088, 3088, - 3088, 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3082, - 3088, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3096, 3096, 3102, + 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3096, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3096, 3102, 3096, 3102, 3096, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3096, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3082, 3082, 3088, 3082, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3082, 3082, 3088, 3088, 3088, 3082, 3082, 3082, 3088, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3096, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3096, + 3102, 3096, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3096, 3096, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, - 3082, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3082, 3082, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3088, - 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3082, 3088, 3082, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3082, 3082, 3088, 3082, 3082, 3082, 3082, 3082, 3082, + 3102, 3102, 3096, 3102, 3102, 3096, 3096, 3102, 3102, 3102, + 3096, 3096, 3096, 3102, 3096, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3096, 3096, 3102, 3102, 3102, 3102, + 3096, 3096, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3096, 3102, 3096, 3096, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3096, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, - 3082, 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3082, 3088, - 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3082, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3082, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, + 3102, 3102, 3096, 3102, 3102, 3096, 3096, 3102, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3102, 3096, 3102, 3102, + 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3096, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3096, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3096, 3102, 3102, 3096, 3102, 3102, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, - 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, 3088, - 3082, 3088, 3088, 3082, 3088, 3088, 3088, 3088, 3088, 3082, - 3088, 3088, 3088, 3088, 3088, 3088, 3082, 3088, 3088, 3088, - 3082, 3088, 3082, 3082, 3088, 3088, 3088, 3088, 3088, 3082, - 3082, 0, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082 + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3096, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3096, 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, 3102, + 3102, 3102, 3102, 3102, 3096, 3102, 3102, 3096, 3102, 3102, + 3102, 3102, 3102, 3096, 3102, 3102, 3102, 3102, 3102, 3102, + 3096, 3102, 3102, 3102, 3096, 3102, 3096, 3096, 3102, 3102, + 3102, 3102, 3102, 3096, 3096, 0, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096 } ; -static const flex_int16_t yy_nxt[6057] = +static const flex_int16_t yy_nxt[6089] = { 0, 14, 15, 16, 17, 18, 19, 18, 14, 14, 14, 14, 14, 18, 20, 21, 22, 23, 24, 25, 26, @@ -1609,504 +1613,507 @@ static const flex_int16_t yy_nxt[6057] = 852, 843, 844, 850, 71, 848, 71, 71, 71, 851, 845, 854, 71, 71, 71, 858, 71, 71, 71, 71, 855, 71, 859, 860, 853, 71, 71, 71, 71, 71, - 71, 857, 873, 876, 71, 861, 872, 856, 71, 863, - 870, 71, 71, 862, 71, 871, 875, 874, 71, 864, - 71, 877, 880, 865, 71, 878, 866, 71, 882, 879, - 71, 883, 71, 867, 868, 891, 869, 71, 71, 71, + 71, 857, 874, 877, 71, 861, 873, 856, 71, 863, + 871, 71, 71, 862, 71, 872, 864, 875, 71, 865, + 876, 71, 878, 866, 71, 879, 867, 71, 883, 880, + 881, 884, 71, 868, 869, 71, 870, 71, 71, 71, - 71, 881, 71, 884, 885, 71, 886, 897, 895, 887, - 896, 71, 71, 892, 888, 3082, 893, 71, 898, 71, - 889, 890, 71, 900, 894, 71, 71, 899, 71, 902, - 901, 904, 71, 903, 71, 71, 905, 71, 907, 71, - 71, 908, 71, 71, 912, 71, 71, 906, 911, 71, - 71, 915, 71, 71, 921, 71, 919, 932, 71, 909, - 913, 910, 71, 914, 916, 917, 71, 922, 933, 71, - 71, 920, 923, 71, 918, 924, 925, 926, 71, 71, - 928, 929, 71, 71, 927, 71, 71, 71, 71, 71, - 71, 930, 71, 71, 71, 931, 934, 936, 939, 71, + 892, 882, 71, 885, 886, 71, 887, 71, 896, 888, + 897, 71, 71, 893, 889, 3096, 894, 71, 899, 898, + 890, 891, 900, 71, 895, 71, 901, 71, 902, 71, + 903, 905, 71, 71, 904, 906, 71, 71, 71, 71, + 71, 71, 909, 71, 71, 913, 71, 71, 907, 71, + 916, 912, 71, 71, 3096, 914, 908, 920, 71, 910, + 911, 915, 71, 71, 917, 918, 923, 921, 922, 71, + 71, 924, 71, 926, 919, 925, 927, 939, 71, 71, + 929, 71, 71, 928, 930, 71, 71, 71, 933, 71, + 71, 931, 934, 71, 71, 932, 71, 71, 935, 940, - 937, 71, 71, 940, 71, 942, 71, 935, 71, 938, - 941, 71, 71, 944, 71, 945, 71, 947, 71, 949, - 943, 71, 71, 948, 71, 71, 950, 71, 957, 955, - 71, 71, 946, 953, 956, 71, 951, 71, 954, 71, - 71, 71, 964, 952, 962, 958, 960, 965, 71, 71, - 959, 71, 963, 71, 71, 71, 967, 71, 71, 71, - 71, 71, 71, 961, 71, 975, 71, 978, 973, 71, - 966, 1218, 71, 71, 968, 969, 971, 970, 972, 71, - 976, 979, 71, 974, 71, 977, 71, 71, 981, 71, - 983, 980, 985, 986, 71, 71, 982, 71, 71, 71, + 71, 937, 71, 943, 938, 71, 71, 71, 71, 71, + 71, 941, 936, 942, 71, 71, 945, 946, 71, 948, + 71, 950, 71, 71, 949, 944, 71, 951, 71, 71, + 958, 71, 71, 956, 947, 954, 71, 952, 957, 71, + 71, 955, 966, 71, 71, 953, 959, 963, 71, 961, + 965, 960, 71, 71, 71, 964, 71, 71, 968, 71, + 962, 71, 71, 71, 71, 71, 71, 71, 976, 71, + 974, 71, 979, 967, 71, 969, 970, 971, 71, 981, + 980, 972, 973, 977, 71, 978, 975, 71, 982, 71, + 71, 987, 71, 984, 988, 986, 71, 71, 983, 71, - 984, 71, 71, 3082, 988, 71, 990, 995, 996, 987, - 71, 71, 998, 71, 71, 71, 1000, 989, 71, 991, - 1001, 993, 71, 992, 997, 994, 71, 71, 71, 71, - 71, 999, 1002, 71, 1003, 1006, 71, 1008, 1009, 1004, - 71, 71, 1013, 1010, 71, 71, 71, 1005, 71, 71, - 1007, 1011, 1015, 71, 1012, 71, 1018, 152, 71, 71, - 1017, 71, 1021, 1020, 1016, 1014, 71, 71, 71, 71, - 71, 1022, 1024, 1019, 71, 71, 71, 1036, 71, 71, - 71, 71, 1037, 71, 1027, 1041, 1023, 1025, 1039, 71, - 71, 71, 71, 1026, 1028, 1038, 1029, 71, 1042, 1059, + 71, 71, 71, 985, 71, 989, 996, 991, 997, 999, + 71, 71, 71, 1001, 71, 71, 1002, 990, 71, 71, + 992, 994, 71, 993, 995, 998, 71, 71, 71, 71, + 1000, 1003, 71, 1007, 71, 1009, 1010, 1004, 1005, 71, + 71, 1014, 71, 1011, 71, 1013, 1006, 71, 1016, 71, + 1008, 71, 71, 71, 1019, 152, 71, 1012, 1018, 71, + 1021, 71, 1022, 71, 1015, 71, 71, 1020, 71, 1017, + 1025, 71, 71, 71, 71, 1037, 71, 71, 71, 3096, + 1038, 1023, 71, 1024, 71, 1026, 1028, 1040, 71, 1065, + 71, 1029, 1027, 1039, 1030, 71, 1044, 71, 1031, 1043, - 1030, 71, 1031, 1182, 1040, 1043, 1032, 71, 1033, 71, - 71, 1046, 1044, 1034, 1049, 1045, 1047, 71, 1035, 71, - 71, 71, 71, 1048, 71, 1052, 1050, 1055, 71, 71, - 71, 1061, 71, 1054, 1051, 1053, 1060, 71, 1056, 1062, - 1063, 71, 1064, 1058, 1065, 71, 71, 71, 71, 1057, - 71, 71, 71, 71, 1066, 71, 71, 1077, 71, 71, - 1080, 1081, 71, 1076, 71, 1067, 1068, 71, 1069, 1078, - 1079, 71, 1082, 1070, 1144, 1071, 1083, 71, 1086, 71, - 71, 1072, 1088, 71, 1087, 71, 1073, 1074, 71, 71, - 1084, 1092, 1089, 1075, 71, 71, 1085, 71, 1091, 1093, + 1032, 1042, 1041, 71, 1033, 71, 1034, 1047, 1045, 71, + 71, 1035, 1048, 71, 71, 71, 1036, 71, 1049, 1046, + 1054, 1051, 71, 71, 1050, 71, 71, 71, 1057, 1053, + 1055, 71, 71, 1052, 1056, 71, 1063, 1064, 1062, 1058, + 1061, 1060, 71, 71, 1066, 1067, 71, 1059, 71, 71, + 71, 71, 71, 71, 3096, 71, 71, 1068, 1079, 71, + 1082, 1083, 1078, 71, 1081, 1069, 1070, 71, 1071, 1080, + 71, 1084, 71, 1072, 1090, 1073, 71, 1088, 71, 71, + 71, 1074, 71, 1089, 1085, 1091, 1075, 1076, 71, 71, + 1094, 1086, 71, 1077, 71, 1087, 71, 1095, 71, 71, - 71, 71, 1090, 71, 71, 1098, 71, 71, 71, 1095, - 1096, 71, 1101, 1099, 1094, 71, 71, 71, 71, 1097, - 71, 71, 71, 71, 71, 1100, 1106, 1108, 1102, 1103, - 1105, 1107, 1110, 71, 71, 71, 1104, 1109, 71, 1111, - 71, 71, 3082, 71, 1113, 71, 71, 1112, 1118, 1115, - 1119, 1120, 71, 1114, 71, 1122, 1117, 1123, 1116, 71, - 71, 1121, 1126, 71, 71, 71, 1128, 1127, 71, 1129, - 71, 71, 1124, 1130, 71, 71, 1125, 1137, 1131, 71, - 71, 71, 1139, 71, 71, 71, 71, 3082, 71, 71, - 1133, 1132, 1135, 1134, 1141, 1136, 71, 1150, 71, 1140, + 71, 71, 1093, 71, 1100, 71, 71, 1092, 1097, 1098, + 71, 1103, 1101, 1096, 1099, 71, 71, 71, 71, 71, + 1102, 71, 71, 71, 71, 1104, 1108, 1110, 1109, 1105, + 1107, 1112, 71, 71, 71, 71, 1106, 71, 3096, 1111, + 1113, 71, 71, 1115, 71, 71, 1114, 1120, 1117, 1121, + 1122, 71, 1116, 1118, 71, 1124, 1119, 1125, 71, 71, + 1123, 1128, 71, 71, 71, 1130, 1129, 71, 1131, 71, + 71, 1126, 1132, 71, 71, 1127, 1133, 1139, 71, 71, + 71, 1141, 71, 71, 71, 71, 3096, 71, 71, 1135, + 1134, 1137, 1136, 1143, 1138, 71, 71, 1142, 1144, 1145, - 1142, 1138, 71, 1145, 71, 1143, 71, 71, 71, 1146, - 71, 1148, 1147, 1149, 71, 1154, 1151, 1155, 71, 71, - 1153, 71, 71, 1152, 71, 71, 1159, 1158, 1156, 71, - 71, 71, 71, 71, 71, 1163, 1165, 1166, 1170, 1167, - 1157, 71, 71, 71, 71, 71, 1164, 1160, 71, 1161, - 1168, 1162, 71, 1169, 1173, 71, 71, 1175, 71, 1171, - 71, 1174, 71, 71, 1176, 71, 71, 71, 71, 1180, - 1181, 1177, 1172, 71, 71, 71, 1186, 1187, 1190, 71, - 71, 1178, 71, 71, 1179, 1184, 1183, 71, 71, 71, - 1188, 1194, 1189, 1185, 71, 71, 71, 71, 71, 1191, + 1140, 71, 71, 71, 71, 71, 1146, 1147, 1148, 1150, + 1151, 1149, 71, 1152, 71, 71, 1156, 71, 1153, 1157, + 71, 1155, 71, 71, 71, 71, 1158, 1160, 71, 1161, + 1154, 71, 71, 71, 71, 71, 1165, 71, 1167, 1168, + 1169, 1159, 1170, 1162, 71, 71, 71, 1166, 1172, 71, + 1163, 1171, 1164, 71, 71, 1175, 71, 71, 1177, 71, + 71, 71, 1176, 71, 71, 1178, 71, 1173, 71, 1179, + 71, 1182, 71, 1174, 71, 1183, 71, 1184, 1188, 1189, + 71, 1180, 71, 1181, 71, 71, 1186, 71, 1185, 1192, + 71, 71, 1191, 71, 71, 1187, 1196, 1190, 71, 1193, - 71, 1193, 1192, 1200, 71, 1196, 71, 71, 71, 71, - 1206, 71, 1195, 1204, 71, 71, 1197, 1221, 71, 1199, - 1201, 1203, 1202, 1198, 1205, 1208, 1209, 71, 71, 1211, - 71, 71, 71, 1210, 1207, 1212, 71, 71, 71, 71, - 71, 71, 71, 1215, 71, 71, 71, 71, 71, 71, - 1213, 1214, 1225, 1251, 1216, 71, 1219, 3082, 1222, 1217, - 1227, 1220, 1224, 1223, 71, 1231, 71, 71, 1226, 1228, - 71, 1229, 1232, 1234, 1230, 1233, 71, 71, 71, 71, - 1236, 71, 71, 71, 1235, 71, 71, 1240, 1239, 71, - 1243, 71, 1246, 71, 71, 3082, 71, 1237, 1242, 1238, + 71, 71, 71, 71, 71, 1194, 1195, 1198, 1202, 71, + 71, 1197, 71, 71, 71, 1208, 71, 71, 1203, 1206, + 1199, 3096, 1201, 1210, 1205, 1204, 1207, 1200, 1211, 71, + 71, 71, 71, 1209, 71, 1212, 71, 1214, 1213, 71, + 71, 71, 71, 71, 71, 1215, 1217, 71, 1223, 71, + 1220, 71, 71, 1216, 71, 1218, 71, 71, 71, 1221, + 71, 1219, 1227, 1235, 1233, 1224, 1222, 71, 71, 1226, + 1225, 71, 1229, 71, 1234, 1236, 71, 1228, 1237, 71, + 71, 1230, 1238, 1231, 71, 71, 1232, 1239, 71, 1242, + 71, 71, 71, 1243, 71, 71, 1246, 71, 1240, 1249, - 1244, 1247, 1241, 71, 71, 71, 71, 71, 1248, 1250, - 1245, 71, 71, 71, 1249, 1252, 71, 71, 71, 71, - 1253, 71, 1254, 1258, 1256, 71, 71, 71, 1257, 1259, - 1255, 1263, 71, 71, 71, 71, 71, 1260, 1268, 1262, - 1261, 1264, 1267, 1270, 71, 71, 71, 1265, 1269, 1274, - 1272, 71, 1266, 71, 1275, 71, 1271, 71, 1273, 71, - 71, 1279, 71, 1288, 71, 1289, 1287, 1277, 71, 71, - 1276, 71, 1278, 71, 1292, 1286, 1290, 1291, 1280, 71, - 71, 1281, 1282, 71, 1293, 71, 1283, 71, 1294, 71, - 1295, 71, 1284, 71, 1297, 71, 1285, 71, 1298, 71, + 71, 71, 1250, 1241, 1245, 1247, 1251, 71, 71, 1244, + 71, 71, 71, 1253, 1248, 1254, 71, 71, 71, 1255, + 71, 71, 71, 71, 1259, 71, 71, 1252, 1261, 71, + 71, 1256, 1257, 71, 1262, 1260, 1266, 1258, 71, 1271, + 71, 71, 1263, 71, 1265, 71, 1264, 71, 1267, 1268, + 1270, 1273, 71, 71, 1272, 1277, 71, 1275, 1269, 71, + 1278, 71, 71, 71, 1291, 1276, 71, 1274, 71, 1282, + 71, 1290, 3096, 1280, 71, 1279, 1281, 71, 71, 1289, + 71, 1292, 1283, 1293, 71, 1284, 1285, 71, 1295, 71, + 1286, 71, 1296, 1294, 71, 1299, 1287, 71, 71, 1298, - 1299, 71, 71, 71, 1316, 71, 1296, 1300, 1302, 1301, - 1304, 71, 1307, 1308, 71, 1305, 1309, 1303, 71, 71, - 1306, 71, 71, 1311, 71, 1310, 1317, 1318, 1312, 71, - 1313, 71, 1314, 1319, 1315, 1320, 71, 71, 1324, 1321, - 71, 71, 71, 1325, 71, 71, 1323, 1328, 71, 1326, - 71, 71, 71, 71, 1322, 1334, 71, 1330, 71, 1329, - 71, 71, 71, 1327, 71, 1335, 1333, 1337, 1336, 1331, - 1332, 71, 1339, 71, 1341, 71, 1338, 1344, 71, 71, - 1343, 71, 1340, 1346, 71, 71, 71, 1342, 1347, 71, - 1349, 71, 1348, 71, 1345, 1352, 71, 1354, 71, 71, + 1288, 71, 1297, 71, 1300, 71, 71, 71, 1301, 1303, + 1302, 1306, 1307, 71, 71, 1305, 1310, 1311, 71, 1304, + 71, 71, 71, 71, 71, 1312, 71, 1308, 1313, 1322, + 1314, 71, 1309, 71, 1319, 1315, 71, 1316, 71, 1317, + 1323, 1318, 1320, 1321, 1325, 71, 1324, 1326, 1327, 71, + 71, 71, 71, 1328, 71, 71, 1331, 71, 1329, 71, + 71, 1337, 71, 1338, 1333, 71, 1332, 71, 71, 71, + 71, 71, 1330, 1339, 1336, 1341, 1334, 71, 1335, 71, + 1343, 71, 1340, 1342, 1347, 71, 1346, 71, 1349, 71, + 71, 71, 1350, 71, 1351, 1344, 71, 71, 1352, 1355, - 1350, 71, 1351, 71, 1355, 71, 1356, 1359, 71, 71, - 71, 1353, 71, 1361, 71, 71, 71, 71, 1365, 1363, - 1357, 71, 71, 71, 1364, 1367, 1358, 71, 1369, 1360, - 71, 71, 1362, 71, 3082, 1366, 1368, 71, 1371, 1372, - 71, 1370, 1373, 71, 1375, 1374, 71, 71, 1377, 71, - 71, 1376, 1381, 1378, 1382, 1384, 1379, 71, 71, 71, - 71, 71, 1383, 1380, 71, 71, 1388, 71, 1385, 71, - 71, 71, 1392, 1393, 71, 1395, 1387, 71, 71, 71, - 1394, 71, 71, 1386, 71, 71, 71, 71, 1402, 1389, - 1390, 1396, 71, 71, 1391, 71, 1399, 1397, 71, 1400, + 71, 71, 1348, 71, 1345, 71, 1354, 1357, 71, 71, + 1358, 71, 1362, 71, 71, 1353, 1359, 71, 71, 71, + 1364, 1356, 71, 71, 1360, 1368, 1361, 1366, 1367, 71, + 71, 71, 71, 1370, 1363, 71, 71, 1372, 1365, 71, + 71, 1374, 71, 1378, 1376, 71, 1371, 1369, 1375, 1373, + 1377, 71, 71, 71, 71, 71, 1379, 1384, 1385, 1381, + 71, 1382, 71, 71, 71, 1386, 1387, 71, 1383, 71, + 1380, 1388, 71, 1391, 71, 71, 71, 71, 1395, 1396, + 1390, 71, 1398, 71, 71, 71, 1389, 1397, 71, 71, + 71, 71, 71, 71, 1405, 1392, 1393, 1399, 71, 71, - 1407, 71, 1398, 1406, 1401, 71, 71, 71, 71, 1411, - 71, 1409, 1403, 1405, 1412, 71, 71, 1414, 1404, 71, - 71, 71, 3082, 71, 1416, 71, 1410, 1415, 1408, 71, - 1420, 1422, 1424, 1421, 1413, 1417, 1418, 1423, 71, 1419, - 71, 71, 1427, 71, 1425, 71, 71, 1428, 71, 71, - 71, 71, 1426, 71, 1432, 1433, 71, 71, 1435, 71, - 71, 71, 1429, 71, 1431, 71, 1440, 1441, 71, 1434, - 71, 1430, 71, 1437, 1444, 1438, 1436, 71, 1439, 1442, - 71, 71, 1445, 71, 71, 71, 71, 1443, 71, 71, - 1451, 1446, 1448, 1452, 1453, 1447, 71, 71, 1449, 71, + 1394, 71, 1402, 1400, 71, 1403, 71, 1410, 71, 1401, + 1404, 1409, 71, 71, 71, 1414, 71, 1412, 1406, 1408, + 1415, 71, 71, 1417, 1407, 71, 71, 1411, 71, 71, + 1418, 71, 1413, 1426, 1416, 71, 71, 71, 1425, 1419, + 1429, 1420, 1423, 1421, 1428, 1424, 1422, 71, 1431, 1427, + 71, 71, 71, 1432, 71, 71, 71, 71, 1430, 71, + 71, 1436, 1437, 71, 71, 1439, 71, 71, 71, 1444, + 1433, 71, 71, 1435, 71, 1445, 71, 1438, 1434, 71, + 1441, 1448, 1442, 1440, 71, 1443, 71, 71, 1449, 71, + 1446, 71, 71, 1447, 71, 71, 71, 1455, 1450, 1452, - 1456, 71, 71, 1450, 71, 1455, 1454, 1458, 1461, 1460, - 1462, 71, 1457, 71, 71, 1466, 71, 71, 1463, 71, - 1464, 1465, 71, 1459, 71, 71, 71, 71, 71, 1472, - 71, 1468, 71, 1467, 1471, 71, 71, 71, 1478, 1469, - 1474, 1470, 1475, 1479, 71, 71, 1480, 71, 1483, 1476, - 1473, 1481, 71, 71, 71, 1477, 71, 71, 71, 71, - 71, 1487, 1491, 71, 71, 1482, 1486, 71, 71, 1492, - 1494, 71, 1484, 1485, 71, 1497, 71, 1488, 1490, 1489, - 1496, 71, 71, 71, 71, 71, 1495, 71, 71, 1493, - 1498, 71, 71, 1505, 71, 1508, 71, 1506, 71, 1502, + 1451, 1456, 71, 71, 1453, 1459, 71, 1457, 71, 1460, + 1454, 71, 1462, 1458, 71, 1465, 1466, 71, 1461, 1464, + 71, 71, 71, 71, 1467, 71, 1468, 1469, 71, 71, + 71, 71, 1463, 1470, 1473, 1472, 71, 71, 1476, 1471, + 71, 71, 71, 1475, 71, 71, 1474, 1479, 1482, 1478, + 1484, 71, 3096, 1483, 71, 1485, 71, 71, 1480, 71, + 1477, 71, 1487, 71, 1481, 71, 71, 71, 71, 1495, + 1491, 1486, 1490, 71, 71, 71, 1488, 1498, 1489, 1496, + 71, 71, 71, 71, 1501, 1492, 1494, 1493, 1500, 71, + 71, 71, 71, 71, 1506, 71, 71, 1509, 71, 1497, - 1507, 1499, 1500, 1501, 1509, 71, 1504, 71, 1503, 71, - 71, 1512, 1510, 1511, 71, 71, 71, 1515, 71, 1513, - 71, 1516, 71, 71, 71, 1519, 1525, 1514, 1523, 71, - 71, 1520, 71, 71, 1517, 1524, 1518, 1527, 71, 1522, - 71, 71, 1521, 1528, 1529, 1530, 71, 71, 1526, 71, - 1534, 1535, 71, 71, 71, 71, 71, 71, 1539, 71, - 1538, 1540, 1542, 71, 71, 1532, 1531, 71, 71, 1533, - 71, 1536, 71, 1543, 71, 1537, 1544, 71, 71, 1541, - 1545, 1547, 71, 1549, 1546, 71, 1550, 71, 71, 71, - 71, 71, 1548, 71, 1554, 71, 1556, 1551, 71, 71, + 1499, 71, 71, 71, 1510, 1512, 71, 1515, 1502, 71, + 1503, 1504, 1505, 1508, 1511, 71, 1507, 1513, 71, 71, + 1514, 71, 1516, 71, 71, 1519, 71, 71, 1517, 1520, + 71, 71, 1523, 71, 1518, 1527, 71, 1529, 1528, 1524, + 71, 71, 1521, 71, 1522, 71, 71, 1526, 71, 1533, + 1525, 1532, 1534, 71, 1531, 1530, 71, 71, 1538, 1539, + 71, 71, 71, 71, 71, 71, 1543, 71, 1542, 1544, + 1546, 71, 71, 1535, 1536, 71, 71, 1537, 71, 1540, + 71, 1547, 71, 1541, 1548, 71, 71, 1545, 1549, 1551, + 71, 1553, 1550, 71, 1554, 71, 71, 71, 71, 71, - 1557, 71, 1561, 71, 1555, 71, 71, 1553, 1552, 71, - 71, 1558, 71, 1559, 1564, 1566, 71, 1562, 71, 71, - 1569, 1565, 1567, 1563, 1560, 71, 71, 71, 71, 71, - 1568, 1572, 71, 1574, 1570, 71, 1571, 1575, 71, 71, - 71, 71, 1582, 71, 71, 1573, 1577, 1576, 1583, 71, - 71, 71, 71, 1580, 1578, 1579, 1587, 71, 71, 1586, - 1589, 1591, 1590, 71, 1584, 1581, 71, 71, 1593, 1585, - 1595, 71, 1588, 71, 71, 71, 71, 71, 71, 1600, - 1594, 1597, 1598, 1592, 71, 1601, 71, 71, 71, 71, - 71, 1612, 1596, 1605, 71, 1606, 71, 71, 71, 71, + 1552, 71, 1558, 71, 1560, 1555, 71, 71, 1561, 71, + 1565, 71, 1559, 71, 71, 1557, 1556, 71, 71, 1562, + 71, 1563, 1568, 1570, 71, 1566, 71, 71, 1573, 1569, + 1571, 1567, 1564, 71, 71, 71, 71, 71, 1572, 1576, + 71, 1578, 1574, 71, 1575, 1579, 71, 71, 71, 71, + 1586, 71, 71, 1577, 1581, 1580, 1587, 71, 71, 71, + 71, 1584, 1582, 1583, 1591, 71, 71, 1590, 1593, 1595, + 1594, 71, 1588, 1585, 71, 71, 1597, 1589, 1599, 71, + 1592, 71, 71, 71, 71, 71, 71, 1604, 1598, 1601, + 1602, 1596, 71, 1605, 71, 71, 71, 71, 71, 71, - 1599, 1602, 1609, 1604, 1603, 1610, 71, 71, 1607, 1608, - 1614, 1613, 71, 71, 1620, 71, 71, 1611, 1617, 1619, - 71, 1616, 1621, 1618, 71, 1622, 1615, 1625, 71, 71, - 1623, 71, 1624, 71, 71, 71, 71, 1627, 71, 1626, - 71, 1632, 1633, 1631, 71, 1635, 71, 71, 71, 1634, - 71, 71, 71, 1628, 71, 1629, 71, 1637, 1630, 1638, - 71, 1639, 71, 71, 71, 1647, 71, 71, 1640, 1636, - 71, 71, 71, 71, 1641, 71, 71, 1643, 1644, 1645, - 1652, 71, 1642, 1646, 71, 71, 1648, 1650, 71, 1655, - 1654, 1656, 1649, 71, 71, 71, 1651, 71, 71, 71, + 1600, 1609, 71, 1610, 71, 71, 3096, 71, 1603, 1606, + 1614, 1608, 1607, 1615, 1617, 1611, 1612, 71, 71, 1613, + 71, 1619, 1618, 71, 71, 1616, 1625, 71, 71, 1622, + 1623, 1624, 1621, 1626, 71, 71, 71, 1620, 71, 71, + 1627, 71, 1628, 71, 1629, 1630, 71, 71, 71, 1632, + 3096, 71, 1631, 1634, 71, 1637, 1633, 1636, 1638, 71, + 71, 71, 1640, 71, 71, 1639, 1635, 71, 71, 1643, + 71, 1641, 1642, 71, 71, 71, 71, 1645, 1644, 71, + 71, 1652, 71, 1646, 71, 71, 71, 71, 71, 1648, + 1649, 1650, 71, 1651, 1647, 1657, 71, 1659, 71, 1655, - 71, 71, 71, 71, 1653, 1662, 1660, 1657, 71, 1663, - 1670, 71, 1664, 1659, 1661, 1672, 71, 1665, 1658, 1669, - 1671, 71, 71, 1666, 1675, 71, 71, 1668, 1667, 1674, - 71, 71, 71, 71, 71, 71, 71, 1678, 1679, 71, - 1673, 71, 1687, 1676, 71, 1682, 71, 71, 71, 71, - 1677, 1681, 71, 1680, 1690, 1686, 1684, 71, 1683, 1685, - 1688, 71, 71, 71, 1689, 71, 1692, 1691, 71, 1697, - 71, 71, 71, 1693, 1694, 71, 1701, 1700, 71, 71, - 1699, 71, 71, 1696, 1705, 71, 1698, 1709, 1695, 71, - 1702, 1703, 1710, 71, 1704, 71, 1706, 71, 71, 3082, + 71, 1660, 1653, 71, 1654, 71, 71, 1656, 1658, 71, + 71, 71, 71, 1661, 71, 71, 71, 1662, 1665, 1667, + 1668, 1675, 71, 1669, 1664, 1666, 1676, 71, 71, 1663, + 1670, 1671, 71, 71, 71, 1674, 1672, 1679, 1680, 71, + 1673, 71, 71, 71, 71, 1677, 1678, 71, 1683, 1684, + 71, 71, 71, 71, 1681, 71, 71, 1692, 71, 1687, + 71, 1682, 1689, 71, 1691, 1690, 1685, 1686, 1693, 71, + 71, 1688, 1697, 1695, 71, 71, 1694, 71, 71, 71, + 1702, 71, 71, 71, 71, 71, 1706, 1699, 1696, 1705, + 1698, 1704, 1708, 71, 71, 1709, 1701, 1703, 1710, 71, - 71, 1715, 1707, 1708, 1712, 1714, 1718, 71, 71, 1711, - 1717, 71, 71, 1719, 1720, 71, 1716, 71, 71, 1713, - 71, 1721, 1724, 71, 71, 1728, 71, 1726, 71, 71, - 71, 71, 1723, 1727, 1729, 71, 1725, 1722, 71, 71, - 71, 71, 71, 1732, 1738, 71, 71, 1733, 1730, 1731, - 71, 1740, 1734, 1735, 1741, 1736, 1737, 71, 71, 1742, - 71, 1743, 71, 71, 71, 1748, 1739, 71, 71, 71, - 1744, 71, 1752, 71, 71, 71, 1745, 1747, 71, 1754, - 71, 71, 1746, 1755, 1750, 1756, 1757, 1751, 71, 1749, - 71, 71, 1761, 71, 1753, 71, 71, 1758, 71, 1765, + 1707, 71, 1700, 1714, 71, 71, 71, 1720, 1715, 71, + 71, 71, 1711, 71, 71, 1719, 1722, 71, 1716, 1713, + 1712, 1717, 1723, 71, 71, 71, 1725, 1718, 71, 1721, + 1724, 71, 71, 1729, 1727, 1733, 1730, 1726, 1728, 71, + 71, 71, 71, 1731, 71, 71, 71, 71, 71, 1732, + 1734, 3096, 71, 71, 1737, 71, 1738, 1743, 71, 71, + 1745, 1739, 1746, 1735, 1736, 1740, 71, 1741, 71, 1742, + 1748, 71, 1747, 71, 71, 71, 71, 1753, 71, 1744, + 71, 71, 71, 71, 1757, 71, 71, 71, 71, 1752, + 1759, 3096, 1750, 1749, 1751, 71, 1755, 1763, 71, 1756, - 71, 71, 71, 71, 71, 71, 1760, 71, 1763, 1767, - 71, 71, 1772, 1759, 1762, 1766, 1768, 1764, 71, 1769, - 71, 71, 1770, 1773, 1777, 1771, 1775, 71, 1774, 1776, - 71, 1778, 71, 71, 1781, 71, 1780, 71, 1779, 1784, - 71, 1782, 71, 71, 71, 71, 1785, 1783, 71, 71, - 71, 71, 71, 71, 1790, 71, 71, 1794, 71, 71, - 1791, 3082, 71, 1800, 1786, 1792, 1788, 1787, 1789, 71, - 1793, 1795, 71, 1803, 1798, 71, 1797, 1802, 71, 71, - 1804, 1799, 71, 71, 1796, 71, 71, 1801, 1808, 71, - 1811, 1812, 71, 71, 1805, 1813, 71, 71, 1806, 1809, + 1754, 71, 1758, 1760, 71, 71, 1761, 1766, 71, 1762, + 1764, 71, 71, 71, 1767, 1770, 71, 71, 71, 71, + 1765, 71, 71, 1768, 1772, 71, 1777, 1771, 71, 71, + 1773, 1769, 71, 1774, 71, 1780, 3096, 1778, 1775, 1781, + 71, 71, 1776, 1785, 1782, 71, 1779, 1783, 71, 1786, + 1784, 1787, 71, 71, 71, 71, 1789, 71, 71, 71, + 1790, 71, 71, 71, 71, 1788, 71, 71, 1795, 1796, + 71, 71, 1800, 71, 71, 1797, 71, 3096, 1791, 1793, + 1794, 1792, 1798, 1801, 71, 71, 1799, 1808, 71, 1806, + 1804, 1807, 1809, 1803, 71, 71, 1802, 1805, 71, 71, - 71, 1810, 71, 1807, 1815, 71, 71, 1816, 1819, 71, - 71, 1821, 71, 1814, 1820, 1822, 1823, 71, 1817, 1825, - 1824, 1818, 71, 71, 71, 71, 1830, 1827, 1828, 71, - 71, 1829, 71, 71, 71, 71, 1837, 71, 1839, 71, - 71, 71, 71, 1840, 71, 1831, 1832, 1833, 1826, 71, - 71, 1842, 1834, 1841, 1835, 1836, 1844, 1838, 1845, 71, - 1847, 1843, 71, 71, 71, 1849, 71, 71, 1846, 71, - 1851, 71, 71, 1854, 1855, 71, 71, 1857, 71, 71, - 71, 71, 71, 1848, 1863, 71, 1862, 1852, 71, 1850, - 1859, 1860, 71, 1853, 71, 71, 1856, 71, 71, 71, + 71, 71, 71, 1814, 71, 71, 1817, 1818, 71, 1819, + 71, 1821, 71, 71, 1811, 1810, 1812, 71, 1815, 1813, + 1816, 71, 1820, 71, 1822, 1825, 71, 71, 71, 1827, + 71, 1826, 71, 1828, 1823, 71, 1829, 1831, 1824, 1830, + 71, 71, 71, 71, 1833, 1834, 71, 71, 1835, 1836, + 71, 1843, 1841, 1832, 71, 71, 71, 71, 3096, 71, + 1842, 1845, 1837, 1838, 1839, 71, 1846, 71, 71, 1840, + 1847, 71, 1851, 1848, 1844, 71, 1849, 71, 71, 1853, + 1855, 71, 71, 1850, 1852, 71, 1857, 71, 71, 71, + 1860, 1861, 71, 71, 1863, 71, 71, 71, 1854, 71, - 1869, 1861, 71, 1867, 1858, 1866, 71, 71, 1873, 1864, - 1865, 71, 1872, 71, 71, 1876, 1878, 71, 1877, 71, - 1875, 71, 1871, 1868, 71, 71, 71, 71, 1870, 71, - 1879, 1874, 71, 71, 71, 1880, 1884, 71, 1887, 1881, - 71, 1883, 1888, 1889, 71, 71, 1882, 71, 71, 71, - 1885, 1892, 71, 71, 71, 1891, 1897, 71, 1896, 71, - 1886, 71, 71, 71, 1890, 1894, 1901, 1893, 71, 1902, - 1904, 71, 71, 1898, 1895, 71, 1899, 1903, 1900, 1905, - 1908, 71, 71, 1906, 71, 71, 71, 71, 1907, 71, - 1915, 1912, 71, 71, 1918, 71, 71, 1917, 1910, 71, + 71, 1869, 71, 71, 71, 1868, 1865, 1858, 1856, 1866, + 1859, 71, 71, 1862, 71, 71, 71, 1875, 71, 1871, + 1867, 1864, 1872, 1873, 1870, 71, 71, 1879, 71, 71, + 71, 1878, 71, 71, 1882, 1885, 1881, 1883, 1874, 71, + 71, 1877, 71, 71, 1876, 1884, 71, 71, 1880, 71, + 71, 1886, 1887, 1890, 71, 71, 1893, 1894, 1888, 1889, + 1895, 71, 71, 71, 71, 71, 71, 1891, 1898, 71, + 71, 1903, 71, 71, 71, 1902, 71, 1897, 71, 71, + 1892, 1896, 1907, 71, 1899, 1900, 71, 71, 1909, 1905, + 1911, 1901, 1904, 1908, 1912, 1906, 1910, 71, 71, 1913, - 1919, 71, 71, 1909, 1911, 1920, 71, 1913, 1916, 1914, - 71, 1921, 1925, 71, 1926, 71, 71, 1922, 1927, 1929, - 1930, 71, 1923, 1928, 71, 71, 71, 71, 1934, 71, - 1924, 71, 1932, 1933, 71, 1936, 71, 71, 1939, 71, - 1941, 1935, 1931, 71, 71, 71, 71, 71, 1937, 71, - 71, 71, 1947, 1946, 1945, 1942, 71, 1943, 1948, 71, - 3082, 1940, 1938, 1949, 71, 1951, 1944, 71, 71, 71, - 71, 71, 71, 1952, 1953, 1956, 1950, 1955, 1954, 71, - 71, 71, 1957, 71, 1959, 71, 71, 1963, 71, 71, - 71, 1962, 1958, 1960, 71, 1965, 71, 1961, 1964, 1966, + 1914, 71, 71, 71, 71, 71, 71, 1921, 71, 1918, + 71, 1924, 71, 71, 71, 1923, 1916, 71, 1925, 1915, + 71, 71, 1917, 1922, 1926, 1919, 1920, 71, 1931, 71, + 1927, 1932, 71, 1935, 1930, 1933, 1936, 71, 1928, 71, + 1934, 71, 71, 1929, 71, 71, 1940, 71, 71, 1938, + 71, 71, 71, 71, 1942, 1945, 1947, 1939, 71, 1941, + 1943, 71, 71, 1937, 71, 71, 71, 71, 1953, 71, + 1948, 1951, 1952, 1954, 71, 1946, 1944, 1949, 1955, 71, + 71, 1957, 71, 1950, 71, 71, 71, 71, 1958, 1959, + 71, 1960, 71, 1963, 71, 1961, 71, 1962, 71, 1965, - 1967, 71, 71, 71, 71, 71, 71, 71, 1974, 1972, - 71, 1969, 1973, 71, 71, 71, 1968, 71, 71, 1976, - 71, 1970, 71, 1971, 1975, 71, 1979, 1982, 3082, 1978, - 71, 1977, 71, 1983, 1985, 1981, 71, 1980, 71, 1984, - 71, 1986, 71, 1987, 1989, 71, 71, 71, 71, 1988, - 1990, 1995, 71, 71, 1997, 71, 1991, 71, 1992, 1999, - 71, 1993, 1994, 71, 71, 1998, 71, 71, 2003, 1996, - 71, 71, 2000, 2001, 71, 2002, 71, 71, 71, 2004, - 71, 71, 71, 71, 71, 71, 2006, 2011, 2007, 2008, - 2015, 71, 2005, 71, 71, 2010, 2014, 2018, 2019, 71, + 1956, 71, 71, 1969, 71, 71, 1964, 1968, 1966, 71, + 71, 71, 1973, 1967, 1970, 1971, 1972, 1974, 71, 71, + 71, 71, 71, 71, 1981, 1979, 71, 71, 71, 1976, + 71, 1980, 71, 71, 71, 1986, 71, 1983, 71, 1975, + 1977, 3096, 1978, 71, 71, 1982, 1987, 1985, 71, 1990, + 1984, 71, 1989, 1991, 1988, 71, 71, 1996, 71, 1993, + 1994, 71, 71, 1992, 1997, 71, 71, 71, 2002, 1995, + 71, 71, 2004, 71, 71, 2005, 2006, 71, 1998, 71, + 2001, 1999, 2000, 71, 71, 71, 2008, 2003, 71, 2010, + 71, 2007, 71, 71, 2011, 71, 71, 71, 71, 71, - 2012, 2016, 2013, 71, 2009, 2017, 71, 71, 2021, 2022, - 71, 71, 71, 71, 71, 2024, 71, 71, 2025, 2020, - 71, 2026, 2030, 2028, 2023, 71, 71, 2032, 2029, 2034, - 71, 2027, 71, 71, 71, 71, 2031, 2037, 2036, 2038, - 2033, 71, 71, 71, 2042, 71, 2039, 71, 71, 71, - 71, 71, 2043, 2045, 2048, 71, 71, 2049, 2035, 71, - 2040, 2044, 71, 2041, 2052, 2047, 71, 71, 2046, 2054, - 71, 2053, 71, 71, 2050, 2058, 71, 71, 2060, 71, - 71, 2056, 2051, 71, 2061, 71, 71, 71, 71, 2057, - 2055, 2059, 2063, 71, 2062, 2067, 2069, 2065, 2064, 71, + 71, 71, 2022, 71, 2009, 2013, 2018, 2014, 2015, 71, + 2021, 2012, 2017, 71, 71, 71, 2025, 2023, 2016, 2019, + 2026, 2020, 71, 71, 71, 2029, 71, 2028, 71, 2024, + 71, 2031, 71, 71, 2027, 2032, 71, 71, 71, 2033, + 2037, 71, 2030, 2039, 71, 2035, 2041, 71, 71, 2036, + 2034, 71, 2038, 71, 71, 2044, 2043, 71, 2040, 2045, + 71, 71, 2046, 2049, 71, 71, 71, 71, 71, 71, + 2050, 2055, 71, 71, 2042, 2052, 71, 2051, 2047, 71, + 2056, 2048, 2054, 2059, 71, 2053, 71, 71, 2057, 71, + 71, 2060, 2061, 2065, 71, 2063, 2058, 71, 71, 2067, - 2066, 2070, 71, 71, 71, 71, 71, 2068, 2071, 71, - 2074, 2075, 71, 71, 71, 2072, 2073, 2079, 71, 71, - 71, 71, 2076, 2078, 71, 71, 71, 71, 71, 71, - 71, 2080, 2077, 71, 2088, 2083, 2082, 2081, 2085, 2084, - 2086, 71, 2090, 71, 71, 2087, 2089, 71, 71, 2091, - 2093, 71, 2097, 2094, 2099, 71, 71, 71, 2101, 71, - 2098, 71, 2092, 2095, 71, 2096, 2100, 71, 2103, 3082, - 71, 2106, 2104, 2108, 2105, 2102, 2107, 71, 2109, 71, - 71, 71, 71, 2110, 71, 2113, 71, 71, 2114, 2111, - 2112, 2117, 2118, 71, 71, 2119, 71, 71, 2122, 71, + 71, 2068, 2062, 2064, 71, 71, 71, 71, 71, 2066, + 2070, 71, 71, 2069, 2074, 2076, 2072, 71, 71, 2073, + 2077, 71, 71, 2079, 2071, 71, 2078, 2081, 71, 2075, + 2080, 71, 71, 2082, 2086, 71, 71, 71, 2083, 71, + 71, 2085, 71, 71, 71, 71, 71, 71, 71, 2095, + 2096, 2084, 71, 2090, 2087, 2088, 2089, 2091, 2092, 2093, + 71, 2097, 71, 2094, 71, 71, 2098, 71, 2100, 71, + 71, 2101, 2106, 71, 71, 2108, 71, 71, 2105, 2099, + 2102, 2110, 2103, 2107, 71, 71, 71, 3096, 2113, 2109, + 2111, 71, 2104, 2114, 71, 2115, 2116, 2112, 71, 2118, - 71, 71, 2115, 2128, 71, 2123, 71, 2124, 2120, 2125, - 71, 71, 2127, 2116, 71, 2121, 2126, 71, 71, 71, - 71, 2129, 2132, 2130, 71, 71, 71, 71, 71, 2135, - 71, 71, 71, 2139, 2141, 71, 2142, 71, 71, 2131, - 2134, 71, 71, 2133, 2136, 71, 2137, 2138, 71, 71, - 2144, 71, 2143, 2140, 2146, 71, 2148, 2151, 71, 71, - 2147, 2149, 71, 2152, 2145, 71, 71, 2150, 71, 71, - 71, 71, 71, 2162, 71, 71, 71, 71, 2153, 2163, - 71, 2154, 71, 2159, 2161, 71, 2200, 2157, 2155, 2165, - 2156, 2158, 2170, 2160, 71, 2164, 71, 2167, 2166, 2168, + 71, 71, 71, 2117, 2120, 71, 2119, 71, 2121, 71, + 2125, 71, 71, 2126, 71, 2129, 2128, 2134, 2124, 71, + 71, 71, 2122, 71, 2130, 2133, 2127, 71, 2131, 2132, + 71, 71, 71, 2123, 71, 2135, 71, 71, 2137, 71, + 71, 71, 71, 71, 2140, 71, 2143, 71, 71, 71, + 2149, 71, 2136, 71, 2147, 71, 2138, 2142, 71, 2150, + 71, 2144, 2139, 2141, 2145, 2146, 71, 71, 2151, 2148, + 71, 2152, 2154, 71, 71, 2156, 2159, 71, 71, 71, + 71, 71, 71, 71, 2153, 71, 2155, 2157, 2160, 71, + 71, 2158, 3096, 71, 2170, 71, 71, 2161, 2162, 2171, - 71, 2169, 71, 71, 2172, 71, 71, 2171, 2175, 71, - 71, 2176, 71, 71, 2173, 2177, 71, 2174, 2181, 71, - 2182, 71, 71, 2184, 71, 71, 2186, 71, 2180, 71, - 71, 71, 2178, 2179, 71, 2188, 2189, 71, 2190, 71, - 71, 2183, 71, 2185, 2187, 2191, 71, 71, 2193, 2192, - 71, 2195, 2196, 71, 2198, 71, 71, 71, 2202, 2201, - 71, 2194, 2204, 71, 71, 71, 2197, 71, 2199, 2208, - 71, 71, 71, 2203, 71, 71, 2212, 2213, 71, 2205, - 2206, 71, 71, 2207, 71, 71, 71, 2209, 71, 2211, - 2215, 2218, 71, 2220, 2210, 2219, 71, 2216, 71, 2217, + 2169, 71, 2165, 71, 2163, 2167, 2164, 71, 71, 2175, + 2166, 2168, 2176, 71, 2172, 2177, 71, 2173, 71, 71, + 2174, 71, 2180, 2183, 71, 71, 71, 71, 71, 71, + 71, 2184, 2179, 2178, 2181, 2185, 71, 2182, 2189, 71, + 71, 2188, 2190, 71, 2192, 71, 71, 2186, 2187, 2194, + 71, 71, 2197, 71, 71, 2191, 2196, 71, 2193, 2198, + 71, 2195, 71, 71, 71, 71, 2200, 71, 2199, 2203, + 2204, 71, 2206, 71, 71, 71, 2201, 71, 2209, 71, + 2208, 71, 2202, 71, 2205, 2207, 71, 2210, 2212, 71, + 2216, 71, 71, 71, 2214, 71, 2213, 2221, 71, 2220, - 2214, 71, 2221, 71, 2225, 71, 71, 2227, 71, 71, - 71, 2228, 71, 71, 2222, 2226, 2223, 2232, 2233, 71, - 71, 2231, 71, 71, 71, 71, 2229, 2224, 2230, 2237, - 2239, 71, 2235, 2242, 71, 2234, 2240, 2244, 2241, 71, - 71, 2236, 71, 71, 71, 2245, 71, 2246, 2238, 71, - 71, 71, 2249, 71, 71, 2243, 71, 71, 3082, 2248, - 2250, 2255, 2251, 2252, 2254, 2253, 2256, 71, 71, 2247, - 71, 71, 71, 2261, 2257, 71, 2260, 2258, 71, 71, - 2259, 71, 2262, 71, 2266, 2268, 71, 71, 71, 71, - 2263, 71, 71, 71, 71, 2279, 71, 2270, 2264, 2267, + 2215, 71, 2211, 2217, 71, 71, 71, 71, 2219, 2223, + 2226, 71, 71, 71, 71, 2218, 71, 71, 3096, 2228, + 2222, 2224, 2225, 71, 2233, 2227, 71, 2229, 71, 71, + 2235, 71, 2230, 71, 2231, 2234, 2236, 71, 71, 71, + 71, 2239, 2240, 2232, 2241, 71, 71, 71, 71, 71, + 71, 2237, 2245, 2238, 2247, 2248, 2242, 2250, 2243, 2244, + 71, 2249, 2252, 71, 71, 2253, 2246, 71, 71, 2251, + 71, 71, 2254, 71, 2257, 71, 71, 71, 71, 71, + 3096, 2263, 2258, 2256, 2259, 2260, 2261, 71, 2264, 2255, + 71, 71, 2262, 71, 71, 2265, 71, 2268, 2269, 2266, - 2265, 2271, 2269, 71, 2274, 71, 2275, 2272, 2273, 71, - 2276, 71, 2280, 71, 2277, 2281, 71, 71, 2283, 2284, - 2282, 2278, 2285, 2286, 71, 71, 71, 71, 71, 71, - 2288, 71, 71, 71, 2292, 2293, 71, 71, 71, 2289, - 2287, 71, 2295, 71, 3082, 2290, 71, 2296, 71, 2297, - 2294, 2291, 2298, 71, 71, 71, 71, 2300, 2301, 2299, - 2302, 2303, 71, 71, 71, 71, 71, 71, 2304, 2305, - 71, 2309, 71, 2312, 71, 71, 71, 2311, 71, 71, - 2308, 2313, 71, 2306, 2318, 2307, 71, 2316, 2319, 2317, - 2310, 71, 2314, 71, 2315, 71, 71, 2321, 71, 71, + 71, 2270, 2267, 71, 71, 71, 2276, 71, 71, 2271, + 2272, 71, 2273, 71, 71, 71, 71, 71, 71, 2274, + 2278, 2275, 2284, 2277, 71, 2279, 71, 2282, 3096, 2283, + 2280, 2281, 2287, 71, 71, 2288, 2286, 71, 2285, 2289, + 71, 71, 2291, 2292, 2290, 2293, 71, 2295, 71, 71, + 71, 71, 71, 2297, 71, 2294, 71, 71, 71, 2301, + 71, 2302, 71, 71, 2296, 71, 2298, 71, 2304, 2305, + 2299, 2309, 71, 71, 2303, 2306, 2300, 2307, 71, 71, + 71, 71, 2312, 71, 2308, 2311, 71, 71, 71, 71, + 71, 71, 2314, 2310, 2318, 71, 71, 3096, 2321, 2313, - 2324, 2322, 71, 2326, 71, 2320, 2325, 2328, 71, 71, - 71, 71, 2330, 71, 71, 71, 2327, 71, 71, 2323, - 2329, 71, 2334, 2338, 71, 2340, 2336, 71, 2331, 2332, - 2333, 71, 2337, 2339, 71, 71, 2341, 71, 71, 71, - 71, 71, 71, 2349, 2335, 2344, 2347, 71, 71, 71, - 2348, 71, 71, 2342, 2346, 2352, 71, 71, 2345, 71, - 2343, 71, 2353, 71, 2356, 71, 2350, 2351, 2357, 71, - 2354, 71, 71, 71, 2360, 2355, 2358, 2361, 71, 2359, - 2362, 71, 71, 71, 71, 71, 3082, 2363, 2366, 71, - 2368, 2369, 71, 71, 2365, 2364, 2370, 71, 2371, 71, + 2315, 2320, 71, 2317, 71, 71, 71, 71, 2316, 2326, + 2325, 2319, 2322, 2323, 71, 71, 71, 71, 2324, 2328, + 71, 2329, 2327, 71, 2330, 71, 71, 2333, 2331, 71, + 2335, 71, 2336, 2334, 2337, 71, 71, 2339, 71, 71, + 2338, 71, 2332, 71, 71, 71, 71, 71, 71, 2343, + 2349, 2345, 2346, 2347, 71, 2341, 71, 2340, 71, 2342, + 2348, 71, 71, 2350, 2351, 71, 71, 71, 2356, 71, + 2353, 2344, 71, 71, 71, 71, 2358, 2361, 71, 2355, + 2352, 2357, 71, 71, 71, 2354, 2362, 71, 2365, 2360, + 71, 2359, 2366, 71, 2363, 2367, 71, 71, 71, 71, - 2372, 71, 71, 71, 2367, 2373, 71, 2374, 2375, 71, - 2376, 71, 2377, 71, 2378, 71, 2382, 71, 2379, 71, - 2384, 71, 2385, 71, 71, 71, 71, 71, 71, 71, - 71, 2381, 71, 2380, 2388, 2386, 71, 2387, 2383, 71, - 2389, 2391, 2394, 71, 71, 71, 2390, 71, 2395, 2392, - 2393, 71, 71, 2401, 71, 71, 71, 71, 2396, 71, - 2398, 71, 71, 2402, 2397, 2400, 71, 2410, 3082, 2399, - 2403, 2404, 71, 71, 71, 2405, 2408, 2411, 2412, 71, - 2409, 2406, 2413, 71, 2407, 71, 2414, 71, 2415, 71, - 2416, 71, 2417, 71, 71, 71, 71, 71, 71, 71, + 71, 2371, 2364, 2370, 71, 71, 2369, 71, 71, 3096, + 71, 71, 2374, 2375, 2368, 2377, 2378, 71, 2372, 2373, + 2379, 71, 2380, 71, 2381, 71, 71, 2376, 71, 2383, + 71, 2385, 71, 2384, 71, 2386, 71, 71, 2382, 71, + 2391, 71, 71, 71, 2387, 2393, 71, 71, 2388, 2394, + 71, 71, 71, 71, 2395, 2390, 71, 2389, 2397, 2396, + 71, 2392, 71, 71, 2398, 2400, 2403, 71, 71, 71, + 71, 71, 2404, 2399, 71, 71, 2401, 71, 2410, 71, + 71, 71, 2402, 2407, 2411, 71, 71, 71, 2409, 2406, + 2417, 71, 71, 71, 2405, 2408, 2412, 2414, 2419, 71, - 71, 71, 2418, 2426, 71, 71, 71, 2424, 71, 2430, - 2431, 71, 2419, 2421, 2420, 71, 71, 2423, 2422, 2425, - 2427, 71, 2428, 2429, 2433, 2434, 71, 71, 2432, 71, - 2435, 2436, 71, 71, 2437, 71, 2439, 71, 71, 71, - 2445, 71, 2446, 71, 2447, 2438, 71, 71, 2440, 71, - 71, 71, 71, 2441, 2443, 2442, 2451, 71, 2444, 71, - 71, 2455, 2449, 71, 2448, 2454, 2456, 71, 2450, 71, - 71, 2457, 2452, 2458, 71, 71, 71, 2453, 71, 2460, - 71, 71, 2459, 71, 71, 2464, 71, 71, 2462, 2468, - 2469, 71, 71, 71, 2461, 2472, 71, 2473, 2463, 71, + 2413, 71, 2415, 2427, 2420, 2418, 2421, 71, 71, 2416, + 2422, 71, 71, 2423, 71, 2424, 71, 2425, 71, 2426, + 71, 71, 71, 71, 71, 71, 71, 2428, 71, 71, + 2436, 71, 71, 2429, 2434, 71, 2440, 2441, 71, 2431, + 2430, 71, 2438, 2433, 2432, 71, 2435, 2444, 71, 2437, + 2439, 71, 71, 2442, 2443, 2446, 71, 71, 71, 2447, + 2445, 71, 71, 71, 2449, 71, 2455, 71, 2456, 71, + 2448, 2457, 71, 2450, 71, 71, 71, 71, 71, 2451, + 2452, 2453, 2454, 2461, 71, 71, 71, 2465, 71, 2459, + 2458, 2464, 2466, 71, 2460, 71, 2462, 2467, 2468, 71, - 71, 2465, 2466, 71, 2467, 2471, 71, 2470, 2476, 71, - 2475, 71, 71, 2477, 2474, 2481, 71, 71, 2478, 71, - 71, 2485, 71, 71, 2484, 2487, 71, 71, 2483, 2482, - 71, 2479, 2480, 71, 71, 2488, 2489, 2492, 71, 71, - 2493, 71, 2486, 2495, 71, 71, 2491, 71, 71, 2490, - 71, 2500, 71, 71, 2502, 71, 71, 2498, 2496, 2499, - 2497, 2503, 71, 2494, 71, 71, 71, 2504, 2501, 71, - 2506, 71, 71, 71, 2507, 71, 71, 71, 2505, 71, - 2509, 2510, 2512, 2517, 2513, 2515, 71, 2511, 2508, 71, - 2514, 2516, 71, 71, 2518, 71, 2521, 71, 71, 71, + 71, 71, 71, 71, 2463, 71, 71, 2469, 71, 2470, + 2474, 71, 71, 71, 2472, 2478, 2479, 71, 71, 71, + 2471, 2482, 71, 2473, 71, 71, 2475, 2476, 2480, 2483, + 71, 2477, 71, 71, 2484, 71, 2481, 2485, 2486, 71, + 2491, 71, 71, 2487, 2489, 71, 71, 2488, 71, 2494, + 2495, 71, 2497, 71, 2492, 2490, 71, 2493, 71, 71, + 71, 2498, 2502, 71, 71, 2496, 71, 2499, 71, 2503, + 2505, 71, 2501, 71, 71, 2500, 71, 2510, 71, 2506, + 71, 3096, 2508, 2512, 71, 2509, 2504, 2507, 71, 71, + 71, 71, 71, 2513, 2514, 2511, 2516, 71, 71, 71, - 2523, 71, 71, 2522, 2526, 71, 2525, 2527, 71, 71, - 3082, 2519, 2524, 2520, 2529, 71, 71, 71, 2531, 2530, - 71, 71, 2528, 2532, 71, 2533, 2534, 2535, 71, 71, - 71, 71, 2536, 71, 2537, 71, 2542, 71, 2541, 2538, - 71, 2543, 71, 2540, 71, 2544, 2539, 71, 71, 2545, - 71, 71, 71, 2546, 2547, 2549, 2548, 2550, 71, 71, - 71, 71, 71, 2555, 71, 71, 71, 71, 71, 2553, - 2554, 71, 2552, 2556, 2560, 71, 2551, 2564, 71, 71, - 71, 71, 2563, 71, 2557, 71, 2558, 2559, 2562, 2568, - 2561, 2569, 71, 71, 2571, 2572, 2566, 3082, 2573, 2565, + 2517, 71, 71, 71, 2515, 71, 71, 2519, 2522, 2520, + 2523, 2525, 71, 2527, 2521, 71, 2518, 2524, 2526, 71, + 2528, 71, 71, 2531, 71, 71, 71, 2533, 71, 71, + 2532, 71, 2536, 71, 2537, 71, 2535, 2538, 71, 2529, + 2530, 2539, 71, 2534, 71, 2541, 3096, 2540, 71, 71, + 2542, 71, 2545, 2543, 2544, 2546, 71, 71, 71, 71, + 2547, 71, 2548, 71, 71, 71, 2553, 2549, 71, 2554, + 2555, 2551, 71, 71, 2550, 71, 71, 71, 2557, 2558, + 2556, 71, 71, 71, 71, 2552, 2560, 2561, 71, 2559, + 71, 71, 71, 2566, 71, 71, 71, 2563, 71, 2564, - 71, 71, 71, 2567, 71, 2574, 71, 71, 71, 71, - 2575, 71, 2576, 71, 71, 2579, 71, 2577, 2570, 71, - 2582, 71, 2578, 2584, 71, 2585, 71, 2580, 71, 2581, - 2586, 71, 2587, 71, 2583, 2589, 71, 71, 2588, 71, - 2593, 2590, 2591, 71, 71, 2594, 71, 71, 2596, 2597, - 71, 2592, 2598, 71, 71, 71, 71, 2599, 2603, 71, - 71, 2604, 2601, 2595, 2605, 71, 71, 71, 2600, 2607, - 71, 71, 71, 2611, 2612, 71, 2602, 71, 71, 71, - 2608, 2606, 2613, 71, 71, 2614, 2610, 71, 2620, 2609, - 2615, 71, 71, 2619, 71, 71, 2623, 71, 71, 2622, + 2565, 2562, 71, 2567, 2571, 71, 71, 2568, 71, 71, + 71, 2574, 2575, 71, 71, 2569, 71, 2570, 2573, 71, + 2579, 2572, 2582, 2577, 2587, 2576, 2580, 71, 71, 2583, + 2578, 2584, 2585, 71, 71, 71, 71, 71, 71, 2581, + 71, 71, 2586, 71, 2590, 2588, 71, 2593, 71, 2595, + 71, 2589, 2596, 71, 71, 2591, 2597, 71, 2592, 71, + 71, 2600, 71, 2598, 71, 2599, 2594, 71, 71, 2602, + 2604, 71, 2607, 71, 2601, 2605, 71, 2608, 71, 2603, + 2609, 71, 71, 71, 71, 2610, 2611, 71, 2606, 2614, + 71, 71, 2615, 2616, 71, 2618, 71, 71, 71, 71, - 2616, 71, 71, 2617, 2618, 71, 2624, 71, 2626, 71, - 2625, 71, 2628, 71, 71, 71, 2631, 2621, 2635, 71, - 71, 71, 71, 2627, 2629, 2630, 71, 71, 71, 2634, - 2637, 2632, 71, 71, 2633, 2636, 2639, 2642, 2638, 2640, - 2641, 3082, 2643, 71, 2650, 2644, 2645, 71, 71, 2646, - 71, 2647, 71, 2648, 71, 2649, 71, 71, 71, 2653, - 71, 2651, 71, 2657, 71, 71, 71, 2654, 2658, 2660, - 71, 71, 2662, 71, 71, 2664, 71, 2652, 2661, 2663, - 2655, 71, 2656, 71, 2659, 71, 71, 2669, 71, 71, - 2665, 71, 2666, 2670, 2667, 71, 2673, 71, 71, 71, + 2622, 2612, 2617, 71, 2613, 71, 71, 2623, 71, 2624, + 2619, 71, 2625, 2621, 71, 71, 2620, 2626, 71, 2631, + 71, 2630, 71, 71, 71, 71, 2627, 2633, 2634, 71, + 71, 2628, 2636, 71, 2629, 2635, 2637, 71, 71, 2640, + 2639, 71, 71, 71, 71, 2632, 3096, 2638, 2643, 71, + 2647, 71, 71, 71, 71, 71, 3096, 2649, 2641, 2642, + 2644, 71, 71, 2646, 2645, 2650, 2648, 2651, 71, 2653, + 2654, 2657, 71, 71, 2652, 2655, 71, 71, 2658, 71, + 2659, 2656, 71, 2660, 71, 2661, 71, 71, 2664, 2662, + 71, 2663, 71, 71, 71, 2669, 71, 71, 71, 2666, - 2671, 2674, 71, 2677, 2668, 71, 2676, 71, 2679, 71, - 2672, 2675, 2678, 2680, 71, 71, 71, 71, 71, 2681, - 71, 71, 71, 2689, 71, 71, 2684, 71, 71, 71, - 2685, 2687, 2692, 2693, 2683, 71, 2690, 71, 2694, 71, - 2682, 2688, 71, 71, 2695, 2686, 2691, 2696, 71, 2697, - 2699, 71, 2698, 2700, 71, 2701, 71, 71, 71, 2703, - 71, 2706, 2704, 2705, 71, 2707, 2702, 71, 71, 2708, - 2709, 71, 71, 71, 71, 2714, 71, 71, 2712, 2716, - 71, 71, 2718, 71, 71, 71, 2710, 2717, 71, 2719, - 71, 2720, 2713, 2711, 71, 2724, 71, 71, 71, 71, + 2670, 2672, 71, 2674, 71, 2673, 2676, 71, 71, 71, + 71, 2671, 2667, 2665, 2668, 2675, 71, 2677, 2678, 71, + 2681, 71, 71, 71, 71, 2679, 2682, 71, 2685, 71, + 71, 71, 2683, 2686, 71, 2689, 71, 2680, 2688, 2684, + 2687, 2690, 2691, 71, 2692, 71, 71, 71, 71, 71, + 71, 71, 2701, 71, 71, 2694, 71, 2696, 71, 71, + 2693, 2697, 2699, 71, 2704, 2695, 2702, 71, 2705, 71, + 2706, 2700, 71, 71, 71, 2698, 2707, 2703, 2708, 71, + 2709, 2711, 71, 2710, 2712, 71, 2713, 71, 71, 71, + 2718, 71, 2715, 2716, 2717, 71, 71, 2714, 71, 71, - 71, 2715, 71, 2722, 2721, 71, 2727, 71, 2728, 71, - 2725, 2726, 71, 71, 2723, 2731, 2729, 2732, 2734, 71, - 2736, 71, 2737, 71, 2730, 71, 2739, 71, 71, 71, - 71, 71, 2735, 71, 71, 2733, 2744, 71, 2743, 71, - 71, 2748, 71, 71, 2740, 2741, 2738, 2742, 2751, 71, - 2745, 71, 71, 2753, 71, 71, 2749, 2746, 2747, 71, - 2754, 71, 2750, 2756, 71, 2757, 71, 2759, 71, 71, - 71, 2752, 71, 2765, 2755, 71, 2764, 71, 3082, 2762, - 2761, 2758, 71, 2768, 71, 71, 71, 2760, 2769, 2766, - 71, 2770, 2763, 71, 2773, 2767, 2774, 71, 2771, 71, + 2719, 2721, 71, 2720, 71, 71, 71, 2727, 71, 2722, + 2725, 2723, 71, 71, 2729, 71, 2730, 71, 71, 71, + 2733, 71, 2731, 2732, 2726, 2724, 71, 71, 2737, 71, + 71, 71, 71, 2728, 71, 71, 2740, 71, 71, 71, + 2734, 2735, 71, 2738, 2739, 71, 2741, 2736, 2747, 71, + 2742, 71, 71, 2744, 2743, 71, 2745, 71, 2748, 2749, + 71, 2750, 71, 2751, 2746, 2752, 71, 71, 2753, 2757, + 71, 2754, 2756, 2755, 71, 71, 71, 71, 2761, 71, + 71, 2764, 71, 71, 2766, 71, 71, 2769, 71, 71, + 71, 2767, 71, 2762, 2758, 2760, 2770, 71, 2759, 2763, - 71, 2776, 2775, 71, 71, 71, 71, 71, 2781, 2778, - 2779, 71, 71, 2772, 71, 2784, 71, 71, 71, 71, - 71, 2777, 2789, 71, 2785, 2780, 71, 71, 2782, 2783, - 2792, 71, 2788, 2793, 71, 2786, 2791, 71, 71, 2790, - 2795, 71, 2794, 2787, 2797, 71, 2796, 2798, 71, 2799, - 71, 71, 2801, 71, 71, 71, 2800, 2802, 71, 71, - 2806, 2807, 71, 71, 71, 71, 2811, 71, 2812, 71, - 71, 71, 71, 2813, 2810, 2849, 2803, 2804, 2808, 71, - 2805, 71, 71, 2809, 2817, 71, 2816, 2818, 71, 71, - 2814, 2815, 2821, 71, 2819, 71, 2820, 71, 71, 2824, + 2772, 71, 71, 2765, 2777, 71, 71, 2768, 71, 2771, + 71, 71, 2776, 2774, 2775, 2781, 71, 71, 71, 71, + 2773, 2782, 3096, 2779, 2786, 2778, 71, 2783, 2780, 2784, + 71, 2787, 71, 71, 2789, 71, 2788, 71, 71, 2785, + 71, 71, 2791, 2792, 71, 2795, 2793, 71, 2798, 71, + 71, 71, 71, 2790, 71, 71, 71, 2794, 2803, 71, + 71, 71, 2799, 71, 2796, 2797, 2806, 71, 2802, 2805, + 2800, 2807, 71, 71, 71, 2804, 71, 2809, 2808, 2801, + 2816, 2810, 2811, 71, 2812, 71, 2813, 71, 71, 2815, + 71, 71, 71, 2814, 71, 2820, 2817, 2821, 71, 71, - 71, 71, 2825, 2823, 71, 2822, 71, 71, 71, 71, - 71, 2828, 71, 71, 2830, 71, 71, 2831, 71, 2829, - 71, 2826, 71, 71, 2827, 71, 71, 2840, 2841, 2832, - 71, 2836, 2833, 2834, 2835, 2837, 2838, 2843, 71, 71, - 3082, 2839, 2906, 71, 2844, 2842, 2845, 2847, 71, 2848, - 71, 2846, 2850, 71, 2851, 71, 2852, 2853, 71, 71, - 2854, 2855, 2858, 71, 2856, 2857, 71, 71, 2859, 71, - 71, 71, 71, 71, 2865, 71, 71, 71, 2864, 71, - 71, 2868, 71, 3082, 2860, 2861, 2867, 71, 71, 2869, - 2862, 71, 2863, 71, 2873, 2874, 71, 2870, 2875, 71, + 71, 71, 2825, 71, 2826, 71, 2827, 71, 71, 2824, + 71, 71, 71, 2818, 2819, 2822, 2830, 2831, 71, 2823, + 2832, 71, 2834, 71, 2835, 71, 71, 2828, 2833, 2829, + 71, 2838, 71, 71, 2837, 71, 71, 2836, 2839, 71, + 71, 71, 71, 71, 2842, 71, 71, 2844, 71, 71, + 2845, 71, 2843, 71, 71, 2840, 2841, 71, 71, 2854, + 71, 71, 2846, 2855, 2850, 2847, 2848, 2849, 2851, 2852, + 2857, 71, 2956, 71, 2853, 71, 71, 2856, 2858, 2863, + 2859, 2861, 71, 71, 2860, 2862, 71, 2864, 71, 2865, + 71, 2866, 2867, 71, 71, 2868, 2869, 2872, 71, 2870, - 2872, 2866, 71, 2876, 71, 2871, 2880, 2877, 2882, 71, - 71, 2881, 71, 2878, 71, 71, 2879, 71, 71, 71, - 2889, 71, 2886, 2887, 2890, 2884, 71, 2892, 71, 71, - 71, 71, 2891, 3082, 2883, 2938, 2885, 71, 2888, 2893, - 71, 2912, 2894, 2895, 71, 2896, 71, 2897, 71, 2898, - 71, 2899, 71, 2900, 71, 2901, 71, 2902, 71, 71, - 2904, 71, 71, 71, 71, 71, 2909, 71, 2903, 71, - 71, 2905, 71, 2913, 2915, 71, 71, 71, 71, 2910, - 2917, 71, 2911, 2907, 2908, 2914, 71, 2919, 71, 2922, - 71, 2921, 71, 71, 2916, 71, 71, 71, 2924, 2920, + 2871, 2874, 71, 2873, 71, 71, 71, 71, 71, 2879, + 71, 71, 71, 2878, 71, 71, 2882, 71, 71, 2875, + 71, 2881, 71, 2891, 2883, 71, 2876, 2877, 71, 2887, + 71, 2886, 2884, 2888, 71, 71, 2880, 2894, 2885, 2889, + 71, 71, 2895, 71, 2892, 2890, 2896, 2893, 71, 71, + 2897, 71, 71, 71, 2900, 2904, 2898, 71, 2901, 2903, + 71, 71, 3096, 2905, 2906, 71, 2907, 71, 71, 2899, + 2902, 2909, 71, 2908, 2910, 71, 2911, 71, 2912, 71, + 2913, 71, 2914, 71, 2915, 71, 2916, 71, 71, 2918, + 71, 71, 71, 71, 71, 71, 71, 2917, 2923, 71, - 71, 71, 71, 71, 2918, 71, 2923, 2928, 2931, 2925, - 71, 2929, 71, 2927, 2926, 2930, 2932, 2933, 71, 2934, - 71, 2935, 71, 71, 71, 71, 2940, 71, 71, 71, - 2944, 71, 2937, 2936, 2943, 71, 2946, 71, 2942, 71, - 71, 71, 71, 71, 2939, 71, 2945, 71, 2941, 71, - 2947, 71, 2953, 71, 3082, 71, 2950, 71, 2948, 2949, - 2952, 2954, 2957, 2960, 71, 71, 71, 2951, 2955, 2958, - 71, 2956, 71, 2959, 2961, 2962, 71, 71, 2963, 2964, - 71, 2965, 71, 71, 71, 2966, 2968, 71, 71, 2969, - 2967, 71, 2970, 2973, 71, 71, 71, 2971, 71, 71, + 2919, 71, 71, 71, 2920, 71, 2927, 71, 2926, 2924, + 2929, 71, 71, 2921, 2922, 2925, 2928, 71, 71, 2933, + 2931, 2930, 71, 2936, 71, 2935, 71, 71, 71, 71, + 2934, 2938, 71, 2932, 71, 71, 71, 71, 2937, 71, + 2942, 71, 2945, 71, 2941, 2943, 2939, 2952, 2946, 71, + 2940, 71, 2944, 2947, 71, 2948, 71, 2949, 71, 71, + 2951, 71, 71, 71, 2950, 2958, 71, 2957, 71, 2953, + 71, 2960, 71, 2954, 71, 71, 71, 71, 71, 71, + 71, 2959, 71, 71, 2955, 2961, 2967, 2962, 71, 71, + 71, 2964, 2963, 2966, 2968, 2971, 2974, 71, 71, 2980, - 2976, 2978, 71, 2972, 71, 2974, 2975, 2981, 71, 71, - 71, 2984, 71, 2979, 71, 2985, 2977, 71, 71, 71, - 2988, 2989, 71, 2980, 2982, 2986, 71, 71, 2983, 71, - 71, 71, 71, 2990, 71, 2991, 2993, 2987, 2994, 71, - 2995, 71, 71, 71, 71, 71, 71, 2999, 2992, 3001, - 71, 2996, 2997, 71, 3000, 71, 2998, 71, 71, 3003, - 3006, 71, 3007, 3004, 3002, 3008, 71, 71, 3012, 71, - 71, 3014, 3005, 71, 3015, 3013, 71, 71, 3009, 3010, - 71, 3016, 71, 71, 3020, 3017, 3011, 3018, 3021, 71, - 71, 71, 3023, 71, 71, 71, 3022, 71, 3024, 71, + 2969, 2965, 2972, 2970, 2976, 71, 71, 2975, 71, 2973, + 71, 2977, 2978, 71, 2979, 71, 71, 71, 71, 2982, + 71, 2987, 2983, 2984, 71, 71, 2981, 71, 71, 71, + 2992, 71, 71, 2985, 2990, 2986, 71, 2989, 2988, 2995, + 71, 71, 71, 2998, 71, 71, 2999, 2993, 2991, 71, + 71, 71, 3002, 3003, 71, 2994, 2996, 3000, 71, 71, + 2997, 71, 71, 71, 71, 3004, 71, 3005, 3007, 3001, + 3008, 71, 3009, 71, 71, 71, 71, 71, 71, 3013, + 3006, 3015, 71, 3010, 3011, 71, 3014, 71, 3012, 71, + 71, 3017, 3020, 71, 3021, 3018, 3016, 3022, 71, 71, - 71, 3029, 3019, 71, 3026, 71, 3032, 71, 71, 3033, - 71, 71, 71, 71, 3025, 71, 71, 3036, 3027, 3028, - 3034, 3031, 3030, 3035, 71, 3040, 71, 71, 71, 3039, - 71, 3041, 3037, 71, 3038, 71, 3044, 71, 3046, 71, - 3042, 71, 3047, 71, 3048, 3051, 71, 71, 71, 3045, - 3049, 71, 3050, 3052, 3043, 71, 71, 3053, 3054, 71, - 71, 3060, 71, 3055, 71, 71, 3057, 3056, 71, 3058, - 3059, 71, 71, 3062, 71, 71, 3063, 71, 3066, 3067, - 71, 71, 71, 3070, 3061, 3071, 71, 3082, 71, 3073, - 71, 3064, 71, 3065, 3068, 3072, 3074, 71, 71, 3075, + 3026, 71, 71, 3028, 3019, 71, 3029, 3027, 71, 71, + 3023, 3024, 71, 3030, 71, 71, 3034, 3031, 3025, 3032, + 3035, 71, 71, 71, 3037, 71, 71, 71, 3036, 71, + 3038, 71, 71, 3043, 3033, 71, 3040, 71, 3046, 71, + 71, 3047, 71, 71, 71, 71, 3039, 71, 71, 3050, + 3041, 3042, 3048, 3045, 3044, 3049, 71, 3054, 71, 71, + 71, 3053, 71, 3055, 3051, 71, 3052, 71, 3058, 71, + 3060, 71, 3056, 71, 3061, 71, 3062, 3065, 71, 71, + 71, 3059, 3063, 71, 3064, 3066, 3057, 71, 71, 3067, + 3068, 71, 71, 3074, 71, 3069, 71, 71, 3071, 3070, - 3069, 71, 71, 3076, 71, 3082, 3077, 3080, 71, 3081, - 71, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3078, 3082, 3079, 43, 43, 43, 43, 43, 43, - 43, 48, 48, 48, 48, 48, 48, 48, 53, 53, - 53, 53, 53, 53, 53, 59, 59, 59, 59, 59, - 59, 59, 64, 64, 64, 64, 64, 64, 64, 74, - 74, 3082, 74, 74, 74, 74, 142, 142, 3082, 3082, - 3082, 142, 142, 144, 144, 3082, 3082, 144, 3082, 144, - 146, 3082, 3082, 3082, 3082, 3082, 146, 149, 149, 3082, - 3082, 3082, 149, 149, 151, 3082, 3082, 3082, 3082, 3082, + 71, 3072, 3073, 71, 71, 3076, 71, 71, 3077, 71, + 3080, 3081, 71, 71, 71, 3084, 3075, 3085, 71, 3096, + 71, 3087, 71, 3078, 71, 3079, 3082, 3086, 3088, 71, + 71, 3089, 3083, 71, 71, 3090, 71, 3096, 3091, 3094, + 71, 3095, 71, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3092, 3096, 3093, 43, 43, 43, 43, + 43, 43, 43, 48, 48, 48, 48, 48, 48, 48, + 53, 53, 53, 53, 53, 53, 53, 59, 59, 59, + 59, 59, 59, 59, 64, 64, 64, 64, 64, 64, + 64, 74, 74, 3096, 74, 74, 74, 74, 142, 142, - 151, 153, 153, 3082, 153, 153, 153, 153, 75, 75, - 3082, 75, 75, 75, 75, 13, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082 + 3096, 3096, 3096, 142, 142, 144, 144, 3096, 3096, 144, + 3096, 144, 146, 3096, 3096, 3096, 3096, 3096, 146, 149, + 149, 3096, 3096, 3096, 149, 149, 151, 3096, 3096, 3096, + 3096, 3096, 151, 153, 153, 3096, 153, 153, 153, 153, + 75, 75, 3096, 75, 75, 75, 75, 13, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096 } ; -static const flex_int16_t yy_chk[6057] = +static const flex_int16_t yy_chk[6089] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2116,7 +2123,7 @@ static const flex_int16_t yy_chk[6057] = 5, 3, 6, 20, 4, 20, 20, 5, 20, 6, 7, 7, 7, 7, 20, 7, 8, 8, 8, 8, 29, 8, 7, 9, 9, 9, 22, 22, 8, 10, - 10, 10, 15, 25, 9, 29, 15, 25, 3088, 31, + 10, 10, 15, 25, 9, 29, 15, 25, 3102, 31, 10, 11, 11, 11, 11, 11, 11, 19, 79, 19, 19, 30, 19, 11, 31, 79, 30, 25, 19, 19, @@ -2125,7 +2132,7 @@ static const flex_int16_t yy_chk[6057] = 26, 21, 23, 89, 12, 23, 27, 27, 47, 47, 21, 24, 42, 90, 26, 27, 24, 28, 34, 52, 24, 28, 52, 24, 28, 24, 24, 42, 32, 32, - 1018, 28, 90, 28, 33, 33, 24, 32, 72, 33, + 1019, 28, 90, 28, 33, 33, 24, 32, 72, 33, 69, 35, 72, 32, 63, 63, 35, 32, 77, 80, 35, 77, 37, 37, 69, 33, 35, 37, 230, 35, 230, 80, 39, 39, 38, 39, 35, 37, 37, 38, @@ -2279,501 +2286,504 @@ static const flex_int16_t yy_chk[6057] = 678, 669, 670, 675, 679, 673, 678, 680, 681, 677, 671, 680, 682, 683, 685, 684, 686, 687, 688, 689, 681, 684, 685, 686, 679, 692, 699, 698, 695, 703, - 702, 683, 699, 703, 707, 687, 698, 682, 709, 689, - 692, 701, 14, 688, 690, 695, 702, 701, 706, 690, - 704, 704, 707, 690, 705, 705, 690, 708, 709, 706, - 712, 710, 713, 690, 690, 712, 690, 710, 714, 715, + 14, 683, 699, 703, 702, 687, 698, 682, 709, 689, + 692, 701, 707, 688, 690, 695, 690, 701, 706, 690, + 702, 704, 704, 690, 705, 705, 690, 708, 709, 706, + 707, 710, 713, 690, 690, 712, 690, 710, 714, 715, - 718, 708, 711, 711, 711, 716, 711, 718, 716, 711, - 717, 717, 720, 713, 711, 13, 714, 719, 719, 728, - 711, 711, 721, 721, 715, 722, 723, 720, 724, 723, - 722, 725, 725, 724, 726, 727, 726, 729, 728, 730, - 732, 729, 731, 733, 733, 734, 737, 727, 732, 735, - 736, 736, 739, 738, 742, 742, 740, 753, 753, 730, - 734, 731, 740, 735, 737, 738, 741, 743, 754, 754, - 745, 741, 743, 743, 739, 745, 746, 747, 750, 748, - 749, 750, 746, 747, 748, 751, 749, 752, 755, 756, - 759, 751, 757, 758, 761, 752, 755, 757, 760, 760, + 712, 708, 711, 711, 711, 716, 711, 720, 716, 711, + 717, 717, 718, 713, 711, 13, 714, 719, 719, 718, + 711, 711, 720, 722, 715, 721, 721, 723, 722, 724, + 723, 725, 725, 726, 724, 726, 727, 728, 729, 730, + 734, 731, 729, 732, 733, 733, 737, 735, 727, 736, + 736, 732, 739, 738, 0, 734, 728, 740, 759, 730, + 731, 735, 741, 740, 737, 738, 743, 741, 742, 742, + 745, 743, 743, 746, 739, 745, 747, 759, 748, 746, + 749, 750, 747, 748, 750, 751, 749, 752, 753, 753, + 755, 751, 754, 754, 756, 752, 757, 758, 755, 760, - 758, 764, 762, 761, 766, 763, 767, 756, 768, 759, - 762, 763, 769, 766, 770, 767, 771, 769, 774, 771, - 764, 772, 773, 770, 775, 776, 772, 778, 778, 777, - 779, 780, 768, 775, 777, 777, 773, 781, 776, 782, - 785, 783, 785, 774, 783, 779, 781, 786, 786, 787, - 780, 788, 783, 789, 792, 790, 788, 791, 793, 794, - 795, 796, 797, 782, 1036, 796, 798, 799, 794, 802, - 787, 1036, 800, 799, 789, 790, 792, 791, 793, 801, - 797, 800, 803, 795, 804, 798, 805, 806, 802, 808, - 804, 801, 806, 807, 807, 809, 803, 810, 811, 812, + 760, 757, 761, 763, 758, 762, 764, 766, 767, 763, + 768, 761, 756, 762, 769, 770, 766, 767, 771, 769, + 774, 771, 772, 773, 770, 764, 775, 772, 776, 778, + 778, 779, 780, 777, 768, 775, 782, 773, 777, 777, + 781, 776, 786, 786, 783, 774, 779, 783, 785, 781, + 785, 780, 787, 788, 789, 783, 790, 791, 788, 792, + 782, 794, 793, 795, 796, 797, 798, 801, 796, 802, + 794, 800, 799, 787, 808, 789, 790, 791, 799, 801, + 800, 792, 793, 797, 803, 798, 795, 804, 802, 805, + 806, 807, 807, 804, 808, 806, 809, 810, 803, 811, - 805, 813, 814, 0, 809, 815, 811, 816, 817, 808, - 818, 820, 819, 816, 817, 824, 821, 810, 819, 812, - 822, 814, 821, 813, 818, 815, 822, 825, 823, 827, - 826, 820, 823, 831, 824, 826, 828, 828, 829, 825, - 830, 832, 833, 830, 829, 834, 836, 825, 833, 842, - 827, 831, 835, 835, 832, 837, 838, 838, 839, 840, - 837, 841, 841, 840, 836, 834, 843, 844, 845, 847, - 848, 842, 844, 839, 850, 851, 853, 853, 854, 857, - 855, 858, 854, 859, 848, 858, 843, 845, 856, 856, - 873, 860, 998, 847, 850, 855, 851, 852, 859, 873, + 812, 813, 814, 805, 815, 809, 816, 811, 817, 819, + 820, 818, 816, 821, 817, 819, 822, 810, 824, 821, + 812, 814, 822, 813, 815, 818, 825, 823, 826, 827, + 820, 823, 832, 826, 828, 828, 829, 824, 825, 831, + 830, 833, 829, 830, 834, 832, 825, 833, 835, 835, + 827, 836, 839, 837, 838, 838, 840, 831, 837, 842, + 840, 841, 841, 843, 834, 844, 845, 839, 847, 836, + 844, 850, 848, 851, 853, 853, 854, 857, 855, 0, + 854, 842, 860, 843, 859, 845, 848, 856, 856, 878, + 878, 850, 847, 855, 851, 852, 860, 858, 852, 859, - 852, 862, 852, 998, 857, 860, 852, 861, 852, 864, - 865, 863, 861, 852, 865, 862, 863, 863, 852, 866, - 867, 868, 869, 864, 870, 867, 865, 869, 871, 872, - 874, 875, 880, 868, 866, 867, 874, 875, 870, 876, - 877, 877, 878, 872, 879, 876, 881, 878, 882, 871, - 879, 884, 885, 958, 880, 886, 889, 885, 887, 888, - 888, 889, 891, 884, 890, 881, 882, 883, 883, 886, - 887, 892, 890, 883, 958, 883, 891, 893, 894, 894, - 895, 883, 897, 899, 895, 900, 883, 883, 897, 898, - 892, 901, 898, 883, 902, 903, 893, 901, 900, 902, + 852, 858, 857, 861, 852, 862, 852, 863, 861, 864, + 865, 852, 863, 863, 867, 868, 852, 866, 864, 862, + 868, 866, 869, 870, 865, 871, 872, 873, 870, 867, + 868, 874, 875, 866, 869, 881, 876, 877, 875, 871, + 874, 873, 876, 877, 879, 880, 882, 872, 883, 879, + 885, 880, 888, 886, 0, 887, 890, 881, 886, 889, + 889, 890, 885, 891, 888, 882, 883, 884, 884, 887, + 892, 891, 893, 884, 898, 884, 894, 895, 895, 896, + 898, 884, 899, 896, 892, 899, 884, 884, 900, 901, + 902, 893, 903, 884, 904, 894, 902, 903, 908, 906, - 905, 906, 899, 907, 909, 908, 910, 911, 912, 905, - 906, 908, 911, 909, 903, 913, 914, 916, 915, 907, - 919, 918, 917, 922, 925, 910, 916, 918, 912, 913, - 915, 917, 920, 924, 926, 927, 914, 919, 920, 922, - 928, 929, 0, 930, 925, 931, 934, 924, 930, 927, - 931, 934, 935, 926, 936, 936, 929, 937, 928, 938, - 940, 935, 941, 937, 944, 942, 942, 941, 941, 942, - 943, 945, 938, 943, 946, 947, 940, 950, 944, 948, - 949, 951, 952, 950, 953, 964, 955, 0, 952, 954, - 946, 945, 948, 947, 954, 949, 961, 964, 959, 953, + 907, 911, 901, 910, 909, 913, 912, 900, 906, 907, + 909, 912, 910, 904, 908, 914, 915, 917, 916, 918, + 911, 919, 920, 926, 923, 913, 917, 919, 918, 914, + 916, 921, 925, 927, 928, 929, 915, 921, 0, 920, + 923, 930, 931, 926, 932, 935, 925, 931, 928, 932, + 935, 936, 927, 929, 937, 937, 930, 938, 939, 941, + 936, 942, 945, 938, 943, 943, 942, 942, 943, 944, + 946, 939, 944, 947, 948, 941, 945, 951, 949, 950, + 952, 953, 954, 951, 956, 959, 0, 953, 955, 947, + 946, 949, 948, 955, 950, 962, 958, 954, 956, 958, - 955, 951, 957, 959, 960, 957, 962, 967, 963, 960, - 966, 962, 961, 963, 968, 969, 966, 970, 970, 971, - 968, 969, 972, 967, 973, 974, 974, 973, 971, 975, - 976, 977, 978, 979, 982, 978, 980, 981, 985, 982, - 972, 987, 980, 981, 985, 983, 979, 975, 984, 976, - 983, 977, 988, 984, 989, 992, 990, 991, 991, 987, - 989, 990, 993, 994, 992, 995, 996, 997, 999, 996, - 997, 993, 988, 1000, 1001, 1004, 1002, 1003, 1006, 1006, - 1007, 994, 1002, 1003, 995, 1000, 999, 1005, 1008, 1009, - 1004, 1010, 1005, 1001, 1011, 1010, 1012, 1013, 1014, 1007, + 952, 965, 960, 961, 963, 964, 959, 960, 961, 963, + 964, 962, 967, 965, 968, 969, 970, 972, 967, 971, + 971, 969, 970, 973, 974, 976, 972, 974, 975, 975, + 968, 977, 978, 979, 980, 983, 979, 984, 981, 982, + 983, 973, 984, 976, 981, 982, 985, 980, 986, 988, + 977, 985, 978, 989, 986, 990, 993, 991, 992, 992, + 994, 990, 991, 995, 996, 993, 999, 988, 997, 994, + 1000, 997, 998, 989, 1001, 998, 1002, 999, 1003, 1004, + 1008, 995, 1005, 996, 1003, 1004, 1001, 1006, 1000, 1007, + 1007, 1009, 1006, 1012, 1010, 1002, 1011, 1005, 1013, 1008, - 1016, 1009, 1008, 1017, 1017, 1012, 1019, 1020, 1022, 1021, - 1024, 1024, 1011, 1022, 1025, 1023, 1013, 1040, 1040, 1016, - 1019, 1021, 1020, 1014, 1023, 1026, 1027, 1029, 1028, 1029, - 1030, 1026, 1027, 1028, 1025, 1030, 1031, 1032, 1033, 1034, - 1035, 1037, 1038, 1033, 1041, 1042, 1044, 1043, 1045, 1069, - 1031, 1032, 1044, 1069, 1034, 1046, 1037, 0, 1041, 1035, - 1046, 1038, 1043, 1042, 1048, 1048, 1051, 1049, 1045, 1046, - 1052, 1046, 1049, 1051, 1046, 1050, 1050, 1053, 1054, 1056, - 1053, 1055, 1057, 1058, 1052, 1060, 1059, 1057, 1056, 1061, - 1060, 1062, 1064, 1064, 1067, 0, 1065, 1054, 1059, 1055, + 1011, 1014, 1015, 1017, 1020, 1009, 1010, 1013, 1018, 1018, + 1021, 1012, 1022, 1026, 1023, 1025, 1025, 1024, 1020, 1023, + 1014, 0, 1017, 1027, 1022, 1021, 1024, 1015, 1028, 1027, + 1029, 1032, 1031, 1026, 1028, 1029, 1030, 1031, 1030, 1033, + 1035, 1034, 1036, 1037, 1038, 1032, 1034, 1039, 1041, 1041, + 1037, 1042, 1043, 1033, 1044, 1035, 1045, 1046, 1051, 1038, + 1049, 1036, 1045, 1051, 1049, 1042, 1039, 1047, 1054, 1044, + 1043, 1053, 1047, 1050, 1050, 1052, 1052, 1046, 1053, 1056, + 1058, 1047, 1054, 1047, 1055, 1057, 1047, 1055, 1059, 1058, + 1060, 1062, 1061, 1059, 1063, 1064, 1062, 1067, 1056, 1066, - 1061, 1065, 1058, 1066, 1068, 1071, 1070, 1072, 1066, 1068, - 1062, 1073, 1074, 1075, 1067, 1070, 1076, 1077, 1078, 1079, - 1071, 1080, 1072, 1076, 1074, 1081, 1082, 1083, 1075, 1077, - 1073, 1081, 1084, 1085, 1088, 1089, 1090, 1078, 1087, 1080, - 1079, 1082, 1085, 1089, 1087, 1091, 1092, 1083, 1088, 1093, - 1091, 1094, 1084, 1095, 1093, 1093, 1090, 1100, 1092, 1096, - 1097, 1097, 1099, 1101, 1102, 1102, 1100, 1095, 1104, 1101, - 1094, 1103, 1096, 1098, 1105, 1099, 1103, 1104, 1098, 1106, - 1105, 1098, 1098, 1107, 1106, 1109, 1098, 1112, 1107, 1108, - 1108, 1113, 1098, 1110, 1110, 1111, 1098, 1115, 1111, 1114, + 1066, 1068, 1067, 1057, 1061, 1063, 1068, 1069, 1070, 1060, + 1072, 1071, 1076, 1070, 1064, 1071, 1073, 1074, 1075, 1072, + 1077, 1078, 1079, 1080, 1076, 1081, 1082, 1069, 1078, 1085, + 1083, 1073, 1074, 1084, 1079, 1077, 1083, 1075, 1086, 1089, + 1090, 1087, 1080, 1091, 1082, 1089, 1081, 1092, 1084, 1085, + 1087, 1091, 1093, 1094, 1090, 1095, 1096, 1093, 1086, 1097, + 1095, 1095, 1102, 1098, 1103, 1094, 1101, 1092, 1099, 1099, + 1103, 1102, 0, 1097, 1111, 1096, 1098, 1100, 1105, 1101, + 1104, 1104, 1100, 1105, 1106, 1100, 1100, 1108, 1107, 1114, + 1100, 1117, 1108, 1106, 1107, 1111, 1100, 1109, 1110, 1110, - 1111, 1117, 1118, 1124, 1124, 1116, 1109, 1112, 1114, 1113, - 1116, 1121, 1119, 1120, 1123, 1117, 1121, 1115, 1119, 1120, - 1118, 1122, 1126, 1123, 1129, 1122, 1125, 1125, 1123, 1125, - 1123, 1128, 1123, 1126, 1123, 1128, 1130, 1131, 1132, 1129, - 1133, 1134, 1135, 1132, 1132, 1136, 1131, 1135, 1137, 1133, - 1138, 1139, 1140, 1144, 1130, 1141, 1148, 1137, 1146, 1136, - 1143, 1141, 1149, 1134, 1142, 1142, 1140, 1144, 1143, 1138, - 1139, 1145, 1146, 1147, 1148, 1150, 1145, 1151, 1151, 1152, - 1150, 1158, 1147, 1153, 1153, 1157, 1154, 1149, 1154, 1156, - 1157, 1161, 1156, 1159, 1152, 1160, 1160, 1162, 1162, 1165, + 1100, 1115, 1109, 1112, 1112, 1113, 1116, 1118, 1113, 1114, + 1113, 1117, 1118, 1119, 1120, 1116, 1121, 1122, 1128, 1115, + 1123, 1125, 1121, 1122, 1124, 1123, 1132, 1119, 1124, 1128, + 1125, 1131, 1120, 1126, 1126, 1125, 1130, 1125, 1133, 1125, + 1130, 1125, 1127, 1127, 1132, 1127, 1131, 1133, 1134, 1135, + 1136, 1137, 1138, 1134, 1134, 1139, 1137, 1140, 1135, 1141, + 1142, 1143, 1144, 1144, 1139, 1145, 1138, 1143, 1146, 1148, + 1147, 1149, 1136, 1145, 1142, 1147, 1140, 1150, 1141, 1151, + 1149, 1152, 1146, 1148, 1153, 1153, 1152, 1154, 1155, 1155, + 1156, 1158, 1156, 1159, 1158, 1150, 1160, 1161, 1159, 1162, - 1158, 1164, 1159, 1163, 1163, 1166, 1164, 1167, 1167, 1168, - 1169, 1161, 1170, 1169, 1171, 1172, 1173, 1174, 1173, 1171, - 1165, 1177, 1176, 1178, 1172, 1176, 1166, 1179, 1178, 1168, - 1186, 1181, 1170, 1180, 0, 1174, 1177, 1182, 1180, 1181, - 1183, 1179, 1182, 1184, 1184, 1183, 1185, 1187, 1186, 1188, - 1189, 1185, 1191, 1187, 1192, 1194, 1188, 1193, 1191, 1195, - 1192, 1194, 1193, 1189, 1196, 1197, 1198, 1198, 1195, 1199, - 1201, 1202, 1203, 1204, 1205, 1207, 1197, 1208, 1203, 1204, - 1205, 1207, 1209, 1196, 1210, 1211, 1212, 1213, 1213, 1199, - 1201, 1208, 1214, 1215, 1202, 1216, 1210, 1208, 1217, 1211, + 1162, 1163, 1154, 1167, 1151, 1168, 1161, 1164, 1164, 1165, + 1165, 1166, 1169, 1169, 1170, 1160, 1166, 1171, 1172, 1174, + 1171, 1163, 1173, 1175, 1167, 1175, 1168, 1173, 1174, 1176, + 1178, 1179, 1180, 1178, 1170, 1181, 1182, 1180, 1172, 1184, + 1183, 1182, 1186, 1186, 1184, 1185, 1179, 1176, 1183, 1181, + 1185, 1187, 1188, 1189, 1190, 1191, 1187, 1193, 1194, 1189, + 1195, 1190, 1197, 1193, 1194, 1195, 1196, 1198, 1191, 1199, + 1188, 1197, 1196, 1200, 1200, 1201, 1203, 1204, 1205, 1206, + 1199, 1207, 1209, 1210, 1205, 1206, 1198, 1207, 1209, 1211, + 1212, 1213, 1214, 1215, 1215, 1201, 1203, 1210, 1216, 1217, - 1218, 1218, 1209, 1217, 1212, 1219, 1220, 1222, 1225, 1223, - 1227, 1220, 1214, 1216, 1223, 1223, 1224, 1225, 1215, 1226, - 1228, 1229, 0, 1232, 1227, 1230, 1222, 1226, 1219, 1231, - 1230, 1231, 1234, 1230, 1224, 1228, 1229, 1232, 1234, 1229, - 1235, 1236, 1237, 1238, 1235, 1239, 1240, 1237, 1237, 1241, - 1242, 1243, 1236, 1244, 1241, 1242, 1245, 1248, 1244, 1247, - 1249, 1252, 1238, 1251, 1240, 1250, 1250, 1251, 1253, 1243, - 1255, 1239, 1256, 1247, 1254, 1248, 1245, 1258, 1249, 1252, - 1254, 1257, 1255, 1259, 1260, 1261, 1262, 1253, 1264, 1263, - 1261, 1256, 1258, 1262, 1263, 1257, 1265, 1267, 1259, 1266, + 1204, 1218, 1212, 1210, 1221, 1213, 1219, 1220, 1220, 1211, + 1214, 1219, 1222, 1224, 1227, 1225, 1226, 1222, 1216, 1218, + 1225, 1225, 1228, 1227, 1217, 1229, 1230, 1221, 1231, 1233, + 1228, 1234, 1224, 1234, 1226, 1235, 1238, 1232, 1233, 1229, + 1238, 1230, 1232, 1231, 1237, 1232, 1231, 1239, 1240, 1235, + 1237, 1241, 1242, 1240, 1240, 1243, 1244, 1245, 1239, 1246, + 1247, 1244, 1245, 1248, 1251, 1247, 1250, 1252, 1253, 1253, + 1241, 1254, 1255, 1243, 1256, 1254, 1258, 1246, 1242, 1259, + 1250, 1257, 1251, 1248, 1261, 1252, 1260, 1257, 1258, 1262, + 1255, 1263, 1264, 1256, 1265, 1267, 1268, 1264, 1259, 1261, - 1266, 1268, 1269, 1260, 1270, 1265, 1264, 1268, 1271, 1270, - 1272, 1277, 1267, 1279, 1271, 1277, 1272, 1273, 1273, 1274, - 1274, 1276, 1276, 1269, 1278, 1280, 1281, 1282, 1283, 1283, - 1284, 1279, 1285, 1278, 1282, 1287, 1288, 1286, 1289, 1280, - 1285, 1281, 1286, 1289, 1289, 1291, 1290, 1292, 1292, 1287, - 1284, 1290, 1290, 1293, 1294, 1288, 1296, 1295, 1297, 1298, - 1299, 1296, 1300, 1302, 1301, 1291, 1295, 1304, 1300, 1301, - 1303, 1307, 1293, 1294, 1305, 1306, 1303, 1297, 1299, 1298, - 1305, 1306, 1308, 1309, 1310, 1311, 1304, 1312, 1316, 1302, - 1307, 1313, 1314, 1314, 1315, 1317, 1317, 1315, 1321, 1311, + 1260, 1265, 1266, 1270, 1262, 1268, 1271, 1266, 1269, 1269, + 1263, 1272, 1271, 1267, 1273, 1274, 1275, 1282, 1270, 1273, + 1283, 1274, 1275, 1276, 1276, 1277, 1277, 1279, 1279, 1280, + 1281, 1284, 1272, 1280, 1283, 1282, 1285, 1286, 1286, 1281, + 1287, 1288, 1289, 1285, 1290, 1291, 1284, 1289, 1292, 1288, + 1293, 1294, 0, 1292, 1292, 1293, 1293, 1296, 1290, 1297, + 1287, 1295, 1295, 1298, 1291, 1299, 1300, 1301, 1302, 1303, + 1299, 1294, 1298, 1305, 1304, 1303, 1296, 1306, 1297, 1304, + 1314, 1307, 1308, 1306, 1309, 1300, 1302, 1301, 1308, 1310, + 1309, 1311, 1312, 1313, 1314, 1315, 1317, 1317, 1316, 1305, - 1316, 1308, 1309, 1310, 1318, 1318, 1313, 1319, 1312, 1320, - 1322, 1321, 1319, 1320, 1323, 1324, 1328, 1324, 1326, 1322, - 1327, 1324, 1329, 1330, 1335, 1327, 1333, 1323, 1331, 1331, - 1332, 1328, 1333, 1334, 1324, 1332, 1326, 1335, 1336, 1330, - 1337, 1338, 1329, 1336, 1337, 1338, 1339, 1340, 1334, 1341, - 1342, 1343, 1343, 1345, 1347, 1348, 1342, 1349, 1349, 1351, - 1348, 1350, 1353, 1353, 1357, 1340, 1339, 1350, 1358, 1341, - 1355, 1345, 1361, 1355, 1362, 1347, 1356, 1356, 1360, 1351, - 1357, 1360, 1364, 1362, 1358, 1363, 1363, 1365, 1366, 1367, - 1368, 1370, 1361, 1371, 1367, 1369, 1369, 1364, 1372, 1373, + 1307, 1318, 1319, 1323, 1318, 1320, 1320, 1323, 1310, 1324, + 1311, 1312, 1313, 1316, 1319, 1322, 1315, 1321, 1321, 1325, + 1322, 1326, 1324, 1327, 1331, 1327, 1329, 1330, 1325, 1327, + 1332, 1333, 1330, 1335, 1326, 1334, 1334, 1336, 1335, 1331, + 1337, 1338, 1327, 1336, 1329, 1340, 1339, 1333, 1341, 1340, + 1332, 1339, 1341, 1342, 1338, 1337, 1343, 1344, 1345, 1346, + 1346, 1348, 1350, 1351, 1345, 1352, 1352, 1354, 1351, 1353, + 1356, 1356, 1360, 1342, 1343, 1353, 1361, 1344, 1358, 1348, + 1364, 1358, 1365, 1350, 1359, 1359, 1363, 1354, 1360, 1363, + 1367, 1365, 1361, 1366, 1366, 1368, 1369, 1370, 1371, 1373, - 1370, 1374, 1374, 1375, 1368, 1376, 1378, 1366, 1365, 1377, - 1381, 1371, 1383, 1372, 1377, 1379, 1379, 1375, 1380, 1382, - 1382, 1378, 1380, 1376, 1373, 1384, 1386, 1385, 1387, 1390, - 1381, 1385, 1391, 1387, 1383, 1392, 1384, 1389, 1389, 1393, - 1394, 1395, 1395, 1396, 1397, 1386, 1391, 1390, 1396, 1398, - 1399, 1400, 1401, 1393, 1392, 1392, 1400, 1403, 1402, 1399, - 1402, 1404, 1403, 1405, 1397, 1394, 1408, 1404, 1406, 1398, - 1409, 1409, 1401, 1410, 1406, 1411, 1414, 1413, 1415, 1415, - 1408, 1411, 1413, 1405, 1416, 1416, 1418, 1417, 1419, 1423, - 1420, 1425, 1410, 1420, 1421, 1421, 1422, 1425, 1431, 1424, + 1364, 1374, 1370, 1372, 1372, 1367, 1375, 1376, 1373, 1377, + 1377, 1378, 1371, 1379, 1381, 1369, 1368, 1380, 1384, 1374, + 1386, 1375, 1380, 1382, 1382, 1378, 1383, 1385, 1385, 1381, + 1383, 1379, 1376, 1387, 1389, 1388, 1390, 1393, 1384, 1388, + 1394, 1390, 1386, 1395, 1387, 1392, 1392, 1396, 1397, 1398, + 1398, 1399, 1400, 1389, 1394, 1393, 1399, 1401, 1402, 1403, + 1404, 1396, 1395, 1395, 1403, 1406, 1405, 1402, 1405, 1407, + 1406, 1408, 1400, 1397, 1411, 1407, 1409, 1401, 1412, 1412, + 1404, 1413, 1409, 1414, 1417, 1416, 1418, 1418, 1411, 1414, + 1416, 1408, 1419, 1419, 1421, 1420, 1422, 1425, 1423, 1427, - 1414, 1417, 1424, 1419, 1418, 1424, 1426, 1427, 1422, 1423, - 1427, 1426, 1429, 1430, 1433, 1433, 1432, 1424, 1430, 1432, - 1435, 1429, 1434, 1431, 1440, 1435, 1427, 1438, 1434, 1436, - 1436, 1437, 1437, 1438, 1439, 1441, 1442, 1440, 1443, 1439, - 1444, 1445, 1446, 1444, 1447, 1448, 1449, 1445, 1446, 1447, - 1453, 1448, 1450, 1441, 1454, 1442, 1452, 1450, 1443, 1451, - 1451, 1452, 1455, 1456, 1457, 1460, 1461, 1458, 1453, 1449, - 1459, 1460, 1462, 1463, 1454, 1464, 1470, 1456, 1457, 1458, - 1466, 1466, 1455, 1459, 1467, 1468, 1461, 1463, 1469, 1469, - 1468, 1470, 1462, 1471, 1472, 1473, 1464, 1474, 1476, 1475, + 1413, 1423, 1424, 1424, 1426, 1435, 0, 1428, 1417, 1420, + 1428, 1422, 1421, 1428, 1429, 1425, 1426, 1430, 1431, 1427, + 1429, 1431, 1430, 1433, 1434, 1428, 1437, 1437, 1436, 1434, + 1435, 1436, 1433, 1438, 1446, 1439, 1444, 1431, 1445, 1438, + 1439, 1440, 1440, 1441, 1441, 1442, 1447, 1443, 1453, 1444, + 0, 1442, 1443, 1446, 1448, 1449, 1445, 1448, 1450, 1457, + 1451, 1449, 1452, 1458, 1450, 1451, 1447, 1454, 1452, 1455, + 1455, 1453, 1454, 1456, 1459, 1460, 1461, 1457, 1456, 1462, + 1463, 1464, 1465, 1458, 1466, 1467, 1468, 1464, 1471, 1460, + 1461, 1462, 1472, 1463, 1459, 1470, 1470, 1472, 1474, 1467, - 1477, 1478, 1482, 1486, 1467, 1476, 1474, 1471, 1480, 1477, - 1484, 1484, 1477, 1473, 1475, 1486, 1483, 1478, 1472, 1483, - 1485, 1485, 1487, 1480, 1489, 1489, 1488, 1482, 1480, 1488, - 1490, 1491, 1492, 1493, 1494, 1495, 1496, 1492, 1493, 1497, - 1487, 1503, 1500, 1490, 1502, 1496, 1499, 1498, 1500, 1504, - 1491, 1495, 1505, 1494, 1503, 1499, 1498, 1506, 1497, 1498, - 1501, 1501, 1507, 1510, 1502, 1511, 1505, 1504, 1512, 1512, - 1513, 1514, 1515, 1506, 1507, 1516, 1516, 1515, 1519, 1518, - 1514, 1520, 1517, 1511, 1518, 1521, 1513, 1522, 1510, 1525, - 1516, 1517, 1522, 1522, 1517, 1524, 1519, 1526, 1529, 0, + 1473, 1473, 1465, 1475, 1466, 1476, 1477, 1468, 1471, 1478, + 1479, 1481, 1480, 1474, 1482, 1486, 1484, 1475, 1478, 1480, + 1481, 1488, 1488, 1481, 1477, 1479, 1489, 1489, 1491, 1476, + 1482, 1484, 1487, 1490, 1492, 1487, 1484, 1492, 1493, 1493, + 1486, 1494, 1495, 1496, 1497, 1490, 1491, 1498, 1496, 1497, + 1500, 1499, 1501, 1502, 1494, 1503, 1506, 1504, 1509, 1500, + 1507, 1495, 1502, 1504, 1503, 1502, 1498, 1499, 1505, 1505, + 1508, 1501, 1509, 1507, 1510, 1511, 1506, 1514, 1515, 1516, + 1516, 1517, 1518, 1521, 1519, 1520, 1520, 1511, 1508, 1519, + 1510, 1518, 1521, 1522, 1523, 1521, 1515, 1517, 1522, 1524, - 1527, 1528, 1520, 1521, 1525, 1527, 1531, 1528, 1532, 1524, - 1530, 1530, 1531, 1532, 1533, 1534, 1529, 1536, 1537, 1526, - 1533, 1534, 1538, 1539, 1540, 1541, 1543, 1540, 1538, 1545, - 1546, 1541, 1537, 1540, 1543, 1547, 1539, 1536, 1548, 1549, - 1550, 1551, 1552, 1547, 1553, 1553, 1556, 1548, 1545, 1546, - 1558, 1554, 1549, 1550, 1555, 1551, 1552, 1554, 1559, 1556, - 1555, 1557, 1557, 1560, 1561, 1562, 1553, 1563, 1564, 1565, - 1558, 1562, 1567, 1567, 1568, 1569, 1559, 1561, 1570, 1569, - 1571, 1572, 1560, 1570, 1564, 1571, 1572, 1565, 1573, 1563, - 1574, 1576, 1577, 1577, 1568, 1578, 1579, 1573, 1580, 1581, + 1520, 1525, 1514, 1526, 1528, 1530, 1529, 1532, 1526, 1526, + 1531, 1533, 1523, 1532, 1540, 1531, 1534, 1534, 1528, 1525, + 1524, 1529, 1535, 1543, 1541, 1536, 1537, 1530, 1535, 1533, + 1536, 1538, 1537, 1542, 1540, 1545, 1543, 1538, 1541, 1542, + 1544, 1545, 1547, 1544, 1549, 1550, 1551, 1552, 1553, 1544, + 1547, 0, 1554, 1555, 1551, 1556, 1552, 1557, 1557, 1560, + 1558, 1553, 1559, 1549, 1550, 1554, 1558, 1555, 1559, 1556, + 1561, 1561, 1560, 1562, 1563, 1564, 1565, 1566, 1567, 1557, + 1568, 1569, 1572, 1566, 1571, 1571, 1573, 1578, 1577, 1565, + 1573, 0, 1563, 1562, 1564, 1582, 1568, 1577, 1574, 1569, - 1581, 1582, 1583, 1586, 1584, 1587, 1576, 1585, 1579, 1583, - 1590, 1589, 1588, 1574, 1578, 1582, 1584, 1580, 1588, 1585, - 1591, 1593, 1586, 1589, 1593, 1587, 1591, 1597, 1590, 1592, - 1592, 1594, 1594, 1596, 1598, 1600, 1597, 1601, 1596, 1601, - 1598, 1599, 1599, 1602, 1603, 1604, 1602, 1600, 1605, 1607, - 1606, 1608, 1611, 1609, 1607, 1610, 1613, 1611, 1615, 1619, - 1608, 0, 1612, 1615, 1603, 1609, 1605, 1604, 1606, 1614, - 1610, 1612, 1616, 1618, 1614, 1621, 1613, 1617, 1617, 1618, - 1619, 1614, 1622, 1623, 1612, 1625, 1624, 1616, 1624, 1626, - 1626, 1627, 1627, 1629, 1621, 1628, 1628, 1632, 1622, 1625, + 1567, 1575, 1572, 1574, 1576, 1580, 1575, 1581, 1581, 1576, + 1578, 1583, 1584, 1586, 1582, 1585, 1585, 1587, 1588, 1590, + 1580, 1589, 1591, 1583, 1587, 1593, 1592, 1586, 1594, 1595, + 1588, 1584, 1592, 1589, 1601, 1595, 0, 1593, 1590, 1596, + 1596, 1597, 1591, 1601, 1597, 1600, 1594, 1598, 1598, 1602, + 1600, 1603, 1603, 1604, 1605, 1602, 1605, 1606, 1607, 1608, + 1606, 1609, 1610, 1611, 1612, 1604, 1613, 1616, 1611, 1612, + 1614, 1615, 1616, 1618, 1617, 1613, 1621, 0, 1607, 1609, + 1610, 1608, 1614, 1617, 1620, 1619, 1615, 1622, 1622, 1620, + 1619, 1621, 1623, 1618, 1624, 1626, 1617, 1619, 1623, 1628, - 1633, 1625, 1640, 1623, 1630, 1630, 1631, 1631, 1634, 1634, - 1635, 1636, 1637, 1629, 1635, 1637, 1639, 1636, 1632, 1641, - 1640, 1633, 1639, 1642, 1643, 1641, 1646, 1643, 1644, 1644, - 1645, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1653, 1654, - 1660, 1657, 1650, 1653, 1653, 1647, 1647, 1647, 1642, 1655, - 1656, 1655, 1647, 1654, 1648, 1649, 1657, 1651, 1658, 1659, - 1660, 1656, 1661, 1663, 1658, 1662, 1662, 1665, 1659, 1664, - 1664, 1666, 1667, 1667, 1668, 1668, 1669, 1672, 1672, 1673, - 1677, 1674, 1676, 1661, 1679, 1679, 1678, 1665, 1680, 1663, - 1674, 1676, 1678, 1666, 1683, 1681, 1669, 1684, 1682, 1685, + 1627, 1629, 1634, 1629, 1630, 1631, 1631, 1632, 1632, 1633, + 1633, 1635, 1635, 1637, 1626, 1624, 1627, 1638, 1630, 1628, + 1630, 1645, 1634, 1636, 1636, 1639, 1639, 1640, 1647, 1641, + 1642, 1640, 1653, 1642, 1637, 1641, 1644, 1646, 1638, 1645, + 1654, 1648, 1644, 1646, 1648, 1649, 1649, 1650, 1650, 1651, + 1652, 1655, 1653, 1647, 1656, 1651, 1659, 1655, 0, 1665, + 1654, 1658, 1652, 1652, 1652, 1661, 1658, 1658, 1662, 1652, + 1659, 1660, 1663, 1660, 1656, 1664, 1661, 1666, 1663, 1665, + 1667, 1667, 1668, 1662, 1664, 1669, 1669, 1670, 1671, 1672, + 1672, 1673, 1673, 1674, 1677, 1677, 1678, 1679, 1666, 1682, - 1685, 1677, 1686, 1683, 1673, 1682, 1687, 1689, 1690, 1680, - 1681, 1691, 1689, 1692, 1690, 1693, 1695, 1695, 1694, 1698, - 1692, 1693, 1687, 1684, 1694, 1696, 1697, 1699, 1686, 1700, - 1696, 1691, 1702, 1701, 1703, 1697, 1701, 1704, 1704, 1698, - 1708, 1700, 1705, 1706, 1707, 1711, 1699, 1709, 1705, 1706, - 1702, 1709, 1712, 1713, 1715, 1708, 1714, 1714, 1713, 1718, - 1703, 1716, 1719, 1720, 1707, 1711, 1719, 1709, 1721, 1720, - 1722, 1722, 1724, 1715, 1712, 1723, 1716, 1721, 1718, 1723, - 1725, 1725, 1726, 1724, 1727, 1728, 1729, 1730, 1724, 1731, - 1732, 1729, 1734, 1733, 1735, 1735, 1732, 1734, 1727, 1736, + 1681, 1684, 1684, 1685, 1686, 1683, 1679, 1670, 1668, 1681, + 1671, 1683, 1689, 1674, 1688, 1687, 1690, 1690, 1691, 1686, + 1682, 1678, 1687, 1688, 1685, 1692, 1694, 1695, 1696, 1697, + 1701, 1694, 1703, 1695, 1698, 1701, 1697, 1699, 1689, 1704, + 1698, 1692, 1702, 1699, 1691, 1700, 1700, 1705, 1696, 1707, + 1706, 1702, 1703, 1706, 1708, 1709, 1709, 1710, 1704, 1705, + 1711, 1712, 1713, 1710, 1714, 1716, 1711, 1707, 1714, 1717, + 1718, 1719, 1719, 1720, 1721, 1718, 1723, 1713, 1724, 1726, + 1708, 1712, 1724, 1729, 1714, 1716, 1728, 1725, 1726, 1721, + 1728, 1717, 1720, 1725, 1729, 1723, 1727, 1727, 1731, 1729, - 1736, 1737, 1739, 1726, 1728, 1737, 1740, 1730, 1733, 1731, - 1741, 1739, 1742, 1742, 1744, 1744, 1748, 1740, 1745, 1746, - 1747, 1750, 1740, 1745, 1745, 1746, 1747, 1749, 1751, 1753, - 1741, 1754, 1749, 1750, 1751, 1754, 1755, 1756, 1757, 1758, - 1759, 1753, 1748, 1760, 1757, 1762, 1759, 1763, 1755, 1764, - 1766, 1767, 1767, 1766, 1764, 1760, 1770, 1762, 1768, 1768, - 0, 1758, 1756, 1769, 1769, 1771, 1763, 1772, 1775, 1773, - 1777, 1771, 1774, 1772, 1773, 1777, 1770, 1775, 1774, 1779, - 1780, 1783, 1779, 1781, 1781, 1784, 1785, 1786, 1786, 1787, - 1788, 1785, 1780, 1783, 1789, 1788, 1791, 1784, 1787, 1789, + 1730, 1730, 1732, 1733, 1734, 1735, 1736, 1737, 1738, 1734, + 1739, 1740, 1740, 1737, 1746, 1739, 1732, 1741, 1741, 1731, + 1742, 1744, 1733, 1738, 1742, 1735, 1736, 1745, 1747, 1747, + 1744, 1749, 1749, 1751, 1746, 1750, 1752, 1753, 1745, 1751, + 1750, 1750, 1752, 1745, 1754, 1755, 1756, 1758, 1760, 1754, + 1759, 1761, 1756, 1763, 1759, 1762, 1764, 1755, 1765, 1758, + 1760, 1762, 1764, 1753, 1768, 1767, 1769, 1772, 1772, 1771, + 1765, 1769, 1771, 1773, 1773, 1763, 1761, 1767, 1774, 1774, + 1775, 1776, 1777, 1768, 1778, 1779, 1780, 1776, 1777, 1778, + 1784, 1779, 1782, 1784, 1785, 1780, 1788, 1782, 1786, 1786, - 1790, 1790, 1792, 1793, 1794, 1795, 1798, 1796, 1797, 1795, - 1799, 1792, 1796, 1800, 1797, 1801, 1791, 1804, 1805, 1799, - 1809, 1793, 1808, 1794, 1798, 1803, 1803, 1805, 0, 1801, - 1807, 1800, 1806, 1806, 1808, 1804, 1811, 1803, 1810, 1807, - 1817, 1809, 1818, 1810, 1814, 1814, 1820, 1816, 1821, 1811, - 1816, 1822, 1823, 1824, 1824, 1830, 1817, 1822, 1818, 1826, - 1826, 1820, 1821, 1825, 1827, 1825, 1829, 1831, 1831, 1823, - 1832, 1833, 1827, 1829, 1834, 1830, 1835, 1836, 1837, 1832, - 1838, 1839, 1841, 1844, 1842, 1845, 1834, 1839, 1835, 1836, - 1843, 1843, 1833, 1847, 1846, 1838, 1842, 1846, 1847, 1848, + 1775, 1789, 1790, 1791, 1791, 1792, 1785, 1790, 1788, 1795, + 1793, 1794, 1795, 1789, 1792, 1793, 1794, 1796, 1796, 1797, + 1798, 1801, 1799, 1800, 1803, 1801, 1802, 1804, 1805, 1798, + 1803, 1802, 1806, 1807, 1809, 1809, 1810, 1805, 1815, 1797, + 1799, 0, 1800, 1811, 1813, 1804, 1809, 1807, 1812, 1812, + 1806, 1814, 1811, 1813, 1810, 1816, 1817, 1820, 1820, 1815, + 1816, 1822, 1823, 1814, 1822, 1824, 1827, 1826, 1828, 1817, + 1829, 1830, 1830, 1831, 1828, 1831, 1832, 1832, 1823, 1835, + 1827, 1824, 1826, 1833, 1836, 1838, 1835, 1829, 1837, 1837, + 1839, 1833, 1843, 1840, 1838, 1841, 1842, 1844, 1848, 1850, - 1839, 1844, 1841, 1850, 1837, 1845, 1852, 1851, 1850, 1851, - 1853, 1854, 1856, 1858, 1859, 1853, 1860, 1862, 1854, 1848, - 1861, 1856, 1861, 1859, 1852, 1864, 1865, 1864, 1860, 1866, - 1866, 1858, 1867, 1868, 1870, 1869, 1862, 1869, 1868, 1870, - 1865, 1871, 1872, 1873, 1874, 1877, 1871, 1875, 1876, 1879, - 1874, 1880, 1875, 1877, 1881, 1881, 1882, 1882, 1867, 1883, - 1872, 1876, 1884, 1873, 1885, 1880, 1886, 1887, 1879, 1887, - 1885, 1886, 1888, 1889, 1883, 1890, 1890, 1892, 1892, 1891, - 1896, 1889, 1884, 1893, 1893, 1894, 1900, 1895, 1898, 1889, - 1888, 1891, 1895, 1899, 1894, 1899, 1901, 1898, 1896, 1902, + 1845, 1847, 1849, 1849, 1836, 1840, 1845, 1841, 1842, 1851, + 1848, 1839, 1844, 1852, 1854, 1853, 1852, 1850, 1843, 1845, + 1853, 1847, 1856, 1857, 1858, 1857, 1859, 1856, 1860, 1851, + 1862, 1859, 1864, 1868, 1854, 1860, 1865, 1866, 1867, 1862, + 1867, 1870, 1858, 1870, 1871, 1865, 1872, 1872, 1873, 1866, + 1864, 1874, 1868, 1875, 1876, 1875, 1874, 1877, 1871, 1876, + 1878, 1879, 1877, 1880, 1882, 1881, 1885, 1883, 1886, 1880, + 1881, 1887, 1887, 1889, 1873, 1883, 1890, 1882, 1878, 1888, + 1888, 1879, 1886, 1891, 1894, 1885, 1892, 1895, 1889, 1891, + 1893, 1892, 1893, 1896, 1896, 1895, 1890, 1897, 1898, 1898, - 1898, 1901, 1901, 1903, 1905, 1906, 1907, 1900, 1902, 1909, - 1906, 1907, 1910, 1913, 1911, 1903, 1905, 1912, 1912, 1914, - 1915, 1916, 1909, 1911, 1917, 1921, 1919, 1933, 1920, 1922, - 1930, 1913, 1910, 1924, 1922, 1916, 1915, 1914, 1919, 1917, - 1920, 1923, 1924, 1927, 1929, 1921, 1923, 1932, 1931, 1927, - 1929, 1934, 1933, 1930, 1935, 1935, 1938, 1936, 1937, 1937, - 1934, 1941, 1927, 1931, 1939, 1932, 1936, 1940, 1939, 0, - 1947, 1942, 1940, 1943, 1941, 1938, 1942, 1942, 1944, 1943, - 1945, 1946, 1952, 1945, 1944, 1950, 1950, 1951, 1951, 1946, - 1947, 1952, 1953, 1953, 1954, 1954, 1955, 1956, 1957, 1964, + 1899, 1899, 1894, 1895, 1900, 1901, 1902, 1904, 1906, 1897, + 1901, 1909, 1905, 1900, 1905, 1907, 1904, 1908, 1911, 1904, + 1907, 1907, 1912, 1909, 1902, 1915, 1908, 1912, 1913, 1906, + 1911, 1916, 1917, 1913, 1918, 1918, 1919, 1920, 1915, 1922, + 1921, 1917, 1923, 1927, 1928, 1929, 1925, 1926, 1936, 1928, + 1929, 1916, 1930, 1922, 1919, 1920, 1921, 1923, 1925, 1926, + 1933, 1930, 1935, 1927, 1938, 1937, 1933, 1939, 1935, 1940, + 1944, 1936, 1941, 1941, 1942, 1943, 1943, 1945, 1940, 1933, + 1937, 1945, 1938, 1942, 1947, 1946, 1953, 0, 1948, 1944, + 1946, 1952, 1939, 1948, 1948, 1949, 1950, 1947, 1962, 1952, - 1958, 1965, 1951, 1964, 1957, 1958, 1959, 1959, 1955, 1960, - 1960, 1961, 1962, 1951, 1968, 1956, 1961, 1969, 1962, 1966, - 1970, 1965, 1969, 1966, 1972, 1971, 1973, 1975, 1976, 1972, - 1974, 1977, 1979, 1976, 1978, 1978, 1979, 1980, 1982, 1968, - 1971, 1984, 1983, 1970, 1973, 1981, 1974, 1975, 1986, 1987, - 1981, 1985, 1980, 1977, 1983, 1990, 1985, 1988, 1988, 1991, - 1984, 1986, 1992, 1990, 1982, 1993, 1994, 1987, 1995, 2000, - 1996, 1997, 1998, 2001, 2001, 2004, 2002, 2009, 1991, 2002, - 2040, 1992, 2003, 1997, 2000, 2005, 2040, 1995, 1993, 2004, - 1994, 1996, 2009, 1998, 2010, 2003, 2006, 2006, 2005, 2007, + 1951, 1949, 1950, 1951, 1956, 1956, 1953, 1957, 1957, 1958, + 1959, 1959, 1960, 1960, 1961, 1963, 1962, 1968, 1958, 1964, + 1967, 1963, 1957, 1968, 1964, 1967, 1961, 1965, 1965, 1966, + 1966, 1970, 1971, 1957, 1972, 1970, 1973, 1975, 1972, 1976, + 1977, 1979, 1978, 1980, 1976, 1982, 1979, 1984, 1981, 1983, + 1985, 1985, 1971, 1987, 1983, 1986, 1973, 1978, 1989, 1986, + 1990, 1980, 1975, 1977, 1981, 1982, 1988, 1991, 1987, 1984, + 1992, 1988, 1990, 1994, 1993, 1992, 1995, 1995, 1998, 1999, + 1997, 2000, 2001, 2002, 1989, 2007, 1991, 1993, 1997, 2003, + 2005, 1994, 0, 2004, 2008, 2008, 2009, 1998, 1999, 2009, - 2007, 2008, 2008, 2011, 2011, 2012, 2014, 2010, 2013, 2013, - 2016, 2014, 2017, 2018, 2012, 2016, 2019, 2012, 2020, 2020, - 2021, 2021, 2022, 2023, 2023, 2024, 2025, 2025, 2019, 2026, - 2027, 2030, 2017, 2018, 2032, 2027, 2028, 2028, 2029, 2029, - 2031, 2022, 2033, 2024, 2026, 2030, 2035, 2037, 2032, 2031, - 2039, 2035, 2036, 2036, 2038, 2038, 2041, 2042, 2042, 2041, - 2044, 2033, 2043, 2043, 2046, 2045, 2037, 2049, 2039, 2047, - 2047, 2050, 2052, 2042, 2051, 2060, 2052, 2053, 2053, 2044, - 2045, 2054, 2056, 2046, 2057, 2055, 2061, 2049, 2062, 2051, - 2055, 2059, 2059, 2061, 2050, 2060, 2063, 2056, 2064, 2057, + 2007, 2010, 2002, 2011, 2000, 2004, 2001, 2012, 2013, 2013, + 2003, 2005, 2014, 2014, 2010, 2015, 2015, 2011, 2016, 2017, + 2012, 2018, 2018, 2020, 2020, 2019, 2021, 2024, 2025, 2026, + 2023, 2021, 2017, 2016, 2019, 2023, 2029, 2019, 2027, 2027, + 2031, 2026, 2028, 2028, 2030, 2030, 2033, 2024, 2025, 2032, + 2032, 2034, 2035, 2035, 2037, 2029, 2034, 2038, 2031, 2036, + 2036, 2033, 2039, 2040, 2042, 2044, 2038, 2046, 2037, 2042, + 2043, 2043, 2045, 2045, 2047, 2048, 2039, 2051, 2048, 2052, + 2047, 2053, 2040, 2056, 2044, 2046, 2049, 2049, 2050, 2050, + 2054, 2054, 2057, 2058, 2052, 2059, 2051, 2060, 2060, 2059, - 2054, 2065, 2062, 2066, 2066, 2068, 2067, 2068, 2069, 2071, - 2074, 2069, 2072, 2073, 2063, 2067, 2064, 2072, 2073, 2075, - 2076, 2071, 2078, 2082, 2077, 2080, 2069, 2065, 2069, 2077, - 2080, 2081, 2075, 2083, 2084, 2074, 2081, 2085, 2082, 2083, - 2086, 2076, 2087, 2085, 2088, 2086, 2089, 2087, 2078, 2090, - 2095, 2091, 2090, 2092, 2093, 2084, 2094, 2100, 0, 2089, - 2091, 2096, 2092, 2093, 2095, 2094, 2097, 2096, 2108, 2088, - 2098, 2102, 2097, 2104, 2098, 2103, 2103, 2100, 2106, 2104, - 2102, 2105, 2105, 2109, 2108, 2110, 2110, 2111, 2112, 2114, - 2105, 2115, 2117, 2116, 2121, 2123, 2123, 2112, 2106, 2109, + 2053, 2061, 2049, 2056, 2062, 2067, 2063, 2064, 2058, 2062, + 2066, 2066, 2068, 2069, 2070, 2057, 2071, 2072, 0, 2068, + 2061, 2063, 2064, 2073, 2073, 2067, 2074, 2069, 2075, 2078, + 2075, 2081, 2070, 2076, 2071, 2074, 2076, 2079, 2083, 2080, + 2085, 2078, 2079, 2072, 2080, 2082, 2089, 2084, 2091, 2087, + 2088, 2076, 2084, 2076, 2087, 2088, 2081, 2090, 2082, 2083, + 2093, 2089, 2092, 2090, 2095, 2093, 2085, 2094, 2092, 2091, + 2096, 2097, 2094, 2098, 2097, 2099, 2100, 2101, 2102, 2107, + 0, 2103, 2098, 2096, 2099, 2100, 2101, 2103, 2104, 2095, + 2113, 2105, 2102, 2109, 2104, 2105, 2110, 2110, 2111, 2107, - 2106, 2114, 2111, 2119, 2117, 2120, 2119, 2115, 2116, 2122, - 2120, 2124, 2124, 2128, 2121, 2126, 2126, 2127, 2128, 2129, - 2127, 2122, 2130, 2131, 2131, 2129, 2132, 2134, 2130, 2133, - 2133, 2135, 2136, 2137, 2137, 2138, 2139, 2140, 2147, 2134, - 2132, 2138, 2140, 2142, 0, 2135, 2143, 2142, 2146, 2143, - 2139, 2136, 2144, 2144, 2145, 2150, 2148, 2146, 2147, 2145, - 2148, 2149, 2149, 2153, 2152, 2154, 2155, 2156, 2150, 2152, - 2157, 2156, 2158, 2159, 2161, 2160, 2166, 2158, 2163, 2159, - 2155, 2160, 2164, 2153, 2166, 2154, 2167, 2164, 2167, 2165, - 2157, 2170, 2161, 2173, 2163, 2165, 2171, 2171, 2172, 2174, + 2112, 2112, 2109, 2115, 2111, 2116, 2117, 2117, 2118, 2112, + 2113, 2119, 2113, 2121, 2122, 2124, 2123, 2127, 2128, 2115, + 2119, 2116, 2127, 2118, 2129, 2121, 2126, 2124, 0, 2126, + 2122, 2123, 2130, 2130, 2131, 2131, 2129, 2135, 2128, 2133, + 2133, 2134, 2135, 2136, 2134, 2137, 2138, 2139, 2139, 2136, + 2140, 2137, 2141, 2141, 2142, 2138, 2143, 2144, 2145, 2145, + 2147, 2146, 2154, 2148, 2140, 2150, 2142, 2146, 2148, 2150, + 2143, 2154, 2151, 2155, 2147, 2151, 2144, 2152, 2152, 2153, + 2161, 2156, 2157, 2157, 2153, 2156, 2158, 2160, 2162, 2163, + 2164, 2165, 2160, 2155, 2164, 2169, 2166, 0, 2167, 2158, - 2174, 2172, 2176, 2177, 2178, 2170, 2176, 2179, 2179, 2177, - 2185, 2180, 2183, 2183, 2188, 2187, 2178, 2191, 2192, 2173, - 2180, 2193, 2191, 2195, 2195, 2199, 2193, 2194, 2185, 2187, - 2188, 2199, 2194, 2197, 2197, 2200, 2200, 2201, 2202, 2205, - 2203, 2209, 2206, 2210, 2192, 2203, 2207, 2207, 2211, 2210, - 2209, 2216, 2212, 2201, 2206, 2214, 2214, 2217, 2205, 2215, - 2202, 2222, 2215, 2219, 2219, 2223, 2211, 2212, 2220, 2220, - 2216, 2221, 2224, 2226, 2223, 2217, 2221, 2224, 2225, 2222, - 2225, 2227, 2228, 2229, 2230, 2231, 0, 2226, 2229, 2237, - 2231, 2232, 2232, 2236, 2228, 2227, 2233, 2233, 2234, 2234, + 2161, 2166, 2171, 2163, 2167, 2172, 2168, 2178, 2162, 2173, + 2172, 2165, 2168, 2169, 2174, 2173, 2181, 2175, 2171, 2175, + 2186, 2178, 2174, 2179, 2179, 2180, 2182, 2182, 2180, 2184, + 2185, 2188, 2186, 2184, 2187, 2187, 2185, 2191, 2191, 2193, + 2188, 2195, 2181, 2196, 2199, 2200, 2201, 2202, 2209, 2199, + 2207, 2201, 2202, 2203, 2203, 2195, 2207, 2193, 2210, 2196, + 2205, 2205, 2208, 2208, 2209, 2211, 2213, 2214, 2215, 2215, + 2211, 2200, 2217, 2219, 2220, 2224, 2218, 2222, 2222, 2214, + 2210, 2217, 2218, 2223, 2225, 2213, 2223, 2227, 2227, 2220, + 2229, 2219, 2228, 2228, 2224, 2229, 2230, 2231, 2232, 2233, - 2235, 2235, 2241, 2238, 2230, 2236, 2242, 2237, 2238, 2239, - 2239, 2240, 2240, 2243, 2241, 2244, 2245, 2245, 2242, 2246, - 2247, 2247, 2248, 2248, 2249, 2250, 2253, 2251, 2252, 2255, - 2256, 2244, 2259, 2243, 2251, 2249, 2254, 2250, 2246, 2258, - 2252, 2254, 2257, 2257, 2260, 2262, 2253, 2261, 2258, 2255, - 2256, 2263, 2264, 2264, 2265, 2266, 2267, 2269, 2259, 2270, - 2261, 2271, 2274, 2265, 2260, 2263, 2273, 2274, 0, 2262, - 2266, 2267, 2275, 2272, 2283, 2269, 2272, 2275, 2276, 2276, - 2273, 2270, 2277, 2277, 2271, 2278, 2278, 2280, 2280, 2282, - 2282, 2284, 2283, 2285, 2287, 2288, 2289, 2290, 2291, 2292, + 2236, 2233, 2225, 2232, 2234, 2235, 2231, 2238, 2237, 0, + 2239, 2245, 2236, 2237, 2230, 2239, 2240, 2240, 2234, 2235, + 2241, 2241, 2242, 2242, 2243, 2243, 2244, 2238, 2246, 2245, + 2247, 2247, 2249, 2246, 2248, 2248, 2250, 2251, 2244, 2252, + 2253, 2253, 2254, 2257, 2249, 2255, 2255, 2258, 2250, 2256, + 2256, 2259, 2260, 2261, 2257, 2252, 2263, 2251, 2259, 2258, + 2262, 2254, 2264, 2266, 2260, 2262, 2265, 2265, 2267, 2268, + 2269, 2270, 2266, 2261, 2271, 2273, 2263, 2272, 2272, 2277, + 2278, 2274, 2264, 2269, 2273, 2275, 2279, 2280, 2271, 2268, + 2280, 2281, 2292, 2282, 2267, 2270, 2274, 2277, 2282, 2283, - 2294, 2293, 2284, 2293, 2295, 2296, 2300, 2291, 2297, 2297, - 2299, 2299, 2285, 2288, 2287, 2301, 2306, 2290, 2289, 2292, - 2294, 2304, 2295, 2296, 2301, 2302, 2302, 2307, 2300, 2308, - 2304, 2305, 2305, 2309, 2306, 2310, 2308, 2311, 2312, 2313, - 2314, 2314, 2315, 2315, 2316, 2307, 2317, 2318, 2309, 2319, - 2316, 2320, 2321, 2310, 2312, 2311, 2320, 2322, 2313, 2324, - 2323, 2324, 2318, 2329, 2317, 2323, 2325, 2325, 2319, 2326, - 2331, 2326, 2321, 2327, 2327, 2332, 2333, 2322, 2334, 2331, - 2335, 2336, 2329, 2337, 2340, 2335, 2341, 2344, 2333, 2341, - 2342, 2342, 2343, 2346, 2332, 2345, 2345, 2346, 2334, 2348, + 2275, 2291, 2278, 2292, 2283, 2281, 2284, 2284, 2293, 2279, + 2285, 2285, 2286, 2286, 2288, 2288, 2290, 2290, 2294, 2291, + 2296, 2297, 2298, 2299, 2304, 2300, 2301, 2293, 2302, 2303, + 2302, 2309, 2305, 2294, 2300, 2306, 2306, 2308, 2308, 2297, + 2296, 2315, 2304, 2299, 2298, 2310, 2301, 2311, 2311, 2303, + 2305, 2313, 2316, 2309, 2310, 2314, 2314, 2317, 2318, 2315, + 2313, 2319, 2320, 2322, 2317, 2321, 2323, 2323, 2324, 2324, + 2316, 2325, 2326, 2318, 2327, 2328, 2330, 2325, 2329, 2319, + 2320, 2321, 2322, 2329, 2331, 2333, 2332, 2333, 2338, 2327, + 2326, 2332, 2334, 2334, 2328, 2335, 2330, 2335, 2336, 2336, - 2351, 2336, 2337, 2353, 2340, 2344, 2349, 2343, 2350, 2350, - 2349, 2354, 2355, 2351, 2348, 2356, 2356, 2358, 2353, 2359, - 2360, 2361, 2361, 2362, 2360, 2363, 2363, 2365, 2359, 2358, - 2364, 2354, 2355, 2366, 2367, 2364, 2365, 2368, 2368, 2373, - 2373, 2374, 2362, 2375, 2375, 2376, 2367, 2377, 2378, 2366, - 2379, 2380, 2380, 2381, 2383, 2383, 2386, 2378, 2376, 2379, - 2377, 2386, 2387, 2374, 2388, 2389, 2390, 2387, 2381, 2391, - 2389, 2392, 2395, 2393, 2390, 2398, 2401, 2396, 2388, 2397, - 2392, 2393, 2396, 2401, 2397, 2399, 2399, 2395, 2391, 2402, - 2398, 2400, 2400, 2403, 2402, 2404, 2405, 2408, 2406, 2407, + 2340, 2341, 2342, 2343, 2331, 2344, 2345, 2338, 2346, 2340, + 2344, 2349, 2350, 2352, 2342, 2350, 2351, 2351, 2353, 2357, + 2341, 2354, 2354, 2343, 2363, 2355, 2345, 2346, 2352, 2355, + 2360, 2349, 2362, 2358, 2357, 2364, 2353, 2358, 2359, 2359, + 2365, 2365, 2367, 2360, 2363, 2369, 2371, 2362, 2368, 2369, + 2370, 2370, 2372, 2372, 2367, 2364, 2373, 2368, 2374, 2375, + 2376, 2373, 2377, 2377, 2383, 2371, 2385, 2374, 2382, 2382, + 2384, 2384, 2376, 2387, 2386, 2375, 2388, 2389, 2389, 2385, + 2390, 0, 2387, 2392, 2392, 2388, 2383, 2386, 2395, 2396, + 2397, 2398, 2399, 2395, 2396, 2390, 2398, 2400, 2401, 2404, - 2407, 2409, 2405, 2406, 2410, 2410, 2409, 2411, 2411, 2414, - 0, 2403, 2408, 2404, 2415, 2415, 2416, 2426, 2417, 2416, - 2418, 2419, 2414, 2417, 2417, 2418, 2419, 2420, 2421, 2422, - 2423, 2424, 2421, 2420, 2422, 2425, 2427, 2430, 2426, 2423, - 2429, 2428, 2427, 2425, 2435, 2429, 2424, 2428, 2432, 2430, - 2437, 2433, 2438, 2432, 2433, 2437, 2435, 2438, 2439, 2440, - 2441, 2442, 2443, 2443, 2444, 2447, 2448, 2453, 2449, 2441, - 2442, 2451, 2440, 2444, 2450, 2450, 2439, 2454, 2454, 2452, - 2455, 2457, 2453, 2459, 2447, 2460, 2448, 2449, 2452, 2460, - 2451, 2461, 2461, 2462, 2463, 2464, 2457, 0, 2465, 2455, + 2399, 2402, 2407, 2405, 2397, 2406, 2410, 2401, 2405, 2402, + 2406, 2408, 2408, 2410, 2404, 2411, 2400, 2407, 2409, 2409, + 2411, 2412, 2413, 2414, 2423, 2415, 2416, 2416, 2417, 2414, + 2415, 2418, 2419, 2419, 2420, 2420, 2418, 2423, 2429, 2412, + 2413, 2424, 2424, 2417, 2425, 2426, 0, 2425, 2427, 2428, + 2426, 2426, 2429, 2427, 2428, 2430, 2431, 2432, 2433, 2434, + 2431, 2430, 2432, 2435, 2436, 2439, 2437, 2433, 2440, 2438, + 2439, 2435, 2437, 2442, 2434, 2438, 2443, 2445, 2442, 2443, + 2440, 2447, 2448, 2449, 2450, 2436, 2447, 2448, 2457, 2445, + 2451, 2452, 2453, 2453, 2454, 2458, 2463, 2450, 2459, 2451, - 2463, 2464, 2467, 2459, 2465, 2466, 2466, 2468, 2470, 2471, - 2467, 2473, 2468, 2474, 2475, 2473, 2478, 2470, 2462, 2477, - 2477, 2488, 2471, 2479, 2479, 2480, 2480, 2474, 2483, 2475, - 2482, 2482, 2483, 2484, 2478, 2486, 2486, 2489, 2484, 2490, - 2491, 2488, 2489, 2493, 2501, 2491, 2491, 2494, 2494, 2496, - 2496, 2490, 2497, 2497, 2498, 2499, 2503, 2498, 2504, 2504, - 2505, 2505, 2501, 2493, 2506, 2506, 2507, 2509, 2499, 2508, - 2508, 2510, 2511, 2512, 2513, 2513, 2503, 2518, 2514, 2512, - 2509, 2507, 2514, 2519, 2520, 2517, 2511, 2521, 2522, 2510, - 2517, 2517, 2523, 2521, 2522, 2524, 2525, 2525, 2533, 2524, + 2452, 2449, 2461, 2454, 2460, 2460, 2465, 2457, 2467, 2462, + 2469, 2463, 2464, 2464, 2472, 2458, 2470, 2459, 2462, 2478, + 2470, 2461, 2473, 2467, 2478, 2465, 2471, 2471, 2473, 2474, + 2469, 2475, 2476, 2476, 2477, 2474, 2480, 2475, 2481, 2472, + 2483, 2484, 2477, 2485, 2483, 2480, 2487, 2487, 2488, 2489, + 2489, 2481, 2490, 2490, 2498, 2484, 2492, 2492, 2485, 2493, + 2494, 2496, 2496, 2493, 2499, 2494, 2488, 2500, 2503, 2499, + 2501, 2504, 2504, 2509, 2498, 2501, 2501, 2506, 2506, 2500, + 2507, 2507, 2508, 2511, 2513, 2508, 2509, 2517, 2503, 2514, + 2514, 2515, 2515, 2516, 2516, 2518, 2518, 2519, 2520, 2521, - 2518, 2528, 2530, 2519, 2520, 2531, 2528, 2535, 2531, 2534, - 2530, 2536, 2534, 2537, 2538, 2539, 2536, 2523, 2540, 2540, - 2544, 2541, 2543, 2533, 2535, 2535, 2547, 2542, 2553, 2539, - 2542, 2537, 2545, 2556, 2538, 2541, 2543, 2546, 2542, 2544, - 2545, 0, 2546, 2546, 2553, 2547, 2548, 2548, 2549, 2549, - 2550, 2550, 2551, 2551, 2552, 2552, 2554, 2555, 2557, 2556, - 2558, 2554, 2559, 2561, 2561, 2562, 2563, 2557, 2562, 2565, - 2565, 2566, 2567, 2567, 2568, 2570, 2570, 2555, 2566, 2568, - 2558, 2571, 2559, 2572, 2563, 2573, 2575, 2576, 2576, 2577, - 2571, 2578, 2572, 2577, 2573, 2579, 2580, 2582, 2581, 2583, + 2522, 2511, 2517, 2528, 2513, 2524, 2522, 2523, 2523, 2524, + 2519, 2529, 2527, 2521, 2530, 2531, 2520, 2527, 2527, 2532, + 2533, 2531, 2543, 2534, 2540, 2532, 2528, 2534, 2535, 2535, + 2538, 2529, 2540, 2541, 2530, 2538, 2541, 2544, 2545, 2545, + 2544, 2546, 2548, 2547, 2549, 2533, 0, 2543, 2547, 2550, + 2551, 2551, 2552, 2554, 2553, 2555, 0, 2553, 2546, 2546, + 2548, 2556, 2558, 2550, 2549, 2553, 2552, 2554, 2566, 2556, + 2557, 2559, 2559, 2564, 2555, 2557, 2557, 2560, 2560, 2561, + 2561, 2558, 2562, 2562, 2563, 2563, 2565, 2567, 2566, 2564, + 2568, 2565, 2569, 2574, 2570, 2572, 2572, 2573, 2577, 2568, - 2578, 2580, 2580, 2583, 2575, 2591, 2582, 2587, 2588, 2588, - 2579, 2581, 2587, 2590, 2590, 2592, 2593, 2595, 2596, 2591, - 2599, 2601, 2600, 2602, 2604, 2606, 2595, 2608, 2609, 2602, - 2596, 2600, 2608, 2609, 2593, 2611, 2604, 2610, 2610, 2620, - 2592, 2601, 2613, 2621, 2611, 2599, 2606, 2613, 2614, 2614, - 2616, 2616, 2614, 2617, 2617, 2618, 2618, 2619, 2622, 2620, - 2625, 2624, 2621, 2622, 2626, 2625, 2619, 2624, 2628, 2626, - 2627, 2627, 2629, 2630, 2631, 2632, 2633, 2637, 2630, 2634, - 2634, 2632, 2637, 2636, 2638, 2640, 2628, 2636, 2641, 2638, - 2639, 2639, 2631, 2629, 2642, 2644, 2644, 2646, 2647, 2649, + 2573, 2576, 2576, 2578, 2578, 2577, 2581, 2581, 2582, 2583, + 2579, 2574, 2569, 2567, 2570, 2579, 2584, 2582, 2583, 2586, + 2587, 2587, 2588, 2589, 2590, 2584, 2588, 2592, 2591, 2593, + 2603, 2594, 2589, 2591, 2591, 2594, 2598, 2586, 2593, 2590, + 2592, 2598, 2599, 2599, 2601, 2601, 2602, 2604, 2606, 2607, + 2610, 2612, 2613, 2611, 2615, 2603, 2617, 2606, 2613, 2619, + 2602, 2607, 2611, 2620, 2619, 2604, 2615, 2622, 2620, 2621, + 2621, 2612, 2631, 2624, 2632, 2610, 2622, 2617, 2624, 2625, + 2625, 2627, 2627, 2625, 2628, 2628, 2629, 2629, 2630, 2633, + 2635, 2639, 2631, 2632, 2633, 2636, 2635, 2630, 2637, 2640, - 2650, 2633, 2648, 2641, 2640, 2651, 2648, 2652, 2649, 2654, - 2646, 2647, 2653, 2656, 2642, 2652, 2650, 2653, 2655, 2655, - 2658, 2658, 2659, 2659, 2651, 2661, 2663, 2663, 2665, 2666, - 2671, 2667, 2656, 2668, 2672, 2654, 2670, 2670, 2668, 2673, - 2675, 2675, 2676, 2677, 2665, 2666, 2661, 2667, 2678, 2678, - 2671, 2681, 2684, 2682, 2693, 2683, 2676, 2672, 2673, 2682, - 2683, 2687, 2677, 2685, 2685, 2686, 2686, 2688, 2688, 2689, - 2690, 2681, 2691, 2693, 2684, 2695, 2692, 2694, 0, 2690, - 2689, 2687, 2692, 2696, 2696, 2697, 2702, 2688, 2697, 2694, - 2698, 2698, 2691, 2703, 2704, 2695, 2705, 2705, 2702, 2706, + 2636, 2638, 2638, 2637, 2641, 2642, 2643, 2644, 2645, 2639, + 2642, 2640, 2648, 2644, 2646, 2646, 2648, 2649, 2650, 2651, + 2651, 2652, 2649, 2650, 2643, 2641, 2653, 2654, 2656, 2656, + 2658, 2659, 2660, 2645, 2662, 2663, 2660, 2661, 2666, 2668, + 2652, 2653, 2673, 2658, 2659, 2664, 2661, 2654, 2667, 2667, + 2662, 2665, 2677, 2664, 2663, 2678, 2665, 2679, 2668, 2670, + 2670, 2671, 2671, 2673, 2666, 2675, 2675, 2680, 2677, 2682, + 2682, 2678, 2680, 2679, 2683, 2684, 2685, 2687, 2687, 2688, + 2689, 2690, 2690, 2693, 2694, 2696, 2695, 2697, 2697, 2699, + 2694, 2695, 2703, 2688, 2683, 2685, 2698, 2698, 2684, 2689, - 2704, 2707, 2706, 2708, 2710, 2711, 2712, 2707, 2713, 2710, - 2711, 2714, 2717, 2703, 2713, 2715, 2715, 2718, 2719, 2720, - 2722, 2708, 2721, 2721, 2717, 2712, 2728, 2723, 2714, 2714, - 2725, 2725, 2720, 2726, 2726, 2718, 2723, 2727, 2738, 2722, - 2728, 2729, 2727, 2719, 2730, 2730, 2729, 2731, 2731, 2732, - 2732, 2733, 2735, 2735, 2740, 2741, 2733, 2738, 2742, 2743, - 2743, 2745, 2745, 2747, 2746, 2748, 2749, 2749, 2750, 2750, - 2753, 2796, 2754, 2752, 2748, 2796, 2740, 2741, 2746, 2752, - 2742, 2755, 2762, 2747, 2758, 2758, 2755, 2760, 2760, 2761, - 2753, 2754, 2763, 2764, 2761, 2765, 2762, 2767, 2763, 2766, + 2700, 2700, 2701, 2693, 2704, 2702, 2705, 2696, 2707, 2699, + 2704, 2706, 2703, 2701, 2702, 2708, 2708, 2714, 2709, 2715, + 2700, 2709, 0, 2706, 2716, 2705, 2710, 2710, 2707, 2714, + 2716, 2717, 2717, 2718, 2719, 2720, 2718, 2722, 2725, 2715, + 2719, 2724, 2722, 2723, 2723, 2726, 2724, 2727, 2728, 2728, + 2730, 2726, 2731, 2720, 2732, 2733, 2735, 2725, 2734, 2734, + 2736, 2751, 2730, 2741, 2727, 2727, 2738, 2738, 2733, 2736, + 2731, 2739, 2739, 2740, 2753, 2735, 2742, 2741, 2740, 2732, + 2751, 2742, 2743, 2743, 2744, 2744, 2745, 2745, 2746, 2748, + 2748, 2754, 2755, 2746, 2756, 2756, 2753, 2758, 2758, 2760, - 2766, 2769, 2767, 2765, 2770, 2764, 2771, 2772, 2773, 2775, - 2776, 2771, 2777, 2778, 2773, 2780, 2779, 2775, 2781, 2772, - 2782, 2769, 2783, 2785, 2770, 2786, 2790, 2783, 2785, 2776, - 2863, 2780, 2777, 2778, 2779, 2781, 2781, 2787, 2791, 2788, - 0, 2782, 2863, 2787, 2788, 2786, 2790, 2794, 2794, 2795, - 2795, 2791, 2800, 2800, 2802, 2802, 2803, 2803, 2806, 2803, - 2804, 2804, 2806, 2804, 2805, 2805, 2809, 2805, 2808, 2808, - 2813, 2810, 2814, 2815, 2816, 2816, 2819, 2821, 2815, 2820, - 2822, 2821, 2823, 0, 2809, 2810, 2820, 2825, 2830, 2822, - 2813, 2826, 2814, 2827, 2827, 2828, 2828, 2823, 2829, 2829, + 2761, 2759, 2762, 2762, 2763, 2763, 2765, 2766, 2775, 2761, + 2767, 2768, 2765, 2754, 2755, 2759, 2768, 2771, 2771, 2760, + 2773, 2773, 2775, 2774, 2776, 2777, 2778, 2766, 2774, 2767, + 2776, 2779, 2779, 2780, 2778, 2782, 2783, 2777, 2780, 2784, + 2785, 2786, 2788, 2789, 2784, 2790, 2791, 2786, 2794, 2793, + 2788, 2795, 2785, 2796, 2797, 2782, 2783, 2800, 2799, 2797, + 2804, 2931, 2789, 2799, 2794, 2790, 2791, 2793, 2795, 2795, + 2801, 2805, 2931, 2802, 2796, 2810, 2801, 2800, 2802, 2810, + 2804, 2808, 2808, 2823, 2805, 2809, 2809, 2814, 2814, 2816, + 2816, 2817, 2817, 2820, 2817, 2818, 2818, 2820, 2818, 2819, - 2826, 2819, 2831, 2830, 2832, 2825, 2833, 2831, 2834, 2835, - 2836, 2833, 2833, 2832, 2834, 2837, 2832, 2838, 2839, 2840, - 2841, 2841, 2838, 2839, 2842, 2836, 2843, 2844, 2844, 2870, - 2842, 2912, 2843, 0, 2835, 2912, 2837, 2846, 2840, 2845, - 2845, 2870, 2846, 2849, 2849, 2852, 2852, 2853, 2853, 2854, - 2854, 2855, 2855, 2856, 2856, 2857, 2857, 2858, 2858, 2860, - 2861, 2861, 2862, 2864, 2868, 2866, 2867, 2867, 2860, 2869, - 2872, 2862, 2871, 2871, 2873, 2873, 2876, 2877, 2878, 2868, - 2877, 2880, 2869, 2864, 2866, 2872, 2879, 2879, 2882, 2883, - 2886, 2882, 2884, 2885, 2876, 2883, 2887, 2888, 2885, 2880, + 2819, 2823, 2819, 2822, 2822, 2824, 2827, 2828, 2829, 2830, + 2830, 2833, 2835, 2829, 2834, 2836, 2835, 2837, 2845, 2824, + 2839, 2834, 2840, 2845, 2836, 2849, 2827, 2828, 2841, 2841, + 2844, 2840, 2837, 2842, 2842, 2846, 2833, 2847, 2839, 2843, + 2843, 2850, 2847, 2847, 2846, 2844, 2848, 2846, 2851, 2852, + 2849, 2854, 2848, 2853, 2852, 2856, 2850, 2857, 2853, 2855, + 2855, 2856, 0, 2857, 2858, 2858, 2859, 2859, 2860, 2851, + 2854, 2863, 2863, 2860, 2866, 2866, 2867, 2867, 2868, 2868, + 2869, 2869, 2870, 2870, 2871, 2871, 2872, 2872, 2874, 2875, + 2875, 2876, 2877, 2878, 2882, 2880, 2884, 2874, 2881, 2881, - 2894, 2890, 2891, 2905, 2878, 2903, 2884, 2890, 2903, 2886, - 2910, 2891, 2914, 2888, 2887, 2894, 2905, 2906, 2906, 2907, - 2907, 2908, 2908, 2911, 2913, 2916, 2914, 2917, 2919, 2918, - 2919, 2920, 2911, 2910, 2918, 2921, 2921, 2922, 2917, 2923, - 2925, 2924, 2926, 2928, 2913, 2927, 2920, 2930, 2916, 2929, - 2922, 2931, 2928, 2937, 0, 2936, 2925, 2932, 2923, 2924, - 2927, 2929, 2932, 2938, 2938, 2939, 2944, 2926, 2930, 2936, - 2945, 2931, 2949, 2937, 2939, 2940, 2940, 2941, 2941, 2942, - 2942, 2943, 2943, 2946, 2947, 2944, 2946, 2948, 2950, 2947, - 2945, 2952, 2948, 2951, 2953, 2954, 2955, 2949, 2957, 2951, + 2876, 2886, 2883, 2890, 2877, 2885, 2885, 2892, 2884, 2882, + 2887, 2887, 2894, 2878, 2880, 2883, 2886, 2891, 2893, 2893, + 2891, 2890, 2896, 2897, 2898, 2896, 2899, 2900, 2902, 2897, + 2894, 2899, 2901, 2892, 2904, 2919, 2905, 2908, 2898, 2917, + 2904, 2924, 2917, 2926, 2902, 2905, 2900, 2926, 2919, 2927, + 2901, 2925, 2908, 2920, 2920, 2921, 2921, 2922, 2922, 2928, + 2925, 2930, 2932, 2933, 2924, 2933, 2934, 2932, 2937, 2927, + 2935, 2935, 2936, 2928, 2938, 2939, 2940, 2942, 2941, 2944, + 2958, 2934, 2943, 2945, 2930, 2936, 2942, 2937, 2950, 2951, + 2946, 2939, 2938, 2941, 2943, 2946, 2952, 2952, 2953, 2958, - 2954, 2956, 2956, 2950, 2958, 2952, 2953, 2959, 2959, 2961, - 2963, 2966, 2966, 2957, 2967, 2967, 2955, 2968, 2969, 2972, - 2970, 2971, 2973, 2958, 2961, 2968, 2970, 2971, 2963, 2974, - 2979, 2975, 2980, 2972, 2985, 2973, 2975, 2969, 2976, 2976, - 2977, 2977, 2982, 2983, 2986, 2987, 2988, 2983, 2974, 2986, - 2989, 2979, 2980, 2990, 2985, 2991, 2982, 2992, 2996, 2988, - 2991, 2997, 2992, 2989, 2987, 2993, 2993, 2998, 2999, 2999, - 3000, 3001, 2990, 3002, 3002, 3000, 3003, 3001, 2996, 2997, - 3004, 3003, 3005, 3006, 3007, 3004, 2998, 3005, 3009, 3009, - 3007, 3010, 3011, 3011, 3013, 3014, 3010, 3015, 3013, 3016, + 2944, 2940, 2950, 2945, 2954, 2954, 2959, 2953, 2963, 2951, + 2955, 2955, 2956, 2956, 2957, 2957, 2960, 2961, 2962, 2960, + 2964, 2965, 2961, 2962, 2966, 2967, 2959, 2965, 2969, 2968, + 2970, 2970, 2971, 2963, 2968, 2964, 2972, 2967, 2966, 2973, + 2973, 2975, 2977, 2980, 2980, 2981, 2981, 2971, 2969, 2982, + 2983, 2986, 2984, 2985, 2987, 2972, 2975, 2982, 2984, 2985, + 2977, 2988, 2993, 2989, 2994, 2986, 2999, 2987, 2989, 2983, + 2990, 2990, 2991, 2991, 2996, 2997, 3000, 3001, 3002, 2997, + 2988, 3000, 3003, 2993, 2994, 3004, 2999, 3005, 2996, 3006, + 3010, 3002, 3005, 3011, 3006, 3003, 3001, 3007, 3007, 3012, - 3017, 3018, 3006, 3019, 3015, 3022, 3022, 3018, 3020, 3024, - 3024, 3025, 3026, 3027, 3014, 3028, 3029, 3026, 3016, 3017, - 3025, 3020, 3019, 3025, 3030, 3030, 3031, 3032, 3034, 3029, - 3036, 3031, 3027, 3041, 3028, 3035, 3035, 3037, 3037, 3039, - 3032, 3038, 3038, 3040, 3039, 3042, 3042, 3048, 3043, 3036, - 3040, 3050, 3041, 3043, 3034, 3044, 3046, 3044, 3045, 3045, - 3047, 3052, 3052, 3046, 3049, 3053, 3048, 3047, 3055, 3049, - 3050, 3056, 3057, 3055, 3058, 3062, 3056, 3059, 3059, 3061, - 3061, 3063, 3064, 3064, 3053, 3065, 3065, 0, 3066, 3068, - 3068, 3057, 3070, 3058, 3062, 3066, 3069, 3069, 3072, 3070, + 3013, 3013, 3014, 3015, 3004, 3016, 3016, 3014, 3017, 3015, + 3010, 3011, 3018, 3017, 3019, 3020, 3021, 3018, 3012, 3019, + 3023, 3023, 3021, 3024, 3025, 3025, 3027, 3028, 3024, 3029, + 3027, 3030, 3031, 3032, 3020, 3033, 3029, 3036, 3036, 3032, + 3034, 3038, 3038, 3039, 3040, 3041, 3028, 3042, 3043, 3040, + 3030, 3031, 3039, 3034, 3033, 3039, 3044, 3044, 3045, 3046, + 3048, 3043, 3050, 3045, 3041, 3055, 3042, 3049, 3049, 3051, + 3051, 3053, 3046, 3052, 3052, 3054, 3053, 3056, 3056, 3062, + 3057, 3050, 3054, 3064, 3055, 3057, 3048, 3058, 3060, 3058, + 3059, 3059, 3061, 3066, 3066, 3060, 3063, 3067, 3062, 3061, - 3063, 3075, 3076, 3072, 3077, 0, 3075, 3078, 3078, 3079, - 3079, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3076, 0, 3077, 3083, 3083, 3083, 3083, 3083, 3083, - 3083, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3085, 3085, - 3085, 3085, 3085, 3085, 3085, 3086, 3086, 3086, 3086, 3086, - 3086, 3086, 3087, 3087, 3087, 3087, 3087, 3087, 3087, 3089, - 3089, 0, 3089, 3089, 3089, 3089, 3090, 3090, 0, 0, - 0, 3090, 3090, 3091, 3091, 0, 0, 3091, 0, 3091, - 3092, 0, 0, 0, 0, 0, 3092, 3093, 3093, 0, - 0, 0, 3093, 3093, 3094, 0, 0, 0, 0, 0, + 3069, 3063, 3064, 3070, 3071, 3069, 3072, 3076, 3070, 3073, + 3073, 3075, 3075, 3077, 3078, 3078, 3067, 3079, 3079, 0, + 3080, 3082, 3082, 3071, 3084, 3072, 3076, 3080, 3083, 3083, + 3086, 3084, 3077, 3089, 3090, 3086, 3091, 0, 3089, 3092, + 3092, 3093, 3093, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3090, 0, 3091, 3097, 3097, 3097, 3097, + 3097, 3097, 3097, 3098, 3098, 3098, 3098, 3098, 3098, 3098, + 3099, 3099, 3099, 3099, 3099, 3099, 3099, 3100, 3100, 3100, + 3100, 3100, 3100, 3100, 3101, 3101, 3101, 3101, 3101, 3101, + 3101, 3103, 3103, 0, 3103, 3103, 3103, 3103, 3104, 3104, - 3094, 3095, 3095, 0, 3095, 3095, 3095, 3095, 3096, 3096, - 0, 3096, 3096, 3096, 3096, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, 3082, - 3082, 3082, 3082, 3082, 3082, 3082 + 0, 0, 0, 3104, 3104, 3105, 3105, 0, 0, 3105, + 0, 3105, 3106, 0, 0, 0, 0, 0, 3106, 3107, + 3107, 0, 0, 0, 3107, 3107, 3108, 0, 0, 0, + 0, 0, 3108, 3109, 3109, 0, 3109, 3109, 3109, 3109, + 3110, 3110, 0, 3110, 3110, 3110, 3110, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096, + 3096, 3096, 3096, 3096, 3096, 3096, 3096, 3096 } ; static yy_state_type yy_last_accepting_state; @@ -2972,7 +2982,7 @@ static void config_end_include(void) } #endif -#line 2973 "" +#line 2984 "" #define YY_NO_INPUT 1 #line 184 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -2981,9 +2991,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 2982 "" +#line 2993 "" -#line 2984 "" +#line 2995 "" #define INITIAL 0 #define quotedstring 1 @@ -3205,7 +3215,7 @@ YY_DECL { #line 204 "./util/configlexer.lex" -#line 3206 "" +#line 3217 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3238,13 +3248,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3083 ) + if ( yy_current_state >= 3097 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 6016 ); + while ( yy_base[yy_current_state] != 6048 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4415,165 +4425,165 @@ YY_RULE_SETUP case 229: YY_RULE_SETUP #line 437 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } +{ YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } YY_BREAK case 230: YY_RULE_SETUP #line 438 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IP) } +{ YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } YY_BREAK case 231: YY_RULE_SETUP #line 439 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS) } +{ YDVAR(1, VAR_DNSTAP_IP) } YY_BREAK case 232: YY_RULE_SETUP #line 440 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } +{ YDVAR(1, VAR_DNSTAP_TLS) } YY_BREAK case 233: YY_RULE_SETUP #line 441 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } +{ YDVAR(1, VAR_DNSTAP_TLS_SERVER_NAME) } YY_BREAK case 234: YY_RULE_SETUP #line 442 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } +{ YDVAR(1, VAR_DNSTAP_TLS_CERT_BUNDLE) } YY_BREAK case 235: YY_RULE_SETUP -#line 444 "./util/configlexer.lex" +#line 443 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_KEY_FILE) } YY_BREAK case 236: YY_RULE_SETUP -#line 446 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } +#line 445 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_TLS_CLIENT_CERT_FILE) } YY_BREAK case 237: YY_RULE_SETUP #line 447 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } +{ YDVAR(1, VAR_DNSTAP_SEND_IDENTITY) } YY_BREAK case 238: YY_RULE_SETUP #line 448 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_IDENTITY) } +{ YDVAR(1, VAR_DNSTAP_SEND_VERSION) } YY_BREAK case 239: YY_RULE_SETUP #line 449 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSTAP_VERSION) } +{ YDVAR(1, VAR_DNSTAP_IDENTITY) } YY_BREAK case 240: YY_RULE_SETUP #line 450 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } +{ YDVAR(1, VAR_DNSTAP_VERSION) } YY_BREAK case 241: YY_RULE_SETUP -#line 452 "./util/configlexer.lex" +#line 451 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES) } YY_BREAK case 242: YY_RULE_SETUP -#line 454 "./util/configlexer.lex" +#line 453 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES) } YY_BREAK case 243: YY_RULE_SETUP -#line 456 "./util/configlexer.lex" +#line 455 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES) } YY_BREAK case 244: YY_RULE_SETUP -#line 458 "./util/configlexer.lex" +#line 457 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES) } YY_BREAK case 245: YY_RULE_SETUP -#line 460 "./util/configlexer.lex" +#line 459 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } YY_BREAK case 246: YY_RULE_SETUP -#line 462 "./util/configlexer.lex" -{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } +#line 461 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } YY_BREAK case 247: YY_RULE_SETUP #line 463 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT) } +{ YDVAR(1, VAR_DISABLE_DNSSEC_LAME_CHECK) } YY_BREAK case 248: YY_RULE_SETUP #line 464 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT) } +{ YDVAR(1, VAR_IP_RATELIMIT) } YY_BREAK case 249: YY_RULE_SETUP #line 465 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_RATELIMIT) } YY_BREAK case 250: YY_RULE_SETUP #line 466 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SLABS) } +{ YDVAR(1, VAR_IP_RATELIMIT_SLABS) } YY_BREAK case 251: YY_RULE_SETUP #line 467 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_RATELIMIT_SLABS) } YY_BREAK case 252: YY_RULE_SETUP #line 468 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_SIZE) } +{ YDVAR(1, VAR_IP_RATELIMIT_SIZE) } YY_BREAK case 253: YY_RULE_SETUP #line 469 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } +{ YDVAR(1, VAR_RATELIMIT_SIZE) } YY_BREAK case 254: YY_RULE_SETUP #line 470 "./util/configlexer.lex" -{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } +{ YDVAR(2, VAR_RATELIMIT_FOR_DOMAIN) } YY_BREAK case 255: YY_RULE_SETUP #line 471 "./util/configlexer.lex" -{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } +{ YDVAR(2, VAR_RATELIMIT_BELOW_DOMAIN) } YY_BREAK case 256: YY_RULE_SETUP #line 472 "./util/configlexer.lex" -{ YDVAR(1, VAR_RATELIMIT_FACTOR) } +{ YDVAR(1, VAR_IP_RATELIMIT_FACTOR) } YY_BREAK case 257: YY_RULE_SETUP #line 473 "./util/configlexer.lex" -{ YDVAR(1, VAR_LOW_RTT) } +{ YDVAR(1, VAR_RATELIMIT_FACTOR) } YY_BREAK case 258: YY_RULE_SETUP #line 474 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_NUM) } +{ YDVAR(1, VAR_LOW_RTT) } YY_BREAK case 259: YY_RULE_SETUP #line 475 "./util/configlexer.lex" -{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } +{ YDVAR(1, VAR_FAST_SERVER_NUM) } YY_BREAK case 260: YY_RULE_SETUP @@ -4588,200 +4598,205 @@ YY_RULE_SETUP case 262: YY_RULE_SETUP #line 478 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_TAG) } +{ YDVAR(1, VAR_FAST_SERVER_PERMIL) } YY_BREAK case 263: YY_RULE_SETUP #line 479 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP) } +{ YDVAR(2, VAR_RESPONSE_IP_TAG) } YY_BREAK case 264: YY_RULE_SETUP #line 480 "./util/configlexer.lex" -{ YDVAR(2, VAR_RESPONSE_IP_DATA) } +{ YDVAR(2, VAR_RESPONSE_IP) } YY_BREAK case 265: YY_RULE_SETUP #line 481 "./util/configlexer.lex" -{ YDVAR(0, VAR_DNSCRYPT) } +{ YDVAR(2, VAR_RESPONSE_IP_DATA) } YY_BREAK case 266: YY_RULE_SETUP #line 482 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } +{ YDVAR(0, VAR_DNSCRYPT) } YY_BREAK case 267: YY_RULE_SETUP #line 483 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PORT) } +{ YDVAR(1, VAR_DNSCRYPT_ENABLE) } YY_BREAK case 268: YY_RULE_SETUP #line 484 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } +{ YDVAR(1, VAR_DNSCRYPT_PORT) } YY_BREAK case 269: YY_RULE_SETUP #line 485 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) } YY_BREAK case 270: YY_RULE_SETUP #line 486 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } +{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) } YY_BREAK case 271: YY_RULE_SETUP #line 487 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) } YY_BREAK case 272: YY_RULE_SETUP #line 488 "./util/configlexer.lex" -{ - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } +{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT_ROTATED) } YY_BREAK case 273: YY_RULE_SETUP -#line 490 "./util/configlexer.lex" +#line 489 "./util/configlexer.lex" { - YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE) } YY_BREAK case 274: YY_RULE_SETUP -#line 492 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } +#line 491 "./util/configlexer.lex" +{ + YDVAR(1, VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS) } YY_BREAK case 275: YY_RULE_SETUP #line 493 "./util/configlexer.lex" -{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SIZE) } YY_BREAK case 276: YY_RULE_SETUP #line 494 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_ENABLED) } +{ YDVAR(1, VAR_DNSCRYPT_NONCE_CACHE_SLABS) } YY_BREAK case 277: YY_RULE_SETUP #line 495 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } +{ YDVAR(1, VAR_IPSECMOD_ENABLED) } YY_BREAK case 278: YY_RULE_SETUP #line 496 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_HOOK) } +{ YDVAR(1, VAR_IPSECMOD_IGNORE_BOGUS) } YY_BREAK case 279: YY_RULE_SETUP #line 497 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } +{ YDVAR(1, VAR_IPSECMOD_HOOK) } YY_BREAK case 280: YY_RULE_SETUP #line 498 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } +{ YDVAR(1, VAR_IPSECMOD_MAX_TTL) } YY_BREAK case 281: YY_RULE_SETUP #line 499 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSECMOD_STRICT) } +{ YDVAR(1, VAR_IPSECMOD_WHITELIST) } YY_BREAK case 282: YY_RULE_SETUP #line 500 "./util/configlexer.lex" -{ YDVAR(0, VAR_CACHEDB) } +{ YDVAR(1, VAR_IPSECMOD_STRICT) } YY_BREAK case 283: YY_RULE_SETUP #line 501 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_BACKEND) } +{ YDVAR(0, VAR_CACHEDB) } YY_BREAK case 284: YY_RULE_SETUP #line 502 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } +{ YDVAR(1, VAR_CACHEDB_BACKEND) } YY_BREAK case 285: YY_RULE_SETUP #line 503 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISHOST) } +{ YDVAR(1, VAR_CACHEDB_SECRETSEED) } YY_BREAK case 286: YY_RULE_SETUP #line 504 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISPORT) } +{ YDVAR(1, VAR_CACHEDB_REDISHOST) } YY_BREAK case 287: YY_RULE_SETUP #line 505 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } +{ YDVAR(1, VAR_CACHEDB_REDISPORT) } YY_BREAK case 288: YY_RULE_SETUP #line 506 "./util/configlexer.lex" -{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } +{ YDVAR(1, VAR_CACHEDB_REDISTIMEOUT) } YY_BREAK case 289: YY_RULE_SETUP #line 507 "./util/configlexer.lex" -{ YDVAR(0, VAR_IPSET) } +{ YDVAR(1, VAR_CACHEDB_REDISEXPIRERECORDS) } YY_BREAK case 290: YY_RULE_SETUP #line 508 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V4) } +{ YDVAR(0, VAR_IPSET) } YY_BREAK case 291: YY_RULE_SETUP #line 509 "./util/configlexer.lex" -{ YDVAR(1, VAR_IPSET_NAME_V6) } +{ YDVAR(1, VAR_IPSET_NAME_V4) } YY_BREAK case 292: YY_RULE_SETUP #line 510 "./util/configlexer.lex" -{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } +{ YDVAR(1, VAR_IPSET_NAME_V6) } YY_BREAK case 293: YY_RULE_SETUP #line 511 "./util/configlexer.lex" -{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +{ YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } YY_BREAK case 294: -/* rule 294 can match eol */ YY_RULE_SETUP #line 512 "./util/configlexer.lex" +{ YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } + YY_BREAK +case 295: +/* rule 295 can match eol */ +YY_RULE_SETUP +#line 513 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 295: +case 296: YY_RULE_SETUP -#line 515 "./util/configlexer.lex" +#line 516 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 516 "./util/configlexer.lex" +#line 517 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 296: -YY_RULE_SETUP -#line 521 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 297: -/* rule 297 can match eol */ YY_RULE_SETUP #line 522 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 298: +/* rule 298 can match eol */ +YY_RULE_SETUP +#line 523 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 298: +case 299: YY_RULE_SETUP -#line 524 "./util/configlexer.lex" +#line 525 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4794,34 +4809,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 299: +case 300: YY_RULE_SETUP -#line 536 "./util/configlexer.lex" +#line 537 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 537 "./util/configlexer.lex" +#line 538 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 300: -YY_RULE_SETUP -#line 542 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 301: -/* rule 301 can match eol */ YY_RULE_SETUP #line 543 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 302: +/* rule 302 can match eol */ +YY_RULE_SETUP +#line 544 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 302: +case 303: YY_RULE_SETUP -#line 545 "./util/configlexer.lex" +#line 546 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4834,38 +4849,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 303: +case 304: YY_RULE_SETUP -#line 557 "./util/configlexer.lex" +#line 558 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 559 "./util/configlexer.lex" +#line 560 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 304: -YY_RULE_SETUP -#line 563 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 305: -/* rule 305 can match eol */ YY_RULE_SETUP #line 564 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 306: +/* rule 306 can match eol */ YY_RULE_SETUP #line 565 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 307: YY_RULE_SETUP #line 566 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 308: +YY_RULE_SETUP +#line 567 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext); @@ -4873,27 +4888,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 571 "./util/configlexer.lex" +#line 572 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 308: -YY_RULE_SETUP -#line 575 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 309: -/* rule 309 can match eol */ YY_RULE_SETUP #line 576 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 310: +/* rule 310 can match eol */ +YY_RULE_SETUP +#line 577 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 310: +case 311: YY_RULE_SETUP -#line 578 "./util/configlexer.lex" +#line 579 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4903,7 +4918,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 584 "./util/configlexer.lex" +#line 585 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4915,33 +4930,33 @@ case YY_STATE_EOF(val): } } YY_BREAK -case 311: +case 312: YY_RULE_SETUP -#line 595 "./util/configlexer.lex" +#line 596 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 312: +case 313: YY_RULE_SETUP -#line 599 "./util/configlexer.lex" +#line 600 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 313: +case 314: YY_RULE_SETUP -#line 603 "./util/configlexer.lex" +#line 604 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 314: +case 315: YY_RULE_SETUP -#line 607 "./util/configlexer.lex" +#line 608 "./util/configlexer.lex" ECHO; YY_BREAK -#line 4942 "" +#line 4958 "" case YY_END_OF_BUFFER: { @@ -5236,7 +5251,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3083 ) + if ( yy_current_state >= 3097 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5264,11 +5279,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3083 ) + if ( yy_current_state >= 3097 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3082); + yy_is_jam = (yy_current_state == 3096); return yy_is_jam ? 0 : yy_current_state; } @@ -5907,6 +5922,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 607 "./util/configlexer.lex" +#line 608 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index d7c61c05b..58c5da3d5 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -434,6 +434,7 @@ access-control-view{COLON} { YDVAR(2, VAR_ACCESS_CONTROL_VIEW) } local-zone-override{COLON} { YDVAR(3, VAR_LOCAL_ZONE_OVERRIDE) } dnstap{COLON} { YDVAR(0, VAR_DNSTAP) } dnstap-enable{COLON} { YDVAR(1, VAR_DNSTAP_ENABLE) } +dnstap-bidirectional{COLON} { YDVAR(1, VAR_DNSTAP_BIDIRECTIONAL) } dnstap-socket-path{COLON} { YDVAR(1, VAR_DNSTAP_SOCKET_PATH) } dnstap-ip{COLON} { YDVAR(1, VAR_DNSTAP_IP) } dnstap-tls{COLON} { YDVAR(1, VAR_DNSTAP_TLS) } diff --git a/util/configparser.c b/util/configparser.c index 2c9b0a5c4..eb1daf560 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.5.1. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -48,7 +48,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.4.1" +#define YYBISON_VERSION "3.5.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -97,6 +97,15 @@ extern struct config_parser_state* cfg_parser; #line 99 "util/configparser.c" +# ifndef YY_CAST +# ifdef __cplusplus +# define YY_CAST(Type, Val) static_cast (Val) +# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) +# else +# define YY_CAST(Type, Val) ((Type) (Val)) +# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) +# endif +# endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus @@ -294,133 +303,134 @@ extern int yydebug; VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, VAR_DNSTAP_SEND_IDENTITY = 416, VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_IP_DSCP = 431, - VAR_DISABLE_DNSSEC_LAME_CHECK = 432, - VAR_IP_RATELIMIT = 433, - VAR_IP_RATELIMIT_SLABS = 434, - VAR_IP_RATELIMIT_SIZE = 435, - VAR_RATELIMIT = 436, - VAR_RATELIMIT_SLABS = 437, - VAR_RATELIMIT_SIZE = 438, - VAR_RATELIMIT_FOR_DOMAIN = 439, - VAR_RATELIMIT_BELOW_DOMAIN = 440, - VAR_IP_RATELIMIT_FACTOR = 441, - VAR_RATELIMIT_FACTOR = 442, - VAR_SEND_CLIENT_SUBNET = 443, - VAR_CLIENT_SUBNET_ZONE = 444, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, - VAR_CLIENT_SUBNET_OPCODE = 446, - VAR_MAX_CLIENT_SUBNET_IPV4 = 447, - VAR_MAX_CLIENT_SUBNET_IPV6 = 448, - VAR_MIN_CLIENT_SUBNET_IPV4 = 449, - VAR_MIN_CLIENT_SUBNET_IPV6 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, - VAR_CAPS_WHITELIST = 453, - VAR_CACHE_MAX_NEGATIVE_TTL = 454, - VAR_PERMIT_SMALL_HOLDDOWN = 455, - VAR_QNAME_MINIMISATION = 456, - VAR_QNAME_MINIMISATION_STRICT = 457, - VAR_IP_FREEBIND = 458, - VAR_DEFINE_TAG = 459, - VAR_LOCAL_ZONE_TAG = 460, - VAR_ACCESS_CONTROL_TAG = 461, - VAR_LOCAL_ZONE_OVERRIDE = 462, - VAR_ACCESS_CONTROL_TAG_ACTION = 463, - VAR_ACCESS_CONTROL_TAG_DATA = 464, - VAR_VIEW = 465, - VAR_ACCESS_CONTROL_VIEW = 466, - VAR_VIEW_FIRST = 467, - VAR_SERVE_EXPIRED = 468, - VAR_SERVE_EXPIRED_TTL = 469, - VAR_SERVE_EXPIRED_TTL_RESET = 470, - VAR_SERVE_EXPIRED_REPLY_TTL = 471, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_CACHEDB_REDISEXPIRERECORDS = 506, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 507, - VAR_FOR_UPSTREAM = 508, - VAR_AUTH_ZONE = 509, - VAR_ZONEFILE = 510, - VAR_MASTER = 511, - VAR_URL = 512, - VAR_FOR_DOWNSTREAM = 513, - VAR_FALLBACK_ENABLED = 514, - VAR_TLS_ADDITIONAL_PORT = 515, - VAR_LOW_RTT = 516, - VAR_LOW_RTT_PERMIL = 517, - VAR_FAST_SERVER_PERMIL = 518, - VAR_FAST_SERVER_NUM = 519, - VAR_ALLOW_NOTIFY = 520, - VAR_TLS_WIN_CERT = 521, - VAR_TCP_CONNECTION_LIMIT = 522, - VAR_FORWARD_NO_CACHE = 523, - VAR_STUB_NO_CACHE = 524, - VAR_LOG_SERVFAIL = 525, - VAR_DENY_ANY = 526, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 527, - VAR_LOG_TAG_QUERYREPLY = 528, - VAR_STREAM_WAIT_SIZE = 529, - VAR_TLS_CIPHERS = 530, - VAR_TLS_CIPHERSUITES = 531, - VAR_TLS_USE_SNI = 532, - VAR_IPSET = 533, - VAR_IPSET_NAME_V4 = 534, - VAR_IPSET_NAME_V6 = 535, - VAR_TLS_SESSION_TICKET_KEYS = 536, - VAR_RPZ = 537, - VAR_TAGS = 538, - VAR_RPZ_ACTION_OVERRIDE = 539, - VAR_RPZ_CNAME_OVERRIDE = 540, - VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542, - VAR_DYNLIB = 543, - VAR_DYNLIB_FILE = 544 + VAR_DNSTAP_BIDIRECTIONAL = 418, + VAR_DNSTAP_IDENTITY = 419, + VAR_DNSTAP_VERSION = 420, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 421, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 422, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 423, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 424, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 425, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 426, + VAR_RESPONSE_IP_TAG = 427, + VAR_RESPONSE_IP = 428, + VAR_RESPONSE_IP_DATA = 429, + VAR_HARDEN_ALGO_DOWNGRADE = 430, + VAR_IP_TRANSPARENT = 431, + VAR_IP_DSCP = 432, + VAR_DISABLE_DNSSEC_LAME_CHECK = 433, + VAR_IP_RATELIMIT = 434, + VAR_IP_RATELIMIT_SLABS = 435, + VAR_IP_RATELIMIT_SIZE = 436, + VAR_RATELIMIT = 437, + VAR_RATELIMIT_SLABS = 438, + VAR_RATELIMIT_SIZE = 439, + VAR_RATELIMIT_FOR_DOMAIN = 440, + VAR_RATELIMIT_BELOW_DOMAIN = 441, + VAR_IP_RATELIMIT_FACTOR = 442, + VAR_RATELIMIT_FACTOR = 443, + VAR_SEND_CLIENT_SUBNET = 444, + VAR_CLIENT_SUBNET_ZONE = 445, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 446, + VAR_CLIENT_SUBNET_OPCODE = 447, + VAR_MAX_CLIENT_SUBNET_IPV4 = 448, + VAR_MAX_CLIENT_SUBNET_IPV6 = 449, + VAR_MIN_CLIENT_SUBNET_IPV4 = 450, + VAR_MIN_CLIENT_SUBNET_IPV6 = 451, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 452, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 453, + VAR_CAPS_WHITELIST = 454, + VAR_CACHE_MAX_NEGATIVE_TTL = 455, + VAR_PERMIT_SMALL_HOLDDOWN = 456, + VAR_QNAME_MINIMISATION = 457, + VAR_QNAME_MINIMISATION_STRICT = 458, + VAR_IP_FREEBIND = 459, + VAR_DEFINE_TAG = 460, + VAR_LOCAL_ZONE_TAG = 461, + VAR_ACCESS_CONTROL_TAG = 462, + VAR_LOCAL_ZONE_OVERRIDE = 463, + VAR_ACCESS_CONTROL_TAG_ACTION = 464, + VAR_ACCESS_CONTROL_TAG_DATA = 465, + VAR_VIEW = 466, + VAR_ACCESS_CONTROL_VIEW = 467, + VAR_VIEW_FIRST = 468, + VAR_SERVE_EXPIRED = 469, + VAR_SERVE_EXPIRED_TTL = 470, + VAR_SERVE_EXPIRED_TTL_RESET = 471, + VAR_SERVE_EXPIRED_REPLY_TTL = 472, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 473, + VAR_FAKE_DSA = 474, + VAR_FAKE_SHA1 = 475, + VAR_LOG_IDENTITY = 476, + VAR_HIDE_TRUSTANCHOR = 477, + VAR_TRUST_ANCHOR_SIGNALING = 478, + VAR_AGGRESSIVE_NSEC = 479, + VAR_USE_SYSTEMD = 480, + VAR_SHM_ENABLE = 481, + VAR_SHM_KEY = 482, + VAR_ROOT_KEY_SENTINEL = 483, + VAR_DNSCRYPT = 484, + VAR_DNSCRYPT_ENABLE = 485, + VAR_DNSCRYPT_PORT = 486, + VAR_DNSCRYPT_PROVIDER = 487, + VAR_DNSCRYPT_SECRET_KEY = 488, + VAR_DNSCRYPT_PROVIDER_CERT = 489, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, + VAR_IPSECMOD_ENABLED = 495, + VAR_IPSECMOD_HOOK = 496, + VAR_IPSECMOD_IGNORE_BOGUS = 497, + VAR_IPSECMOD_MAX_TTL = 498, + VAR_IPSECMOD_WHITELIST = 499, + VAR_IPSECMOD_STRICT = 500, + VAR_CACHEDB = 501, + VAR_CACHEDB_BACKEND = 502, + VAR_CACHEDB_SECRETSEED = 503, + VAR_CACHEDB_REDISHOST = 504, + VAR_CACHEDB_REDISPORT = 505, + VAR_CACHEDB_REDISTIMEOUT = 506, + VAR_CACHEDB_REDISEXPIRERECORDS = 507, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, + VAR_FOR_UPSTREAM = 509, + VAR_AUTH_ZONE = 510, + VAR_ZONEFILE = 511, + VAR_MASTER = 512, + VAR_URL = 513, + VAR_FOR_DOWNSTREAM = 514, + VAR_FALLBACK_ENABLED = 515, + VAR_TLS_ADDITIONAL_PORT = 516, + VAR_LOW_RTT = 517, + VAR_LOW_RTT_PERMIL = 518, + VAR_FAST_SERVER_PERMIL = 519, + VAR_FAST_SERVER_NUM = 520, + VAR_ALLOW_NOTIFY = 521, + VAR_TLS_WIN_CERT = 522, + VAR_TCP_CONNECTION_LIMIT = 523, + VAR_FORWARD_NO_CACHE = 524, + VAR_STUB_NO_CACHE = 525, + VAR_LOG_SERVFAIL = 526, + VAR_DENY_ANY = 527, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, + VAR_LOG_TAG_QUERYREPLY = 529, + VAR_STREAM_WAIT_SIZE = 530, + VAR_TLS_CIPHERS = 531, + VAR_TLS_CIPHERSUITES = 532, + VAR_TLS_USE_SNI = 533, + VAR_IPSET = 534, + VAR_IPSET_NAME_V4 = 535, + VAR_IPSET_NAME_V6 = 536, + VAR_TLS_SESSION_TICKET_KEYS = 537, + VAR_RPZ = 538, + VAR_TAGS = 539, + VAR_RPZ_ACTION_OVERRIDE = 540, + VAR_RPZ_CNAME_OVERRIDE = 541, + VAR_RPZ_LOG = 542, + VAR_RPZ_LOG_NAME = 543, + VAR_DYNLIB = 544, + VAR_DYNLIB_FILE = 545 }; #endif /* Tokens. */ @@ -584,133 +594,134 @@ extern int yydebug; #define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 #define VAR_DNSTAP_SEND_IDENTITY 416 #define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_IP_DSCP 431 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 -#define VAR_IP_RATELIMIT 433 -#define VAR_IP_RATELIMIT_SLABS 434 -#define VAR_IP_RATELIMIT_SIZE 435 -#define VAR_RATELIMIT 436 -#define VAR_RATELIMIT_SLABS 437 -#define VAR_RATELIMIT_SIZE 438 -#define VAR_RATELIMIT_FOR_DOMAIN 439 -#define VAR_RATELIMIT_BELOW_DOMAIN 440 -#define VAR_IP_RATELIMIT_FACTOR 441 -#define VAR_RATELIMIT_FACTOR 442 -#define VAR_SEND_CLIENT_SUBNET 443 -#define VAR_CLIENT_SUBNET_ZONE 444 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 -#define VAR_CLIENT_SUBNET_OPCODE 446 -#define VAR_MAX_CLIENT_SUBNET_IPV4 447 -#define VAR_MAX_CLIENT_SUBNET_IPV6 448 -#define VAR_MIN_CLIENT_SUBNET_IPV4 449 -#define VAR_MIN_CLIENT_SUBNET_IPV6 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 -#define VAR_CAPS_WHITELIST 453 -#define VAR_CACHE_MAX_NEGATIVE_TTL 454 -#define VAR_PERMIT_SMALL_HOLDDOWN 455 -#define VAR_QNAME_MINIMISATION 456 -#define VAR_QNAME_MINIMISATION_STRICT 457 -#define VAR_IP_FREEBIND 458 -#define VAR_DEFINE_TAG 459 -#define VAR_LOCAL_ZONE_TAG 460 -#define VAR_ACCESS_CONTROL_TAG 461 -#define VAR_LOCAL_ZONE_OVERRIDE 462 -#define VAR_ACCESS_CONTROL_TAG_ACTION 463 -#define VAR_ACCESS_CONTROL_TAG_DATA 464 -#define VAR_VIEW 465 -#define VAR_ACCESS_CONTROL_VIEW 466 -#define VAR_VIEW_FIRST 467 -#define VAR_SERVE_EXPIRED 468 -#define VAR_SERVE_EXPIRED_TTL 469 -#define VAR_SERVE_EXPIRED_TTL_RESET 470 -#define VAR_SERVE_EXPIRED_REPLY_TTL 471 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_CACHEDB_REDISEXPIRERECORDS 506 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 507 -#define VAR_FOR_UPSTREAM 508 -#define VAR_AUTH_ZONE 509 -#define VAR_ZONEFILE 510 -#define VAR_MASTER 511 -#define VAR_URL 512 -#define VAR_FOR_DOWNSTREAM 513 -#define VAR_FALLBACK_ENABLED 514 -#define VAR_TLS_ADDITIONAL_PORT 515 -#define VAR_LOW_RTT 516 -#define VAR_LOW_RTT_PERMIL 517 -#define VAR_FAST_SERVER_PERMIL 518 -#define VAR_FAST_SERVER_NUM 519 -#define VAR_ALLOW_NOTIFY 520 -#define VAR_TLS_WIN_CERT 521 -#define VAR_TCP_CONNECTION_LIMIT 522 -#define VAR_FORWARD_NO_CACHE 523 -#define VAR_STUB_NO_CACHE 524 -#define VAR_LOG_SERVFAIL 525 -#define VAR_DENY_ANY 526 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 527 -#define VAR_LOG_TAG_QUERYREPLY 528 -#define VAR_STREAM_WAIT_SIZE 529 -#define VAR_TLS_CIPHERS 530 -#define VAR_TLS_CIPHERSUITES 531 -#define VAR_TLS_USE_SNI 532 -#define VAR_IPSET 533 -#define VAR_IPSET_NAME_V4 534 -#define VAR_IPSET_NAME_V6 535 -#define VAR_TLS_SESSION_TICKET_KEYS 536 -#define VAR_RPZ 537 -#define VAR_TAGS 538 -#define VAR_RPZ_ACTION_OVERRIDE 539 -#define VAR_RPZ_CNAME_OVERRIDE 540 -#define VAR_RPZ_LOG 541 -#define VAR_RPZ_LOG_NAME 542 -#define VAR_DYNLIB 543 -#define VAR_DYNLIB_FILE 544 +#define VAR_DNSTAP_BIDIRECTIONAL 418 +#define VAR_DNSTAP_IDENTITY 419 +#define VAR_DNSTAP_VERSION 420 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 424 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 425 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 426 +#define VAR_RESPONSE_IP_TAG 427 +#define VAR_RESPONSE_IP 428 +#define VAR_RESPONSE_IP_DATA 429 +#define VAR_HARDEN_ALGO_DOWNGRADE 430 +#define VAR_IP_TRANSPARENT 431 +#define VAR_IP_DSCP 432 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 433 +#define VAR_IP_RATELIMIT 434 +#define VAR_IP_RATELIMIT_SLABS 435 +#define VAR_IP_RATELIMIT_SIZE 436 +#define VAR_RATELIMIT 437 +#define VAR_RATELIMIT_SLABS 438 +#define VAR_RATELIMIT_SIZE 439 +#define VAR_RATELIMIT_FOR_DOMAIN 440 +#define VAR_RATELIMIT_BELOW_DOMAIN 441 +#define VAR_IP_RATELIMIT_FACTOR 442 +#define VAR_RATELIMIT_FACTOR 443 +#define VAR_SEND_CLIENT_SUBNET 444 +#define VAR_CLIENT_SUBNET_ZONE 445 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 446 +#define VAR_CLIENT_SUBNET_OPCODE 447 +#define VAR_MAX_CLIENT_SUBNET_IPV4 448 +#define VAR_MAX_CLIENT_SUBNET_IPV6 449 +#define VAR_MIN_CLIENT_SUBNET_IPV4 450 +#define VAR_MIN_CLIENT_SUBNET_IPV6 451 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 452 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 453 +#define VAR_CAPS_WHITELIST 454 +#define VAR_CACHE_MAX_NEGATIVE_TTL 455 +#define VAR_PERMIT_SMALL_HOLDDOWN 456 +#define VAR_QNAME_MINIMISATION 457 +#define VAR_QNAME_MINIMISATION_STRICT 458 +#define VAR_IP_FREEBIND 459 +#define VAR_DEFINE_TAG 460 +#define VAR_LOCAL_ZONE_TAG 461 +#define VAR_ACCESS_CONTROL_TAG 462 +#define VAR_LOCAL_ZONE_OVERRIDE 463 +#define VAR_ACCESS_CONTROL_TAG_ACTION 464 +#define VAR_ACCESS_CONTROL_TAG_DATA 465 +#define VAR_VIEW 466 +#define VAR_ACCESS_CONTROL_VIEW 467 +#define VAR_VIEW_FIRST 468 +#define VAR_SERVE_EXPIRED 469 +#define VAR_SERVE_EXPIRED_TTL 470 +#define VAR_SERVE_EXPIRED_TTL_RESET 471 +#define VAR_SERVE_EXPIRED_REPLY_TTL 472 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 473 +#define VAR_FAKE_DSA 474 +#define VAR_FAKE_SHA1 475 +#define VAR_LOG_IDENTITY 476 +#define VAR_HIDE_TRUSTANCHOR 477 +#define VAR_TRUST_ANCHOR_SIGNALING 478 +#define VAR_AGGRESSIVE_NSEC 479 +#define VAR_USE_SYSTEMD 480 +#define VAR_SHM_ENABLE 481 +#define VAR_SHM_KEY 482 +#define VAR_ROOT_KEY_SENTINEL 483 +#define VAR_DNSCRYPT 484 +#define VAR_DNSCRYPT_ENABLE 485 +#define VAR_DNSCRYPT_PORT 486 +#define VAR_DNSCRYPT_PROVIDER 487 +#define VAR_DNSCRYPT_SECRET_KEY 488 +#define VAR_DNSCRYPT_PROVIDER_CERT 489 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 +#define VAR_IPSECMOD_ENABLED 495 +#define VAR_IPSECMOD_HOOK 496 +#define VAR_IPSECMOD_IGNORE_BOGUS 497 +#define VAR_IPSECMOD_MAX_TTL 498 +#define VAR_IPSECMOD_WHITELIST 499 +#define VAR_IPSECMOD_STRICT 500 +#define VAR_CACHEDB 501 +#define VAR_CACHEDB_BACKEND 502 +#define VAR_CACHEDB_SECRETSEED 503 +#define VAR_CACHEDB_REDISHOST 504 +#define VAR_CACHEDB_REDISPORT 505 +#define VAR_CACHEDB_REDISTIMEOUT 506 +#define VAR_CACHEDB_REDISEXPIRERECORDS 507 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 +#define VAR_FOR_UPSTREAM 509 +#define VAR_AUTH_ZONE 510 +#define VAR_ZONEFILE 511 +#define VAR_MASTER 512 +#define VAR_URL 513 +#define VAR_FOR_DOWNSTREAM 514 +#define VAR_FALLBACK_ENABLED 515 +#define VAR_TLS_ADDITIONAL_PORT 516 +#define VAR_LOW_RTT 517 +#define VAR_LOW_RTT_PERMIL 518 +#define VAR_FAST_SERVER_PERMIL 519 +#define VAR_FAST_SERVER_NUM 520 +#define VAR_ALLOW_NOTIFY 521 +#define VAR_TLS_WIN_CERT 522 +#define VAR_TCP_CONNECTION_LIMIT 523 +#define VAR_FORWARD_NO_CACHE 524 +#define VAR_STUB_NO_CACHE 525 +#define VAR_LOG_SERVFAIL 526 +#define VAR_DENY_ANY 527 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 +#define VAR_LOG_TAG_QUERYREPLY 529 +#define VAR_STREAM_WAIT_SIZE 530 +#define VAR_TLS_CIPHERS 531 +#define VAR_TLS_CIPHERSUITES 532 +#define VAR_TLS_USE_SNI 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 +#define VAR_DYNLIB 544 +#define VAR_DYNLIB_FILE 545 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -720,7 +731,7 @@ union YYSTYPE char* str; -#line 724 "util/configparser.c" +#line 735 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -741,36 +752,83 @@ int yyparse (void); # undef short #endif -#ifdef YYTYPE_UINT8 -typedef YYTYPE_UINT8 yytype_uint8; -#else -typedef unsigned char yytype_uint8; +/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure + and (if available) are included + so that the code can choose integer types of a good width. */ + +#ifndef __PTRDIFF_MAX__ +# include /* INFRINGES ON USER NAME SPACE */ +# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_STDINT_H +# endif #endif -#ifdef YYTYPE_INT8 -typedef YYTYPE_INT8 yytype_int8; +/* Narrow types that promote to a signed type and that can represent a + signed or unsigned integer of at least N bits. In tables they can + save space and decrease cache pressure. Promoting to a signed type + helps avoid bugs in integer arithmetic. */ + +#ifdef __INT_LEAST8_MAX__ +typedef __INT_LEAST8_TYPE__ yytype_int8; +#elif defined YY_STDINT_H +typedef int_least8_t yytype_int8; #else typedef signed char yytype_int8; #endif -#ifdef YYTYPE_UINT16 -typedef YYTYPE_UINT16 yytype_uint16; -#else -typedef unsigned short yytype_uint16; -#endif - -#ifdef YYTYPE_INT16 -typedef YYTYPE_INT16 yytype_int16; +#ifdef __INT_LEAST16_MAX__ +typedef __INT_LEAST16_TYPE__ yytype_int16; +#elif defined YY_STDINT_H +typedef int_least16_t yytype_int16; #else typedef short yytype_int16; #endif +#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST8_TYPE__ yytype_uint8; +#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST8_MAX <= INT_MAX) +typedef uint_least8_t yytype_uint8; +#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX +typedef unsigned char yytype_uint8; +#else +typedef short yytype_uint8; +#endif + +#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ +typedef __UINT_LEAST16_TYPE__ yytype_uint16; +#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ + && UINT_LEAST16_MAX <= INT_MAX) +typedef uint_least16_t yytype_uint16; +#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX +typedef unsigned short yytype_uint16; +#else +typedef int yytype_uint16; +#endif + +#ifndef YYPTRDIFF_T +# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ +# define YYPTRDIFF_T __PTRDIFF_TYPE__ +# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ +# elif defined PTRDIFF_MAX +# ifndef ptrdiff_t +# include /* INFRINGES ON USER NAME SPACE */ +# endif +# define YYPTRDIFF_T ptrdiff_t +# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX +# else +# define YYPTRDIFF_T long +# define YYPTRDIFF_MAXIMUM LONG_MAX +# endif +#endif + #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -778,7 +836,19 @@ typedef short yytype_int16; # endif #endif -#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) +#define YYSIZE_MAXIMUM \ + YY_CAST (YYPTRDIFF_T, \ + (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ + ? YYPTRDIFF_MAXIMUM \ + : YY_CAST (YYSIZE_T, -1))) + +#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) + +/* Stored state numbers (used for stacks). */ +typedef yytype_int16 yy_state_t; + +/* State numbers in computations. */ +typedef int yy_state_fast_t; #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -792,22 +862,20 @@ typedef short yytype_int16; # endif #endif -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +#ifndef YY_ATTRIBUTE_PURE +# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) # else -# define YY_ATTRIBUTE(Spec) /* empty */ +# define YY_ATTRIBUTE_PURE # endif #endif -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - #ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) +# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) +# else +# define YY_ATTRIBUTE_UNUSED +# endif #endif /* Suppress unused-variable warnings by "using" E. */ @@ -819,11 +887,11 @@ typedef short yytype_int16; #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -836,6 +904,18 @@ typedef short yytype_int16; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif +#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ +# define YY_IGNORE_USELESS_CAST_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") +# define YY_IGNORE_USELESS_CAST_END \ + _Pragma ("GCC diagnostic pop") +#endif +#ifndef YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_BEGIN +# define YY_IGNORE_USELESS_CAST_END +#endif + #define YY_ASSERT(E) ((void) (0 && (E))) @@ -914,17 +994,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss_alloc; + yy_state_t yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -937,11 +1017,11 @@ union yyalloc # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYSIZE_T yynewbytes; \ + YYPTRDIFF_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ + yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / YYSIZEOF (*yyptr); \ } \ while (0) @@ -953,12 +1033,12 @@ union yyalloc # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYSIZE_T yyi; \ + YYPTRDIFF_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -970,28 +1050,29 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 615 +#define YYLAST 617 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 290 +#define YYNTOKENS 291 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 315 +#define YYNNTS 316 /* YYNRULES -- Number of rules. */ -#define YYNRULES 606 +#define YYNRULES 608 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 900 +#define YYNSTATES 903 #define YYUNDEFTOK 2 -#define YYMAXUTOK 544 +#define YYMAXUTOK 545 + /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ -static const yytype_uint16 yytranslate[] = +static const yytype_int16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1047,12 +1128,12 @@ static const yytype_uint16 yytranslate[] = 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289 + 285, 286, 287, 288, 289, 290 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_uint16 yyrline[] = +static const yytype_int16 yyrline[] = { 0, 180, 180, 180, 181, 181, 182, 182, 183, 183, 183, 184, 184, 185, 185, 186, 186, 190, 195, 196, @@ -1105,16 +1186,16 @@ static const yytype_uint16 yyrline[] = 2563, 2573, 2583, 2593, 2632, 2642, 2650, 2658, 2673, 2682, 2687, 2688, 2689, 2689, 2689, 2690, 2690, 2690, 2691, 2691, 2693, 2703, 2712, 2719, 2726, 2733, 2740, 2747, 2754, 2759, - 2760, 2761, 2761, 2762, 2762, 2762, 2763, 2764, 2764, 2765, - 2765, 2766, 2766, 2767, 2768, 2769, 2770, 2771, 2772, 2774, - 2783, 2790, 2797, 2806, 2813, 2820, 2827, 2834, 2843, 2852, - 2859, 2866, 2876, 2886, 2896, 2906, 2916, 2926, 2931, 2932, - 2933, 2935, 2941, 2946, 2947, 2948, 2950, 2956, 2966, 2973, - 2982, 2990, 2995, 2996, 2998, 2998, 2998, 2999, 2999, 3000, - 3001, 3002, 3003, 3004, 3006, 3016, 3025, 3032, 3041, 3048, - 3057, 3065, 3078, 3086, 3099, 3104, 3105, 3106, 3106, 3107, - 3107, 3107, 3108, 3110, 3122, 3134, 3146, 3161, 3174, 3187, - 3198, 3203, 3204, 3205, 3205, 3207, 3222 + 2760, 2761, 2761, 2761, 2762, 2762, 2762, 2763, 2764, 2764, + 2765, 2765, 2766, 2766, 2767, 2768, 2769, 2770, 2771, 2772, + 2774, 2783, 2793, 2800, 2807, 2816, 2823, 2830, 2837, 2844, + 2853, 2862, 2869, 2876, 2886, 2896, 2906, 2916, 2926, 2936, + 2941, 2942, 2943, 2945, 2951, 2956, 2957, 2958, 2960, 2966, + 2976, 2983, 2992, 3000, 3005, 3006, 3008, 3008, 3008, 3009, + 3009, 3010, 3011, 3012, 3013, 3014, 3016, 3026, 3035, 3042, + 3051, 3058, 3067, 3075, 3088, 3096, 3109, 3114, 3115, 3116, + 3116, 3117, 3117, 3117, 3118, 3120, 3132, 3144, 3156, 3171, + 3184, 3197, 3208, 3213, 3214, 3215, 3215, 3217, 3232 }; #endif @@ -1176,7 +1257,7 @@ static const char *const yytname[] = "VAR_DNSTAP_TLS_SERVER_NAME", "VAR_DNSTAP_TLS_CERT_BUNDLE", "VAR_DNSTAP_TLS_CLIENT_KEY_FILE", "VAR_DNSTAP_TLS_CLIENT_CERT_FILE", "VAR_DNSTAP_SEND_IDENTITY", "VAR_DNSTAP_SEND_VERSION", - "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", + "VAR_DNSTAP_BIDIRECTIONAL", "VAR_DNSTAP_IDENTITY", "VAR_DNSTAP_VERSION", "VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES", "VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES", "VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES", @@ -1330,11 +1411,11 @@ static const char *const yytname[] = "rc_control_interface", "rc_control_use_cert", "rc_server_key_file", "rc_server_cert_file", "rc_control_key_file", "rc_control_cert_file", "dtstart", "contents_dt", "content_dt", "dt_dnstap_enable", - "dt_dnstap_socket_path", "dt_dnstap_ip", "dt_dnstap_tls", - "dt_dnstap_tls_server_name", "dt_dnstap_tls_cert_bundle", - "dt_dnstap_tls_client_key_file", "dt_dnstap_tls_client_cert_file", - "dt_dnstap_send_identity", "dt_dnstap_send_version", - "dt_dnstap_identity", "dt_dnstap_version", + "dt_dnstap_bidirectional", "dt_dnstap_socket_path", "dt_dnstap_ip", + "dt_dnstap_tls", "dt_dnstap_tls_server_name", + "dt_dnstap_tls_cert_bundle", "dt_dnstap_tls_client_key_file", + "dt_dnstap_tls_client_cert_file", "dt_dnstap_send_identity", + "dt_dnstap_send_version", "dt_dnstap_identity", "dt_dnstap_version", "dt_dnstap_log_resolver_query_messages", "dt_dnstap_log_resolver_response_messages", "dt_dnstap_log_client_query_messages", @@ -1361,7 +1442,7 @@ static const char *const yytname[] = # ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ -static const yytype_uint16 yytoknum[] = +static const yytype_int16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, @@ -1391,124 +1472,126 @@ static const yytype_uint16 yytoknum[] = 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544 + 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, + 545 }; # endif -#define YYPACT_NINF -280 +#define YYPACT_NINF (-281) -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-280))) +#define yypact_value_is_default(Yyn) \ + ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF -1 +#define YYTABLE_NINF (-1) -#define yytable_value_is_error(Yytable_value) \ +#define yytable_value_is_error(Yyn) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ static const yytype_int16 yypact[] = { - -280, 0, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - 277, -42, -37, -41, -7, -43, -30, -136, -106, -279, - -177, -172, -271, 2, 3, 4, 25, 26, 28, 31, - 32, 33, 34, 36, 37, 38, 39, 40, 52, 53, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 87, 88, 91, 93, 94, - 95, 96, 97, 98, 99, 100, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 201, 205, 206, 207, 208, 209, 210, 211, 213, 214, - 215, 216, 219, 220, 222, 223, 224, 225, 226, 227, - 228, 229, 237, 243, 245, 246, 247, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 269, 270, 271, 273, - 274, 275, 276, 311, 312, 313, 314, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, 318, 319, 320, 362, 363, 364, 365, -280, - -280, -280, -280, -280, -280, -280, -280, 366, 367, 368, - 369, 370, 374, -280, -280, -280, -280, -280, -280, -280, - 378, 379, 404, 405, 406, 408, 419, -280, -280, -280, - -280, -280, -280, -280, -280, 420, 421, 422, 423, 424, - 425, 426, 427, -280, -280, -280, -280, -280, -280, -280, - -280, -280, 428, 429, 430, 431, 432, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, 433, 434, - 435, 436, 437, 477, 479, 495, -280, -280, -280, -280, - -280, -280, -280, -280, -280, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 512, 513, 514, 515, 516, - 517, 518, 520, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, 521, -280, -280, 522, -280, -280, 523, 524, - 525, 526, 529, 532, 535, 536, 545, 546, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, 547, - 549, 550, 551, 552, 553, -280, -280, -280, -280, -280, - -280, -280, 554, 555, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, 556, 557, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, 558, 559, 560, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, 561, 562, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, 563, 564, - 565, 566, 567, 568, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, 569, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, 570, -280, -280, 571, 572, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, 573, - 574, 575, -280, -280, -280, -280, -280, -280, -280, -280 + -281, 0, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + 278, -42, -37, -41, -7, -43, -30, -136, -106, -280, + -178, -173, -272, 2, 3, 4, 26, 28, 31, 32, + 33, 34, 36, 37, 38, 39, 40, 52, 53, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 87, 88, 91, 93, 94, 95, + 96, 97, 98, 99, 100, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 202, 206, 207, 208, 209, 210, 211, 212, 214, 215, + 216, 217, 220, 221, 223, 224, 225, 226, 227, 228, + 229, 230, 238, 244, 246, 247, 248, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 270, 271, 272, 274, + 275, 276, 277, 312, 313, 314, 315, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, 319, 320, 321, 363, 364, 365, 366, -281, + -281, -281, -281, -281, -281, -281, -281, 367, 368, 369, + 370, 371, 375, -281, -281, -281, -281, -281, -281, -281, + 379, 380, 405, 406, 407, 409, 420, -281, -281, -281, + -281, -281, -281, -281, -281, 421, 422, 423, 424, 425, + 426, 427, 428, -281, -281, -281, -281, -281, -281, -281, + -281, -281, 429, 430, 431, 432, 433, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, 434, 435, + 436, 437, 438, 439, 479, 481, -281, -281, -281, -281, + -281, -281, -281, -281, -281, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 514, 515, 516, 517, + 518, 519, 520, 522, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, 523, -281, -281, 524, -281, -281, + 525, 526, 527, 528, 531, 534, 537, 538, 547, 548, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, 549, 551, 552, 553, 554, 555, -281, -281, -281, + -281, -281, -281, -281, 556, 557, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, 558, + 559, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, 560, 561, 562, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, 563, + 564, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + 565, 566, 567, 568, 569, 570, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, 571, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, 572, -281, -281, + 573, 574, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, 575, 576, 577, -281, -281, -281, -281, -281, + -281, -281, -281 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_uint16 yydefact[] = +static const yytype_int16 yydefact[] = { - 2, 0, 1, 17, 214, 224, 489, 547, 508, 233, - 561, 584, 243, 600, 259, 552, 3, 19, 216, 226, - 235, 245, 261, 491, 510, 549, 554, 563, 586, 602, + 2, 0, 1, 17, 214, 224, 489, 549, 508, 233, + 563, 586, 243, 602, 259, 554, 3, 19, 216, 226, + 235, 245, 261, 491, 510, 551, 556, 565, 588, 604, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1560,79 +1643,80 @@ static const yytype_uint16 yydefact[] = 0, 0, 0, 0, 0, 0, 490, 492, 494, 493, 499, 495, 496, 497, 498, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 509, 511, 512, 513, 514, 515, 516, - 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, - 527, 528, 0, 548, 550, 0, 553, 555, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 562, 564, - 565, 566, 568, 569, 567, 570, 571, 572, 573, 0, - 0, 0, 0, 0, 0, 585, 587, 588, 589, 590, - 591, 592, 0, 0, 601, 603, 604, 273, 272, 279, - 292, 290, 302, 298, 299, 303, 300, 301, 304, 305, - 306, 307, 308, 331, 332, 333, 334, 335, 360, 361, - 362, 367, 368, 295, 369, 370, 373, 371, 372, 375, - 376, 377, 391, 346, 347, 349, 350, 378, 394, 340, - 342, 395, 401, 402, 403, 296, 359, 419, 420, 341, - 414, 324, 291, 336, 392, 398, 379, 0, 0, 423, - 297, 274, 323, 383, 275, 293, 294, 337, 338, 421, - 381, 385, 386, 276, 424, 363, 390, 325, 345, 396, - 397, 400, 413, 339, 417, 415, 416, 351, 358, 387, - 388, 352, 353, 380, 405, 326, 327, 330, 309, 311, - 312, 313, 314, 315, 425, 426, 428, 364, 365, 366, - 374, 429, 430, 431, 0, 0, 0, 382, 354, 356, - 557, 440, 444, 442, 441, 445, 443, 0, 0, 448, - 449, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 384, 399, 418, 453, 454, 355, 432, 0, 0, - 0, 0, 0, 0, 406, 407, 408, 409, 410, 411, - 412, 558, 348, 343, 404, 322, 277, 278, 344, 455, - 457, 456, 458, 459, 460, 310, 317, 450, 452, 451, - 316, 0, 329, 389, 427, 328, 357, 318, 319, 321, - 320, 461, 462, 463, 467, 466, 464, 465, 468, 469, - 470, 471, 473, 472, 482, 0, 486, 487, 0, 0, - 488, 474, 480, 475, 476, 477, 479, 481, 478, 254, - 255, 256, 257, 258, 500, 502, 501, 504, 505, 506, - 507, 503, 529, 530, 531, 532, 533, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 551, 556, 574, 575, 576, 579, 577, 578, 580, 581, - 582, 583, 593, 594, 595, 596, 597, 598, 605, 606, - 393, 422, 439, 559, 560, 446, 447, 433, 434, 0, - 0, 0, 438, 599, 483, 484, 485, 437, 435, 436 + 0, 0, 0, 0, 509, 511, 513, 512, 514, 515, + 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, + 526, 527, 528, 529, 0, 550, 552, 0, 555, 557, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 564, 566, 567, 568, 570, 571, 569, 572, 573, 574, + 575, 0, 0, 0, 0, 0, 0, 587, 589, 590, + 591, 592, 593, 594, 0, 0, 603, 605, 606, 273, + 272, 279, 292, 290, 302, 298, 299, 303, 300, 301, + 304, 305, 306, 307, 308, 331, 332, 333, 334, 335, + 360, 361, 362, 367, 368, 295, 369, 370, 373, 371, + 372, 375, 376, 377, 391, 346, 347, 349, 350, 378, + 394, 340, 342, 395, 401, 402, 403, 296, 359, 419, + 420, 341, 414, 324, 291, 336, 392, 398, 379, 0, + 0, 423, 297, 274, 323, 383, 275, 293, 294, 337, + 338, 421, 381, 385, 386, 276, 424, 363, 390, 325, + 345, 396, 397, 400, 413, 339, 417, 415, 416, 351, + 358, 387, 388, 352, 353, 380, 405, 326, 327, 330, + 309, 311, 312, 313, 314, 315, 425, 426, 428, 364, + 365, 366, 374, 429, 430, 431, 0, 0, 0, 382, + 354, 356, 559, 440, 444, 442, 441, 445, 443, 0, + 0, 448, 449, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 384, 399, 418, 453, 454, 355, 432, + 0, 0, 0, 0, 0, 0, 406, 407, 408, 409, + 410, 411, 412, 560, 348, 343, 404, 322, 277, 278, + 344, 455, 457, 456, 458, 459, 460, 310, 317, 450, + 452, 451, 316, 0, 329, 389, 427, 328, 357, 318, + 319, 321, 320, 461, 462, 463, 467, 466, 464, 465, + 468, 469, 470, 471, 473, 472, 482, 0, 486, 487, + 0, 0, 488, 474, 480, 475, 476, 477, 479, 481, + 478, 254, 255, 256, 257, 258, 500, 502, 501, 504, + 505, 506, 507, 503, 530, 532, 533, 534, 535, 536, + 537, 538, 539, 540, 531, 541, 542, 543, 544, 545, + 546, 547, 548, 553, 558, 576, 577, 578, 581, 579, + 580, 582, 583, 584, 585, 595, 596, 597, 598, 599, + 600, 607, 608, 393, 422, 439, 561, 562, 446, 447, + 433, 434, 0, 0, 0, 438, 601, 483, 484, 485, + 437, 435, 436 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, 576, 577, - 578, 579, 580, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280, -280, -280, -280, -280, -280, - -280, -280, -280, -280, -280 + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, 578, 579, + 580, 581, 582, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281, -281, -281, -281, -281, + -281, -281, -281, -281, -281, -281 }; /* YYDEFGOTO[NTERM-NUM]. */ @@ -1663,159 +1747,159 @@ static const yytype_int16 yydefgoto[] = 445, 446, 454, 455, 456, 457, 458, 459, 484, 485, 486, 487, 488, 489, 490, 491, 468, 469, 470, 471, 472, 473, 474, 23, 36, 516, 517, 518, 519, 520, - 521, 522, 523, 524, 24, 37, 543, 544, 545, 546, - 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, - 557, 558, 559, 560, 561, 25, 38, 563, 564, 26, - 39, 566, 567, 427, 428, 429, 430, 27, 40, 578, - 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, - 28, 41, 595, 596, 597, 598, 599, 600, 601, 431, - 29, 42, 604, 605, 606 + 521, 522, 523, 524, 24, 37, 544, 545, 546, 547, + 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 558, 559, 560, 561, 562, 563, 25, 38, 565, 566, + 26, 39, 568, 569, 427, 428, 429, 430, 27, 40, + 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, + 590, 28, 41, 597, 598, 599, 600, 601, 602, 603, + 431, 29, 42, 606, 607, 608 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_uint16 yytable[] = +static const yytype_int16 yytable[] = { - 2, 475, 432, 460, 433, 434, 562, 447, 602, 603, - 565, 3, 607, 608, 609, 448, 449, 525, 526, 527, + 2, 475, 432, 460, 433, 434, 564, 447, 604, 605, + 567, 3, 609, 610, 611, 448, 449, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, - 538, 539, 540, 541, 542, 610, 611, 475, 612, 461, - 462, 613, 614, 615, 616, 4, 617, 618, 619, 620, - 621, 5, 568, 569, 570, 571, 572, 573, 574, 575, - 576, 577, 622, 623, 463, 435, 508, 509, 510, 511, - 512, 513, 514, 515, 589, 590, 591, 592, 593, 594, - 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, - 634, 635, 636, 637, 638, 6, 436, 639, 640, 437, - 450, 641, 451, 642, 643, 644, 645, 646, 647, 648, - 649, 7, 650, 651, 652, 653, 654, 655, 656, 657, - 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, - 668, 464, 465, 669, 670, 671, 672, 673, 674, 675, - 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, - 686, 687, 8, 688, 689, 690, 691, 692, 693, 694, - 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 466, 706, 707, 708, 709, 710, 711, 712, 713, - 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, - 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, - 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, - 9, 744, 477, 478, 479, 745, 746, 747, 748, 749, - 750, 751, 482, 752, 753, 754, 755, 438, 10, 756, - 757, 452, 758, 759, 760, 761, 762, 763, 764, 765, - 492, 493, 494, 495, 496, 11, 476, 766, 477, 478, - 479, 480, 481, 767, 12, 768, 769, 770, 482, 771, - 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, - 782, 783, 784, 785, 786, 787, 788, 789, 13, 790, - 791, 792, 14, 793, 794, 795, 796, 0, 15, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 797, 798, 799, 800, 75, 76, 77, 801, 802, - 803, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 804, 805, 806, 807, 808, 809, 810, 811, - 812, 119, 120, 121, 813, 122, 123, 124, 814, 815, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 816, 817, 818, 149, 819, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 820, - 821, 822, 823, 824, 825, 826, 827, 828, 829, 830, - 831, 832, 833, 834, 835, 836, 837, 838, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 839, 199, 840, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 841, 842, 843, 844, 845, - 846, 847, 848, 849, 850, 851, 215, 216, 217, 218, - 219, 220, 852, 853, 854, 855, 856, 857, 858, 221, - 859, 860, 861, 862, 863, 864, 865, 222, 223, 866, - 224, 225, 867, 226, 227, 868, 869, 228, 229, 230, - 231, 232, 233, 234, 235, 870, 871, 872, 236, 873, - 874, 875, 876, 877, 878, 879, 880, 881, 882, 883, - 884, 885, 886, 887, 888, 889, 890, 891, 892, 893, - 894, 895, 896, 897, 898, 899, 0, 0, 0, 0, + 538, 539, 540, 541, 542, 543, 612, 475, 613, 461, + 462, 614, 615, 616, 617, 4, 618, 619, 620, 621, + 622, 5, 570, 571, 572, 573, 574, 575, 576, 577, + 578, 579, 623, 624, 463, 435, 508, 509, 510, 511, + 512, 513, 514, 515, 591, 592, 593, 594, 595, 596, + 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, + 635, 636, 637, 638, 639, 6, 436, 640, 641, 437, + 450, 642, 451, 643, 644, 645, 646, 647, 648, 649, + 650, 7, 651, 652, 653, 654, 655, 656, 657, 658, + 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, + 669, 670, 464, 465, 671, 672, 673, 674, 675, 676, + 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, + 687, 688, 8, 689, 690, 691, 692, 693, 694, 695, + 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, + 706, 707, 466, 708, 709, 710, 711, 712, 713, 714, + 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, + 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, + 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, + 745, 9, 746, 477, 478, 479, 747, 748, 749, 750, + 751, 752, 753, 482, 754, 755, 756, 757, 438, 10, + 758, 759, 452, 760, 761, 762, 763, 764, 765, 766, + 767, 492, 493, 494, 495, 496, 11, 476, 768, 477, + 478, 479, 480, 481, 769, 12, 770, 771, 772, 482, + 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, + 783, 784, 785, 786, 787, 788, 789, 790, 791, 13, + 792, 793, 794, 14, 795, 796, 797, 798, 0, 15, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 799, 800, 801, 802, 75, 76, 77, 803, + 804, 805, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 806, 807, 808, 809, 810, 811, 812, + 813, 814, 119, 120, 121, 815, 122, 123, 124, 816, + 817, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 818, 819, 820, 149, 821, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 822, 823, 824, 825, 826, 827, 828, 829, 830, 831, + 832, 833, 834, 835, 836, 837, 838, 839, 840, 841, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 842, + 199, 843, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 844, 845, 846, + 847, 848, 849, 850, 851, 852, 853, 854, 215, 216, + 217, 218, 219, 220, 855, 856, 857, 858, 859, 860, + 861, 221, 862, 863, 864, 865, 866, 867, 868, 222, + 223, 869, 224, 225, 870, 226, 227, 871, 872, 228, + 229, 230, 231, 232, 233, 234, 235, 873, 874, 875, + 236, 876, 877, 878, 879, 880, 881, 882, 883, 884, + 885, 886, 887, 888, 889, 890, 891, 892, 893, 894, + 895, 896, 897, 898, 899, 900, 901, 902, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 503, 504, 505, 506, 507 + 0, 0, 0, 503, 504, 505, 506, 507 }; static const yytype_int16 yycheck[] = { - 0, 44, 44, 44, 46, 47, 112, 44, 279, 280, - 289, 11, 10, 10, 10, 52, 53, 153, 154, 155, + 0, 44, 44, 44, 46, 47, 112, 44, 280, 281, + 290, 11, 10, 10, 10, 52, 53, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 10, 10, 44, 10, 80, + 166, 167, 168, 169, 170, 171, 10, 44, 10, 80, 81, 10, 10, 10, 10, 45, 10, 10, 10, 10, - 10, 51, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 10, 10, 105, 107, 96, 97, 98, 99, - 100, 101, 102, 103, 246, 247, 248, 249, 250, 251, + 10, 51, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 10, 10, 105, 107, 96, 97, 98, 99, + 100, 101, 102, 103, 247, 248, 249, 250, 251, 252, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 95, 138, 10, 10, 141, 137, 10, 139, 10, 10, 10, 10, 10, 10, 10, 10, 111, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 172, 173, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 173, 174, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 152, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 212, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 213, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 210, 10, 255, 256, 257, 10, 10, 10, 10, 10, - 10, 10, 265, 10, 10, 10, 10, 269, 228, 10, - 10, 268, 10, 10, 10, 10, 10, 10, 10, 10, - 283, 284, 285, 286, 287, 245, 253, 10, 255, 256, - 257, 258, 259, 10, 254, 10, 10, 10, 265, 10, + 10, 211, 10, 256, 257, 258, 10, 10, 10, 10, + 10, 10, 10, 266, 10, 10, 10, 10, 270, 229, + 10, 10, 269, 10, 10, 10, 10, 10, 10, 10, + 10, 284, 285, 286, 287, 288, 246, 254, 10, 256, + 257, 258, 259, 260, 10, 255, 10, 10, 10, 266, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 278, 10, - 10, 10, 282, 10, 10, 10, 10, -1, 288, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 10, 10, 10, 10, 48, 49, 50, 10, 10, - 10, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 104, 105, 106, 10, 108, 109, 110, 10, 10, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 10, 10, 10, 140, 10, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 10, 211, 10, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 239, 240, 241, 242, - 243, 244, 10, 10, 10, 10, 10, 10, 10, 252, - 10, 10, 10, 10, 10, 10, 10, 260, 261, 10, - 263, 264, 10, 266, 267, 10, 10, 270, 271, 272, - 273, 274, 275, 276, 277, 10, 10, 10, 281, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 279, + 10, 10, 10, 283, 10, 10, 10, 10, -1, 289, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 10, 10, 10, 10, 48, 49, 50, 10, + 10, 10, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 104, 105, 106, 10, 108, 109, 110, 10, + 10, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 10, 10, 10, 140, 10, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 10, + 212, 10, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 240, 241, + 242, 243, 244, 245, 10, 10, 10, 10, 10, 10, + 10, 253, 10, 10, 10, 10, 10, 10, 10, 261, + 262, 10, 264, 265, 10, 267, 268, 10, 10, 271, + 272, 273, 274, 275, 276, 277, 278, 10, 10, 10, + 282, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 35, 35, 35, 35, 35 + -1, -1, -1, 35, 35, 35, 35, 35 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = +static const yytype_int16 yystos[] = { - 0, 291, 0, 11, 45, 51, 95, 111, 152, 210, - 228, 245, 254, 278, 282, 288, 292, 293, 296, 299, - 302, 305, 313, 533, 544, 565, 569, 577, 590, 600, - 294, 297, 300, 303, 306, 314, 534, 545, 566, 570, - 578, 591, 601, 12, 13, 14, 15, 16, 17, 18, + 0, 292, 0, 11, 45, 51, 95, 111, 152, 211, + 229, 246, 255, 279, 283, 289, 293, 294, 297, 300, + 303, 306, 314, 534, 545, 567, 571, 579, 592, 602, + 295, 298, 301, 304, 307, 315, 535, 546, 568, 572, + 580, 593, 603, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 48, 49, 50, 54, 55, @@ -1827,51 +1911,51 @@ static const yytype_uint16 yystos[] = 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 140, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 211, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 239, 240, 241, 242, 243, - 244, 252, 260, 261, 263, 264, 266, 267, 270, 271, - 272, 273, 274, 275, 276, 277, 281, 295, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, - 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 573, 574, 575, - 576, 599, 44, 46, 47, 107, 138, 141, 269, 298, - 505, 506, 507, 508, 509, 510, 511, 44, 52, 53, - 137, 139, 268, 301, 512, 513, 514, 515, 516, 517, - 44, 80, 81, 105, 172, 173, 212, 304, 526, 527, - 528, 529, 530, 531, 532, 44, 253, 255, 256, 257, - 258, 259, 265, 307, 518, 519, 520, 521, 522, 523, - 524, 525, 283, 284, 285, 286, 287, 308, 309, 310, - 311, 312, 315, 518, 519, 520, 521, 522, 96, 97, - 98, 99, 100, 101, 102, 103, 535, 536, 537, 538, - 539, 540, 541, 542, 543, 153, 154, 155, 156, 157, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 212, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 240, 241, 242, 243, 244, + 245, 253, 261, 262, 264, 265, 267, 268, 271, 272, + 273, 274, 275, 276, 277, 278, 282, 296, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, + 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, + 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 575, 576, 577, + 578, 601, 44, 46, 47, 107, 138, 141, 270, 299, + 506, 507, 508, 509, 510, 511, 512, 44, 52, 53, + 137, 139, 269, 302, 513, 514, 515, 516, 517, 518, + 44, 80, 81, 105, 173, 174, 213, 305, 527, 528, + 529, 530, 531, 532, 533, 44, 254, 256, 257, 258, + 259, 260, 266, 308, 519, 520, 521, 522, 523, 524, + 525, 526, 284, 285, 286, 287, 288, 309, 310, 311, + 312, 313, 316, 519, 520, 521, 522, 523, 96, 97, + 98, 99, 100, 101, 102, 103, 536, 537, 538, 539, + 540, 541, 542, 543, 544, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 546, 547, 548, 549, 550, 551, 552, + 168, 169, 170, 171, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 112, 567, 568, 289, 571, 572, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 579, 580, - 581, 582, 583, 584, 585, 586, 587, 588, 589, 246, - 247, 248, 249, 250, 251, 592, 593, 594, 595, 596, - 597, 598, 279, 280, 602, 603, 604, 10, 10, 10, + 563, 564, 565, 566, 112, 569, 570, 290, 573, 574, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, + 591, 247, 248, 249, 250, 251, 252, 594, 595, 596, + 597, 598, 599, 600, 280, 281, 604, 605, 606, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1900,77 +1984,78 @@ static const yytype_uint16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = +static const yytype_int16 yyr1[] = { - 0, 290, 291, 291, 292, 292, 292, 292, 292, 292, - 292, 292, 292, 292, 292, 292, 292, 293, 294, 294, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 295, 295, 295, 295, 295, 295, - 295, 295, 295, 295, 296, 297, 297, 298, 298, 298, - 298, 298, 298, 298, 299, 300, 300, 301, 301, 301, - 301, 301, 301, 302, 303, 303, 304, 304, 304, 304, - 304, 304, 304, 305, 306, 306, 307, 307, 307, 307, - 307, 307, 307, 307, 308, 309, 310, 311, 312, 313, - 314, 314, 315, 315, 315, 315, 315, 315, 315, 315, - 315, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, - 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, - 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, - 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, - 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, - 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, - 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, - 534, 534, 535, 535, 535, 535, 535, 535, 535, 535, - 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, - 545, 546, 546, 546, 546, 546, 546, 546, 546, 546, - 546, 546, 546, 546, 546, 546, 546, 546, 546, 547, + 0, 291, 292, 292, 293, 293, 293, 293, 293, 293, + 293, 293, 293, 293, 293, 293, 293, 294, 295, 295, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 297, 298, 298, 299, 299, 299, + 299, 299, 299, 299, 300, 301, 301, 302, 302, 302, + 302, 302, 302, 303, 304, 304, 305, 305, 305, 305, + 305, 305, 305, 306, 307, 307, 308, 308, 308, 308, + 308, 308, 308, 308, 309, 310, 311, 312, 313, 314, + 315, 315, 316, 316, 316, 316, 316, 316, 316, 316, + 316, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, + 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, + 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, + 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, + 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + 535, 535, 536, 536, 536, 536, 536, 536, 536, 536, + 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, + 546, 547, 547, 547, 547, 547, 547, 547, 547, 547, + 547, 547, 547, 547, 547, 547, 547, 547, 547, 547, 548, 549, 550, 551, 552, 553, 554, 555, 556, 557, - 558, 559, 560, 561, 562, 563, 564, 565, 566, 566, - 567, 568, 569, 570, 570, 571, 572, 573, 574, 575, - 576, 577, 578, 578, 579, 579, 579, 579, 579, 579, - 579, 579, 579, 579, 580, 581, 582, 583, 584, 585, - 586, 587, 588, 589, 590, 591, 591, 592, 592, 592, - 592, 592, 592, 593, 594, 595, 596, 597, 598, 599, - 600, 601, 601, 602, 602, 603, 604 + 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, + 568, 568, 569, 570, 571, 572, 572, 573, 574, 575, + 576, 577, 578, 579, 580, 580, 581, 581, 581, 581, + 581, 581, 581, 581, 581, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 591, 592, 593, 593, 594, + 594, 594, 594, 594, 594, 595, 596, 597, 598, 599, + 600, 601, 602, 603, 603, 604, 604, 605, 606 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = +static const yytype_int8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, @@ -2024,15 +2109,15 @@ static const yytype_uint8 yyr2[] = 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 1, 2, 0, - 1, 2, 1, 2, 0, 1, 2, 2, 2, 3, - 3, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 1, 2, 0, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, - 1, 2, 0, 1, 1, 2, 2 + 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, + 2, 0, 1, 2, 1, 2, 0, 1, 2, 2, + 2, 3, 3, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 1, 2, 0, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 3, 1, 2, 0, 1, 1, 2, 2 }; @@ -2118,7 +2203,9 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) if (yytype < YYNTOKENS) YYPRINT (yyo, yytoknum[yytype], *yyvaluep); # endif + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -2142,7 +2229,7 @@ yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) `------------------------------------------------------------------*/ static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -2165,19 +2252,19 @@ do { \ `------------------------------------------------*/ static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) +yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule) { - unsigned long yylno = yyrline[yyrule]; + int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], + yystos[+yyssp[yyi + 1 - yynrhs]], &yyvsp[(yyi + 1) - (yynrhs)] ); YYFPRINTF (stderr, "\n"); @@ -2222,13 +2309,13 @@ int yydebug; # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H -# define yystrlen strlen +# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) # else /* Return the length of YYSTR. */ -static YYSIZE_T +static YYPTRDIFF_T yystrlen (const char *yystr) { - YYSIZE_T yylen; + YYPTRDIFF_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; @@ -2264,12 +2351,12 @@ yystpcpy (char *yydest, const char *yysrc) backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ -static YYSIZE_T +static YYPTRDIFF_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { - YYSIZE_T yyn = 0; + YYPTRDIFF_T yyn = 0; char const *yyp = yystr; for (;;) @@ -2300,10 +2387,10 @@ yytnamerr (char *yyres, const char *yystr) do_not_strip_quotes: ; } - if (! yyres) + if (yyres) + return yystpcpy (yyres, yystr) - yyres; + else return yystrlen (yystr); - - return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); } # endif @@ -2316,19 +2403,19 @@ yytnamerr (char *yyres, const char *yystr) *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int -yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, - yytype_int16 *yyssp, int yytoken) +yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, + yy_state_t *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat. */ + /* Arguments of yyformat: reported tokens (one for the "unexpected", + one per "expected"). */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Number of reported tokens (one for the "unexpected", one per - "expected"). */ + /* Actual size of YYARG. */ int yycount = 0; + /* Cumulated lengths of YYARG. */ + YYPTRDIFF_T yysize = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then @@ -2355,7 +2442,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, */ if (yytoken != YYEMPTY) { - int yyn = yypact[*yyssp]; + int yyn = yypact[+*yyssp]; + YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + yysize = yysize0; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { @@ -2380,7 +2469,8 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + YYPTRDIFF_T yysize1 + = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -2407,7 +2497,9 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } { - YYSIZE_T yysize1 = yysize + yystrlen (yyformat); + /* Don't count the "%s"s in the final size, but reserve room for + the terminator. */ + YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -2437,8 +2529,8 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } else { - yyp++; - yyformat++; + ++yyp; + ++yyformat; } } return 0; @@ -2481,7 +2573,7 @@ int yynerrs; int yyparse (void) { - int yystate; + yy_state_fast_t yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; @@ -2493,16 +2585,16 @@ yyparse (void) to reallocate them elsewhere. */ /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss; - yytype_int16 *yyssp; + yy_state_t yyssa[YYINITDEPTH]; + yy_state_t *yyss; + yy_state_t *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; - YYSIZE_T yystacksize; + YYPTRDIFF_T yystacksize; int yyn; int yyresult; @@ -2516,7 +2608,7 @@ yyparse (void) /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; - YYSIZE_T yymsg_alloc = sizeof yymsgbuf; + YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -2548,12 +2640,14 @@ yynewstate: /*--------------------------------------------------------------------. -| yynewstate -- set current state (the top of the stack) to yystate. | +| yysetstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: YYDPRINTF ((stderr, "Entering state %d\n", yystate)); YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - *yyssp = (yytype_int16) yystate; + YY_IGNORE_USELESS_CAST_BEGIN + *yyssp = YY_CAST (yy_state_t, yystate); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE @@ -2561,23 +2655,23 @@ yysetstate: #else { /* Get the current used size of the three stacks, in elements. */ - YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); + YYPTRDIFF_T yysize = yyssp - yyss + 1; # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ + yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), + &yyss1, yysize * YYSIZEOF (*yyssp), + &yyvs1, yysize * YYSIZEOF (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; @@ -2591,9 +2685,10 @@ yysetstate: yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; + yy_state_t *yyss1 = yyss; union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + YY_CAST (union yyalloc *, + YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); @@ -2607,8 +2702,10 @@ yysetstate: yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long) yystacksize)); + YY_IGNORE_USELESS_CAST_BEGIN + YYDPRINTF ((stderr, "Stack size increased to %ld\n", + YY_CAST (long, yystacksize))); + YY_IGNORE_USELESS_CAST_END if (yyss + yystacksize - 1 <= yyssp) YYABORT; @@ -2674,14 +2771,13 @@ yybackup: /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - - /* Discard the shifted token. */ - yychar = YYEMPTY; - yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END + + /* Discard the shifted token. */ + yychar = YYEMPTY; goto yynewstate; @@ -2718,15 +2814,15 @@ yyreduce: { case 17: #line 191 "./util/configparser.y" - { + { OUTYY(("\nP(server:)\n")); } -#line 2725 "util/configparser.c" +#line 2821 "util/configparser.c" break; case 214: #line 285 "./util/configparser.y" - { + { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2736,12 +2832,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2740 "util/configparser.c" +#line 2836 "util/configparser.c" break; case 224: #line 302 "./util/configparser.y" - { + { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2751,12 +2847,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2755 "util/configparser.c" +#line 2851 "util/configparser.c" break; case 233: #line 319 "./util/configparser.y" - { + { struct config_view* s; OUTYY(("\nP(view:)\n")); s = (struct config_view*)calloc(1, sizeof(struct config_view)); @@ -2768,12 +2864,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2772 "util/configparser.c" +#line 2868 "util/configparser.c" break; case 243: #line 338 "./util/configparser.y" - { + { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -2788,12 +2884,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2792 "util/configparser.c" +#line 2888 "util/configparser.c" break; case 254: #line 362 "./util/configparser.y" - { + { uint8_t* bitlist; size_t len = 0; OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str))); @@ -2809,12 +2905,12 @@ yyreduce: } } -#line 2813 "util/configparser.c" +#line 2909 "util/configparser.c" break; case 255: #line 381 "./util/configparser.y" - { + { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 && @@ -2828,44 +2924,44 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2832 "util/configparser.c" +#line 2928 "util/configparser.c" break; case 256: #line 398 "./util/configparser.y" - { + { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2842 "util/configparser.c" +#line 2938 "util/configparser.c" break; case 257: #line 406 "./util/configparser.y" - { + { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2854 "util/configparser.c" +#line 2950 "util/configparser.c" break; case 258: #line 416 "./util/configparser.y" - { + { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 2864 "util/configparser.c" +#line 2960 "util/configparser.c" break; case 259: #line 424 "./util/configparser.y" - { + { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -2880,36 +2976,36 @@ yyreduce: } else yyerror("out of memory"); } -#line 2884 "util/configparser.c" +#line 2980 "util/configparser.c" break; case 272: #line 447 "./util/configparser.y" - { + { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2896 "util/configparser.c" +#line 2992 "util/configparser.c" break; case 273: #line 456 "./util/configparser.y" - { + { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2908 "util/configparser.c" +#line 3004 "util/configparser.c" break; case 274: #line 465 "./util/configparser.y" - { + { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) cfg_parser->cfg->stat_interval = 0; @@ -2918,48 +3014,48 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2922 "util/configparser.c" +#line 3018 "util/configparser.c" break; case 275: #line 476 "./util/configparser.y" - { + { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2934 "util/configparser.c" +#line 3030 "util/configparser.c" break; case 276: #line 485 "./util/configparser.y" - { + { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2946 "util/configparser.c" +#line 3042 "util/configparser.c" break; case 277: #line 494 "./util/configparser.y" - { + { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2958 "util/configparser.c" +#line 3054 "util/configparser.c" break; case 278: #line 503 "./util/configparser.y" - { + { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) cfg_parser->cfg->shm_key = 0; @@ -2968,24 +3064,24 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2972 "util/configparser.c" +#line 3068 "util/configparser.c" break; case 279: #line 514 "./util/configparser.y" - { + { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 2984 "util/configparser.c" +#line 3080 "util/configparser.c" break; case 280: #line 523 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str))) @@ -2995,12 +3091,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 2999 "util/configparser.c" +#line 3095 "util/configparser.c" break; case 281: #line 535 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, @@ -3011,12 +3107,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3015 "util/configparser.c" +#line 3111 "util/configparser.c" break; case 282: #line 549 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3029,12 +3125,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3033 "util/configparser.c" +#line 3129 "util/configparser.c" break; case 283: #line 564 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); OUTYY(("P(Deprecated option, ignoring)\n")); @@ -3043,12 +3139,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3047 "util/configparser.c" +#line 3143 "util/configparser.c" break; case 284: #line 575 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3063,12 +3159,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3067 "util/configparser.c" +#line 3163 "util/configparser.c" break; case 285: #line 592 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3083,12 +3179,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3087 "util/configparser.c" +#line 3183 "util/configparser.c" break; case 286: #line 609 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3103,12 +3199,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3107 "util/configparser.c" +#line 3203 "util/configparser.c" break; case 287: #line 626 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3123,12 +3219,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3127 "util/configparser.c" +#line 3223 "util/configparser.c" break; case 288: #line 643 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3141,12 +3237,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3145 "util/configparser.c" +#line 3241 "util/configparser.c" break; case 289: #line 658 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3159,12 +3255,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3163 "util/configparser.c" +#line 3259 "util/configparser.c" break; case 290: #line 673 "./util/configparser.y" - { + { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); @@ -3175,12 +3271,12 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3179 "util/configparser.c" +#line 3275 "util/configparser.c" break; case 291: #line 686 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); @@ -3193,180 +3289,180 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3197 "util/configparser.c" +#line 3293 "util/configparser.c" break; case 292: #line 701 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3209 "util/configparser.c" +#line 3305 "util/configparser.c" break; case 293: #line 710 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3221 "util/configparser.c" +#line 3317 "util/configparser.c" break; case 294: #line 719 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3233 "util/configparser.c" +#line 3329 "util/configparser.c" break; case 295: #line 728 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3245 "util/configparser.c" +#line 3341 "util/configparser.c" break; case 296: #line 737 "./util/configparser.y" - { + { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3257 "util/configparser.c" +#line 3353 "util/configparser.c" break; case 297: #line 746 "./util/configparser.y" - { + { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3269 "util/configparser.c" +#line 3365 "util/configparser.c" break; case 298: #line 755 "./util/configparser.y" - { + { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3281 "util/configparser.c" +#line 3377 "util/configparser.c" break; case 299: #line 764 "./util/configparser.y" - { + { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3293 "util/configparser.c" +#line 3389 "util/configparser.c" break; case 300: #line 773 "./util/configparser.y" - { + { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3305 "util/configparser.c" +#line 3401 "util/configparser.c" break; case 301: #line 782 "./util/configparser.y" - { + { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3317 "util/configparser.c" +#line 3413 "util/configparser.c" break; case 302: #line 791 "./util/configparser.y" - { + { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3329 "util/configparser.c" +#line 3425 "util/configparser.c" break; case 303: #line 800 "./util/configparser.y" - { + { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3341 "util/configparser.c" +#line 3437 "util/configparser.c" break; case 304: #line 809 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3353 "util/configparser.c" +#line 3449 "util/configparser.c" break; case 305: #line 818 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3365 "util/configparser.c" +#line 3461 "util/configparser.c" break; case 306: #line 827 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -3377,24 +3473,24 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3381 "util/configparser.c" +#line 3477 "util/configparser.c" break; case 307: #line 840 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3393 "util/configparser.c" +#line 3489 "util/configparser.c" break; case 308: #line 849 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -3405,180 +3501,180 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3409 "util/configparser.c" +#line 3505 "util/configparser.c" break; case 309: #line 862 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3421 "util/configparser.c" +#line 3517 "util/configparser.c" break; case 310: #line 871 "./util/configparser.y" - { + { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3433 "util/configparser.c" +#line 3529 "util/configparser.c" break; case 311: #line 880 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3445 "util/configparser.c" +#line 3541 "util/configparser.c" break; case 312: #line 889 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3455 "util/configparser.c" +#line 3551 "util/configparser.c" break; case 313: #line 896 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3465 "util/configparser.c" +#line 3561 "util/configparser.c" break; case 314: #line 903 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3477 "util/configparser.c" +#line 3573 "util/configparser.c" break; case 315: #line 912 "./util/configparser.y" - { + { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3487 "util/configparser.c" +#line 3583 "util/configparser.c" break; case 316: #line 919 "./util/configparser.y" - { + { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3499 "util/configparser.c" +#line 3595 "util/configparser.c" break; case 317: #line 928 "./util/configparser.y" - { + { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3510 "util/configparser.c" +#line 3606 "util/configparser.c" break; case 318: #line 936 "./util/configparser.y" - { + { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3520 "util/configparser.c" +#line 3616 "util/configparser.c" break; case 319: #line 943 "./util/configparser.y" - { + { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3530 "util/configparser.c" +#line 3626 "util/configparser.c" break; case 320: #line 950 "./util/configparser.y" - { + { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3541 "util/configparser.c" +#line 3637 "util/configparser.c" break; case 321: #line 958 "./util/configparser.y" - { + { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3553 "util/configparser.c" +#line 3649 "util/configparser.c" break; case 322: #line 967 "./util/configparser.y" - { + { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3565 "util/configparser.c" +#line 3661 "util/configparser.c" break; case 323: #line 976 "./util/configparser.y" - { + { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3577 "util/configparser.c" +#line 3673 "util/configparser.c" break; case 324: #line 985 "./util/configparser.y" - { + { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -3590,104 +3686,104 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3594 "util/configparser.c" +#line 3690 "util/configparser.c" break; case 325: #line 999 "./util/configparser.y" - { + { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3606 "util/configparser.c" +#line 3702 "util/configparser.c" break; case 326: #line 1008 "./util/configparser.y" - { + { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3618 "util/configparser.c" +#line 3714 "util/configparser.c" break; case 327: #line 1017 "./util/configparser.y" - { + { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3630 "util/configparser.c" +#line 3726 "util/configparser.c" break; case 328: #line 1026 "./util/configparser.y" - { + { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3642 "util/configparser.c" +#line 3738 "util/configparser.c" break; case 329: #line 1035 "./util/configparser.y" - { + { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3654 "util/configparser.c" +#line 3750 "util/configparser.c" break; case 330: #line 1044 "./util/configparser.y" - { + { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3666 "util/configparser.c" +#line 3762 "util/configparser.c" break; case 331: #line 1053 "./util/configparser.y" - { + { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3676 "util/configparser.c" +#line 3772 "util/configparser.c" break; case 332: #line 1060 "./util/configparser.y" - { + { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3686 "util/configparser.c" +#line 3782 "util/configparser.c" break; case 333: #line 1067 "./util/configparser.y" - { + { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); cfg_parser->cfg->directory = (yyvsp[0].str); @@ -3711,106 +3807,106 @@ yyreduce: } } } -#line 3715 "util/configparser.c" +#line 3811 "util/configparser.c" break; case 334: #line 1093 "./util/configparser.y" - { + { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3726 "util/configparser.c" +#line 3822 "util/configparser.c" break; case 335: #line 1101 "./util/configparser.y" - { + { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3736 "util/configparser.c" +#line 3832 "util/configparser.c" break; case 336: #line 1108 "./util/configparser.y" - { + { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3746 "util/configparser.c" +#line 3842 "util/configparser.c" break; case 337: #line 1115 "./util/configparser.y" - { + { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 3756 "util/configparser.c" +#line 3852 "util/configparser.c" break; case 338: #line 1122 "./util/configparser.y" - { + { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3766 "util/configparser.c" +#line 3862 "util/configparser.c" break; case 339: #line 1129 "./util/configparser.y" - { + { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3777 "util/configparser.c" +#line 3873 "util/configparser.c" break; case 340: #line 1137 "./util/configparser.y" - { + { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3788 "util/configparser.c" +#line 3884 "util/configparser.c" break; case 341: #line 1145 "./util/configparser.y" - { + { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3799 "util/configparser.c" +#line 3895 "util/configparser.c" break; case 342: #line 1153 "./util/configparser.y" - { + { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3809 "util/configparser.c" +#line 3905 "util/configparser.c" break; case 343: #line 1160 "./util/configparser.y" - { + { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -3819,12 +3915,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3823 "util/configparser.c" +#line 3919 "util/configparser.c" break; case 344: #line 1171 "./util/configparser.y" - { + { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -3833,95 +3929,95 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3837 "util/configparser.c" +#line 3933 "util/configparser.c" break; case 345: #line 1182 "./util/configparser.y" - { + { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3847 "util/configparser.c" +#line 3943 "util/configparser.c" break; case 346: #line 1189 "./util/configparser.y" - { + { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3859 "util/configparser.c" +#line 3955 "util/configparser.c" break; case 347: #line 1198 "./util/configparser.y" - { + { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3871 "util/configparser.c" +#line 3967 "util/configparser.c" break; case 348: #line 1207 "./util/configparser.y" - { + { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3883 "util/configparser.c" +#line 3979 "util/configparser.c" break; case 349: #line 1216 "./util/configparser.y" - { + { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 3893 "util/configparser.c" +#line 3989 "util/configparser.c" break; case 350: #line 1223 "./util/configparser.y" - { + { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 3903 "util/configparser.c" +#line 3999 "util/configparser.c" break; case 351: #line 1230 "./util/configparser.y" - { + { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3914 "util/configparser.c" +#line 4010 "util/configparser.c" break; case 352: #line 1238 "./util/configparser.y" - { + { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3925 "util/configparser.c" +#line 4021 "util/configparser.c" break; case 353: @@ -3934,7 +4030,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3938 "util/configparser.c" +#line 4034 "util/configparser.c" break; case 354: @@ -3947,7 +4043,7 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3951 "util/configparser.c" +#line 4047 "util/configparser.c" break; case 355: @@ -3960,12 +4056,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3964 "util/configparser.c" +#line 4060 "util/configparser.c" break; case 356: #line 1276 "./util/configparser.y" - { + { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -3977,23 +4073,23 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3981 "util/configparser.c" +#line 4077 "util/configparser.c" break; case 357: #line 1290 "./util/configparser.y" - { + { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 3992 "util/configparser.c" +#line 4088 "util/configparser.c" break; case 358: #line 1298 "./util/configparser.y" - { + { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4004,12 +4100,12 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4008 "util/configparser.c" +#line 4104 "util/configparser.c" break; case 359: #line 1311 "./util/configparser.y" - { + { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4018,23 +4114,23 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4022 "util/configparser.c" +#line 4118 "util/configparser.c" break; case 360: #line 1322 "./util/configparser.y" - { + { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4033 "util/configparser.c" +#line 4129 "util/configparser.c" break; case 361: #line 1330 "./util/configparser.y" - { + { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4045,48 +4141,48 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4049 "util/configparser.c" +#line 4145 "util/configparser.c" break; case 362: #line 1343 "./util/configparser.y" - { + { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4061 "util/configparser.c" +#line 4157 "util/configparser.c" break; case 363: #line 1352 "./util/configparser.y" - { + { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4073 "util/configparser.c" +#line 4169 "util/configparser.c" break; case 364: #line 1361 "./util/configparser.y" - { + { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4085 "util/configparser.c" +#line 4181 "util/configparser.c" break; case 365: #line 1370 "./util/configparser.y" - { + { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4094,12 +4190,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4098 "util/configparser.c" +#line 4194 "util/configparser.c" break; case 366: #line 1380 "./util/configparser.y" - { + { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4107,23 +4203,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4111 "util/configparser.c" +#line 4207 "util/configparser.c" break; case 367: #line 1390 "./util/configparser.y" - { + { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4122 "util/configparser.c" +#line 4218 "util/configparser.c" break; case 368: #line 1398 "./util/configparser.y" - { + { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4134,58 +4230,58 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4138 "util/configparser.c" +#line 4234 "util/configparser.c" break; case 369: #line 1411 "./util/configparser.y" - { + { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4150 "util/configparser.c" +#line 4246 "util/configparser.c" break; case 370: #line 1420 "./util/configparser.y" - { + { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4161 "util/configparser.c" +#line 4257 "util/configparser.c" break; case 371: #line 1428 "./util/configparser.y" - { + { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4173 "util/configparser.c" +#line 4269 "util/configparser.c" break; case 372: #line 1437 "./util/configparser.y" - { + { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4184 "util/configparser.c" +#line 4280 "util/configparser.c" break; case 373: #line 1445 "./util/configparser.y" - { + { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4196,34 +4292,34 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4200 "util/configparser.c" +#line 4296 "util/configparser.c" break; case 374: #line 1458 "./util/configparser.y" - { + { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4212 "util/configparser.c" +#line 4308 "util/configparser.c" break; case 375: #line 1467 "./util/configparser.y" - { + { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4222 "util/configparser.c" +#line 4318 "util/configparser.c" break; case 376: #line 1474 "./util/configparser.y" - { + { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4231,12 +4327,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4235 "util/configparser.c" +#line 4331 "util/configparser.c" break; case 377: #line 1484 "./util/configparser.y" - { + { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4244,12 +4340,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4248 "util/configparser.c" +#line 4344 "util/configparser.c" break; case 378: #line 1494 "./util/configparser.y" - { + { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4257,12 +4353,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4261 "util/configparser.c" +#line 4357 "util/configparser.c" break; case 379: #line 1504 "./util/configparser.y" - { + { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4270,12 +4366,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4274 "util/configparser.c" +#line 4370 "util/configparser.c" break; case 380: #line 1514 "./util/configparser.y" - { + { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4283,12 +4379,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4287 "util/configparser.c" +#line 4383 "util/configparser.c" break; case 381: #line 1524 "./util/configparser.y" - { + { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4296,12 +4392,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4300 "util/configparser.c" +#line 4396 "util/configparser.c" break; case 382: #line 1534 "./util/configparser.y" - { + { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4309,12 +4405,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4313 "util/configparser.c" +#line 4409 "util/configparser.c" break; case 383: #line 1544 "./util/configparser.y" - { + { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4322,100 +4418,100 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4326 "util/configparser.c" +#line 4422 "util/configparser.c" break; case 384: #line 1554 "./util/configparser.y" - { + { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4336 "util/configparser.c" +#line 4432 "util/configparser.c" break; case 385: #line 1561 "./util/configparser.y" - { + { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4346 "util/configparser.c" +#line 4442 "util/configparser.c" break; case 386: #line 1568 "./util/configparser.y" - { + { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4356 "util/configparser.c" +#line 4452 "util/configparser.c" break; case 387: #line 1575 "./util/configparser.y" - { + { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4368 "util/configparser.c" +#line 4464 "util/configparser.c" break; case 388: #line 1584 "./util/configparser.y" - { + { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4380 "util/configparser.c" +#line 4476 "util/configparser.c" break; case 389: #line 1593 "./util/configparser.y" - { + { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4392 "util/configparser.c" +#line 4488 "util/configparser.c" break; case 390: #line 1602 "./util/configparser.y" - { + { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4404 "util/configparser.c" +#line 4500 "util/configparser.c" break; case 391: #line 1611 "./util/configparser.y" - { + { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4414 "util/configparser.c" +#line 4510 "util/configparser.c" break; case 392: #line 1618 "./util/configparser.y" - { + { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4423,12 +4519,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4427 "util/configparser.c" +#line 4523 "util/configparser.c" break; case 393: #line 1628 "./util/configparser.y" - { + { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "deny_non_local")!=0 && @@ -4446,22 +4542,22 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4450 "util/configparser.c" +#line 4546 "util/configparser.c" break; case 394: #line 1648 "./util/configparser.y" - { + { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4460 "util/configparser.c" +#line 4556 "util/configparser.c" break; case 395: #line 1655 "./util/configparser.y" - { + { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_date_override = 0; @@ -4477,12 +4573,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4481 "util/configparser.c" +#line 4577 "util/configparser.c" break; case 396: #line 1673 "./util/configparser.y" - { + { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_sig_skew_min = 0; @@ -4493,12 +4589,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4497 "util/configparser.c" +#line 4593 "util/configparser.c" break; case 397: #line 1686 "./util/configparser.y" - { + { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_sig_skew_max = 0; @@ -4509,60 +4605,60 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4513 "util/configparser.c" +#line 4609 "util/configparser.c" break; case 398: #line 1699 "./util/configparser.y" - { + { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4525 "util/configparser.c" +#line 4621 "util/configparser.c" break; case 399: #line 1708 "./util/configparser.y" - { + { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4537 "util/configparser.c" +#line 4633 "util/configparser.c" break; case 400: #line 1717 "./util/configparser.y" - { + { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4549 "util/configparser.c" +#line 4645 "util/configparser.c" break; case 401: #line 1726 "./util/configparser.y" - { + { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4561 "util/configparser.c" +#line 4657 "util/configparser.c" break; case 402: #line 1735 "./util/configparser.y" - { + { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4570,12 +4666,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4574 "util/configparser.c" +#line 4670 "util/configparser.c" break; case 403: #line 1745 "./util/configparser.y" - { + { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4583,12 +4679,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4587 "util/configparser.c" +#line 4683 "util/configparser.c" break; case 404: #line 1755 "./util/configparser.y" - { + { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4597,84 +4693,84 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4601 "util/configparser.c" +#line 4697 "util/configparser.c" break; case 405: #line 1766 "./util/configparser.y" - { + { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4613 "util/configparser.c" +#line 4709 "util/configparser.c" break; case 406: #line 1775 "./util/configparser.y" - { + { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4625 "util/configparser.c" +#line 4721 "util/configparser.c" break; case 407: #line 1784 "./util/configparser.y" - { + { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4637 "util/configparser.c" +#line 4733 "util/configparser.c" break; case 408: #line 1793 "./util/configparser.y" - { + { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4649 "util/configparser.c" +#line 4745 "util/configparser.c" break; case 409: #line 1802 "./util/configparser.y" - { + { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4661 "util/configparser.c" +#line 4757 "util/configparser.c" break; case 410: #line 1811 "./util/configparser.y" - { + { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4673 "util/configparser.c" +#line 4769 "util/configparser.c" break; case 411: #line 1820 "./util/configparser.y" - { + { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4685,12 +4781,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4689 "util/configparser.c" +#line 4785 "util/configparser.c" break; case 412: #line 1833 "./util/configparser.y" - { + { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4701,70 +4797,70 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4705 "util/configparser.c" +#line 4801 "util/configparser.c" break; case 413: #line 1846 "./util/configparser.y" - { + { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4717 "util/configparser.c" +#line 4813 "util/configparser.c" break; case 414: #line 1855 "./util/configparser.y" - { + { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 4727 "util/configparser.c" +#line 4823 "util/configparser.c" break; case 415: #line 1862 "./util/configparser.y" - { + { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4739 "util/configparser.c" +#line 4835 "util/configparser.c" break; case 416: #line 1871 "./util/configparser.y" - { + { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4751 "util/configparser.c" +#line 4847 "util/configparser.c" break; case 417: #line 1880 "./util/configparser.y" - { + { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4763 "util/configparser.c" +#line 4859 "util/configparser.c" break; case 418: #line 1889 "./util/configparser.y" - { + { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4772,23 +4868,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4776 "util/configparser.c" +#line 4872 "util/configparser.c" break; case 419: #line 1898 "./util/configparser.y" - { + { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4787 "util/configparser.c" +#line 4883 "util/configparser.c" break; case 420: #line 1906 "./util/configparser.y" - { + { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4799,23 +4895,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4803 "util/configparser.c" +#line 4899 "util/configparser.c" break; case 421: #line 1919 "./util/configparser.y" - { + { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4814 "util/configparser.c" +#line 4910 "util/configparser.c" break; case 422: #line 1927 "./util/configparser.y" - { + { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -4854,22 +4950,22 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4858 "util/configparser.c" +#line 4954 "util/configparser.c" break; case 423: #line 1968 "./util/configparser.y" - { + { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 4868 "util/configparser.c" +#line 4964 "util/configparser.c" break; case 424: #line 1975 "./util/configparser.y" - { + { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -4882,12 +4978,12 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4886 "util/configparser.c" +#line 4982 "util/configparser.c" break; case 425: #line 1990 "./util/configparser.y" - { + { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4895,12 +4991,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4899 "util/configparser.c" +#line 4995 "util/configparser.c" break; case 426: #line 2000 "./util/configparser.y" - { + { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4908,65 +5004,65 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4912 "util/configparser.c" +#line 5008 "util/configparser.c" break; case 427: #line 2010 "./util/configparser.y" - { + { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4922 "util/configparser.c" +#line 5018 "util/configparser.c" break; case 428: #line 2017 "./util/configparser.y" - { + { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4932 "util/configparser.c" +#line 5028 "util/configparser.c" break; case 429: #line 2024 "./util/configparser.y" - { + { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 4942 "util/configparser.c" +#line 5038 "util/configparser.c" break; case 430: #line 2031 "./util/configparser.y" - { + { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4954 "util/configparser.c" +#line 5050 "util/configparser.c" break; case 431: #line 2040 "./util/configparser.y" - { + { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 4965 "util/configparser.c" +#line 5061 "util/configparser.c" break; case 432: #line 2048 "./util/configparser.y" - { + { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); while((p=strsep(&s, " \t\n")) != NULL) { @@ -4978,12 +5074,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4982 "util/configparser.c" +#line 5078 "util/configparser.c" break; case 433: #line 2062 "./util/configparser.y" - { + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5002,12 +5098,12 @@ yyreduce: } } } -#line 5006 "util/configparser.c" +#line 5102 "util/configparser.c" break; case 434: #line 2083 "./util/configparser.y" - { + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5026,12 +5122,12 @@ yyreduce: } } } -#line 5030 "util/configparser.c" +#line 5126 "util/configparser.c" break; case 435: #line 2104 "./util/configparser.y" - { + { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5041,12 +5137,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5045 "util/configparser.c" +#line 5141 "util/configparser.c" break; case 436: #line 2116 "./util/configparser.y" - { + { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5056,12 +5152,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5060 "util/configparser.c" +#line 5156 "util/configparser.c" break; case 437: #line 2128 "./util/configparser.y" - { + { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5071,24 +5167,24 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5075 "util/configparser.c" +#line 5171 "util/configparser.c" break; case 438: #line 2140 "./util/configparser.y" - { + { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, (yyvsp[-1].str), (yyvsp[0].str))) { yyerror("out of memory"); } } -#line 5087 "util/configparser.c" +#line 5183 "util/configparser.c" break; case 439: #line 2149 "./util/configparser.y" - { + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5107,58 +5203,58 @@ yyreduce: } } } -#line 5111 "util/configparser.c" +#line 5207 "util/configparser.c" break; case 440: #line 2170 "./util/configparser.y" - { + { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5123 "util/configparser.c" +#line 5219 "util/configparser.c" break; case 441: #line 2180 "./util/configparser.y" - { + { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5135 "util/configparser.c" +#line 5231 "util/configparser.c" break; case 442: #line 2189 "./util/configparser.y" - { + { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5146 "util/configparser.c" +#line 5242 "util/configparser.c" break; case 443: #line 2197 "./util/configparser.y" - { + { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5157 "util/configparser.c" +#line 5253 "util/configparser.c" break; case 444: #line 2205 "./util/configparser.y" - { + { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5169,12 +5265,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5173 "util/configparser.c" +#line 5269 "util/configparser.c" break; case 445: #line 2218 "./util/configparser.y" - { + { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5185,12 +5281,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5189 "util/configparser.c" +#line 5285 "util/configparser.c" break; case 446: #line 2231 "./util/configparser.y" - { + { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { yyerror("number expected"); @@ -5203,12 +5299,12 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5207 "util/configparser.c" +#line 5303 "util/configparser.c" break; case 447: #line 2246 "./util/configparser.y" - { + { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { yyerror("number expected"); @@ -5221,69 +5317,69 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5225 "util/configparser.c" +#line 5321 "util/configparser.c" break; case 448: #line 2261 "./util/configparser.y" - { + { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5237 "util/configparser.c" +#line 5333 "util/configparser.c" break; case 449: #line 2270 "./util/configparser.y" - { + { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5249 "util/configparser.c" +#line 5345 "util/configparser.c" break; case 450: #line 2279 "./util/configparser.y" - { + { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5258 "util/configparser.c" +#line 5354 "util/configparser.c" break; case 451: #line 2285 "./util/configparser.y" - { + { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) yyerror("number expected"); else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5270 "util/configparser.c" +#line 5366 "util/configparser.c" break; case 452: #line 2294 "./util/configparser.y" - { + { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5282 "util/configparser.c" +#line 5378 "util/configparser.c" break; case 453: #line 2303 "./util/configparser.y" - { + { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5291,12 +5387,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5295 "util/configparser.c" +#line 5391 "util/configparser.c" break; case 454: #line 2313 "./util/configparser.y" - { + { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5304,12 +5400,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5308 "util/configparser.c" +#line 5404 "util/configparser.c" break; case 455: #line 2323 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5320,12 +5416,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5324 "util/configparser.c" +#line 5420 "util/configparser.c" break; case 456: #line 2336 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5336,12 +5432,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5340 "util/configparser.c" +#line 5436 "util/configparser.c" break; case 457: #line 2349 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ipsecmod_hook); @@ -5351,12 +5447,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5355 "util/configparser.c" +#line 5451 "util/configparser.c" break; case 458: #line 2361 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5368,12 +5464,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5372 "util/configparser.c" +#line 5468 "util/configparser.c" break; case 459: #line 2375 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str))) @@ -5383,12 +5479,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5387 "util/configparser.c" +#line 5483 "util/configparser.c" break; case 460: #line 2387 "./util/configparser.y" - { + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5400,12 +5496,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5404 "util/configparser.c" +#line 5500 "util/configparser.c" break; case 461: #line 2401 "./util/configparser.y" - { + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) yyerror("stub name override, there must be one name " @@ -5413,56 +5509,56 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5417 "util/configparser.c" +#line 5513 "util/configparser.c" break; case 462: #line 2411 "./util/configparser.y" - { + { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5427 "util/configparser.c" +#line 5523 "util/configparser.c" break; case 463: #line 2418 "./util/configparser.y" - { + { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5437 "util/configparser.c" +#line 5533 "util/configparser.c" break; case 464: #line 2425 "./util/configparser.y" - { + { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5449 "util/configparser.c" +#line 5545 "util/configparser.c" break; case 465: #line 2434 "./util/configparser.y" - { + { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5461 "util/configparser.c" +#line 5557 "util/configparser.c" break; case 466: #line 2443 "./util/configparser.y" - { + { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5470,12 +5566,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5474 "util/configparser.c" +#line 5570 "util/configparser.c" break; case 467: #line 2453 "./util/configparser.y" - { + { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5483,12 +5579,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5487 "util/configparser.c" +#line 5583 "util/configparser.c" break; case 468: #line 2463 "./util/configparser.y" - { + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) yyerror("forward name override, there must be one " @@ -5496,56 +5592,56 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5500 "util/configparser.c" +#line 5596 "util/configparser.c" break; case 469: #line 2473 "./util/configparser.y" - { + { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5510 "util/configparser.c" +#line 5606 "util/configparser.c" break; case 470: #line 2480 "./util/configparser.y" - { + { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5520 "util/configparser.c" +#line 5616 "util/configparser.c" break; case 471: #line 2487 "./util/configparser.y" - { + { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5532 "util/configparser.c" +#line 5628 "util/configparser.c" break; case 472: #line 2496 "./util/configparser.y" - { + { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5544 "util/configparser.c" +#line 5640 "util/configparser.c" break; case 473: #line 2505 "./util/configparser.y" - { + { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5553,12 +5649,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5557 "util/configparser.c" +#line 5653 "util/configparser.c" break; case 474: #line 2515 "./util/configparser.y" - { + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) yyerror("auth name override, there must be one name " @@ -5566,53 +5662,53 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5570 "util/configparser.c" +#line 5666 "util/configparser.c" break; case 475: #line 2525 "./util/configparser.y" - { + { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5580 "util/configparser.c" +#line 5676 "util/configparser.c" break; case 476: #line 2532 "./util/configparser.y" - { + { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5590 "util/configparser.c" +#line 5686 "util/configparser.c" break; case 477: #line 2539 "./util/configparser.y" - { + { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5600 "util/configparser.c" +#line 5696 "util/configparser.c" break; case 478: #line 2546 "./util/configparser.y" - { + { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5611 "util/configparser.c" +#line 5707 "util/configparser.c" break; case 479: #line 2554 "./util/configparser.y" - { + { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5620,12 +5716,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5624 "util/configparser.c" +#line 5720 "util/configparser.c" break; case 480: #line 2564 "./util/configparser.y" - { + { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5633,12 +5729,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5637 "util/configparser.c" +#line 5733 "util/configparser.c" break; case 481: #line 2574 "./util/configparser.y" - { + { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5646,12 +5742,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5650 "util/configparser.c" +#line 5746 "util/configparser.c" break; case 482: #line 2584 "./util/configparser.y" - { + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) yyerror("view name override, there must be one " @@ -5659,12 +5755,12 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5663 "util/configparser.c" +#line 5759 "util/configparser.c" break; case 483: #line 2594 "./util/configparser.y" - { + { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -5701,12 +5797,12 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5705 "util/configparser.c" +#line 5801 "util/configparser.c" break; case 484: #line 2633 "./util/configparser.y" - { + { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert( @@ -5714,34 +5810,34 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5718 "util/configparser.c" +#line 5814 "util/configparser.c" break; case 485: #line 2643 "./util/configparser.y" - { + { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5729 "util/configparser.c" +#line 5825 "util/configparser.c" break; case 486: #line 2651 "./util/configparser.y" - { + { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 5740 "util/configparser.c" +#line 5836 "util/configparser.c" break; case 487: #line 2659 "./util/configparser.y" - { + { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -5754,32 +5850,32 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5758 "util/configparser.c" +#line 5854 "util/configparser.c" break; case 488: #line 2674 "./util/configparser.y" - { + { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5770 "util/configparser.c" +#line 5866 "util/configparser.c" break; case 489: #line 2683 "./util/configparser.y" - { + { OUTYY(("\nP(remote-control:)\n")); } -#line 5778 "util/configparser.c" +#line 5874 "util/configparser.c" break; case 500: #line 2694 "./util/configparser.y" - { + { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5787,220 +5883,233 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5791 "util/configparser.c" +#line 5887 "util/configparser.c" break; case 501: #line 2704 "./util/configparser.y" - { + { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("control port number expected"); else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5803 "util/configparser.c" +#line 5899 "util/configparser.c" break; case 502: #line 2713 "./util/configparser.y" - { + { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5813 "util/configparser.c" +#line 5909 "util/configparser.c" break; case 503: #line 2720 "./util/configparser.y" - { + { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5823 "util/configparser.c" +#line 5919 "util/configparser.c" break; case 504: #line 2727 "./util/configparser.y" - { + { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 5833 "util/configparser.c" +#line 5929 "util/configparser.c" break; case 505: #line 2734 "./util/configparser.y" - { + { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 5843 "util/configparser.c" +#line 5939 "util/configparser.c" break; case 506: #line 2741 "./util/configparser.y" - { + { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 5853 "util/configparser.c" +#line 5949 "util/configparser.c" break; case 507: #line 2748 "./util/configparser.y" - { + { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 5863 "util/configparser.c" +#line 5959 "util/configparser.c" break; case 508: #line 2755 "./util/configparser.y" - { + { OUTYY(("\nP(dnstap:)\n")); } -#line 5871 "util/configparser.c" +#line 5967 "util/configparser.c" break; - case 529: + case 530: #line 2775 "./util/configparser.y" - { + { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5883 "util/configparser.c" +#line 5979 "util/configparser.c" break; - case 530: + case 531: #line 2784 "./util/configparser.y" - { + { + OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); + if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_bidirectional = + (strcmp((yyvsp[0].str), "yes")==0); + free((yyvsp[0].str)); + } +#line 5992 "util/configparser.c" + break; + + case 532: +#line 2794 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 5893 "util/configparser.c" +#line 6002 "util/configparser.c" break; - case 531: -#line 2791 "./util/configparser.y" - { + case 533: +#line 2801 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 5903 "util/configparser.c" +#line 6012 "util/configparser.c" break; - case 532: -#line 2798 "./util/configparser.y" - { + case 534: +#line 2808 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5915 "util/configparser.c" +#line 6024 "util/configparser.c" break; - case 533: -#line 2807 "./util/configparser.y" - { + case 535: +#line 2817 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 5925 "util/configparser.c" +#line 6034 "util/configparser.c" break; - case 534: -#line 2814 "./util/configparser.y" - { + case 536: +#line 2824 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 5935 "util/configparser.c" +#line 6044 "util/configparser.c" break; - case 535: -#line 2821 "./util/configparser.y" - { + case 537: +#line 2831 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 5945 "util/configparser.c" +#line 6054 "util/configparser.c" break; - case 536: -#line 2828 "./util/configparser.y" - { + case 538: +#line 2838 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 5955 "util/configparser.c" +#line 6064 "util/configparser.c" break; - case 537: -#line 2835 "./util/configparser.y" - { + case 539: +#line 2845 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5967 "util/configparser.c" +#line 6076 "util/configparser.c" break; - case 538: -#line 2844 "./util/configparser.y" - { + case 540: +#line 2854 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5979 "util/configparser.c" +#line 6088 "util/configparser.c" break; - case 539: -#line 2853 "./util/configparser.y" - { + case 541: +#line 2863 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 5989 "util/configparser.c" +#line 6098 "util/configparser.c" break; - case 540: -#line 2860 "./util/configparser.y" - { + case 542: +#line 2870 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 5999 "util/configparser.c" +#line 6108 "util/configparser.c" break; - case 541: -#line 2867 "./util/configparser.y" - { + case 543: +#line 2877 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6008,12 +6117,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6012 "util/configparser.c" +#line 6121 "util/configparser.c" break; - case 542: -#line 2877 "./util/configparser.y" - { + case 544: +#line 2887 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6021,12 +6130,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6025 "util/configparser.c" +#line 6134 "util/configparser.c" break; - case 543: -#line 2887 "./util/configparser.y" - { + case 545: +#line 2897 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6034,12 +6143,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6038 "util/configparser.c" +#line 6147 "util/configparser.c" break; - case 544: -#line 2897 "./util/configparser.y" - { + case 546: +#line 2907 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6047,12 +6156,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6051 "util/configparser.c" +#line 6160 "util/configparser.c" break; - case 545: -#line 2907 "./util/configparser.y" - { + case 547: +#line 2917 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6060,12 +6169,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6064 "util/configparser.c" +#line 6173 "util/configparser.c" break; - case 546: -#line 2917 "./util/configparser.y" - { + case 548: +#line 2927 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6073,48 +6182,48 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6077 "util/configparser.c" +#line 6186 "util/configparser.c" break; - case 547: -#line 2927 "./util/configparser.y" - { + case 549: +#line 2937 "./util/configparser.y" + { OUTYY(("\nP(python:)\n")); } -#line 6085 "util/configparser.c" +#line 6194 "util/configparser.c" break; - case 551: -#line 2936 "./util/configparser.y" - { + case 553: +#line 2946 "./util/configparser.y" + { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6095 "util/configparser.c" +#line 6204 "util/configparser.c" break; - case 552: -#line 2942 "./util/configparser.y" - { + case 554: +#line 2952 "./util/configparser.y" + { OUTYY(("\nP(dynlib:)\n")); } -#line 6103 "util/configparser.c" +#line 6212 "util/configparser.c" break; - case 556: -#line 2951 "./util/configparser.y" - { + case 558: +#line 2961 "./util/configparser.y" + { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6113 "util/configparser.c" +#line 6222 "util/configparser.c" break; - case 557: -#line 2957 "./util/configparser.y" - { + case 559: +#line 2967 "./util/configparser.y" + { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6122,132 +6231,132 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6126 "util/configparser.c" +#line 6235 "util/configparser.c" break; - case 558: -#line 2967 "./util/configparser.y" - { + case 560: +#line 2977 "./util/configparser.y" + { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6136 "util/configparser.c" +#line 6245 "util/configparser.c" break; - case 559: -#line 2974 "./util/configparser.y" - { + case 561: +#line 2984 "./util/configparser.y" + { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6148 "util/configparser.c" +#line 6257 "util/configparser.c" break; - case 560: -#line 2983 "./util/configparser.y" - { + case 562: +#line 2993 "./util/configparser.y" + { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6159 "util/configparser.c" +#line 6268 "util/configparser.c" break; - case 561: -#line 2991 "./util/configparser.y" - { + case 563: +#line 3001 "./util/configparser.y" + { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6167 "util/configparser.c" +#line 6276 "util/configparser.c" break; - case 574: -#line 3007 "./util/configparser.y" - { + case 576: +#line 3017 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6179 "util/configparser.c" +#line 6288 "util/configparser.c" break; - case 575: -#line 3017 "./util/configparser.y" - { + case 577: +#line 3027 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6191 "util/configparser.c" +#line 6300 "util/configparser.c" break; - case 576: -#line 3026 "./util/configparser.y" - { + case 578: +#line 3036 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6201 "util/configparser.c" +#line 6310 "util/configparser.c" break; - case 577: -#line 3033 "./util/configparser.y" - { + case 579: +#line 3043 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6213 "util/configparser.c" +#line 6322 "util/configparser.c" break; - case 578: -#line 3042 "./util/configparser.y" - { + case 580: +#line 3052 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6223 "util/configparser.c" +#line 6332 "util/configparser.c" break; - case 579: -#line 3049 "./util/configparser.y" - { + case 581: +#line 3059 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6235 "util/configparser.c" +#line 6344 "util/configparser.c" break; - case 580: -#line 3058 "./util/configparser.y" - { + case 582: +#line 3068 "./util/configparser.y" + { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6246 "util/configparser.c" +#line 6355 "util/configparser.c" break; - case 581: -#line 3066 "./util/configparser.y" - { + case 583: +#line 3076 "./util/configparser.y" + { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6258,23 +6367,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6262 "util/configparser.c" +#line 6371 "util/configparser.c" break; - case 582: -#line 3079 "./util/configparser.y" - { + case 584: +#line 3089 "./util/configparser.y" + { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6273 "util/configparser.c" +#line 6382 "util/configparser.c" break; - case 583: -#line 3087 "./util/configparser.y" - { + case 585: +#line 3097 "./util/configparser.y" + { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6285,20 +6394,20 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6289 "util/configparser.c" +#line 6398 "util/configparser.c" break; - case 584: -#line 3100 "./util/configparser.y" - { + case 586: +#line 3110 "./util/configparser.y" + { OUTYY(("\nP(cachedb:)\n")); } -#line 6297 "util/configparser.c" +#line 6406 "util/configparser.c" break; - case 593: -#line 3111 "./util/configparser.y" - { + case 595: +#line 3121 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_backend); @@ -6308,12 +6417,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6312 "util/configparser.c" +#line 6421 "util/configparser.c" break; - case 594: -#line 3123 "./util/configparser.y" - { + case 596: +#line 3133 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_secret); @@ -6323,12 +6432,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6327 "util/configparser.c" +#line 6436 "util/configparser.c" break; - case 595: -#line 3135 "./util/configparser.y" - { + case 597: +#line 3145 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->redis_server_host); @@ -6338,12 +6447,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6342 "util/configparser.c" +#line 6451 "util/configparser.c" break; - case 596: -#line 3147 "./util/configparser.y" - { + case 598: +#line 3157 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str))); @@ -6356,12 +6465,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6360 "util/configparser.c" +#line 6469 "util/configparser.c" break; - case 597: -#line 3162 "./util/configparser.y" - { + case 599: +#line 3172 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6372,12 +6481,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6376 "util/configparser.c" +#line 6485 "util/configparser.c" break; - case 598: -#line 3175 "./util/configparser.y" - { + case 600: +#line 3185 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6388,12 +6497,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6392 "util/configparser.c" +#line 6501 "util/configparser.c" break; - case 599: -#line 3188 "./util/configparser.y" - { + case 601: +#line 3198 "./util/configparser.y" + { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) yyerror("positive number expected"); @@ -6402,20 +6511,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6406 "util/configparser.c" +#line 6515 "util/configparser.c" break; - case 600: -#line 3199 "./util/configparser.y" - { + case 602: +#line 3209 "./util/configparser.y" + { OUTYY(("\nP(ipset:)\n")); } -#line 6414 "util/configparser.c" +#line 6523 "util/configparser.c" break; - case 605: -#line 3208 "./util/configparser.y" - { + case 607: +#line 3218 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v4) @@ -6428,12 +6537,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6432 "util/configparser.c" +#line 6541 "util/configparser.c" break; - case 606: -#line 3223 "./util/configparser.y" - { + case 608: +#line 3233 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v6) @@ -6446,11 +6555,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6450 "util/configparser.c" +#line 6559 "util/configparser.c" break; -#line 6454 "util/configparser.c" +#line 6563 "util/configparser.c" default: break; } @@ -6514,7 +6623,7 @@ yyerrlab: { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); - yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); + yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); if (!yymsg) { yymsg = yymsgbuf; @@ -6669,7 +6778,7 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); + yystos[+*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -6682,7 +6791,7 @@ yyreturn: #endif return yyresult; } -#line 3237 "./util/configparser.y" +#line 3247 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 66662409e..ca27ad9f5 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.4.1. */ +/* A Bison parser, made by GNU Bison 3.5.1. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -209,133 +209,134 @@ extern int yydebug; VAR_DNSTAP_TLS_CLIENT_CERT_FILE = 415, VAR_DNSTAP_SEND_IDENTITY = 416, VAR_DNSTAP_SEND_VERSION = 417, - VAR_DNSTAP_IDENTITY = 418, - VAR_DNSTAP_VERSION = 419, - VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 420, - VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 421, - VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 422, - VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 423, - VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 424, - VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 425, - VAR_RESPONSE_IP_TAG = 426, - VAR_RESPONSE_IP = 427, - VAR_RESPONSE_IP_DATA = 428, - VAR_HARDEN_ALGO_DOWNGRADE = 429, - VAR_IP_TRANSPARENT = 430, - VAR_IP_DSCP = 431, - VAR_DISABLE_DNSSEC_LAME_CHECK = 432, - VAR_IP_RATELIMIT = 433, - VAR_IP_RATELIMIT_SLABS = 434, - VAR_IP_RATELIMIT_SIZE = 435, - VAR_RATELIMIT = 436, - VAR_RATELIMIT_SLABS = 437, - VAR_RATELIMIT_SIZE = 438, - VAR_RATELIMIT_FOR_DOMAIN = 439, - VAR_RATELIMIT_BELOW_DOMAIN = 440, - VAR_IP_RATELIMIT_FACTOR = 441, - VAR_RATELIMIT_FACTOR = 442, - VAR_SEND_CLIENT_SUBNET = 443, - VAR_CLIENT_SUBNET_ZONE = 444, - VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 445, - VAR_CLIENT_SUBNET_OPCODE = 446, - VAR_MAX_CLIENT_SUBNET_IPV4 = 447, - VAR_MAX_CLIENT_SUBNET_IPV6 = 448, - VAR_MIN_CLIENT_SUBNET_IPV4 = 449, - VAR_MIN_CLIENT_SUBNET_IPV6 = 450, - VAR_MAX_ECS_TREE_SIZE_IPV4 = 451, - VAR_MAX_ECS_TREE_SIZE_IPV6 = 452, - VAR_CAPS_WHITELIST = 453, - VAR_CACHE_MAX_NEGATIVE_TTL = 454, - VAR_PERMIT_SMALL_HOLDDOWN = 455, - VAR_QNAME_MINIMISATION = 456, - VAR_QNAME_MINIMISATION_STRICT = 457, - VAR_IP_FREEBIND = 458, - VAR_DEFINE_TAG = 459, - VAR_LOCAL_ZONE_TAG = 460, - VAR_ACCESS_CONTROL_TAG = 461, - VAR_LOCAL_ZONE_OVERRIDE = 462, - VAR_ACCESS_CONTROL_TAG_ACTION = 463, - VAR_ACCESS_CONTROL_TAG_DATA = 464, - VAR_VIEW = 465, - VAR_ACCESS_CONTROL_VIEW = 466, - VAR_VIEW_FIRST = 467, - VAR_SERVE_EXPIRED = 468, - VAR_SERVE_EXPIRED_TTL = 469, - VAR_SERVE_EXPIRED_TTL_RESET = 470, - VAR_SERVE_EXPIRED_REPLY_TTL = 471, - VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 472, - VAR_FAKE_DSA = 473, - VAR_FAKE_SHA1 = 474, - VAR_LOG_IDENTITY = 475, - VAR_HIDE_TRUSTANCHOR = 476, - VAR_TRUST_ANCHOR_SIGNALING = 477, - VAR_AGGRESSIVE_NSEC = 478, - VAR_USE_SYSTEMD = 479, - VAR_SHM_ENABLE = 480, - VAR_SHM_KEY = 481, - VAR_ROOT_KEY_SENTINEL = 482, - VAR_DNSCRYPT = 483, - VAR_DNSCRYPT_ENABLE = 484, - VAR_DNSCRYPT_PORT = 485, - VAR_DNSCRYPT_PROVIDER = 486, - VAR_DNSCRYPT_SECRET_KEY = 487, - VAR_DNSCRYPT_PROVIDER_CERT = 488, - VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 489, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 490, - VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 491, - VAR_DNSCRYPT_NONCE_CACHE_SIZE = 492, - VAR_DNSCRYPT_NONCE_CACHE_SLABS = 493, - VAR_IPSECMOD_ENABLED = 494, - VAR_IPSECMOD_HOOK = 495, - VAR_IPSECMOD_IGNORE_BOGUS = 496, - VAR_IPSECMOD_MAX_TTL = 497, - VAR_IPSECMOD_WHITELIST = 498, - VAR_IPSECMOD_STRICT = 499, - VAR_CACHEDB = 500, - VAR_CACHEDB_BACKEND = 501, - VAR_CACHEDB_SECRETSEED = 502, - VAR_CACHEDB_REDISHOST = 503, - VAR_CACHEDB_REDISPORT = 504, - VAR_CACHEDB_REDISTIMEOUT = 505, - VAR_CACHEDB_REDISEXPIRERECORDS = 506, - VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 507, - VAR_FOR_UPSTREAM = 508, - VAR_AUTH_ZONE = 509, - VAR_ZONEFILE = 510, - VAR_MASTER = 511, - VAR_URL = 512, - VAR_FOR_DOWNSTREAM = 513, - VAR_FALLBACK_ENABLED = 514, - VAR_TLS_ADDITIONAL_PORT = 515, - VAR_LOW_RTT = 516, - VAR_LOW_RTT_PERMIL = 517, - VAR_FAST_SERVER_PERMIL = 518, - VAR_FAST_SERVER_NUM = 519, - VAR_ALLOW_NOTIFY = 520, - VAR_TLS_WIN_CERT = 521, - VAR_TCP_CONNECTION_LIMIT = 522, - VAR_FORWARD_NO_CACHE = 523, - VAR_STUB_NO_CACHE = 524, - VAR_LOG_SERVFAIL = 525, - VAR_DENY_ANY = 526, - VAR_UNKNOWN_SERVER_TIME_LIMIT = 527, - VAR_LOG_TAG_QUERYREPLY = 528, - VAR_STREAM_WAIT_SIZE = 529, - VAR_TLS_CIPHERS = 530, - VAR_TLS_CIPHERSUITES = 531, - VAR_TLS_USE_SNI = 532, - VAR_IPSET = 533, - VAR_IPSET_NAME_V4 = 534, - VAR_IPSET_NAME_V6 = 535, - VAR_TLS_SESSION_TICKET_KEYS = 536, - VAR_RPZ = 537, - VAR_TAGS = 538, - VAR_RPZ_ACTION_OVERRIDE = 539, - VAR_RPZ_CNAME_OVERRIDE = 540, - VAR_RPZ_LOG = 541, - VAR_RPZ_LOG_NAME = 542, - VAR_DYNLIB = 543, - VAR_DYNLIB_FILE = 544 + VAR_DNSTAP_BIDIRECTIONAL = 418, + VAR_DNSTAP_IDENTITY = 419, + VAR_DNSTAP_VERSION = 420, + VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES = 421, + VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES = 422, + VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES = 423, + VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES = 424, + VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES = 425, + VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES = 426, + VAR_RESPONSE_IP_TAG = 427, + VAR_RESPONSE_IP = 428, + VAR_RESPONSE_IP_DATA = 429, + VAR_HARDEN_ALGO_DOWNGRADE = 430, + VAR_IP_TRANSPARENT = 431, + VAR_IP_DSCP = 432, + VAR_DISABLE_DNSSEC_LAME_CHECK = 433, + VAR_IP_RATELIMIT = 434, + VAR_IP_RATELIMIT_SLABS = 435, + VAR_IP_RATELIMIT_SIZE = 436, + VAR_RATELIMIT = 437, + VAR_RATELIMIT_SLABS = 438, + VAR_RATELIMIT_SIZE = 439, + VAR_RATELIMIT_FOR_DOMAIN = 440, + VAR_RATELIMIT_BELOW_DOMAIN = 441, + VAR_IP_RATELIMIT_FACTOR = 442, + VAR_RATELIMIT_FACTOR = 443, + VAR_SEND_CLIENT_SUBNET = 444, + VAR_CLIENT_SUBNET_ZONE = 445, + VAR_CLIENT_SUBNET_ALWAYS_FORWARD = 446, + VAR_CLIENT_SUBNET_OPCODE = 447, + VAR_MAX_CLIENT_SUBNET_IPV4 = 448, + VAR_MAX_CLIENT_SUBNET_IPV6 = 449, + VAR_MIN_CLIENT_SUBNET_IPV4 = 450, + VAR_MIN_CLIENT_SUBNET_IPV6 = 451, + VAR_MAX_ECS_TREE_SIZE_IPV4 = 452, + VAR_MAX_ECS_TREE_SIZE_IPV6 = 453, + VAR_CAPS_WHITELIST = 454, + VAR_CACHE_MAX_NEGATIVE_TTL = 455, + VAR_PERMIT_SMALL_HOLDDOWN = 456, + VAR_QNAME_MINIMISATION = 457, + VAR_QNAME_MINIMISATION_STRICT = 458, + VAR_IP_FREEBIND = 459, + VAR_DEFINE_TAG = 460, + VAR_LOCAL_ZONE_TAG = 461, + VAR_ACCESS_CONTROL_TAG = 462, + VAR_LOCAL_ZONE_OVERRIDE = 463, + VAR_ACCESS_CONTROL_TAG_ACTION = 464, + VAR_ACCESS_CONTROL_TAG_DATA = 465, + VAR_VIEW = 466, + VAR_ACCESS_CONTROL_VIEW = 467, + VAR_VIEW_FIRST = 468, + VAR_SERVE_EXPIRED = 469, + VAR_SERVE_EXPIRED_TTL = 470, + VAR_SERVE_EXPIRED_TTL_RESET = 471, + VAR_SERVE_EXPIRED_REPLY_TTL = 472, + VAR_SERVE_EXPIRED_CLIENT_TIMEOUT = 473, + VAR_FAKE_DSA = 474, + VAR_FAKE_SHA1 = 475, + VAR_LOG_IDENTITY = 476, + VAR_HIDE_TRUSTANCHOR = 477, + VAR_TRUST_ANCHOR_SIGNALING = 478, + VAR_AGGRESSIVE_NSEC = 479, + VAR_USE_SYSTEMD = 480, + VAR_SHM_ENABLE = 481, + VAR_SHM_KEY = 482, + VAR_ROOT_KEY_SENTINEL = 483, + VAR_DNSCRYPT = 484, + VAR_DNSCRYPT_ENABLE = 485, + VAR_DNSCRYPT_PORT = 486, + VAR_DNSCRYPT_PROVIDER = 487, + VAR_DNSCRYPT_SECRET_KEY = 488, + VAR_DNSCRYPT_PROVIDER_CERT = 489, + VAR_DNSCRYPT_PROVIDER_CERT_ROTATED = 490, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE = 491, + VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS = 492, + VAR_DNSCRYPT_NONCE_CACHE_SIZE = 493, + VAR_DNSCRYPT_NONCE_CACHE_SLABS = 494, + VAR_IPSECMOD_ENABLED = 495, + VAR_IPSECMOD_HOOK = 496, + VAR_IPSECMOD_IGNORE_BOGUS = 497, + VAR_IPSECMOD_MAX_TTL = 498, + VAR_IPSECMOD_WHITELIST = 499, + VAR_IPSECMOD_STRICT = 500, + VAR_CACHEDB = 501, + VAR_CACHEDB_BACKEND = 502, + VAR_CACHEDB_SECRETSEED = 503, + VAR_CACHEDB_REDISHOST = 504, + VAR_CACHEDB_REDISPORT = 505, + VAR_CACHEDB_REDISTIMEOUT = 506, + VAR_CACHEDB_REDISEXPIRERECORDS = 507, + VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM = 508, + VAR_FOR_UPSTREAM = 509, + VAR_AUTH_ZONE = 510, + VAR_ZONEFILE = 511, + VAR_MASTER = 512, + VAR_URL = 513, + VAR_FOR_DOWNSTREAM = 514, + VAR_FALLBACK_ENABLED = 515, + VAR_TLS_ADDITIONAL_PORT = 516, + VAR_LOW_RTT = 517, + VAR_LOW_RTT_PERMIL = 518, + VAR_FAST_SERVER_PERMIL = 519, + VAR_FAST_SERVER_NUM = 520, + VAR_ALLOW_NOTIFY = 521, + VAR_TLS_WIN_CERT = 522, + VAR_TCP_CONNECTION_LIMIT = 523, + VAR_FORWARD_NO_CACHE = 524, + VAR_STUB_NO_CACHE = 525, + VAR_LOG_SERVFAIL = 526, + VAR_DENY_ANY = 527, + VAR_UNKNOWN_SERVER_TIME_LIMIT = 528, + VAR_LOG_TAG_QUERYREPLY = 529, + VAR_STREAM_WAIT_SIZE = 530, + VAR_TLS_CIPHERS = 531, + VAR_TLS_CIPHERSUITES = 532, + VAR_TLS_USE_SNI = 533, + VAR_IPSET = 534, + VAR_IPSET_NAME_V4 = 535, + VAR_IPSET_NAME_V6 = 536, + VAR_TLS_SESSION_TICKET_KEYS = 537, + VAR_RPZ = 538, + VAR_TAGS = 539, + VAR_RPZ_ACTION_OVERRIDE = 540, + VAR_RPZ_CNAME_OVERRIDE = 541, + VAR_RPZ_LOG = 542, + VAR_RPZ_LOG_NAME = 543, + VAR_DYNLIB = 544, + VAR_DYNLIB_FILE = 545 }; #endif /* Tokens. */ @@ -499,133 +500,134 @@ extern int yydebug; #define VAR_DNSTAP_TLS_CLIENT_CERT_FILE 415 #define VAR_DNSTAP_SEND_IDENTITY 416 #define VAR_DNSTAP_SEND_VERSION 417 -#define VAR_DNSTAP_IDENTITY 418 -#define VAR_DNSTAP_VERSION 419 -#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 420 -#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 421 -#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 422 -#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 423 -#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 424 -#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 425 -#define VAR_RESPONSE_IP_TAG 426 -#define VAR_RESPONSE_IP 427 -#define VAR_RESPONSE_IP_DATA 428 -#define VAR_HARDEN_ALGO_DOWNGRADE 429 -#define VAR_IP_TRANSPARENT 430 -#define VAR_IP_DSCP 431 -#define VAR_DISABLE_DNSSEC_LAME_CHECK 432 -#define VAR_IP_RATELIMIT 433 -#define VAR_IP_RATELIMIT_SLABS 434 -#define VAR_IP_RATELIMIT_SIZE 435 -#define VAR_RATELIMIT 436 -#define VAR_RATELIMIT_SLABS 437 -#define VAR_RATELIMIT_SIZE 438 -#define VAR_RATELIMIT_FOR_DOMAIN 439 -#define VAR_RATELIMIT_BELOW_DOMAIN 440 -#define VAR_IP_RATELIMIT_FACTOR 441 -#define VAR_RATELIMIT_FACTOR 442 -#define VAR_SEND_CLIENT_SUBNET 443 -#define VAR_CLIENT_SUBNET_ZONE 444 -#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 445 -#define VAR_CLIENT_SUBNET_OPCODE 446 -#define VAR_MAX_CLIENT_SUBNET_IPV4 447 -#define VAR_MAX_CLIENT_SUBNET_IPV6 448 -#define VAR_MIN_CLIENT_SUBNET_IPV4 449 -#define VAR_MIN_CLIENT_SUBNET_IPV6 450 -#define VAR_MAX_ECS_TREE_SIZE_IPV4 451 -#define VAR_MAX_ECS_TREE_SIZE_IPV6 452 -#define VAR_CAPS_WHITELIST 453 -#define VAR_CACHE_MAX_NEGATIVE_TTL 454 -#define VAR_PERMIT_SMALL_HOLDDOWN 455 -#define VAR_QNAME_MINIMISATION 456 -#define VAR_QNAME_MINIMISATION_STRICT 457 -#define VAR_IP_FREEBIND 458 -#define VAR_DEFINE_TAG 459 -#define VAR_LOCAL_ZONE_TAG 460 -#define VAR_ACCESS_CONTROL_TAG 461 -#define VAR_LOCAL_ZONE_OVERRIDE 462 -#define VAR_ACCESS_CONTROL_TAG_ACTION 463 -#define VAR_ACCESS_CONTROL_TAG_DATA 464 -#define VAR_VIEW 465 -#define VAR_ACCESS_CONTROL_VIEW 466 -#define VAR_VIEW_FIRST 467 -#define VAR_SERVE_EXPIRED 468 -#define VAR_SERVE_EXPIRED_TTL 469 -#define VAR_SERVE_EXPIRED_TTL_RESET 470 -#define VAR_SERVE_EXPIRED_REPLY_TTL 471 -#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 472 -#define VAR_FAKE_DSA 473 -#define VAR_FAKE_SHA1 474 -#define VAR_LOG_IDENTITY 475 -#define VAR_HIDE_TRUSTANCHOR 476 -#define VAR_TRUST_ANCHOR_SIGNALING 477 -#define VAR_AGGRESSIVE_NSEC 478 -#define VAR_USE_SYSTEMD 479 -#define VAR_SHM_ENABLE 480 -#define VAR_SHM_KEY 481 -#define VAR_ROOT_KEY_SENTINEL 482 -#define VAR_DNSCRYPT 483 -#define VAR_DNSCRYPT_ENABLE 484 -#define VAR_DNSCRYPT_PORT 485 -#define VAR_DNSCRYPT_PROVIDER 486 -#define VAR_DNSCRYPT_SECRET_KEY 487 -#define VAR_DNSCRYPT_PROVIDER_CERT 488 -#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 489 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 490 -#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 491 -#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 492 -#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 493 -#define VAR_IPSECMOD_ENABLED 494 -#define VAR_IPSECMOD_HOOK 495 -#define VAR_IPSECMOD_IGNORE_BOGUS 496 -#define VAR_IPSECMOD_MAX_TTL 497 -#define VAR_IPSECMOD_WHITELIST 498 -#define VAR_IPSECMOD_STRICT 499 -#define VAR_CACHEDB 500 -#define VAR_CACHEDB_BACKEND 501 -#define VAR_CACHEDB_SECRETSEED 502 -#define VAR_CACHEDB_REDISHOST 503 -#define VAR_CACHEDB_REDISPORT 504 -#define VAR_CACHEDB_REDISTIMEOUT 505 -#define VAR_CACHEDB_REDISEXPIRERECORDS 506 -#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 507 -#define VAR_FOR_UPSTREAM 508 -#define VAR_AUTH_ZONE 509 -#define VAR_ZONEFILE 510 -#define VAR_MASTER 511 -#define VAR_URL 512 -#define VAR_FOR_DOWNSTREAM 513 -#define VAR_FALLBACK_ENABLED 514 -#define VAR_TLS_ADDITIONAL_PORT 515 -#define VAR_LOW_RTT 516 -#define VAR_LOW_RTT_PERMIL 517 -#define VAR_FAST_SERVER_PERMIL 518 -#define VAR_FAST_SERVER_NUM 519 -#define VAR_ALLOW_NOTIFY 520 -#define VAR_TLS_WIN_CERT 521 -#define VAR_TCP_CONNECTION_LIMIT 522 -#define VAR_FORWARD_NO_CACHE 523 -#define VAR_STUB_NO_CACHE 524 -#define VAR_LOG_SERVFAIL 525 -#define VAR_DENY_ANY 526 -#define VAR_UNKNOWN_SERVER_TIME_LIMIT 527 -#define VAR_LOG_TAG_QUERYREPLY 528 -#define VAR_STREAM_WAIT_SIZE 529 -#define VAR_TLS_CIPHERS 530 -#define VAR_TLS_CIPHERSUITES 531 -#define VAR_TLS_USE_SNI 532 -#define VAR_IPSET 533 -#define VAR_IPSET_NAME_V4 534 -#define VAR_IPSET_NAME_V6 535 -#define VAR_TLS_SESSION_TICKET_KEYS 536 -#define VAR_RPZ 537 -#define VAR_TAGS 538 -#define VAR_RPZ_ACTION_OVERRIDE 539 -#define VAR_RPZ_CNAME_OVERRIDE 540 -#define VAR_RPZ_LOG 541 -#define VAR_RPZ_LOG_NAME 542 -#define VAR_DYNLIB 543 -#define VAR_DYNLIB_FILE 544 +#define VAR_DNSTAP_BIDIRECTIONAL 418 +#define VAR_DNSTAP_IDENTITY 419 +#define VAR_DNSTAP_VERSION 420 +#define VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES 421 +#define VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES 422 +#define VAR_DNSTAP_LOG_CLIENT_QUERY_MESSAGES 423 +#define VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES 424 +#define VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES 425 +#define VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES 426 +#define VAR_RESPONSE_IP_TAG 427 +#define VAR_RESPONSE_IP 428 +#define VAR_RESPONSE_IP_DATA 429 +#define VAR_HARDEN_ALGO_DOWNGRADE 430 +#define VAR_IP_TRANSPARENT 431 +#define VAR_IP_DSCP 432 +#define VAR_DISABLE_DNSSEC_LAME_CHECK 433 +#define VAR_IP_RATELIMIT 434 +#define VAR_IP_RATELIMIT_SLABS 435 +#define VAR_IP_RATELIMIT_SIZE 436 +#define VAR_RATELIMIT 437 +#define VAR_RATELIMIT_SLABS 438 +#define VAR_RATELIMIT_SIZE 439 +#define VAR_RATELIMIT_FOR_DOMAIN 440 +#define VAR_RATELIMIT_BELOW_DOMAIN 441 +#define VAR_IP_RATELIMIT_FACTOR 442 +#define VAR_RATELIMIT_FACTOR 443 +#define VAR_SEND_CLIENT_SUBNET 444 +#define VAR_CLIENT_SUBNET_ZONE 445 +#define VAR_CLIENT_SUBNET_ALWAYS_FORWARD 446 +#define VAR_CLIENT_SUBNET_OPCODE 447 +#define VAR_MAX_CLIENT_SUBNET_IPV4 448 +#define VAR_MAX_CLIENT_SUBNET_IPV6 449 +#define VAR_MIN_CLIENT_SUBNET_IPV4 450 +#define VAR_MIN_CLIENT_SUBNET_IPV6 451 +#define VAR_MAX_ECS_TREE_SIZE_IPV4 452 +#define VAR_MAX_ECS_TREE_SIZE_IPV6 453 +#define VAR_CAPS_WHITELIST 454 +#define VAR_CACHE_MAX_NEGATIVE_TTL 455 +#define VAR_PERMIT_SMALL_HOLDDOWN 456 +#define VAR_QNAME_MINIMISATION 457 +#define VAR_QNAME_MINIMISATION_STRICT 458 +#define VAR_IP_FREEBIND 459 +#define VAR_DEFINE_TAG 460 +#define VAR_LOCAL_ZONE_TAG 461 +#define VAR_ACCESS_CONTROL_TAG 462 +#define VAR_LOCAL_ZONE_OVERRIDE 463 +#define VAR_ACCESS_CONTROL_TAG_ACTION 464 +#define VAR_ACCESS_CONTROL_TAG_DATA 465 +#define VAR_VIEW 466 +#define VAR_ACCESS_CONTROL_VIEW 467 +#define VAR_VIEW_FIRST 468 +#define VAR_SERVE_EXPIRED 469 +#define VAR_SERVE_EXPIRED_TTL 470 +#define VAR_SERVE_EXPIRED_TTL_RESET 471 +#define VAR_SERVE_EXPIRED_REPLY_TTL 472 +#define VAR_SERVE_EXPIRED_CLIENT_TIMEOUT 473 +#define VAR_FAKE_DSA 474 +#define VAR_FAKE_SHA1 475 +#define VAR_LOG_IDENTITY 476 +#define VAR_HIDE_TRUSTANCHOR 477 +#define VAR_TRUST_ANCHOR_SIGNALING 478 +#define VAR_AGGRESSIVE_NSEC 479 +#define VAR_USE_SYSTEMD 480 +#define VAR_SHM_ENABLE 481 +#define VAR_SHM_KEY 482 +#define VAR_ROOT_KEY_SENTINEL 483 +#define VAR_DNSCRYPT 484 +#define VAR_DNSCRYPT_ENABLE 485 +#define VAR_DNSCRYPT_PORT 486 +#define VAR_DNSCRYPT_PROVIDER 487 +#define VAR_DNSCRYPT_SECRET_KEY 488 +#define VAR_DNSCRYPT_PROVIDER_CERT 489 +#define VAR_DNSCRYPT_PROVIDER_CERT_ROTATED 490 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SIZE 491 +#define VAR_DNSCRYPT_SHARED_SECRET_CACHE_SLABS 492 +#define VAR_DNSCRYPT_NONCE_CACHE_SIZE 493 +#define VAR_DNSCRYPT_NONCE_CACHE_SLABS 494 +#define VAR_IPSECMOD_ENABLED 495 +#define VAR_IPSECMOD_HOOK 496 +#define VAR_IPSECMOD_IGNORE_BOGUS 497 +#define VAR_IPSECMOD_MAX_TTL 498 +#define VAR_IPSECMOD_WHITELIST 499 +#define VAR_IPSECMOD_STRICT 500 +#define VAR_CACHEDB 501 +#define VAR_CACHEDB_BACKEND 502 +#define VAR_CACHEDB_SECRETSEED 503 +#define VAR_CACHEDB_REDISHOST 504 +#define VAR_CACHEDB_REDISPORT 505 +#define VAR_CACHEDB_REDISTIMEOUT 506 +#define VAR_CACHEDB_REDISEXPIRERECORDS 507 +#define VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM 508 +#define VAR_FOR_UPSTREAM 509 +#define VAR_AUTH_ZONE 510 +#define VAR_ZONEFILE 511 +#define VAR_MASTER 512 +#define VAR_URL 513 +#define VAR_FOR_DOWNSTREAM 514 +#define VAR_FALLBACK_ENABLED 515 +#define VAR_TLS_ADDITIONAL_PORT 516 +#define VAR_LOW_RTT 517 +#define VAR_LOW_RTT_PERMIL 518 +#define VAR_FAST_SERVER_PERMIL 519 +#define VAR_FAST_SERVER_NUM 520 +#define VAR_ALLOW_NOTIFY 521 +#define VAR_TLS_WIN_CERT 522 +#define VAR_TCP_CONNECTION_LIMIT 523 +#define VAR_FORWARD_NO_CACHE 524 +#define VAR_STUB_NO_CACHE 525 +#define VAR_LOG_SERVFAIL 526 +#define VAR_DENY_ANY 527 +#define VAR_UNKNOWN_SERVER_TIME_LIMIT 528 +#define VAR_LOG_TAG_QUERYREPLY 529 +#define VAR_STREAM_WAIT_SIZE 530 +#define VAR_TLS_CIPHERS 531 +#define VAR_TLS_CIPHERSUITES 532 +#define VAR_TLS_USE_SNI 533 +#define VAR_IPSET 534 +#define VAR_IPSET_NAME_V4 535 +#define VAR_IPSET_NAME_V6 536 +#define VAR_TLS_SESSION_TICKET_KEYS 537 +#define VAR_RPZ 538 +#define VAR_TAGS 539 +#define VAR_RPZ_ACTION_OVERRIDE 540 +#define VAR_RPZ_CNAME_OVERRIDE 541 +#define VAR_RPZ_LOG 542 +#define VAR_RPZ_LOG_NAME 543 +#define VAR_DYNLIB 544 +#define VAR_DYNLIB_FILE 545 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -635,7 +637,7 @@ union YYSTYPE char* str; -#line 639 "util/configparser.h" +#line 641 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index eb21abeed..4af776112 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -119,7 +119,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_DNSTAP VAR_DNSTAP_ENABLE VAR_DNSTAP_SOCKET_PATH VAR_DNSTAP_IP %token VAR_DNSTAP_TLS VAR_DNSTAP_TLS_SERVER_NAME VAR_DNSTAP_TLS_CERT_BUNDLE %token VAR_DNSTAP_TLS_CLIENT_KEY_FILE VAR_DNSTAP_TLS_CLIENT_CERT_FILE -%token VAR_DNSTAP_SEND_IDENTITY VAR_DNSTAP_SEND_VERSION +%token VAR_DNSTAP_SEND_IDENTITY VAR_DNSTAP_SEND_VERSION VAR_DNSTAP_BIDIRECTIONAL %token VAR_DNSTAP_IDENTITY VAR_DNSTAP_VERSION %token VAR_DNSTAP_LOG_RESOLVER_QUERY_MESSAGES %token VAR_DNSTAP_LOG_RESOLVER_RESPONSE_MESSAGES @@ -2758,7 +2758,7 @@ dtstart: VAR_DNSTAP ; contents_dt: contents_dt content_dt | ; -content_dt: dt_dnstap_enable | dt_dnstap_socket_path | +content_dt: dt_dnstap_enable | dt_dnstap_socket_path | dt_dnstap_bidirectional | dt_dnstap_ip | dt_dnstap_tls | dt_dnstap_tls_server_name | dt_dnstap_tls_cert_bundle | dt_dnstap_tls_client_key_file | dt_dnstap_tls_client_cert_file | @@ -2780,6 +2780,16 @@ dt_dnstap_enable: VAR_DNSTAP_ENABLE STRING_ARG free($2); } ; +dt_dnstap_bidirectional: VAR_DNSTAP_BIDIRECTIONAL STRING_ARG + { + OUTYY(("P(dt_dnstap_bidirectional:%s)\n", $2)); + if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0) + yyerror("expected yes or no."); + else cfg_parser->cfg->dnstap_bidirectional = + (strcmp($2, "yes")==0); + free($2); + } + ; dt_dnstap_socket_path: VAR_DNSTAP_SOCKET_PATH STRING_ARG { OUTYY(("P(dt_dnstap_socket_path:%s)\n", $2)); From c00a5d0723bf1cfa364244d4cafddfe8ee60b180 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Tue, 14 Jul 2020 14:29:09 +0200 Subject: [PATCH 14/81] Add maximum to received frame streams frames. --- dnstap/dtstream.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index f5fae08dc..030b66eee 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -69,6 +69,9 @@ /** the msec to wait for reconnect slow, to stop busy spinning on reconnect */ #define DTIO_RECONNECT_TIMEOUT_SLOW 1000 +/** maximum length of received frame */ +#define DTIO_RECV_FRAME_MAX_LEN 1000 + struct stop_flush_info; /** DTIO command channel commands */ enum { @@ -1031,6 +1034,12 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) continue; } dtio->read_frame.frame_len = ntohl(dtio->read_frame.frame_len); + if(dtio->read_frame.frame_len > DTIO_RECV_FRAME_MAX_LEN) { + verbose(VERB_OPS, "dnstap: received frame exceeds max " + "length, capped to %d bytes", + DTIO_RECV_FRAME_MAX_LEN); + dtio->read_frame.frame_len = DTIO_RECV_FRAME_MAX_LEN; + } dtio->read_frame.buf = calloc(1, dtio->read_frame.frame_len); dtio->read_frame.buf_cap = dtio->read_frame.frame_len; if(!dtio->read_frame.buf) { From db3ac2335cc5d2de1e6c8f73626cb65ef18b4d2d Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 15 Jul 2020 15:49:42 +0200 Subject: [PATCH 15/81] - Handle SSL_ERROR_WANT_WRITE on SSL_read for negotiation - Close connection when receiving overly large frame --- dnstap/dtstream.c | 30 ++++++++++++++++++++++++++---- dnstap/dtstream.h | 3 +++ 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 030b66eee..171fe1c12 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -94,6 +94,8 @@ static int dtio_control_start_send(struct dt_io_thread* dtio); #ifdef HAVE_SSL /** enable briefly waiting for a read event, for SSL negotiation */ static int dtio_enable_brief_read(struct dt_io_thread* dtio); +/** enable briefly waiting for a write event, for SSL negotiation */ +static int dtio_enable_brief_write(struct dt_io_thread* dtio); #endif struct dt_msg_queue* @@ -945,7 +947,7 @@ static int ssl_read_bytes(struct dt_io_thread* dtio, void* buf, size_t len) /* continue later */ return -1; } else if(want == SSL_ERROR_WANT_WRITE) { - (void)dtio_add_output_event_write(dtio); + (void)dtio_enable_brief_write(dtio); return -1; } else if(want == SSL_ERROR_SYSCALL) { #ifdef ECONNRESET @@ -1036,9 +1038,9 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) dtio->read_frame.frame_len = ntohl(dtio->read_frame.frame_len); if(dtio->read_frame.frame_len > DTIO_RECV_FRAME_MAX_LEN) { verbose(VERB_OPS, "dnstap: received frame exceeds max " - "length, capped to %d bytes", + "length of %d bytes, closing connection", DTIO_RECV_FRAME_MAX_LEN); - dtio->read_frame.frame_len = DTIO_RECV_FRAME_MAX_LEN; + goto close_connection; } dtio->read_frame.buf = calloc(1, dtio->read_frame.frame_len); dtio->read_frame.buf_cap = dtio->read_frame.frame_len; @@ -1207,6 +1209,24 @@ static int dtio_disable_brief_read(struct dt_io_thread* dtio) } #endif /* HAVE_SSL */ +#ifdef HAVE_SSL +/** enable the brief write condition */ +static int dtio_enable_brief_write(struct dt_io_thread* dtio) +{ + dtio->ssl_brief_write = 1; + return dtio_add_output_event_write(dtio); +} +#endif /* HAVE_SSL */ + +#ifdef HAVE_SSL +/** disable the brief write condition */ +static int dtio_disable_brief_write(struct dt_io_thread* dtio) +{ + dtio->ssl_brief_write = 0; + return dtio_add_output_event_read(dtio); +} +#endif /* HAVE_SSL */ + #ifdef HAVE_SSL /** check peer verification after ssl handshake connection, false if closed*/ static int dtio_ssl_check_peer(struct dt_io_thread* dtio) @@ -1380,7 +1400,9 @@ void dtio_output_cb(int ATTR_UNUSED(fd), short bits, void* arg) } #endif - if((bits&UB_EV_READ)) { + if((bits&UB_EV_READ || dtio->ssl_brief_write)) { + if(dtio->ssl_brief_write) + (void)dtio_disable_brief_write(dtio); if(dtio->ready_frame_sent && !dtio->accept_frame_received) { if(dtio_read_accept_frame(dtio) <= 0) return; diff --git a/dnstap/dtstream.h b/dnstap/dtstream.h index d93714baf..ede491f30 100644 --- a/dnstap/dtstream.h +++ b/dnstap/dtstream.h @@ -151,6 +151,9 @@ struct dt_io_thread { * This happens during negotiation, we then do not want to write, * but wait for a read event. */ int ssl_brief_read; + /** true if SSL_read is waiting for a write event. Set back to 0 after + * single write event is handled. */ + int ssl_brief_write; /** the buffer that currently getting written, or NULL if no * (partial) message written now */ From e7cc57ceae732f0be337d10445ec77ec73da55ba Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 15 Jul 2020 17:16:14 +0200 Subject: [PATCH 16/81] - Ignore unknown frame streams control fields. --- dnstap/dtstream.c | 46 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 14 deletions(-) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 171fe1c12..bface6b06 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -71,6 +71,8 @@ /** maximum length of received frame */ #define DTIO_RECV_FRAME_MAX_LEN 1000 +/** lentgh of the ACCEPT frame with DNSTAP content type */ +#define DNSTAP_ACCEPT_FRAME_LEN 4+4+4+strlen(DNSTAP_CONTENT_TYPE) struct stop_flush_info; /** DTIO command channel commands */ @@ -1004,6 +1006,7 @@ static int dtio_check_close(struct dt_io_thread* dtio) static int dtio_read_accept_frame(struct dt_io_thread* dtio) { int r; + size_t read_frame_done; while(dtio->read_frame.frame_len_done < 4) { #ifdef HAVE_SSL if(dtio->ssl) { @@ -1092,23 +1095,38 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) dtio_read_frame_free(&dtio->read_frame); return -1; } + read_frame_done = 4; /* control frame type */ - if(dtio->read_frame.frame_len != 4+4+4+strlen(DNSTAP_CONTENT_TYPE) || - memcmp(dtio->read_frame.buf+4+4+4, DNSTAP_CONTENT_TYPE, - strlen(DNSTAP_CONTENT_TYPE)) != 0) { - verbose(VERB_OPS, "dnstap: invalid content type on ACCEPT " - "frame"); - goto close_connection; + /* Iteratate over control fields, ignore unknown types. + * Need to be able to read at least 2 bytes (control field type + + * length). */ + while(read_frame_done+8 < dtio->read_frame.frame_len) { + uint32_t type = sldns_read_uint32(dtio->read_frame.buf + + read_frame_done); + uint32_t len = sldns_read_uint32(dtio->read_frame.buf + + read_frame_done + 4); + if(type == FSTRM_CONTROL_FIELD_TYPE_CONTENT_TYPE) { + if(len == strlen(DNSTAP_CONTENT_TYPE) && + read_frame_done+8+len <= + dtio->read_frame.frame_len && + memcmp(dtio->read_frame.buf + read_frame_done + + + 8, DNSTAP_CONTENT_TYPE, len) == 0) { + if(!dtio_control_start_send(dtio)) { + verbose(VERB_OPS, "dnstap io: out of " + "memory while sending START frame"); + goto close_connection; + } + dtio->accept_frame_received = 1; + return 1; + } else { + /* unknow content type */ + goto close_connection; + } + } + /* unknown option, try next */ + read_frame_done += 8+len; } - if(!dtio_control_start_send(dtio)) { - verbose(VERB_OPS, "dnstap io: out of memory while sending " - "START frame"); - goto close_connection; - } - - dtio->accept_frame_received = 1; - return 1; close_connection: dtio_del_output_event(dtio); From b280527e3e72bd0b2f49a1ed5aa8ba7e38d9dd88 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 15 Jul 2020 17:31:18 +0200 Subject: [PATCH 17/81] Log dnstap connection close due to unknown content type. --- dnstap/dtstream.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index bface6b06..57fbf9a78 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -1120,6 +1120,9 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) return 1; } else { /* unknow content type */ + verbose(VERB_ALGO, "dnstap: ACCEPT frames " + "contains unknown content type, " + "closing connection"); goto close_connection; } } From 7189ba715d57ef4b34c7773ee268beac2d81df49 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 15 Jul 2020 17:33:48 +0200 Subject: [PATCH 18/81] dnstap log message typo fix --- dnstap/dtstream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 57fbf9a78..3a792f589 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -1120,7 +1120,7 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) return 1; } else { /* unknow content type */ - verbose(VERB_ALGO, "dnstap: ACCEPT frames " + verbose(VERB_ALGO, "dnstap: ACCEPT frame " "contains unknown content type, " "closing connection"); goto close_connection; From 889b979a0e8d87cf6345d4dd3486bac446b0fd73 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 15 Jul 2020 23:01:13 +0200 Subject: [PATCH 19/81] remove unused define --- dnstap/dtstream.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 3a792f589..7f0c38504 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -71,8 +71,6 @@ /** maximum length of received frame */ #define DTIO_RECV_FRAME_MAX_LEN 1000 -/** lentgh of the ACCEPT frame with DNSTAP content type */ -#define DNSTAP_ACCEPT_FRAME_LEN 4+4+4+strlen(DNSTAP_CONTENT_TYPE) struct stop_flush_info; /** DTIO command channel commands */ @@ -1097,7 +1095,7 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) } read_frame_done = 4; /* control frame type */ - /* Iteratate over control fields, ignore unknown types. + /* Iterate over control fields, ignore unknown types. * Need to be able to read at least 2 bytes (control field type + * length). */ while(read_frame_done+8 < dtio->read_frame.frame_len) { From 6ca79ff7274f629d2e5f082e4f77ae9d7a8cfcf5 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Thu, 16 Jul 2020 10:54:18 +0200 Subject: [PATCH 20/81] correct byte count in comment --- dnstap/dtstream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 7f0c38504..dda3ef1ff 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -1096,7 +1096,7 @@ static int dtio_read_accept_frame(struct dt_io_thread* dtio) read_frame_done = 4; /* control frame type */ /* Iterate over control fields, ignore unknown types. - * Need to be able to read at least 2 bytes (control field type + + * Need to be able to read at least 8 bytes (control field type + * length). */ while(read_frame_done+8 < dtio->read_frame.frame_len) { uint32_t type = sldns_read_uint32(dtio->read_frame.buf + From d75f58d659ac051704e1c7048f3034b3e96a6ea0 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Thu, 16 Jul 2020 11:45:10 +0200 Subject: [PATCH 21/81] - Add changelog entry for bidirectional frame streams support. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index f4304bddf..dd2a68480 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +16 July 2020: Ralph + - Add bidirectional frame streams support. + 8 July 2020: Wouter - Fix add missing DSA header, for compilation without deprecated OpenSSL APIs. From b953cd9aa045a009d3d4ddaeb6d45ac908c70596 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Thu, 16 Jul 2020 12:31:30 +0200 Subject: [PATCH 22/81] Change unbound-dnstap-socket void cast for unused parameter --- dnstap/unbound-dnstap-socket.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index d530b9a89..44a0eda95 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -815,7 +815,7 @@ static int reply_with_accept(struct tap_data* data) return 1; #else log_err("no dnstap compiled, no reply"); - (void)fd; + (void)data; return 0; #endif } From 8876751ed1aca480a3ff4f5fa9826353edb832ba Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Thu, 16 Jul 2020 13:01:14 +0200 Subject: [PATCH 23/81] - Changelog entry for PR #265; include-toplevel. --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index dd2a68480..d7fb1e298 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +16 July 2020: George + - Introduce 'include-toplevel:' configuration option. + 16 July 2020: Ralph - Add bidirectional frame streams support. From 84adade86ce1c49cc8967436666b1ca819b77718 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 16 Jul 2020 14:47:15 +0200 Subject: [PATCH 24/81] - Fix check conf test for referencing installation paths. --- doc/Changelog | 3 +++ testdata/04-checkconf.tdir/bad.badfwd | 1 + testdata/04-checkconf.tdir/bad.user | 2 ++ testdata/04-checkconf.tdir/good.include-toplevel | 4 ++++ 4 files changed, 10 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index d7fb1e298..38987e7f1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +16 July 2020: Wouter + - Fix check conf test for referencing installation paths. + 16 July 2020: George - Introduce 'include-toplevel:' configuration option. diff --git a/testdata/04-checkconf.tdir/bad.badfwd b/testdata/04-checkconf.tdir/bad.badfwd index 27d58c5ea..139d31238 100644 --- a/testdata/04-checkconf.tdir/bad.badfwd +++ b/testdata/04-checkconf.tdir/bad.badfwd @@ -2,6 +2,7 @@ server: # to make sure the check doesn't fail on username or chrootdir. username: "" chroot: "" + directory: "" forward-zone: name: "example.com" diff --git a/testdata/04-checkconf.tdir/bad.user b/testdata/04-checkconf.tdir/bad.user index 40631abb4..ffa556e44 100644 --- a/testdata/04-checkconf.tdir/bad.user +++ b/testdata/04-checkconf.tdir/bad.user @@ -1,2 +1,4 @@ server: username: blabla_noexist_user + chroot: "" + directory: "" diff --git a/testdata/04-checkconf.tdir/good.include-toplevel b/testdata/04-checkconf.tdir/good.include-toplevel index 91dc6980a..e88df7d56 100644 --- a/testdata/04-checkconf.tdir/good.include-toplevel +++ b/testdata/04-checkconf.tdir/good.include-toplevel @@ -10,3 +10,7 @@ server: identity: "top 2" include-toplevel: include.includetop.withclauses.* include-toplevel: include.include.withclauses.* include-toplevel: include.include.withclauses.* +server: + chroot: "" + directory: "" + username: "" From 2902ee133bcd3acc7258d08e5315ddac600942f8 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 16 Jul 2020 15:41:25 +0200 Subject: [PATCH 25/81] - Fix unused variable warning for clang analyzer. --- daemon/unbound.c | 2 ++ doc/Changelog | 1 + 2 files changed, 3 insertions(+) diff --git a/daemon/unbound.c b/daemon/unbound.c index ceb3da6f5..3f96603c4 100644 --- a/daemon/unbound.c +++ b/daemon/unbound.c @@ -534,6 +534,8 @@ perform_setup(struct daemon* daemon, struct config_file* cfg, int debug_mode, LOGIN_SETALL & ~LOGIN_SETUSER & ~LOGIN_SETGROUP) != 0) log_warn("unable to setusercontext %s: %s", cfg->username, strerror(errno)); +#else + (void)pwd; #endif /* HAVE_SETUSERCONTEXT */ } #endif /* HAVE_GETPWNAM */ diff --git a/doc/Changelog b/doc/Changelog index 38987e7f1..f3450e075 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,5 +1,6 @@ 16 July 2020: Wouter - Fix check conf test for referencing installation paths. + - Fix unused variable warning for clang analyzer. 16 July 2020: George - Introduce 'include-toplevel:' configuration option. From 14a04334702d6b056a21fd56be3e449500858b91 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Fri, 17 Jul 2020 13:07:03 +0200 Subject: [PATCH 26/81] =?UTF-8?q?-=20Merge=20PR=20#234=20-=20Ensure=20prop?= =?UTF-8?q?er=20alignment=20of=20cmsg=20buffers=20by=20J=C3=A9r=C3=A9mie?= =?UTF-8?q?=20=20=20Courr=C3=A8ges-Anglas.=20-=20Fix=20PR=20#234=20log=5Fa?= =?UTF-8?q?ssert=20sizeof=20to=20use=20union=20buffer.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/Changelog | 5 +++++ util/netevent.c | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index f3450e075..2ea7e753f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +17 July 2020: Ralph + - Merge PR #234 - Ensure proper alignment of cmsg buffers by Jérémie + Courrèges-Anglas. + - Fix PR #234 log_assert sizeof to use union buffer. + 16 July 2020: Wouter - Fix check conf test for referencing installation paths. - Fix unused variable warning for clang analyzer. diff --git a/util/netevent.c b/util/netevent.c index 159d344d6..3e7a433e5 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -480,7 +480,7 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, #ifdef IP_PKTINFO void* cmsg_data; msg.msg_controllen = CMSG_SPACE(sizeof(struct in_pktinfo)); - log_assert(msg.msg_controllen <= sizeof(control)); + log_assert(msg.msg_controllen <= sizeof(control.buf)); cmsg->cmsg_level = IPPROTO_IP; cmsg->cmsg_type = IP_PKTINFO; memmove(CMSG_DATA(cmsg), &r->pktinfo.v4info, @@ -491,7 +491,7 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, cmsg->cmsg_len = CMSG_LEN(sizeof(struct in_pktinfo)); #elif defined(IP_SENDSRCADDR) msg.msg_controllen = CMSG_SPACE(sizeof(struct in_addr)); - log_assert(msg.msg_controllen <= sizeof(control)); + log_assert(msg.msg_controllen <= sizeof(control.buf)); cmsg->cmsg_level = IPPROTO_IP; cmsg->cmsg_type = IP_SENDSRCADDR; memmove(CMSG_DATA(cmsg), &r->pktinfo.v4addr, @@ -504,7 +504,7 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, } else if(r->srctype == 6) { void* cmsg_data; msg.msg_controllen = CMSG_SPACE(sizeof(struct in6_pktinfo)); - log_assert(msg.msg_controllen <= sizeof(control)); + log_assert(msg.msg_controllen <= sizeof(control.buf)); cmsg->cmsg_level = IPPROTO_IPV6; cmsg->cmsg_type = IPV6_PKTINFO; memmove(CMSG_DATA(cmsg), &r->pktinfo.v6info, @@ -516,7 +516,7 @@ comm_point_send_udp_msg_if(struct comm_point *c, sldns_buffer* packet, } else { /* try to pass all 0 to use default route */ msg.msg_controllen = CMSG_SPACE(sizeof(struct in6_pktinfo)); - log_assert(msg.msg_controllen <= sizeof(control)); + log_assert(msg.msg_controllen <= sizeof(control.buf)); cmsg->cmsg_level = IPPROTO_IPV6; cmsg->cmsg_type = IPV6_PKTINFO; memset(CMSG_DATA(cmsg), 0, sizeof(struct in6_pktinfo)); From 7d4445c03da78d9a7d6b780cd463de4a46fc2fea Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 17 Jul 2020 16:53:52 +0200 Subject: [PATCH 27/81] - Fix libnettle compile for session ticket key callback function changes. --- doc/Changelog | 4 ++++ util/net_help.c | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 2ea7e753f..a551a59d4 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +17 July 2020: Wouter + - Fix libnettle compile for session ticket key callback function + changes. + 17 July 2020: Ralph - Merge PR #234 - Ensure proper alignment of cmsg buffers by Jérémie Courrèges-Anglas. diff --git a/util/net_help.c b/util/net_help.c index a00fe2e2f..f59a4d653 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -97,6 +97,7 @@ static struct tls_session_ticket_key { * @return 0 on no ticket, 1 for okay, and 2 for okay but renew the ticket * (the ticket is decrypt only). and <0 for failures. */ +#ifdef HAVE_SSL int tls_session_ticket_key_cb(SSL *s, unsigned char* key_name, unsigned char* iv, EVP_CIPHER_CTX *evp_ctx, #ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB @@ -105,6 +106,7 @@ int tls_session_ticket_key_cb(SSL *s, unsigned char* key_name, HMAC_CTX* hmac_ctx, #endif int enc); +#endif /* HAVE_SSL */ /* returns true is string addr is an ip6 specced address */ int @@ -1267,6 +1269,7 @@ int set_auth_name_on_ssl(void* ssl, char* auth_name, int use_sni) } #else (void)ssl; + (void)use_sni; #endif #ifdef HAVE_SSL_SET1_HOST SSL_set_verify(ssl, SSL_VERIFY_PEER, NULL); @@ -1434,6 +1437,7 @@ int listen_sslctx_setup_ticket_keys(void* sslctx, struct config_strlist* tls_ses } +#ifdef HAVE_SSL int tls_session_ticket_key_cb(SSL *ATTR_UNUSED(sslctx), unsigned char* key_name, unsigned char* iv, EVP_CIPHER_CTX *evp_sctx, #ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB @@ -1531,6 +1535,7 @@ int tls_session_ticket_key_cb(SSL *ATTR_UNUSED(sslctx), unsigned char* key_name, return 0; #endif } +#endif /* HAVE_SSL */ void listen_sslctx_delete_ticket_keys(void) From b7b5952c3aaa22c89e69c8ef994cab1e0dc0076a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 17 Jul 2020 17:15:55 +0200 Subject: [PATCH 28/81] - Fix lock dependency cycle in rpz zone config setup. --- doc/Changelog | 1 + services/authzone.c | 18 +++++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index a551a59d4..8d820ca92 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 17 July 2020: Wouter - Fix libnettle compile for session ticket key callback function changes. + - Fix lock dependency cycle in rpz zone config setup. 17 July 2020: Ralph - Merge PR #234 - Ensure proper alignment of cmsg buffers by Jérémie diff --git a/services/authzone.c b/services/authzone.c index 9b0568c8c..a26d1003a 100644 --- a/services/authzone.c +++ b/services/authzone.c @@ -1866,15 +1866,26 @@ auth_zones_cfg(struct auth_zones* az, struct config_auth* c) struct auth_xfer* x = NULL; /* create zone */ + if(c->isrpz) { + /* if the rpz lock is needed, grab it before the other + * locks to avoid a lock dependency cycle */ + lock_rw_wrlock(&az->rpz_lock); + } lock_rw_wrlock(&az->lock); if(!(z=auth_zones_find_or_add_zone(az, c->name))) { lock_rw_unlock(&az->lock); + if(c->isrpz) { + lock_rw_unlock(&az->rpz_lock); + } return 0; } if(c->masters || c->urls) { if(!(x=auth_zones_find_or_add_xfer(az, z))) { lock_rw_unlock(&az->lock); lock_rw_unlock(&z->lock); + if(c->isrpz) { + lock_rw_unlock(&az->rpz_lock); + } return 0; } } @@ -1889,6 +1900,9 @@ auth_zones_cfg(struct auth_zones* az, struct config_auth* c) lock_basic_unlock(&x->lock); } lock_rw_unlock(&z->lock); + if(c->isrpz) { + lock_rw_unlock(&az->rpz_lock); + } return 0; } z->for_downstream = c->for_downstream; @@ -1900,11 +1914,13 @@ auth_zones_cfg(struct auth_zones* az, struct config_auth* c) return 0; } lock_protect(&z->lock, &z->rpz->local_zones, sizeof(*z->rpz)); - lock_rw_wrlock(&az->rpz_lock); + /* the az->rpz_lock is locked above */ z->rpz_az_next = az->rpz_first; if(az->rpz_first) az->rpz_first->rpz_az_prev = z; az->rpz_first = z; + } + if(c->isrpz) { lock_rw_unlock(&az->rpz_lock); } From 53ecdfc0b57e471c0f47f06ef77a637345a20e2a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 20 Jul 2020 10:34:40 +0200 Subject: [PATCH 29/81] - Fix streamtcp to print packet data to stdout. This makes the stdout and stderr not mix together lines, when parsing its output. --- doc/Changelog | 4 ++++ testcode/streamtcp.c | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 8d820ca92..7ed21c876 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +20 July 2020: Wouter + - Fix streamtcp to print packet data to stdout. This makes the + stdout and stderr not mix together lines, when parsing its output. + 17 July 2020: Wouter - Fix libnettle compile for session ticket key callback function changes. diff --git a/testcode/streamtcp.c b/testcode/streamtcp.c index 65ea8d4bc..c49159d33 100644 --- a/testcode/streamtcp.c +++ b/testcode/streamtcp.c @@ -200,6 +200,7 @@ write_q(int fd, int udp, SSL* ssl, sldns_buffer* buf, uint16_t id, static void recv_one(int fd, int udp, SSL* ssl, sldns_buffer* buf) { + size_t i; char* pktstr; uint16_t len; if(!udp) { @@ -270,7 +271,13 @@ recv_one(int fd, int udp, SSL* ssl, sldns_buffer* buf) len = (size_t)l; } printf("\nnext received packet\n"); - log_buf(0, "data", buf); + printf("data[%d] ", (int)sldns_buffer_limit(buf)); + for(i=0; i>4], + hex[sldns_buffer_read_u8_at(buf, i)&0x0f]); + } + printf("\n"); pktstr = sldns_wire2str_pkt(sldns_buffer_begin(buf), len); printf("%s", pktstr); From 477bb1a6ffdd56ec36dbb4411fd78cc9f53ca56c Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 20 Jul 2020 10:53:30 +0200 Subject: [PATCH 30/81] - Fix contrib/fastrpz.patch to apply cleanly. --- contrib/fastrpz.patch | 4 ++-- doc/Changelog | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/contrib/fastrpz.patch b/contrib/fastrpz.patch index aacd5ab82..e85ea5055 100644 --- a/contrib/fastrpz.patch +++ b/contrib/fastrpz.patch @@ -27,8 +27,8 @@ index a20058cc..495779cc 100644 validator.lo val_kcache.lo val_kentry.lo val_neg.lo val_nsec3.lo val_nsec.lo \ val_secalgo.lo val_sigcrypt.lo val_utils.lo dns64.lo cachedb.lo redis.lo authzone.lo \ $(SUBNET_OBJ) $(PYTHONMOD_OBJ) $(CHECKLOCK_OBJ) $(DNSTAP_OBJ) $(DNSCRYPT_OBJ) \ --$(IPSECMOD_OBJ) $(IPSET_OBJ) respip.lo -+$(FASTRPZ_OBJ) $(IPSECMOD_OBJ) $(IPSET_OBJ) respip.lo +-$(IPSECMOD_OBJ) $(IPSET_OBJ) $(DYNLIBMOD_OBJ) respip.lo ++$(FASTRPZ_OBJ) $(IPSECMOD_OBJ) $(IPSET_OBJ) $(DYNLIBMOD_OBJ) respip.lo COMMON_OBJ_WITHOUT_UB_EVENT=$(COMMON_OBJ_WITHOUT_NETCALL) netevent.lo listen_dnsport.lo \ outside_network.lo COMMON_OBJ=$(COMMON_OBJ_WITHOUT_UB_EVENT) ub_event.lo diff --git a/doc/Changelog b/doc/Changelog index 7ed21c876..a010517cf 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 20 July 2020: Wouter - Fix streamtcp to print packet data to stdout. This makes the stdout and stderr not mix together lines, when parsing its output. + - Fix contrib/fastrpz.patch to apply cleanly. 17 July 2020: Wouter - Fix libnettle compile for session ticket key callback function From 6a13b51bedb3d16adccbdf725954bb7f35271d81 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 20 Jul 2020 10:55:13 +0200 Subject: [PATCH 31/81] - Fix contrib/fastrpz.patch to apply cleanly. --- contrib/fastrpz.patch | 118 +++++++++++++++++++++--------------------- 1 file changed, 59 insertions(+), 59 deletions(-) diff --git a/contrib/fastrpz.patch b/contrib/fastrpz.patch index e85ea5055..5b3c18a7c 100644 --- a/contrib/fastrpz.patch +++ b/contrib/fastrpz.patch @@ -2,7 +2,7 @@ Description: based on the included patch contrib/fastrpz.patch Author: fastrpz@farsightsecurity.com --- diff --git a/Makefile.in b/Makefile.in -index a20058cc..495779cc 100644 +index bac212df..4824927f 100644 --- a/Makefile.in +++ b/Makefile.in @@ -23,6 +23,8 @@ CHECKLOCK_SRC=testcode/checklocks.c @@ -13,8 +13,8 @@ index a20058cc..495779cc 100644 +FASTRPZ_OBJ=@FASTRPZ_OBJ@ DNSCRYPT_SRC=@DNSCRYPT_SRC@ DNSCRYPT_OBJ=@DNSCRYPT_OBJ@ - WITH_PYTHONMODULE=@WITH_PYTHONMODULE@ -@@ -127,7 +129,7 @@ validator/val_sigcrypt.c validator/val_utils.c dns64/dns64.c \ + WITH_DYNLIBMODULE=@WITH_DYNLIBMODULE@ +@@ -134,7 +136,7 @@ validator/val_sigcrypt.c validator/val_utils.c dns64/dns64.c \ edns-subnet/edns-subnet.c edns-subnet/subnetmod.c \ edns-subnet/addrtree.c edns-subnet/subnet-whitelist.c \ cachedb/cachedb.c cachedb/redis.c respip/respip.c $(CHECKLOCK_SRC) \ @@ -23,7 +23,7 @@ index a20058cc..495779cc 100644 COMMON_OBJ_WITHOUT_NETCALL=dns.lo infra.lo rrset.lo dname.lo msgencode.lo \ as112.lo msgparse.lo msgreply.lo packed_rrset.lo iterator.lo iter_delegpt.lo \ iter_donotq.lo iter_fwd.lo iter_hints.lo iter_priv.lo iter_resptype.lo \ -@@ -140,7 +142,7 @@ autotrust.lo val_anchor.lo rpz.lo \ +@@ -147,7 +149,7 @@ autotrust.lo val_anchor.lo rpz.lo \ validator.lo val_kcache.lo val_kentry.lo val_neg.lo val_nsec3.lo val_nsec.lo \ val_secalgo.lo val_sigcrypt.lo val_utils.lo dns64.lo cachedb.lo redis.lo authzone.lo \ $(SUBNET_OBJ) $(PYTHONMOD_OBJ) $(CHECKLOCK_OBJ) $(DNSTAP_OBJ) $(DNSCRYPT_OBJ) \ @@ -32,7 +32,7 @@ index a20058cc..495779cc 100644 COMMON_OBJ_WITHOUT_UB_EVENT=$(COMMON_OBJ_WITHOUT_NETCALL) netevent.lo listen_dnsport.lo \ outside_network.lo COMMON_OBJ=$(COMMON_OBJ_WITHOUT_UB_EVENT) ub_event.lo -@@ -410,6 +412,11 @@ dnscrypt.lo dnscrypt.o: $(srcdir)/dnscrypt/dnscrypt.c config.h \ +@@ -428,6 +430,11 @@ dnscrypt.lo dnscrypt.o: $(srcdir)/dnscrypt/dnscrypt.c config.h \ $(srcdir)/util/config_file.h $(srcdir)/util/log.h \ $(srcdir)/util/netevent.h @@ -45,10 +45,10 @@ index a20058cc..495779cc 100644 pythonmod.lo pythonmod.o: $(srcdir)/pythonmod/pythonmod.c config.h \ pythonmod/interface.h \ diff --git a/config.h.in b/config.h.in -index 78d47fed..e33073e4 100644 +index f7a4095e..d5a4fa01 100644 --- a/config.h.in +++ b/config.h.in -@@ -1345,4 +1345,11 @@ void *unbound_stat_realloc_log(void *ptr, size_t size, const char* file, +@@ -1364,4 +1364,11 @@ void *unbound_stat_realloc_log(void *ptr, size_t size, const char* file, /** the version of unbound-control that this software implements */ #define UNBOUND_CONTROL_VERSION 1 @@ -62,7 +62,7 @@ index 78d47fed..e33073e4 100644 +/** turn on fastrpz response policy zones */ +#undef ENABLE_FASTRPZ diff --git a/configure.ac b/configure.ac -index 2b91dd3c..e6063d17 100644 +index 5c373d9d..e45abd89 100644 --- a/configure.ac +++ b/configure.ac @@ -6,6 +6,7 @@ sinclude(ax_pthread.m4) @@ -73,10 +73,10 @@ index 2b91dd3c..e6063d17 100644 sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing -@@ -1778,6 +1779,9 @@ case "$enable_ipset" in - ;; +@@ -1819,6 +1820,9 @@ case "$enable_explicit_port_randomisation" in esac + +# check for Fastrpz with fastrpz/rpz.m4 +ck_FASTRPZ + @@ -84,7 +84,7 @@ index 2b91dd3c..e6063d17 100644 # on openBSD, the implicit rule make $< work. # on Solaris, it does not work ($? is changed sources, $^ lists dependencies). diff --git a/daemon/daemon.c b/daemon/daemon.c -index 8b0fc348..7ffb9221 100644 +index 5d427925..f89f1437 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -91,6 +91,9 @@ @@ -97,8 +97,8 @@ index 8b0fc348..7ffb9221 100644 #ifdef HAVE_SYSTEMD #include -@@ -458,6 +461,14 @@ daemon_create_workers(struct daemon* daemon) - dt_apply_cfg(daemon->dtenv, daemon->cfg); +@@ -456,6 +459,14 @@ daemon_create_workers(struct daemon* daemon) + fatal_exit("dt_create failed"); #else fatal_exit("dnstap enabled in config but not built with dnstap support"); +#endif @@ -112,7 +112,7 @@ index 8b0fc348..7ffb9221 100644 #endif } for(i=0; inum; i++) { -@@ -731,6 +742,9 @@ daemon_cleanup(struct daemon* daemon) +@@ -729,6 +740,9 @@ daemon_cleanup(struct daemon* daemon) #ifdef USE_DNSCRYPT dnsc_delete(daemon->dnscenv); daemon->dnscenv = NULL; @@ -139,7 +139,7 @@ index 3effbafb..4d4c34da 100644 /** diff --git a/daemon/worker.c b/daemon/worker.c -index eb7fdf2f..1982228d 100644 +index 23e3244c..b63d49b7 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -76,6 +76,9 @@ @@ -152,7 +152,7 @@ index eb7fdf2f..1982228d 100644 #include "sldns/wire2str.h" #include "util/shm_side/shm_main.h" #include "dnscrypt/dnscrypt.h" -@@ -534,8 +537,27 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, +@@ -535,8 +538,27 @@ answer_norec_from_cache(struct worker* worker, struct query_info* qinfo, /* not secure */ secure = 0; break; @@ -180,7 +180,7 @@ index eb7fdf2f..1982228d 100644 /* return this delegation from the cache */ edns_bak = *edns; edns->edns_version = EDNS_ADVERTISED_VERSION; -@@ -710,6 +732,23 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, +@@ -711,6 +733,23 @@ answer_from_cache(struct worker* worker, struct query_info* qinfo, *is_secure_answer = 0; } } else *is_secure_answer = 0; @@ -204,7 +204,7 @@ index eb7fdf2f..1982228d 100644 edns_bak = *edns; edns->edns_version = EDNS_ADVERTISED_VERSION; -@@ -1435,6 +1474,15 @@ worker_handle_request(struct comm_point* c, void* arg, int error, +@@ -1436,6 +1475,15 @@ worker_handle_request(struct comm_point* c, void* arg, int error, log_addr(VERB_ALGO, "refused nonrec (cache snoop) query from", &repinfo->addr, repinfo->addrlen); goto send_reply; @@ -220,7 +220,7 @@ index eb7fdf2f..1982228d 100644 } /* If we've found a local alias, replace the qname with the alias -@@ -1485,12 +1533,21 @@ lookup_cache: +@@ -1486,12 +1534,21 @@ lookup_cache: h = query_info_hash(lookup_qinfo, sldns_buffer_read_u16_at(c->buffer, 2)); if((e=slabhash_lookup(worker->env.msg_cache, h, lookup_qinfo, 0))) { /* answer from cache - we have acquired a readlock on it */ @@ -244,7 +244,7 @@ index eb7fdf2f..1982228d 100644 /* prefetch it if the prefetch TTL expired. * Note that if there is more than one pass * its qname must be that used for cache -@@ -1547,11 +1604,19 @@ lookup_cache: +@@ -1548,11 +1605,19 @@ lookup_cache: lock_rw_unlock(&e->lock); } if(!LDNS_RD_WIRE(sldns_buffer_begin(c->buffer))) { @@ -267,10 +267,10 @@ index eb7fdf2f..1982228d 100644 } verbose(VERB_ALGO, "answer norec from cache -- " diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in -index 38c2d298..3b07f392 100644 +index cd43f04e..b92a1af8 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in -@@ -1828,6 +1828,81 @@ List domain for which the AAAA records are ignored and the A record is +@@ -1878,6 +1878,81 @@ List domain for which the AAAA records are ignored and the A record is used by dns64 processing instead. Can be entered multiple times, list a new domain for which it applies, one per line. Applies also to names underneath the name given. @@ -2888,7 +2888,7 @@ index 00000000..21235355 + fi +]) diff --git a/iterator/iterator.c b/iterator/iterator.c -index 1e0113a8..2fcbf547 100644 +index 23b07ea9..c3d31a33 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -68,6 +68,9 @@ @@ -2901,7 +2901,7 @@ index 1e0113a8..2fcbf547 100644 /* in msec */ int UNKNOWN_SERVER_NICENESS = 376; -@@ -555,6 +558,23 @@ handle_cname_response(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -563,6 +566,23 @@ handle_cname_response(struct module_qstate* qstate, struct iter_qstate* iq, if(ntohs(r->rk.type) == LDNS_RR_TYPE_CNAME && query_dname_compare(*mname, r->rk.dname) == 0 && !iter_find_rrset_in_prepend_answer(iq, r)) { @@ -2925,7 +2925,7 @@ index 1e0113a8..2fcbf547 100644 /* Add this relevant CNAME rrset to the prepend list.*/ if(!iter_add_prepend_answer(qstate, iq, r)) return 0; -@@ -563,6 +583,9 @@ handle_cname_response(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -571,6 +591,9 @@ handle_cname_response(struct module_qstate* qstate, struct iter_qstate* iq, /* Other rrsets in the section are ignored. */ } @@ -2935,7 +2935,7 @@ index 1e0113a8..2fcbf547 100644 /* add authority rrsets to authority prepend, for wildcarded CNAMEs */ for(i=msg->rep->an_numrrsets; irep->an_numrrsets + msg->rep->ns_numrrsets; i++) { -@@ -1199,6 +1222,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -1231,6 +1254,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, uint8_t* delname; size_t delnamelen; struct dns_msg* msg = NULL; @@ -2943,7 +2943,7 @@ index 1e0113a8..2fcbf547 100644 log_query_info(VERB_DETAIL, "resolving", &qstate->qinfo); /* check effort */ -@@ -1285,8 +1309,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -1317,8 +1341,7 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, } if(msg) { /* handle positive cache response */ @@ -2953,7 +2953,7 @@ index 1e0113a8..2fcbf547 100644 if(verbosity >= VERB_ALGO) { log_dns_msg("msg from cache lookup", &msg->qinfo, msg->rep); -@@ -1294,7 +1317,22 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -1326,7 +1349,22 @@ processInitRequest(struct module_qstate* qstate, struct iter_qstate* iq, (int)msg->rep->ttl, (int)msg->rep->prefetch_ttl); } @@ -2976,7 +2976,7 @@ index 1e0113a8..2fcbf547 100644 if(type == RESPONSE_TYPE_CNAME) { uint8_t* sname = 0; size_t slen = 0; -@@ -2718,6 +2756,62 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -2801,6 +2839,62 @@ processQueryResponse(struct module_qstate* qstate, struct iter_qstate* iq, sock_list_insert(&qstate->reply_origin, &qstate->reply->addr, qstate->reply->addrlen, qstate->region); @@ -3039,7 +3039,7 @@ index 1e0113a8..2fcbf547 100644 if(iq->minimisation_state != DONOT_MINIMISE_STATE && !(iq->chase_flags & BIT_RD)) { if(FLAGS_GET_RCODE(iq->response->rep->flags) != -@@ -3471,12 +3565,44 @@ processFinished(struct module_qstate* qstate, struct iter_qstate* iq, +@@ -3563,12 +3657,44 @@ processFinished(struct module_qstate* qstate, struct iter_qstate* iq, * but only if we did recursion. The nonrecursion referral * from cache does not need to be stored in the msg cache. */ if(!qstate->no_cache_store && qstate->query_flags&BIT_RD) { @@ -3085,10 +3085,10 @@ index 1e0113a8..2fcbf547 100644 qstate->return_msg = iq->response; return 0; diff --git a/iterator/iterator.h b/iterator/iterator.h -index a2f1b570..e1e4a738 100644 +index 342ac207..49b0ecdd 100644 --- a/iterator/iterator.h +++ b/iterator/iterator.h -@@ -386,6 +386,16 @@ struct iter_qstate { +@@ -396,6 +396,16 @@ struct iter_qstate { */ int minimise_count; @@ -3104,12 +3104,12 @@ index a2f1b570..e1e4a738 100644 + /** * Count number of time-outs. Used to prevent resolving failures when - * the QNAME minimisation QTYPE is blocked. */ + * the QNAME minimisation QTYPE is blocked. Used to determine if diff --git a/services/cache/dns.c b/services/cache/dns.c -index 2a5bca4a..6de8863a 100644 +index 7b6e142c..6d7449f5 100644 --- a/services/cache/dns.c +++ b/services/cache/dns.c -@@ -967,6 +967,14 @@ dns_cache_store(struct module_env* env, struct query_info* msgqinf, +@@ -969,6 +969,14 @@ dns_cache_store(struct module_env* env, struct query_info* msgqinf, struct regional* region, uint32_t flags) { struct reply_info* rep = NULL; @@ -3125,7 +3125,7 @@ index 2a5bca4a..6de8863a 100644 rep = reply_info_copy(msgrep, env->alloc, NULL); if(!rep) diff --git a/services/mesh.c b/services/mesh.c -index 9114ef4c..3dc518e5 100644 +index 4b0c5db4..eb9cfa5b 100644 --- a/services/mesh.c +++ b/services/mesh.c @@ -61,6 +61,9 @@ @@ -3138,7 +3138,7 @@ index 9114ef4c..3dc518e5 100644 #include "respip/respip.h" #include "services/listen_dnsport.h" -@@ -1195,6 +1198,13 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, +@@ -1207,6 +1210,13 @@ mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info* rep, else secure = 0; if(!rep && rcode == LDNS_RCODE_NOERROR) rcode = LDNS_RCODE_SERVFAIL; @@ -3152,7 +3152,7 @@ index 9114ef4c..3dc518e5 100644 /* send the reply */ /* We don't reuse the encoded answer if either the previous or current * response has a local alias. We could compare the alias records -@@ -1415,6 +1425,7 @@ struct mesh_state* mesh_area_find(struct mesh_area* mesh, +@@ -1434,6 +1444,7 @@ struct mesh_state* mesh_area_find(struct mesh_area* mesh, key.s.is_valrec = valrec; key.s.qinfo = *qinfo; key.s.query_flags = qflags; @@ -3160,7 +3160,7 @@ index 9114ef4c..3dc518e5 100644 /* We are searching for a similar mesh state when we DO want to * aggregate the state. Thus unique is set to NULL. (default when we * desire aggregation).*/ -@@ -1461,6 +1472,10 @@ int mesh_state_add_reply(struct mesh_state* s, struct edns_data* edns, +@@ -1480,6 +1491,10 @@ int mesh_state_add_reply(struct mesh_state* s, struct edns_data* edns, if(!r) return 0; r->query_reply = *rep; @@ -3172,11 +3172,11 @@ index 9114ef4c..3dc518e5 100644 if(edns->opt_list) { r->edns.opt_list = edns_opt_copy_region(edns->opt_list, diff --git a/util/config_file.c b/util/config_file.c -index 52ca5a18..0660248f 100644 +index 0e9ee471..a5fd72e0 100644 --- a/util/config_file.c +++ b/util/config_file.c -@@ -1460,6 +1460,8 @@ config_delete(struct config_file* cfg) - free(cfg->dnstap_socket_path); +@@ -1495,6 +1495,8 @@ config_delete(struct config_file* cfg) + free(cfg->dnstap_tls_client_cert_file); free(cfg->dnstap_identity); free(cfg->dnstap_version); + if (cfg->rpz_cstr) @@ -3185,10 +3185,10 @@ index 52ca5a18..0660248f 100644 config_deldblstrlist(cfg->ratelimit_below_domain); config_delstrlist(cfg->python_script); diff --git a/util/config_file.h b/util/config_file.h -index 8739ca2a..a2dcf215 100644 +index 66e5025d..504f4f92 100644 --- a/util/config_file.h +++ b/util/config_file.h -@@ -499,6 +499,11 @@ struct config_file { +@@ -522,6 +522,11 @@ struct config_file { /** true to disable DNSSEC lameness check in iterator */ int disable_dnssec_lame_check; @@ -3201,10 +3201,10 @@ index 8739ca2a..a2dcf215 100644 int ip_ratelimit; /** number of slabs for ip_ratelimit cache */ diff --git a/util/configlexer.lex b/util/configlexer.lex -index deedffa5..301458a3 100644 +index 83cea4b9..9a7feea4 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex -@@ -446,6 +446,10 @@ dnstap-log-forwarder-query-messages{COLON} { +@@ -467,6 +467,10 @@ dnstap-log-forwarder-query-messages{COLON} { YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES) } dnstap-log-forwarder-response-messages{COLON} { YDVAR(1, VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES) } @@ -3216,18 +3216,18 @@ index deedffa5..301458a3 100644 ip-ratelimit{COLON} { YDVAR(1, VAR_IP_RATELIMIT) } ratelimit{COLON} { YDVAR(1, VAR_RATELIMIT) } diff --git a/util/configparser.y b/util/configparser.y -index d471babe..cb6b1d63 100644 +index fe600a99..ce43390f 100644 --- a/util/configparser.y +++ b/util/configparser.y -@@ -125,6 +125,7 @@ extern struct config_parser_state* cfg_parser; +@@ -128,6 +128,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_DNSTAP_LOG_CLIENT_RESPONSE_MESSAGES %token VAR_DNSTAP_LOG_FORWARDER_QUERY_MESSAGES %token VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MESSAGES +%token VAR_RPZ VAR_RPZ_ENABLE VAR_RPZ_ZONE VAR_RPZ_OPTION %token VAR_RESPONSE_IP_TAG VAR_RESPONSE_IP VAR_RESPONSE_IP_DATA %token VAR_HARDEN_ALGO_DOWNGRADE VAR_IP_TRANSPARENT - %token VAR_DISABLE_DNSSEC_LAME_CHECK -@@ -173,7 +174,7 @@ extern struct config_parser_state* cfg_parser; + %token VAR_IP_DSCP +@@ -179,7 +180,7 @@ extern struct config_parser_state* cfg_parser; %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -3236,7 +3236,7 @@ index d471babe..cb6b1d63 100644 forwardstart contents_forward | pythonstart contents_py | rcstart contents_rc | dtstart contents_dt | viewstart contents_view | dnscstart contents_dnsc | cachedbstart contents_cachedb | -@@ -2837,6 +2838,50 @@ dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MES +@@ -2939,6 +2940,50 @@ dt_dnstap_log_forwarder_response_messages: VAR_DNSTAP_LOG_FORWARDER_RESPONSE_MES free($2); } ; @@ -3384,7 +3384,7 @@ index 729877ba..ccd1a0c2 100644 /** diff --git a/util/netevent.c b/util/netevent.c -index 9fe5da2d..037e70d1 100644 +index 3e7a433e..f20d806f 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -57,6 +57,9 @@ @@ -3397,7 +3397,7 @@ index 9fe5da2d..037e70d1 100644 /* -------- Start of local definitions -------- */ /** if CMSG_ALIGN is not defined on this platform, a workaround */ -@@ -590,6 +593,9 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) +@@ -596,6 +599,9 @@ comm_point_udp_ancil_callback(int fd, short event, void* arg) struct cmsghdr* cmsg; #endif /* S_SPLINT_S */ @@ -3407,7 +3407,7 @@ index 9fe5da2d..037e70d1 100644 rep.c = (struct comm_point*)arg; log_assert(rep.c->type == comm_udp); -@@ -679,6 +685,9 @@ comm_point_udp_callback(int fd, short event, void* arg) +@@ -685,6 +691,9 @@ comm_point_udp_callback(int fd, short event, void* arg) int i; struct sldns_buffer *buffer; @@ -3417,7 +3417,7 @@ index 9fe5da2d..037e70d1 100644 rep.c = (struct comm_point*)arg; log_assert(rep.c->type == comm_udp); -@@ -722,6 +731,9 @@ comm_point_udp_callback(int fd, short event, void* arg) +@@ -728,6 +737,9 @@ comm_point_udp_callback(int fd, short event, void* arg) (void)comm_point_send_udp_msg(rep.c, buffer, (struct sockaddr*)&rep.addr, rep.addrlen); } @@ -3427,7 +3427,7 @@ index 9fe5da2d..037e70d1 100644 if(!rep.c || rep.c->fd != fd) /* commpoint closed to -1 or reused for another UDP port. Note rep.c cannot be reused with TCP fd. */ break; -@@ -3192,6 +3204,9 @@ comm_point_send_reply(struct comm_reply *repinfo) +@@ -3175,6 +3187,9 @@ comm_point_send_reply(struct comm_reply *repinfo) repinfo->c->tcp_timeout_msec); } } @@ -3437,7 +3437,7 @@ index 9fe5da2d..037e70d1 100644 } void -@@ -3201,6 +3216,9 @@ comm_point_drop_reply(struct comm_reply* repinfo) +@@ -3184,6 +3199,9 @@ comm_point_drop_reply(struct comm_reply* repinfo) return; log_assert(repinfo->c); log_assert(repinfo->c->type != comm_tcp_accept); @@ -3447,7 +3447,7 @@ index 9fe5da2d..037e70d1 100644 if(repinfo->c->type == comm_udp) return; if(repinfo->c->tcp_req_info) -@@ -3222,6 +3240,9 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec) +@@ -3205,6 +3223,9 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec) { verbose(VERB_ALGO, "comm point start listening %d (%d msec)", c->fd==-1?newfd:c->fd, msec); @@ -3458,7 +3458,7 @@ index 9fe5da2d..037e70d1 100644 /* no use to start listening no free slots. */ return; diff --git a/util/netevent.h b/util/netevent.h -index d80c72b3..0233292f 100644 +index bb2cd1e5..666067e8 100644 --- a/util/netevent.h +++ b/util/netevent.h @@ -120,6 +120,10 @@ struct comm_reply { From c8ff4f55e7085449ec1b7ad222ebf6677ad8939e Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 20 Jul 2020 11:05:28 +0200 Subject: [PATCH 32/81] - Fix contrib/fastrpz.patch to apply cleanly. It fixes for changes due to added libdynmod, but it does not compile, it conflicts with new rpz code. --- doc/Changelog | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index a010517cf..d999d26fb 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,7 +1,9 @@ 20 July 2020: Wouter - Fix streamtcp to print packet data to stdout. This makes the stdout and stderr not mix together lines, when parsing its output. - - Fix contrib/fastrpz.patch to apply cleanly. + - Fix contrib/fastrpz.patch to apply cleanly. It fixes for changes + due to added libdynmod, but it does not compile, it conflicts with + new rpz code. 17 July 2020: Wouter - Fix libnettle compile for session ticket key callback function From 753487ff7f3a77ef59a52175fc64c55d177aaf84 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 20 Jul 2020 13:02:09 +0200 Subject: [PATCH 33/81] - branch now named 1.11.0 and 1.11.0rc1 tag. --- configure | 26 +++++++++++++------------- configure.ac | 6 +++--- doc/Changelog | 1 + 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/configure b/configure index ae72d891e..ed66e8530 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for unbound 1.10.2. +# Generated by GNU Autoconf 2.69 for unbound 1.11.0. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.10.2' -PACKAGE_STRING='unbound 1.10.2' +PACKAGE_VERSION='1.11.0' +PACKAGE_STRING='unbound 1.11.0' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -1458,7 +1458,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures unbound 1.10.2 to adapt to many kinds of systems. +\`configure' configures unbound 1.11.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1523,7 +1523,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.10.2:";; + short | recursive ) echo "Configuration of unbound 1.11.0:";; esac cat <<\_ACEOF @@ -1750,7 +1750,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.10.2 +unbound configure 1.11.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2459,7 +2459,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by unbound $as_me 1.10.2, which was +It was created by unbound $as_me 1.11.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2809,9 +2809,9 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu UNBOUND_VERSION_MAJOR=1 -UNBOUND_VERSION_MINOR=10 +UNBOUND_VERSION_MINOR=11 -UNBOUND_VERSION_MICRO=2 +UNBOUND_VERSION_MICRO=0 LIBUNBOUND_CURRENT=9 @@ -2891,7 +2891,7 @@ LIBUNBOUND_AGE=1 # 1.9.6 had 9:6:1 # 1.10.0 had 9:7:1 # 1.10.1 had 9:8:1 -# 1.10.2 had 9:9:1 +# 1.11.0 had 9:9:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -21619,7 +21619,7 @@ _ACEOF -version=1.10.2 +version=1.11.0 date=`date +'%b %e, %Y'` @@ -22138,7 +22138,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by unbound $as_me 1.10.2, which was +This file was extended by unbound $as_me 1.11.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22204,7 +22204,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -unbound config.status 1.10.2 +unbound config.status 1.11.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 5c373d9d8..1d16dce72 100644 --- a/configure.ac +++ b/configure.ac @@ -10,8 +10,8 @@ sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) -m4_define([VERSION_MINOR],[10]) -m4_define([VERSION_MICRO],[2]) +m4_define([VERSION_MINOR],[11]) +m4_define([VERSION_MICRO],[0]) AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues, unbound) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) @@ -94,7 +94,7 @@ LIBUNBOUND_AGE=1 # 1.9.6 had 9:6:1 # 1.10.0 had 9:7:1 # 1.10.1 had 9:8:1 -# 1.10.2 had 9:9:1 +# 1.11.0 had 9:9:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary diff --git a/doc/Changelog b/doc/Changelog index d999d26fb..3339e77b3 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ - Fix contrib/fastrpz.patch to apply cleanly. It fixes for changes due to added libdynmod, but it does not compile, it conflicts with new rpz code. + - branch now named 1.11.0 and 1.11.0rc1 tag. 17 July 2020: Wouter - Fix libnettle compile for session ticket key callback function From dd0b55250b3e34c18eac3fadcd514e940097d56c Mon Sep 17 00:00:00 2001 From: and0x000 Date: Mon, 20 Jul 2020 18:10:21 +0200 Subject: [PATCH 34/81] draft-ietf-dnsop-serve-stale-10 has become RFC 8767 on March 2020 --- doc/example.conf.in | 2 +- doc/unbound.conf.5.in | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index 2eba3bd4f..3af4420c6 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -589,7 +589,7 @@ server: # # Time in milliseconds before replying to the client with expired data. # This essentially enables the serve-stale behavior as specified in - # draft-ietf-dnsop-serve-stale-10 that first tries to resolve before + # RFC 8767 that first tries to resolve before # immediately responding with expired data. 0 disables this behavior. # A recommended value is 1800. # serve-expired-client-timeout: 0 diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index cd43f04ea..4920a0b2d 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1108,7 +1108,7 @@ later on. Default is "no". .B serve\-expired\-ttl: \fI Limit serving of expired responses to configured seconds after expiration. 0 disables the limit. This option only applies when \fBserve\-expired\fR is -enabled. A suggested value per draft-ietf-dnsop-serve-stale-10 is between +enabled. A suggested value per RFC 8767 is between 86400 (1 day) and 259200 (3 days). The default is 0. .TP .B serve\-expired\-ttl\-reset: \fI @@ -1120,14 +1120,14 @@ expired records will be served as long as there are queries for it. Default is .B serve\-expired\-reply\-ttl: \fI TTL value to use when replying with expired data. If \fBserve\-expired\-client\-timeout\fR is also used then it is RECOMMENDED to -use 30 as the value (draft-ietf-dnsop-serve-stale-10). The default is 30. +use 30 as the value (RFC 8767). The default is 30. .TP .B serve\-expired\-client\-timeout: \fI Time in milliseconds before replying to the client with expired data. This essentially enables the serve-stale behavior as specified in -draft-ietf-dnsop-serve-stale-10 that first tries to resolve before immediately +RFC 8767 that first tries to resolve before immediately responding with expired data. A recommended value per -draft-ietf-dnsop-serve-stale-10 is 1800. Setting this to 0 will disable this +RFC 8767 is 1800. Setting this to 0 will disable this behavior. Default is 0. .TP .B val\-nsec3\-keysize\-iterations: \fI<"list of values"> From 9af8080f2b9514d27c5858cb24a06c1803bf0dc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torbj=C3=B6rn=20L=C3=B6nnemark?= Date: Wed, 22 Jul 2020 03:05:19 +0200 Subject: [PATCH 35/81] Fix python module len() implementations They were all missing the 'self.' prefix when accessing the 'obj' instance variable, causing the following exception when attempting to call len() on (for example) a ReplyInfo_RRSet: File "/usr/lib/python3.7/site-packages/unboundmodule.py", line 377, in __len__ def __len__(self): return obj.rrset_count NameError: name 'obj' is not defined --- pythonmod/interface.i | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pythonmod/interface.i b/pythonmod/interface.i index c02ebaf95..f08b575d7 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -314,16 +314,16 @@ struct packed_rrset_data { class RRSetData_RRLen: def __init__(self, obj): self.obj = obj def __getitem__(self, index): return _unboundmodule._get_data_rr_len(self.obj, index) - def __len__(self): return obj.count + obj.rrsig_count + def __len__(self): return self.obj.count + self.obj.rrsig_count class RRSetData_RRTTL: def __init__(self, obj): self.obj = obj def __getitem__(self, index): return _unboundmodule._get_data_rr_ttl(self.obj, index) def __setitem__(self, index, value): _unboundmodule._set_data_rr_ttl(self.obj, index, value) - def __len__(self): return obj.count + obj.rrsig_count + def __len__(self): return self.obj.count + self.obj.rrsig_count class RRSetData_RRData: def __init__(self, obj): self.obj = obj def __getitem__(self, index): return _unboundmodule._get_data_rr_data(self.obj, index) - def __len__(self): return obj.count + obj.rrsig_count + def __len__(self): return self.obj.count + self.obj.rrsig_count %} %inline %{ @@ -404,12 +404,12 @@ struct dns_msg { class ReplyInfo_RRSet: def __init__(self, obj): self.obj = obj def __getitem__(self, index): return _unboundmodule._rrset_rrsets_get(self.obj, index) - def __len__(self): return obj.rrset_count + def __len__(self): return self.obj.rrset_count class ReplyInfo_Ref: def __init__(self, obj): self.obj = obj def __getitem__(self, index): return _unboundmodule._rrset_ref_get(self.obj, index) - def __len__(self): return obj.rrset_count + def __len__(self): return self.obj.rrset_count %} %inline %{ From c6ff5558dec2d73e1cdd2fae3e05946a99a97dc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= Date: Thu, 23 Jul 2020 16:04:26 +0200 Subject: [PATCH 36/81] munin plugin: always exit 0 in autoconf The autoconf operation should always exit 0, also in case the answer in "no", see https://guide.munin-monitoring.org/en/latest/develop/plugins/plugin-concise.html#autoconf --- contrib/unbound_munin_ | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/unbound_munin_ b/contrib/unbound_munin_ index 2839cd8b5..defca291c 100755 --- a/contrib/unbound_munin_ +++ b/contrib/unbound_munin_ @@ -174,11 +174,11 @@ get_state ( ) { if test "$1" = "autoconf" ; then if test ! -f $conf; then echo no "($conf does not exist)" - exit 1 + exit 0 fi if test ! -d `dirname $state`; then echo no "(`dirname $state` directory does not exist)" - exit 1 + exit 0 fi echo yes exit 0 From 16029281a87bc6f79c8133a2eeecb18743bfdf91 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Thu, 23 Jul 2020 17:17:44 +0200 Subject: [PATCH 37/81] Start of EDNS client tags implementation. --- daemon/daemon.c | 15 +++++++++++ services/outside_network.c | 12 +++++++++ sldns/rrdef.h | 3 ++- util/edns.c | 38 ++++++++++++++++++++++++++ util/edns.h | 55 ++++++++++++++++++++++++++++++++++++++ util/module.h | 1 + 6 files changed, 123 insertions(+), 1 deletion(-) diff --git a/daemon/daemon.c b/daemon/daemon.c index 5d4279259..34f7bfda1 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -77,6 +77,7 @@ #include "util/storage/lookup3.h" #include "util/storage/slabhash.h" #include "util/tcp_conn_limit.h" +#include "util/edns.h" #include "services/listen_dnsport.h" #include "services/cache/rrset.h" #include "services/cache/infra.h" @@ -290,6 +291,15 @@ daemon_init(void) free(daemon); return NULL; } + if(!(daemon->env->edns_tags = edns_tags_create())) { + auth_zones_delete(daemon->env->auth_zones); + acl_list_delete(daemon->acl); + tcl_list_delete(daemon->tcl); + edns_known_options_delete(daemon->env); + free(daemon->env); + free(daemon); + return NULL; + } return daemon; } @@ -619,6 +629,10 @@ daemon_fork(struct daemon* daemon) &daemon->use_rpz)) fatal_exit("auth_zones could not be setup"); + /* Set-up EDNS tags */ + if(!edns_tags_apply_cfg(daemon->env->edns_tags, daemon->cfg)) + fatal_exit("Could not set up EDNS tags"); + /* setup modules */ daemon_setup_modules(daemon); @@ -750,6 +764,7 @@ daemon_delete(struct daemon* daemon) rrset_cache_delete(daemon->env->rrset_cache); infra_delete(daemon->env->infra_cache); edns_known_options_delete(daemon->env); + edns_tags_delete(daemon->env->edns_tags); auth_zones_delete(daemon->env->auth_zones); } ub_randfree(daemon->rand); diff --git a/services/outside_network.c b/services/outside_network.c index 44e01d745..b7ac5ef60 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -58,6 +58,7 @@ #include "util/net_help.h" #include "util/random.h" #include "util/fptr_wlist.h" +#include "util/edns.h" #include "sldns/sbuffer.h" #include "dnstap/dnstap.h" #ifdef HAVE_OPENSSL_SSL_H @@ -2111,9 +2112,20 @@ outnet_serviced_query(struct outside_network* outnet, { struct serviced_query* sq; struct service_callback* cb; + struct edns_tag_addr* client_tag_addr; + if(!inplace_cb_query_call(env, qinfo, flags, addr, addrlen, zone, zonelen, qstate, qstate->region)) return NULL; + + if((client_tag_addr = edns_tag_addr_lookup(env->edns_tags->client_tags, + addr, addrlen))) { + uint16_t client_tag = htons(client_tag_addr->tag_data); + edns_opt_list_append(&qstate->edns_opts_back_out, + LDNS_EDNS_CLIENT_TAG, 2, + (uint8_t*)&client_tag, qstate->region); + } + serviced_gen_query(buff, qinfo->qname, qinfo->qname_len, qinfo->qtype, qinfo->qclass, flags); sq = lookup_serviced(outnet, buff, dnssec, addr, addrlen, diff --git a/sldns/rrdef.h b/sldns/rrdef.h index 4e7fef574..e084f354a 100644 --- a/sldns/rrdef.h +++ b/sldns/rrdef.h @@ -426,7 +426,8 @@ enum sldns_enum_edns_option LDNS_EDNS_N3U = 7, /* RFC6975 */ LDNS_EDNS_CLIENT_SUBNET = 8, /* RFC7871 */ LDNS_EDNS_KEEPALIVE = 11, /* draft-ietf-dnsop-edns-tcp-keepalive*/ - LDNS_EDNS_PADDING = 12 /* RFC7830 */ + LDNS_EDNS_PADDING = 12, /* RFC7830 */ + LDNS_EDNS_CLIENT_TAG = 16 /* draft-bellis-dnsop-edns-tags-01 */ }; typedef enum sldns_enum_edns_option sldns_edns_option; diff --git a/util/edns.c b/util/edns.c index d19952df0..0ab00cf7c 100644 --- a/util/edns.c +++ b/util/edns.c @@ -47,6 +47,44 @@ #include "util/data/msgparse.h" #include "util/data/msgreply.h" +struct edns_tags* edns_tags_create(void) +{ + struct edns_tags* edns_tags = calloc(1, sizeof(struct edns_tags)); + if(!edns_tags) + return NULL; + if(!(edns_tags->region = regional_create())) { + edns_tags_delete(edns_tags); + return NULL; + } + return edns_tags; +} + +void edns_tags_delete(struct edns_tags* edns_tags) +{ + if(!edns_tags) + return; + regional_destroy(edns_tags->region); + free(edns_tags); +} + +int edns_tags_apply_cfg(struct edns_tags* edns_tags, + struct config_file* config) +{ + regional_free_all(edns_tags->region); + addr_tree_init(&edns_tags->client_tags); + + /* TODO walk over config, create and insert node. */ + + return 1; +} + +struct edns_tag_addr* +edns_tag_addr_lookup(rbtree_type tree, struct sockaddr_storage* addr, + socklen_t addrlen) +{ + return (struct edns_tag_addr*)addr_tree_lookup(&tree, addr, addrlen); +} + static int edns_keepalive(struct edns_data* edns_out, struct edns_data* edns_in, struct comm_point* c, struct regional* region) { diff --git a/util/edns.h b/util/edns.h index a4ee7def6..310ba1cd2 100644 --- a/util/edns.h +++ b/util/edns.h @@ -42,11 +42,66 @@ #ifndef UTIL_EDNS_H #define UTIL_EDNS_H +#include "util/storage/dnstree.h" + struct edns_data; struct config_file; struct comm_point; struct regional; +/** + * Structure containing all EDNS tags. + */ +struct edns_tags { + /** Tree of EDNS client tags to use in upstream queries, per address + * prefix. Contains nodes of type edns_tag_addr. */ + rbtree_type client_tags; + /** region to allocate tree nodes in */ + struct regional* region; +}; + +/** + * EDNS tag. Node of rbtree, containing tag and prefix. + */ +struct edns_tag_addr { + /** node in address tree, used for tree lookups. Need to be the first + * member of this struct. */ + struct addr_tree_node node; + /** tag data, in host byte ordering */ + uint16_t tag_data; +}; + +/** + * Create structure to hold EDNS tags + * @return: newly created edns_tags, NULL on alloc failure. + */ +struct edns_tags* edns_tags_create(void); + +/** Delete ENDS tags structure + * @param edns_tags: struct to delete + */ +void edns_tags_delete(struct edns_tags* edns_tags); + +/** + * Add configured EDNS tags + * @param edns_tags: edns tags to apply config to + * @param config: struct containing EDNS tags configuration + * @return 0 on error + */ +int edns_tags_apply_cfg(struct edns_tags* edns_tags, + struct config_file* config); + +/** + * Find tag for address. + * @param tree: tree containing EDNS tags per address prefix. + * @param addr: address to use for tree lookup + * @param addrlen: length of address + * @return: matching tree node, NULL otherwise + */ +struct edns_tag_addr* +edns_tag_addr_lookup(rbtree_type tree, struct sockaddr_storage* addr, + socklen_t addrlen); + /** * Apply common EDNS options. * diff --git a/util/module.h b/util/module.h index fa89c647e..1d696ed0a 100644 --- a/util/module.h +++ b/util/module.h @@ -520,6 +520,7 @@ struct module_env { struct edns_known_option* edns_known_options; /* Number of known edns options */ size_t edns_known_options_num; + struct edns_tags* edns_tags; /* Make every mesh state unique, do not aggregate mesh states. */ int unique_mesh; From 64806a0d146aeef89aac2d8670bb0b796820c22d Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Fri, 24 Jul 2020 14:52:04 +0200 Subject: [PATCH 38/81] Add edns-client-tag configuration option --- doc/unbound.conf.5.in | 6 + util/config_file.c | 3 + util/config_file.h | 3 + util/configlexer.c | 4128 +++++++++++++++++++++-------------------- util/configlexer.lex | 1 + util/configparser.c | 2075 +++++++++++---------- util/configparser.h | 10 +- util/configparser.y | 19 +- util/edns.c | 1 + 9 files changed, 3156 insertions(+), 3090 deletions(-) diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index cd43f04ea..2b2f909da 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1516,6 +1516,12 @@ servers set. The default for fast\-server\-permil is 0. Set the number of servers that should be used for fast server selection. Only use the fastest specified number of servers with the fast\-server\-permil option, that turns this on or off. The default is to use the fastest 3 servers. +.TP 5 +.B edns\-client\-tag: \fI +Include an edns-client-tag option in queries with destination address matching +the configured IP netblock. This configuration option can be used multiple +times. The most specific match will be used. The tag data is configured in +decimal format, from 0 to 65535. .SS "Remote Control Options" In the .B remote\-control: diff --git a/util/config_file.c b/util/config_file.c index 0e9ee471b..0ab8614a3 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -315,6 +315,7 @@ config_create(void) cfg->qname_minimisation_strict = 0; cfg->shm_enable = 0; cfg->shm_key = 11777; + cfg->edns_client_tags = NULL; cfg->dnscrypt = 0; cfg->dnscrypt_port = 0; cfg->dnscrypt_provider = NULL; @@ -1130,6 +1131,7 @@ config_get_option(struct config_file* cfg, const char* opt, else O_LS3(opt, "access-control-tag-action", acl_tag_actions) else O_LS3(opt, "access-control-tag-data", acl_tag_datas) else O_LS2(opt, "access-control-view", acl_view) + else O_LS2(opt, "edns_client_tags", edns_client_tags) #ifdef USE_IPSECMOD else O_YNO(opt, "ipsecmod-enabled", ipsecmod_enabled) else O_YNO(opt, "ipsecmod-ignore-bogus", ipsecmod_ignore_bogus) @@ -1499,6 +1501,7 @@ config_delete(struct config_file* cfg) config_deldblstrlist(cfg->ratelimit_below_domain); config_delstrlist(cfg->python_script); config_delstrlist(cfg->dynlib_file); + config_deldblstrlist(cfg->edns_client_tags); #ifdef USE_IPSECMOD free(cfg->ipsecmod_hook); config_delstrlist(cfg->ipsecmod_whitelist); diff --git a/util/config_file.h b/util/config_file.h index 66e5025d0..e61257a39 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -553,6 +553,9 @@ struct config_file { /** SHM data - key for the shm */ int shm_key; + /** list of EDNS client tag entries, linked list */ + struct config_str2list* edns_client_tags; + /** DNSCrypt */ /** true to enable dnscrypt */ int dnscrypt; diff --git a/util/configlexer.c b/util/configlexer.c index cd505dfda..46022f656 100644 --- a/util/configlexer.c +++ b/util/configlexer.c @@ -1,7 +1,7 @@ #include "config.h" #include "util/configyyrename.h" -#line 2 "" +#line 3 "" #define YY_INT_ALIGNED short int @@ -354,8 +354,8 @@ static void yynoreturn yy_fatal_error ( const char* msg ); (yy_hold_char) = *yy_cp; \ *yy_cp = '\0'; \ (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 323 -#define YY_END_OF_BUFFER 324 +#define YY_NUM_RULES 324 +#define YY_END_OF_BUFFER 325 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -363,353 +363,354 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static const flex_int16_t yy_accept[3137] = +static const flex_int16_t yy_accept[3148] = { 0, - 1, 1, 297, 297, 301, 301, 305, 305, 309, 309, - 1, 1, 313, 313, 317, 317, 324, 321, 1, 295, - 295, 322, 2, 322, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 297, 298, 298, 299, - 322, 301, 302, 302, 303, 322, 308, 305, 306, 306, - 307, 322, 309, 310, 310, 311, 322, 320, 296, 2, - 300, 322, 320, 316, 313, 314, 314, 315, 322, 317, - 318, 318, 319, 322, 321, 0, 1, 2, 2, 2, - 2, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 1, 1, 298, 298, 302, 302, 306, 306, 310, 310, + 1, 1, 314, 314, 318, 318, 325, 322, 1, 296, + 296, 323, 2, 323, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 298, 299, 299, 300, + 323, 302, 303, 303, 304, 323, 309, 306, 307, 307, + 308, 323, 310, 311, 311, 312, 323, 321, 297, 2, + 301, 323, 321, 317, 314, 315, 315, 316, 323, 318, + 319, 319, 320, 323, 322, 0, 1, 2, 2, 2, + 2, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 297, 0, 301, 0, - 308, 0, 305, 309, 0, 320, 0, 2, 2, 320, - 316, 0, 313, 317, 0, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 298, 0, 302, 0, + 309, 0, 306, 310, 0, 321, 0, 2, 2, 321, + 317, 0, 314, 318, 0, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 320, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 321, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 115, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 123, - 321, 321, 321, 321, 321, 321, 321, 320, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 115, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 123, + 322, 322, 322, 322, 322, 322, 322, 321, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 99, 321, 321, 321, 321, 321, - 321, 8, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 116, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 99, 322, 322, 322, 322, 322, + 322, 8, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 116, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 128, 321, 320, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 290, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 128, 322, 321, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 290, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 320, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 57, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 321, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 57, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 227, 321, 14, 15, 321, 19, 18, 321, 321, 211, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 122, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 209, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 227, 322, 14, 15, 322, 19, 18, 322, 322, + 211, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 122, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 209, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 3, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 320, 321, 321, - 321, 321, 321, 321, 321, 284, 321, 321, 283, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 3, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 321, + 322, 322, 322, 322, 322, 322, 322, 284, 322, 322, + 283, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 304, 321, 321, - 321, 321, 321, 321, 321, 56, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 60, 321, 258, 321, 321, 321, 321, 321, - 321, 321, 321, 291, 292, 321, 321, 321, 321, 321, - 61, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 119, 321, 321, - 321, 321, 321, 321, 321, 321, 198, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 305, 322, 322, 322, 322, 322, 322, 322, 56, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 60, 322, 258, 322, 322, + 322, 322, 322, 322, 322, 322, 291, 292, 322, 322, + 322, 322, 322, 61, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 119, 322, 322, 322, 322, 322, 322, 322, 322, 198, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 21, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 147, 321, 321, 320, - 304, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 97, 321, 321, 321, 321, 321, 321, 321, 266, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 170, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 21, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 147, + 322, 322, 321, 305, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 97, 322, 322, 322, 322, 322, + 322, 322, 266, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 170, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 146, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 96, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 32, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 33, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 146, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 96, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 32, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 58, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 121, 320, 321, 321, 321, 321, - 321, 114, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 59, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 231, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 171, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 33, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 58, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 121, 321, + 322, 322, 322, 322, 322, 114, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 59, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 231, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 171, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 47, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 249, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 51, 321, 52, 321, 321, 321, 321, 321, 100, - 321, 101, 321, 321, 321, 321, 98, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 47, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 249, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 51, 322, 52, 322, + 322, 322, 322, 322, 100, 322, 101, 322, 322, 322, + 322, 98, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 7, 321, 320, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 220, 321, 321, 321, 321, - 149, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 232, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 48, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 7, 322, 321, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 220, 322, 322, 322, 322, 149, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 232, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 190, - 321, 189, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 16, 17, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 62, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 197, 321, 321, 321, 321, - 321, 321, 103, 321, 102, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 181, 321, 321, 321, + 322, 48, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 190, 322, 189, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 16, 17, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 62, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 197, 322, 322, 322, 322, 322, 322, 103, 322, + 102, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 129, 320, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 81, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 210, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 85, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 55, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 181, 322, 322, 322, 322, 322, 322, 322, + 322, 129, 321, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 81, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 210, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 85, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 55, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 184, 185, 321, 321, 321, 260, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 6, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 264, 321, 321, 321, 321, 321, 321, - 285, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 42, 321, 321, 321, 321, 44, 321, 321, 321, - 321, 321, 321, 321, 321, 45, 321, 321, 321, 321, - 321, 321, 321, 320, 321, 177, 321, 321, 321, 124, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 184, 185, 322, 322, 322, 260, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 6, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 264, 322, 322, 322, 322, 322, 322, 285, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 42, 322, + 322, 322, 322, 44, 322, 322, 322, 322, 322, 322, + 322, 322, 45, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 202, 321, 178, 321, 321, 321, 217, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 46, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 126, 108, 321, - 109, 321, 321, 321, 107, 321, 321, 321, 321, 321, - 321, 321, 321, 144, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 248, 321, 321, 321, - 321, 321, 321, 321, 321, 179, 321, 321, 321, 321, - 321, 182, 321, 188, 321, 321, 321, 321, 321, 216, + 321, 322, 177, 322, 322, 322, 124, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 202, 322, 178, + 322, 322, 322, 217, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 46, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 126, 108, 322, 109, 322, + 322, 322, 107, 322, 322, 322, 322, 322, 322, 322, + 322, 144, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 248, 322, 322, 322, 322, 322, + 322, 322, 322, 179, 322, 322, 322, 322, 322, 182, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 95, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 120, 321, 321, 321, 321, 321, 321, - 53, 321, 321, 321, 26, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 20, 321, 321, 321, 321, 321, - 321, 27, 36, 321, 154, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 320, 321, - 321, 321, 321, 321, 321, 70, 72, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 188, 322, 322, 322, 322, 322, 216, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 95, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 120, 322, 322, 322, 322, 322, 322, 53, 322, + 322, 322, 26, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 20, 322, 322, 322, 322, 322, 322, 27, + 36, 322, 154, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 321, 322, 322, 322, + 322, 322, 322, 70, 72, 322, 322, 322, 322, 322, - 268, 321, 321, 321, 321, 228, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 110, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 143, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 279, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 148, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 208, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 288, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 268, 322, + 322, 322, 322, 228, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 110, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 143, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 279, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 148, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 208, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 165, - 321, 321, 321, 321, 321, 321, 321, 321, 104, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 160, 321, - 172, 321, 321, 321, 321, 320, 321, 132, 321, 321, - 321, 321, 321, 91, 321, 321, 321, 321, 200, 321, - 321, 321, 321, 321, 321, 218, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 240, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 125, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 288, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 165, 322, + 322, 322, 322, 322, 322, 322, 322, 104, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 160, 322, 172, + 322, 322, 322, 322, 321, 322, 132, 322, 322, 322, + 322, 322, 91, 322, 322, 322, 322, 200, 322, 322, + 322, 322, 322, 322, 218, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 240, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 164, 321, 321, 321, 321, 321, 321, - 73, 74, 321, 321, 321, 321, 321, 54, 321, 321, - 321, 321, 321, 80, 173, 321, 191, 321, 221, 321, - 321, 183, 261, 321, 321, 321, 321, 321, 66, 321, - 175, 321, 321, 321, 321, 321, 9, 321, 321, 321, - 94, 321, 321, 321, 321, 253, 321, 321, 321, 321, - 199, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 125, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 164, 322, 322, 322, 322, 322, 322, + 73, 74, 322, 322, 322, 322, 322, 54, 322, 322, + 322, 322, 322, 80, 173, 322, 191, 322, 221, 322, + 322, 183, 261, 322, 322, 322, 322, 322, 66, 322, + 175, 322, 322, 322, 322, 322, 9, 322, 322, 322, + 94, 322, 322, 322, 322, 253, 322, 322, 322, 322, + 199, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 320, 321, 321, 321, - 321, 163, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 150, 321, 267, 321, 321, 321, 321, 321, - 239, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 212, 321, 321, 321, 321, 259, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 282, 321, 174, 321, 321, 321, 321, - 321, 321, 321, 65, 67, 321, 321, 321, 321, 321, - 321, 321, 93, 321, 321, 321, 321, 251, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 321, 322, 322, 322, + 322, 163, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 150, 322, 267, 322, 322, 322, 322, 322, + 239, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 212, 322, 295, 322, 322, 322, 259, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 282, 322, 174, 322, 322, 322, + 322, 322, 322, 322, 65, 67, 322, 322, 322, 322, - 321, 321, 263, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 204, 34, 28, 30, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 35, 321, 29, - 31, 321, 321, 321, 321, 321, 321, 321, 321, 90, - 321, 321, 321, 321, 321, 321, 320, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 206, 203, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 64, 321, - 321, 127, 321, 111, 321, 321, 321, 321, 321, 321, - 321, 321, 145, 312, 13, 321, 321, 321, 321, 321, + 322, 322, 322, 93, 322, 322, 322, 322, 251, 322, + 322, 322, 322, 263, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 204, 34, 28, 30, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 35, 322, + 29, 31, 322, 322, 322, 322, 322, 322, 322, 322, + 90, 322, 322, 322, 322, 322, 322, 321, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 206, + 203, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 64, + 322, 322, 127, 322, 111, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 277, 321, 280, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 12, 321, 321, - 22, 321, 321, 321, 257, 321, 321, 321, 321, 265, - 321, 321, 321, 68, 321, 214, 321, 321, 321, 321, - 205, 321, 321, 63, 321, 321, 321, 321, 23, 321, - 43, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 159, 158, 312, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 207, 201, 321, 219, 321, - 321, 269, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 145, 313, 13, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 277, 322, 280, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 12, 322, + 322, 22, 322, 322, 322, 257, 322, 322, 322, 322, + 265, 322, 322, 322, 68, 322, 214, 322, 322, 322, + 322, 205, 322, 322, 63, 322, 322, 322, 322, 23, + 322, 43, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 159, 158, 313, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 207, 201, 322, 219, + 322, 322, 269, 322, 322, 322, 322, 322, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 75, 321, 321, 321, 252, 321, 321, 321, 321, 187, - 321, 321, 321, 321, 213, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 286, 287, 156, 321, 321, 69, - 321, 321, 321, 321, 166, 321, 321, 105, 106, 321, - 321, 321, 321, 151, 321, 153, 321, 192, 321, 321, - 321, 321, 157, 321, 321, 222, 321, 321, 321, 321, - 321, 321, 321, 134, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 230, 321, 321, 321, - 321, 321, 321, 321, 24, 321, 262, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 75, 322, 322, 322, 252, 322, 322, 322, 322, + 187, 322, 322, 322, 322, 213, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 286, 287, 156, 322, 322, + 69, 322, 322, 322, 322, 166, 322, 322, 105, 106, + 322, 322, 322, 322, 151, 322, 153, 322, 192, 322, + 322, 322, 322, 157, 322, 322, 222, 322, 322, 322, + 322, 322, 322, 322, 134, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 230, 322, 322, - 321, 321, 321, 321, 321, 321, 321, 321, 193, 321, - 321, 250, 321, 281, 321, 186, 321, 321, 321, 321, - 49, 321, 321, 321, 321, 4, 321, 321, 321, 321, - 118, 133, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 225, 37, 38, 321, 321, 321, 321, 321, 321, 321, - 270, 321, 321, 321, 321, 321, 321, 321, 238, 321, - 321, 321, 321, 321, 321, 321, 196, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 78, 321, 50, 256, - 321, 226, 321, 321, 321, 321, 11, 321, 321, 321, + 322, 322, 322, 322, 322, 24, 322, 262, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 193, + 322, 322, 250, 322, 281, 322, 186, 322, 322, 322, + 322, 49, 322, 322, 322, 322, 4, 322, 322, 322, + 322, 118, 133, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 225, 37, 38, 322, 322, 322, 322, 322, 322, + 322, 270, 322, 322, 322, 322, 322, 322, 322, 238, + 322, 322, 322, 322, 322, 322, 322, 196, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 78, 322, 50, - 321, 321, 321, 117, 321, 321, 321, 321, 194, 82, - 321, 40, 321, 321, 321, 321, 321, 321, 321, 321, - 162, 321, 321, 321, 321, 321, 136, 321, 321, 321, - 321, 229, 321, 321, 321, 321, 321, 237, 321, 321, - 321, 321, 130, 321, 321, 112, 113, 321, 321, 321, - 84, 88, 83, 321, 76, 321, 321, 321, 321, 321, - 10, 321, 321, 321, 254, 289, 321, 321, 321, 321, - 294, 39, 321, 321, 321, 321, 321, 161, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 256, 322, 226, 322, 322, 322, 322, 11, 322, 322, + 322, 322, 322, 322, 117, 322, 322, 322, 322, 194, + 82, 322, 40, 322, 322, 322, 322, 322, 322, 322, + 322, 162, 322, 322, 322, 322, 322, 136, 322, 322, + 322, 322, 229, 322, 322, 322, 322, 322, 237, 322, + 322, 322, 322, 130, 322, 322, 112, 113, 322, 322, + 322, 84, 88, 83, 322, 76, 322, 322, 322, 322, + 322, 10, 322, 322, 322, 254, 289, 322, 322, 322, + 322, 294, 39, 322, 322, 322, 322, 322, 161, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, - 89, 87, 321, 77, 278, 321, 321, 321, 321, 321, - 321, 321, 180, 321, 321, 321, 321, 321, 195, 321, - 321, 321, 321, 321, 321, 321, 321, 152, 71, 321, - 321, 321, 321, 321, 271, 321, 321, 321, 321, 321, - 321, 321, 234, 321, 321, 233, 131, 321, 86, 137, - 138, 141, 142, 139, 140, 79, 321, 255, 321, 321, - 321, 321, 155, 321, 321, 321, 321, 321, 224, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 168, 167, 41, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 89, 87, 322, 77, 278, 322, 322, 322, 322, + 322, 322, 322, 180, 322, 322, 322, 322, 322, 195, + 322, 322, 322, 322, 322, 322, 322, 322, 152, 71, + 322, 322, 322, 322, 322, 271, 322, 322, 322, 322, + 322, 322, 322, 234, 322, 322, 233, 131, 322, 86, + 137, 138, 141, 142, 139, 140, 79, 322, 255, 322, + 322, 322, 322, 155, 322, 322, 322, 322, 322, 224, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 168, 167, 41, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 92, 321, 223, 321, 247, 275, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 5, 321, 321, 215, 321, 321, 276, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 235, 25, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 236, 321, 321, 321, 135, 321, 321, 321, 321, - 321, 321, 321, 321, 169, 321, 176, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 272, 321, 321, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 92, 322, 223, 322, 247, 275, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 5, 322, 322, 215, 322, 322, 276, 322, + 322, 322, 322, 322, 322, 322, 322, 322, 235, 25, + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 236, 322, 322, 322, 135, 322, 322, 322, + 322, 322, 322, 322, 322, 169, 322, 176, 322, 322, + 322, 322, 322, 322, 322, 322, 322, 272, 322, 322, - 321, 321, 321, 321, 293, 321, 321, 243, 321, 321, - 321, 321, 321, 273, 321, 321, 321, 321, 321, 321, - 274, 321, 321, 321, 241, 321, 244, 245, 321, 321, - 321, 321, 321, 242, 246, 0 + 322, 322, 322, 322, 322, 322, 322, 322, 322, 322, + 322, 322, 322, 322, 322, 293, 322, 322, 243, 322, + 322, 322, 322, 322, 273, 322, 322, 322, 322, 322, + 322, 274, 322, 322, 322, 241, 322, 244, 245, 322, + 322, 322, 322, 322, 242, 246, 0 } ; static const YY_CHAR yy_ec[256] = @@ -752,17 +753,17 @@ static const YY_CHAR yy_meta[41] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 } ; -static const flex_int16_t yy_base[3155] = +static const flex_int16_t yy_base[3166] = { 0, 0, 0, 38, 41, 44, 46, 59, 65, 71, 77, - 90, 112, 96, 118, 124, 136, 4335, 3834, 81, 6133, - 6133, 6133, 129, 52, 130, 63, 131, 152, 70, 140, + 90, 112, 96, 118, 124, 136, 3174, 3068, 81, 6159, + 6159, 6159, 129, 52, 130, 63, 131, 152, 70, 140, 144, 156, 57, 88, 76, 173, 175, 95, 184, 135, - 185, 205, 147, 204, 178, 123, 3717, 6133, 6133, 6133, - 107, 3426, 6133, 6133, 6133, 178, 3362, 3153, 6133, 6133, - 6133, 224, 2654, 6133, 6133, 6133, 204, 2276, 6133, 238, - 6133, 242, 197, 2238, 1962, 6133, 6133, 6133, 246, 1833, - 6133, 6133, 6133, 216, 1673, 252, 166, 0, 256, 0, + 185, 205, 147, 204, 178, 123, 2844, 6159, 6159, 6159, + 107, 2406, 6159, 6159, 6159, 178, 2248, 2125, 6159, 6159, + 6159, 224, 2071, 6159, 6159, 6159, 204, 2005, 6159, 238, + 6159, 242, 197, 1902, 1688, 6159, 6159, 6159, 246, 1637, + 6159, 6159, 6159, 216, 1370, 252, 166, 0, 256, 0, 0, 216, 248, 162, 241, 250, 254, 258, 92, 259, 262, 263, 260, 264, 265, 272, 267, 273, 271, 282, @@ -770,7 +771,7 @@ static const flex_int16_t yy_base[3155] = 311, 300, 316, 191, 321, 315, 323, 304, 325, 327, 326, 337, 329, 338, 340, 348, 341, 345, 347, 350, 357, 227, 351, 354, 358, 362, 369, 359, 373, 379, - 374, 377, 383, 385, 387, 384, 1618, 403, 1352, 406, + 374, 377, 383, 385, 387, 384, 1072, 403, 947, 406, 814, 416, 740, 688, 410, 600, 420, 424, 0, 416, 501, 430, 464, 442, 435, 422, 434, 429, 430, 431, 433, 397, 432, 435, 436, 437, 440, 454, 438, 453, @@ -791,670 +792,672 @@ static const flex_int16_t yy_base[3155] = 719, 717, 725, 713, 718, 733, 723, 737, 726, 745, 743, 730, 758, 744, 747, 749, 759, 748, 750, 756, 769, 761, 779, 766, 773, 781, 784, 792, 789, 795, - 785, 797, 787, 798, 801, 803, 810, 808, 6133, 805, + 785, 797, 787, 798, 801, 803, 810, 808, 6159, 805, 807, 819, 822, 823, 826, 816, 832, 806, 836, 839, - 841, 838, 846, 868, 824, 842, 845, 847, 850, 6133, + 841, 838, 846, 868, 824, 842, 845, 847, 850, 6159, 854, 852, 892, 861, 856, 878, 874, 858, 881, 870, 888, 882, 896, 883, 893, 898, 916, 899, 903, 905, 902, 914, 915, 924, 926, 921, 928, 929, 937, 932, 933, 934, 938, 942, 944, 945, 950, 946, 951, 952, - 954, 965, 955, 963, 959, 967, 968, 970, 972, 983, - 976, 977, 993, 984, 989, 994, 996, 997, 991, 1000, - 1003, 1007, 1004, 1008, 1012, 1020, 1015, 1010, 1017, 1018, - 1022, 1028, 1024, 1026, 1030, 1031, 1032, 1040, 1033, 1041, - 1034, 1047, 1049, 752, 6133, 1051, 1053, 1054, 1055, 1056, - 1057, 6133, 1059, 1058, 1061, 1066, 1063, 1071, 1080, 1067, - 1082, 1070, 1083, 1084, 1092, 1087, 1088, 1095, 1094, 1096, - 947, 1098, 1100, 1105, 1102, 1106, 1109, 1103, 1114, 1128, - 6133, 1112, 1115, 1116, 1118, 1123, 1131, 1140, 1126, 1133, + 955, 965, 958, 963, 967, 968, 970, 972, 973, 975, + 985, 979, 993, 969, 991, 995, 998, 1000, 976, 1002, + 1004, 1007, 1008, 1009, 1010, 1018, 1015, 1014, 1016, 1020, + 1021, 1023, 1027, 1028, 1031, 1030, 1033, 1034, 1035, 1040, + 1045, 1043, 1051, 752, 6159, 1053, 1044, 1055, 1057, 1056, + 1046, 6159, 1059, 1060, 1061, 1068, 1069, 1073, 1081, 1070, + 1074, 1087, 1083, 1088, 1095, 1071, 1093, 1098, 1094, 1099, + 1100, 1102, 1101, 1106, 1109, 1107, 1110, 1113, 1114, 1133, + 6159, 1115, 1121, 1125, 1118, 1128, 1138, 1145, 1131, 1143, - 1143, 1146, 1156, 1151, 1121, 1152, 1153, 1157, 1160, 1163, - 1165, 1166, 1168, 1169, 1170, 1171, 1172, 1174, 1179, 1184, - 6133, 1177, 1187, 1195, 1196, 1182, 1198, 1199, 1200, 1201, - 1202, 1203, 1205, 1204, 1210, 1220, 1211, 1224, 1221, 1222, - 1226, 1227, 1229, 1228, 1230, 1232, 1244, 1237, 1236, 1252, - 1247, 1254, 1256, 1263, 1265, 1245, 1258, 1262, 1260, 1268, - 1269, 1270, 1271, 1273, 1274, 1283, 1280, 1281, 1282, 1285, - 1295, 1286, 1288, 1298, 1290, 1296, 1293, 1300, 1304, 1307, - 1303, 1313, 6133, 1320, 1315, 1318, 1319, 1322, 1326, 1325, - 1331, 1332, 1333, 1335, 1334, 1336, 1338, 1342, 1341, 1343, + 1151, 1155, 1163, 1140, 1117, 1158, 1160, 1161, 1165, 1171, + 1169, 1166, 1173, 1174, 1175, 1177, 1176, 1179, 1186, 1183, + 6159, 1187, 1191, 1200, 1192, 1199, 1202, 1203, 1205, 1206, + 1207, 1209, 1208, 1215, 1213, 1225, 1216, 1232, 1218, 1231, + 1227, 1229, 1233, 1236, 1237, 1235, 1248, 1245, 1250, 1255, + 1263, 1260, 1262, 1270, 1272, 1252, 1265, 1240, 1269, 1267, + 1268, 1275, 1279, 1280, 1281, 1283, 1288, 1285, 1290, 1291, + 1292, 1299, 1297, 1295, 1298, 1304, 1313, 1305, 1311, 1315, + 1316, 1317, 1318, 6159, 1325, 1326, 1329, 1324, 1334, 1337, + 1336, 1330, 1338, 1342, 1294, 1343, 1344, 1352, 1345, 1347, - 1344, 1346, 1355, 1357, 1361, 1368, 1367, 1369, 1354, 1362, - 1377, 1373, 1381, 1379, 1380, 1389, 1384, 1386, 1387, 1396, - 1391, 1393, 1395, 1394, 1403, 1398, 1408, 1415, 1401, 1412, - 1422, 1418, 1420, 1423, 1424, 1427, 1428, 1430, 1431, 1432, - 1433, 1440, 1435, 1438, 1437, 1441, 1436, 1442, 1450, 1444, - 1463, 1455, 1458, 1460, 1464, 1467, 1466, 1465, 1468, 1472, - 1473, 1475, 1474, 1476, 1478, 1485, 875, 1487, 1489, 1493, - 1495, 1497, 1496, 1500, 1499, 1502, 1508, 1498, 1511, 1512, - 1515, 1517, 1519, 1520, 1524, 1528, 1522, 1530, 1523, 1533, - 1534, 1541, 1542, 1545, 1537, 6133, 1535, 1556, 1548, 1549, + 1353, 1358, 1359, 1361, 1357, 1362, 1375, 1374, 1376, 1360, + 1368, 1385, 1383, 1386, 1384, 1389, 1396, 1391, 1392, 1393, + 1403, 1399, 1400, 1401, 1402, 1407, 1410, 1411, 1421, 1416, + 1419, 1426, 1430, 1423, 1432, 1427, 1433, 1436, 1437, 1438, + 1439, 1440, 1447, 1445, 1442, 1444, 1450, 1443, 1452, 1457, + 1453, 1470, 1462, 1463, 1466, 1467, 1473, 1472, 1478, 1474, + 1479, 1480, 1482, 1481, 1483, 1489, 1488, 875, 1491, 1496, + 1500, 1502, 1504, 1503, 1506, 1508, 1509, 1513, 1512, 1519, + 1520, 1522, 1523, 1525, 1528, 1524, 1531, 1534, 1538, 1539, + 1541, 1540, 1543, 1544, 1550, 1551, 6159, 1546, 1558, 1556, - 1552, 1557, 1558, 1565, 1561, 1560, 1562, 1563, 1566, 1589, - 6133, 1570, 6133, 6133, 1573, 6133, 6133, 1572, 1571, 6133, - 1578, 1579, 1583, 1574, 1592, 1596, 1597, 1599, 1600, 1610, - 1621, 1612, 1603, 1614, 1602, 1616, 1635, 1630, 1605, 1626, - 1642, 1631, 1644, 1645, 1649, 1651, 1646, 1638, 1652, 1654, - 1659, 1655, 1660, 1662, 1665, 1666, 1664, 1668, 1669, 1676, - 1681, 1672, 1689, 6133, 1685, 1693, 1698, 1694, 1701, 1697, - 1696, 1703, 1705, 1707, 1708, 1709, 1710, 1712, 1713, 1718, - 1675, 1714, 1726, 1721, 6133, 1724, 1725, 1723, 1730, 1728, - 1736, 1738, 1731, 1729, 1741, 1742, 1752, 1748, 1744, 1753, + 1559, 1557, 1562, 1564, 1572, 1567, 1570, 1568, 1571, 1573, + 1597, 6159, 1574, 6159, 6159, 1578, 6159, 6159, 1579, 1584, + 6159, 1585, 1583, 1594, 1600, 1580, 1607, 1119, 1603, 1598, + 1605, 1620, 1626, 1613, 1601, 1611, 1615, 1631, 1642, 1632, + 1623, 1635, 1646, 1643, 1649, 1651, 1654, 1655, 1658, 1659, + 1660, 1661, 1663, 1665, 1666, 1662, 1669, 1671, 1668, 1675, + 1674, 1685, 1684, 1691, 1694, 6159, 1692, 1701, 1704, 1700, + 1708, 1703, 1707, 1709, 1711, 1715, 1712, 1716, 1718, 1719, + 1680, 1722, 1724, 1727, 1731, 1728, 6159, 1729, 1730, 1732, + 1736, 1737, 1740, 1744, 1745, 1742, 1748, 1750, 1761, 1751, - 1756, 1757, 1758, 6133, 1760, 1764, 1766, 1768, 1767, 1770, - 1771, 1774, 1775, 1776, 1777, 1778, 1779, 1780, 1789, 1784, - 1786, 1792, 1794, 1801, 1802, 1804, 1806, 1803, 1810, 1812, - 1813, 1814, 1815, 1817, 1818, 1826, 1828, 1825, 1830, 1827, - 1835, 1846, 1841, 1831, 1842, 1843, 1844, 1851, 1855, 1853, - 1857, 1858, 1866, 1859, 1864, 1867, 1868, 1878, 1861, 1870, - 1880, 1869, 1882, 1883, 1884, 6133, 1886, 1887, 6133, 1889, - 1890, 1912, 1892, 1894, 1899, 1896, 1897, 1900, 1905, 1913, - 1919, 1916, 1932, 1925, 1929, 1935, 1937, 1940, 1906, 1936, - 1942, 1938, 1944, 1948, 1947, 1960, 1967, 1908, 1968, 1970, + 1753, 1754, 1762, 1758, 1766, 6159, 1770, 1765, 1774, 1775, + 1776, 1778, 1779, 1781, 1784, 1783, 1785, 1786, 1787, 1788, + 1800, 1793, 1789, 1791, 1806, 1809, 1811, 1812, 1814, 1796, + 1818, 1819, 1821, 1822, 1823, 1824, 1826, 1834, 1836, 1833, + 1837, 1832, 1841, 1844, 1849, 1840, 1848, 1850, 1851, 1856, + 1864, 1862, 1861, 1854, 1869, 1866, 1871, 1873, 1875, 1882, + 1874, 1883, 1877, 1884, 1885, 1888, 1890, 6159, 1892, 1894, + 6159, 1895, 1896, 1918, 1897, 1899, 1904, 1901, 1907, 1910, + 1911, 1922, 1920, 1924, 1941, 1928, 1930, 1942, 1933, 1945, + 1931, 1947, 1949, 1951, 1953, 1955, 1956, 1954, 1971, 1974, - 1949, 1946, 1962, 1981, 1966, 1969, 1972, 1973, 1975, 1979, - 1983, 1988, 1977, 1990, 1993, 1994, 1997, 6133, 2005, 2003, - 2004, 2008, 2016, 2013, 2011, 6133, 2015, 2019, 2020, 2031, - 2026, 2014, 2022, 2012, 2029, 2034, 2037, 2038, 2039, 2040, - 2041, 2050, 6133, 2045, 6133, 2042, 2051, 2053, 2052, 2055, - 2059, 2057, 2060, 6133, 6133, 2063, 2067, 2069, 2081, 2064, - 6133, 2078, 2085, 2082, 2087, 2088, 2080, 2089, 2091, 2093, - 2092, 2101, 2096, 2103, 2098, 2099, 2108, 6133, 2111, 2110, - 2112, 2115, 2118, 2119, 2121, 2123, 6133, 2127, 2125, 2130, - 2138, 2129, 2137, 2139, 2140, 2144, 2142, 2147, 2148, 2149, + 1913, 1966, 1975, 1957, 1970, 1973, 1992, 1976, 1977, 1980, + 1978, 1983, 1981, 1987, 1985, 1996, 1997, 2002, 2003, 2004, + 6159, 2014, 2010, 2009, 2017, 2025, 2021, 2020, 6159, 2022, + 2023, 2027, 2035, 2033, 2034, 2036, 2037, 2038, 2040, 2044, + 2045, 2046, 2058, 2048, 2067, 6159, 2047, 6159, 2059, 2049, + 2051, 2062, 2050, 2066, 2072, 2074, 6159, 6159, 2075, 2078, + 2082, 2090, 2085, 6159, 2086, 2094, 2091, 2096, 2089, 2097, + 2100, 2101, 2105, 2106, 2110, 2107, 2114, 2109, 2115, 2111, + 6159, 2123, 2112, 2129, 2130, 2122, 2131, 2132, 2128, 6159, + 2139, 2141, 2142, 2149, 2147, 2144, 2150, 2151, 2155, 2152, - 2150, 2159, 2161, 2151, 2162, 2164, 2171, 6133, 2154, 2158, - 2176, 2174, 2181, 2173, 2175, 2177, 2183, 2185, 2186, 2187, - 2190, 2191, 2192, 2199, 2200, 2197, 2196, 2205, 2206, 2207, - 2210, 2213, 2214, 2215, 2216, 2217, 6133, 2218, 2220, 2223, - 391, 2226, 2229, 2227, 2228, 2236, 2231, 2234, 2247, 2252, - 2248, 2249, 2250, 2256, 2257, 2258, 2259, 2260, 2261, 2262, - 2264, 6133, 2266, 2267, 2269, 2273, 2272, 2275, 2280, 6133, - 2282, 2289, 2292, 2301, 2284, 2293, 2302, 2298, 2303, 2304, - 2306, 2308, 2310, 2309, 2312, 2315, 6133, 2319, 2320, 2324, - 2316, 2326, 2328, 2330, 2333, 2335, 2337, 2340, 2338, 2342, + 2158, 2159, 2160, 2161, 2171, 2172, 2162, 2164, 2173, 2181, + 6159, 2176, 2180, 2188, 2184, 2186, 2183, 2187, 2190, 2191, + 2195, 2199, 2193, 2197, 2201, 2203, 2211, 2212, 2209, 2214, + 2217, 2207, 2218, 2221, 2227, 2220, 2225, 2228, 2229, 6159, + 2230, 2236, 2231, 391, 2239, 2237, 2243, 2240, 2241, 2257, + 2242, 2264, 2265, 2261, 2244, 2263, 2260, 2267, 2270, 2269, + 2271, 2272, 2273, 2276, 6159, 2278, 2280, 2282, 2283, 2285, + 2286, 2296, 6159, 2289, 2302, 2287, 2305, 2307, 2297, 2313, + 2299, 2308, 2319, 2317, 2320, 2309, 2324, 2323, 2325, 2327, + 6159, 2331, 2333, 2335, 2332, 2342, 2341, 2334, 2344, 2348, - 2343, 2341, 2344, 2345, 2351, 2346, 2347, 2354, 2359, 6133, - 2364, 2362, 2366, 2370, 2369, 2371, 2372, 2387, 2373, 2379, - 2375, 2382, 2394, 2385, 2391, 2396, 2404, 2401, 2409, 2414, - 2410, 2411, 2419, 2412, 2421, 2423, 2424, 2425, 2427, 2429, - 2430, 2431, 2432, 2440, 2447, 2437, 2448, 2446, 2438, 2456, - 2457, 6133, 2459, 2458, 2451, 2461, 2477, 2465, 2467, 2475, - 2472, 2478, 2479, 2481, 2482, 2490, 2491, 2485, 2483, 2494, - 2488, 2495, 2501, 2503, 2505, 2507, 2508, 2512, 2395, 6133, - 2513, 2509, 2515, 2517, 2521, 2518, 2525, 2529, 2522, 2531, - 2532, 2536, 2537, 2539, 2540, 2541, 2545, 2547, 2533, 6133, + 2349, 2350, 2351, 2353, 2355, 2354, 2356, 2357, 2358, 2361, + 2365, 2369, 2370, 6159, 2378, 2371, 2374, 2382, 2380, 2387, + 2381, 2397, 2383, 2384, 2394, 2403, 2408, 2399, 2401, 2411, + 2414, 2418, 2419, 2426, 2424, 2425, 2432, 2422, 2434, 2436, + 2437, 2438, 2440, 2442, 2445, 2395, 2446, 2453, 2454, 2455, + 2459, 2452, 2473, 2478, 2458, 6159, 2467, 2465, 2477, 2479, + 2487, 2482, 2483, 2484, 2485, 2492, 2490, 2493, 2494, 2502, + 2497, 2503, 2500, 2510, 2504, 2507, 2506, 2513, 2517, 2520, + 2521, 2526, 2527, 6159, 2528, 2530, 2523, 2532, 2534, 2537, + 2540, 2543, 2545, 2546, 2547, 2549, 2551, 2552, 2553, 2554, - 2555, 2544, 2543, 2550, 2556, 2562, 2563, 2566, 2572, 2569, - 2565, 2575, 2577, 2567, 6133, 2582, 2585, 2586, 2593, 2588, - 2589, 2590, 2595, 2578, 6133, 2592, 2596, 2599, 2606, 2609, - 2604, 6133, 2611, 2612, 2613, 2602, 2615, 2617, 2618, 2620, - 2621, 2623, 2625, 2628, 2624, 2631, 6133, 2634, 2643, 2638, - 2639, 2644, 2645, 2649, 2650, 2655, 2657, 2667, 2658, 6133, - 2676, 2671, 2651, 2679, 2661, 2674, 2677, 2681, 2682, 2683, - 2684, 2685, 6133, 2688, 2690, 2691, 2692, 2694, 2696, 2697, - 2710, 2699, 2703, 2706, 2712, 2713, 2707, 2718, 2717, 2725, - 2715, 2729, 2731, 2719, 2735, 2721, 2736, 2739, 2746, 2748, + 2556, 2558, 2561, 6159, 2563, 2562, 2564, 2570, 2575, 2574, + 2576, 2578, 2585, 2587, 2572, 2588, 2444, 2589, 6159, 2597, + 2599, 2595, 2604, 2596, 2601, 2603, 2607, 2608, 6159, 2609, + 2610, 2611, 2618, 2619, 2615, 6159, 2622, 2617, 2623, 2626, + 2625, 2627, 2632, 2629, 2635, 2636, 2641, 2648, 2640, 2650, + 6159, 2642, 2657, 2644, 2658, 2664, 2652, 2653, 2659, 2665, + 2669, 2679, 2671, 6159, 2682, 2680, 2675, 2689, 2687, 2690, + 2691, 2692, 2693, 2694, 2695, 2696, 2699, 6159, 2700, 2702, + 2703, 2704, 2707, 2708, 2710, 2723, 2713, 2718, 2722, 2724, + 2727, 2728, 2730, 2731, 2740, 2732, 2734, 2748, 2741, 2746, - 2749, 2751, 6133, 2754, 2743, 2755, 2745, 2756, 2758, 2759, - 2760, 2762, 2767, 2769, 2765, 2768, 2777, 2784, 2772, 2780, - 2785, 2786, 2788, 2789, 2790, 2791, 2795, 2799, 2796, 2798, - 2806, 2802, 2808, 2816, 2803, 2807, 2812, 2815, 2818, 2817, - 2820, 2827, 2830, 2825, 2840, 2842, 2843, 2819, 2836, 2844, - 2845, 2850, 6133, 2829, 2846, 2855, 2854, 2857, 2860, 2861, - 2868, 2863, 2864, 2867, 2871, 2876, 2865, 2879, 2881, 2888, - 2884, 6133, 2886, 6133, 2887, 2889, 2890, 2898, 2893, 6133, - 2896, 6133, 2899, 2906, 2900, 2903, 6133, 2907, 2909, 2911, - 2914, 2912, 2917, 2918, 2921, 2922, 2923, 2925, 2928, 2930, + 2744, 2733, 2753, 2757, 2761, 2762, 2764, 6159, 2767, 2768, + 2769, 2759, 2770, 2771, 2773, 2774, 2776, 2779, 2783, 2781, + 2782, 2791, 2798, 2789, 2793, 2799, 2800, 2802, 2803, 2804, + 2805, 2806, 2813, 2810, 2812, 2820, 2816, 2821, 2828, 2817, + 2826, 2829, 2830, 2832, 2831, 2839, 2833, 2837, 2841, 2843, + 2851, 2855, 2857, 2856, 2858, 2859, 2862, 6159, 2847, 2866, + 2863, 2870, 2873, 2875, 2877, 2885, 2876, 2880, 2883, 2892, + 2894, 2884, 2887, 2886, 2901, 2900, 6159, 2897, 6159, 2902, + 2903, 2909, 2913, 2911, 6159, 2917, 6159, 2918, 2920, 2912, + 2914, 6159, 2922, 2924, 2926, 2932, 2927, 2929, 2934, 2936, - 2931, 2932, 2935, 2939, 2942, 2940, 2944, 2948, 2941, 2950, - 2953, 2954, 2958, 2959, 2963, 6133, 2967, 2960, 2964, 2969, - 2970, 2971, 2972, 2973, 2979, 2980, 2981, 2977, 2987, 2988, - 2991, 2994, 3002, 2995, 3004, 6133, 3003, 3006, 3007, 3010, - 6133, 3009, 3011, 3012, 3018, 3020, 3021, 3022, 3024, 3028, - 3023, 3030, 3025, 3040, 3038, 3031, 3044, 6133, 3048, 3049, - 3050, 3052, 3060, 3062, 3061, 3064, 3067, 3076, 3069, 3071, - 3033, 3053, 3073, 3077, 3085, 3087, 3078, 3088, 3086, 3089, - 3091, 3092, 3095, 3096, 3098, 3100, 3101, 3099, 3105, 3106, - 3108, 3103, 3104, 3107, 3110, 6133, 3126, 3112, 3122, 3128, + 2937, 2938, 2940, 2943, 2945, 2946, 2947, 2952, 2954, 2957, + 2955, 2959, 2963, 2956, 2964, 2968, 2969, 2973, 2974, 2978, + 6159, 2982, 2975, 2979, 2984, 2985, 2986, 2987, 2988, 2994, + 2995, 2996, 2992, 3002, 3003, 3006, 3009, 3017, 3010, 3019, + 6159, 3018, 3021, 3022, 3025, 6159, 3024, 3026, 3027, 3033, + 3035, 3036, 3037, 3039, 3043, 3038, 3045, 3040, 3055, 3053, + 3046, 3059, 6159, 3063, 3064, 3065, 3067, 3075, 3077, 3082, + 3079, 3080, 3085, 3089, 3087, 3088, 3048, 3091, 3093, 3094, + 3102, 3104, 3095, 3105, 3103, 3106, 3108, 3109, 3112, 3115, + 3116, 3117, 3118, 3121, 3122, 3124, 3125, 3120, 3123, 3127, - 3120, 3130, 3133, 3134, 3136, 3138, 3139, 3142, 3140, 6133, - 3143, 6133, 3137, 3147, 3149, 3160, 3155, 3161, 3165, 3170, - 3164, 3166, 3171, 3173, 3172, 3174, 3175, 3180, 3183, 3187, - 3188, 3194, 3181, 3189, 3186, 3197, 3198, 3200, 6133, 6133, - 3203, 3205, 3206, 3208, 3209, 3210, 3216, 3213, 3221, 3219, - 3220, 3227, 3235, 6133, 3230, 3232, 3233, 3238, 3242, 3239, - 3249, 3246, 3251, 3258, 3253, 6133, 3250, 3254, 3266, 3261, - 3262, 3269, 6133, 3264, 6133, 3267, 3273, 3275, 3276, 3277, - 3278, 3279, 3280, 3282, 3295, 3302, 3284, 3288, 3298, 3299, - 3300, 3301, 3310, 3305, 3306, 3307, 6133, 3309, 3311, 3312, + 3128, 6159, 3139, 3142, 3145, 3146, 3129, 3151, 3148, 3152, + 3154, 3153, 3157, 3166, 3155, 6159, 3159, 6159, 3156, 3158, + 3177, 3183, 3173, 3169, 3186, 3191, 3167, 3184, 3188, 3192, + 3194, 3195, 3196, 3198, 3200, 3199, 3207, 3215, 3202, 3206, + 3210, 3204, 3216, 3221, 6159, 6159, 3220, 3223, 3224, 3226, + 3227, 3229, 3237, 3231, 3230, 3239, 3244, 3246, 3254, 6159, + 3247, 3251, 3249, 3250, 3262, 3258, 3260, 3269, 3267, 3274, + 3273, 6159, 3270, 3275, 3283, 3278, 3284, 3286, 6159, 3288, + 6159, 3281, 3282, 3294, 3295, 3285, 3292, 3297, 3299, 3307, + 3309, 3314, 3310, 3316, 3312, 3317, 3318, 3320, 3325, 3321, - 3315, 3321, 3323, 3324, 3313, 6133, 3329, 3330, 3335, 3332, - 3337, 3338, 3340, 3342, 3343, 3346, 3347, 3344, 3348, 3360, - 3352, 3353, 3355, 3366, 3367, 3373, 6133, 3369, 3375, 3382, - 3378, 3379, 3381, 3385, 3380, 3386, 3387, 3389, 3390, 3392, - 3393, 3394, 3396, 3398, 3401, 3399, 3404, 3412, 3413, 3415, - 3424, 3420, 6133, 3421, 3422, 3425, 3427, 3430, 3431, 3434, - 3436, 3437, 3443, 3447, 3439, 3449, 3451, 3452, 3459, 3455, - 6133, 3467, 3454, 3468, 3463, 3466, 3465, 3473, 3471, 3481, - 3477, 3478, 3479, 3486, 3482, 6133, 3493, 3483, 3501, 3484, - 3485, 3510, 3505, 3506, 3494, 3508, 3509, 3511, 3513, 3516, + 3322, 3324, 6159, 3327, 3329, 3330, 3331, 3339, 3340, 3341, + 3346, 6159, 3347, 3348, 3352, 3353, 3354, 3355, 3357, 3361, + 3358, 3364, 3367, 3362, 3360, 3377, 3370, 3368, 3378, 3388, + 3389, 3391, 6159, 3393, 3385, 3401, 3397, 3399, 3400, 3403, + 3404, 3383, 3407, 3408, 3409, 3410, 3412, 3416, 3417, 3413, + 3420, 3419, 3422, 3430, 3423, 3437, 3446, 3431, 6159, 3441, + 3433, 3443, 3444, 3445, 3449, 3450, 3455, 3457, 3448, 3462, + 3466, 3458, 3469, 3471, 3472, 3480, 3475, 6159, 3483, 3473, + 3487, 3482, 3485, 3493, 3494, 3484, 3502, 3486, 3497, 3501, + 3509, 3504, 6159, 3512, 3508, 3513, 3514, 3516, 3526, 3510, - 3517, 3520, 3521, 6133, 6133, 3523, 3524, 3525, 6133, 3527, - 3529, 3537, 3540, 3530, 3528, 3545, 3544, 3532, 3546, 3542, - 3548, 6133, 3554, 3561, 3556, 3560, 3563, 3571, 3570, 3572, - 3566, 3562, 3573, 3574, 3578, 3579, 3580, 3583, 3591, 3593, - 3588, 3589, 3590, 6133, 3595, 3596, 3598, 3600, 3601, 3602, - 6133, 3605, 3607, 3613, 3612, 3623, 3625, 3616, 3631, 3614, - 3626, 3609, 3633, 3634, 3636, 3643, 3642, 3639, 3646, 3647, - 3649, 6133, 3641, 3651, 3652, 3659, 6133, 3661, 3669, 3670, - 3671, 3655, 3673, 3674, 3682, 6133, 3675, 3679, 3677, 3666, - 3690, 3680, 3694, 3692, 3693, 6133, 3695, 3685, 3696, 6133, + 3518, 3523, 3528, 3529, 3532, 3530, 3534, 3535, 3540, 3537, + 6159, 6159, 3542, 3543, 3545, 6159, 3549, 3546, 3553, 3552, + 3548, 3559, 3563, 3562, 3560, 3564, 3561, 3566, 6159, 3572, + 3579, 3575, 3576, 3584, 3591, 3581, 3588, 3589, 3590, 3592, + 3594, 3596, 3597, 3600, 3601, 3609, 3613, 3604, 3605, 3608, + 6159, 3614, 3616, 3617, 3619, 3621, 3627, 6159, 3625, 3629, + 3630, 3623, 3646, 3631, 3637, 3650, 3639, 3641, 3643, 3647, + 3651, 3654, 3663, 3658, 3656, 3665, 3666, 3668, 6159, 3669, + 3659, 3676, 3680, 6159, 3682, 3689, 3690, 3691, 3677, 3687, + 3686, 3699, 6159, 3694, 3697, 3695, 3700, 3708, 3704, 3711, - 3700, 3698, 3709, 3711, 3706, 3718, 3713, 3715, 3716, 3714, - 6133, 3724, 6133, 3725, 3721, 3730, 6133, 3727, 3732, 3735, - 3737, 3734, 3741, 3742, 3745, 3750, 3738, 3751, 3752, 3753, - 3755, 3756, 3763, 3762, 3764, 3765, 3754, 6133, 3766, 3769, - 3775, 3776, 3779, 3774, 3771, 3785, 3781, 6133, 6133, 3796, - 6133, 3797, 3782, 3789, 6133, 3791, 3793, 3808, 3799, 3803, - 3809, 3813, 3810, 6133, 3814, 3801, 3815, 3819, 3817, 3822, - 3824, 3825, 3827, 3828, 3829, 3832, 6133, 3830, 3833, 3841, - 3831, 3842, 3852, 3848, 3846, 6133, 3856, 3857, 3847, 3858, - 3860, 6133, 3864, 6133, 3868, 3869, 3870, 3872, 3871, 6133, + 3709, 3710, 6159, 3712, 3713, 3715, 6159, 3716, 3717, 3728, + 3730, 3721, 3737, 3733, 3735, 3736, 3734, 6159, 3744, 6159, + 3745, 3738, 3746, 6159, 3751, 3752, 3753, 3755, 3756, 3757, + 3761, 3767, 3760, 3768, 3769, 3771, 3772, 3773, 3774, 3781, + 3776, 3783, 3780, 3782, 6159, 3785, 3784, 3790, 3800, 3803, + 3805, 3795, 3787, 3806, 3809, 6159, 6159, 3813, 6159, 3815, + 3810, 3816, 6159, 3819, 3817, 3827, 3820, 3823, 3828, 3836, + 3825, 6159, 3838, 3829, 3839, 3840, 3843, 3842, 3844, 3846, + 3848, 3847, 3849, 3855, 6159, 3850, 3853, 3867, 3854, 3857, + 3868, 3875, 3862, 6159, 3876, 3883, 3869, 3879, 3886, 6159, - 3875, 3879, 3881, 3876, 3883, 3885, 3884, 3891, 3892, 3894, - 3901, 3898, 3899, 3897, 6133, 3900, 3904, 3907, 3908, 3911, - 3913, 3921, 3917, 3923, 3916, 3920, 3930, 3927, 3931, 3937, - 3935, 3940, 3924, 6133, 3941, 3946, 3943, 3955, 3947, 3951, - 6133, 3957, 3960, 3961, 6133, 3958, 3952, 3959, 3974, 3962, - 3967, 3970, 3975, 3976, 6133, 3978, 3981, 3977, 3979, 3982, - 3983, 6133, 6133, 3988, 6133, 3995, 3996, 3998, 3999, 4000, - 4002, 4004, 4005, 4009, 4010, 4012, 4015, 4018, 4006, 4027, - 4030, 4038, 4033, 4034, 4023, 6133, 6133, 4040, 4044, 4037, - 4048, 4049, 4041, 4051, 4058, 4055, 4056, 4062, 4063, 4071, + 3888, 6159, 3878, 3889, 3890, 3892, 3891, 6159, 3899, 3895, + 3904, 3900, 3906, 3905, 3908, 3912, 3914, 3915, 3922, 3918, + 3920, 3919, 6159, 3921, 3924, 3929, 3930, 3934, 3925, 3942, + 3939, 3941, 3937, 3946, 3948, 3951, 3952, 3956, 3950, 3960, + 3958, 6159, 3961, 3964, 3967, 3975, 3968, 3971, 6159, 3972, + 3980, 3981, 6159, 3978, 3979, 3987, 3990, 3982, 3992, 3993, + 3994, 3997, 6159, 3995, 4001, 3998, 4006, 4014, 4015, 6159, + 6159, 4016, 6159, 4017, 4002, 4005, 4003, 4004, 4027, 4031, + 4028, 4033, 4026, 4034, 4039, 4040, 4041, 4048, 4049, 4052, + 4051, 4050, 4055, 6159, 6159, 4057, 4059, 4061, 4065, 4066, - 6133, 4072, 4054, 4073, 4064, 6133, 4066, 4075, 4067, 4078, - 4081, 4079, 4082, 4083, 4087, 4085, 4089, 4095, 4094, 4096, - 4100, 4102, 4104, 4105, 4022, 4106, 4112, 6133, 4108, 4113, - 4115, 4117, 4118, 4119, 4120, 4121, 4122, 6133, 4129, 4128, - 4125, 4136, 4135, 4131, 4137, 4146, 4152, 4154, 4149, 4155, - 4156, 4158, 4160, 4161, 6133, 4169, 4162, 4163, 4165, 4172, - 4176, 4173, 4179, 4180, 4185, 4181, 4186, 4188, 4190, 4193, - 4194, 4195, 4197, 6133, 4199, 4201, 4202, 4206, 4208, 4211, - 4210, 4214, 4219, 4212, 4220, 4222, 4224, 6133, 4225, 4227, - 4228, 4229, 4237, 4232, 4234, 4238, 4240, 6133, 4247, 4242, + 4068, 4069, 4077, 4073, 4081, 4084, 4086, 4094, 6159, 4072, + 4079, 4089, 4090, 6159, 4092, 4095, 4096, 4097, 4098, 4102, + 4105, 4104, 4101, 4107, 4109, 4111, 4113, 4118, 4114, 4125, + 4122, 4116, 4126, 4130, 4127, 4137, 6159, 4133, 4138, 4139, + 4142, 4144, 4147, 4146, 4148, 4149, 6159, 4154, 4151, 4156, + 4152, 4159, 4162, 4164, 4173, 4179, 4181, 4171, 4175, 4182, + 4184, 4190, 4187, 6159, 4194, 4185, 4191, 4195, 4198, 4201, + 4202, 4204, 4206, 4209, 4210, 4212, 4214, 4216, 4218, 4219, + 4220, 4222, 6159, 4226, 4230, 4223, 4236, 4227, 4233, 4237, + 4243, 4247, 4238, 4248, 4249, 4251, 6159, 4252, 4253, 4254, - 4249, 4244, 4248, 4252, 4254, 4259, 4263, 4265, 4261, 6133, - 4257, 4268, 4271, 4274, 4275, 4277, 4278, 4282, 6133, 4284, - 4285, 4286, 4293, 4291, 4300, 4292, 4302, 4295, 4296, 4303, - 4304, 4305, 4310, 4315, 4311, 4322, 4323, 4326, 6133, 4318, - 6133, 4327, 4328, 4337, 4332, 4334, 4335, 6133, 4340, 4342, - 4344, 4345, 4350, 6133, 4349, 4346, 4348, 4352, 6133, 4351, - 4365, 4347, 4366, 4369, 4371, 6133, 4374, 4376, 4375, 4383, - 4387, 4382, 4385, 4386, 4388, 4390, 4392, 4393, 4394, 4403, - 4396, 4399, 6133, 4401, 4408, 4414, 4415, 4398, 4409, 4417, - 4419, 4422, 6133, 4423, 4416, 4424, 4425, 4426, 4427, 4432, + 4256, 4262, 4255, 4265, 4258, 4264, 6159, 4267, 4271, 4275, + 4278, 4277, 4280, 4281, 4283, 4285, 4286, 4290, 6159, 4287, + 4296, 4297, 4289, 4300, 4303, 4304, 4305, 6159, 4306, 4312, + 4315, 4322, 4318, 4325, 4321, 4323, 4320, 4327, 4329, 4333, + 4334, 4335, 4337, 4336, 4347, 4354, 4349, 6159, 4338, 6159, + 4351, 4355, 4363, 4361, 4359, 4352, 6159, 4365, 4366, 4368, + 4369, 4371, 6159, 4373, 4375, 4377, 4376, 6159, 4383, 4389, + 4378, 4387, 4396, 4400, 6159, 4403, 4390, 4404, 4411, 4412, + 4407, 4414, 4408, 4417, 4415, 4410, 4419, 4420, 4429, 4425, + 4426, 6159, 4428, 4430, 4435, 4436, 4443, 4437, 4440, 4444, - 4440, 4442, 4431, 6133, 4433, 4438, 4441, 4456, 4443, 4453, - 6133, 6133, 4452, 4457, 4459, 4460, 4463, 6133, 4461, 4473, - 4468, 4470, 4472, 6133, 6133, 4475, 6133, 4471, 6133, 4476, - 4477, 6133, 6133, 4478, 4479, 4482, 4491, 4485, 6133, 4495, - 6133, 4498, 4499, 4488, 4497, 4501, 6133, 4502, 4503, 4508, - 6133, 4509, 4516, 4511, 4512, 6133, 4514, 4517, 4522, 4524, - 6133, 4525, 4531, 4523, 4532, 4534, 4533, 4535, 4539, 4540, - 4536, 4544, 4545, 4546, 4556, 4558, 4560, 4562, 4552, 4563, - 4566, 4567, 4569, 4572, 4573, 4574, 4575, 4577, 4578, 4580, - 4583, 4587, 4588, 4586, 4589, 4590, 4599, 4592, 4595, 4603, + 4450, 4445, 6159, 4447, 4451, 4453, 4454, 4455, 4456, 4457, + 4467, 4463, 4379, 6159, 4465, 4464, 4470, 4472, 4474, 4479, + 6159, 6159, 4478, 4483, 4485, 4486, 4489, 6159, 4487, 4499, + 4494, 4496, 4498, 6159, 6159, 4501, 6159, 4497, 6159, 4502, + 4503, 6159, 6159, 4504, 4505, 4508, 4517, 4511, 6159, 4521, + 6159, 4524, 4525, 4514, 4523, 4527, 6159, 4528, 4529, 4534, + 6159, 4535, 4542, 4537, 4538, 6159, 4540, 4543, 4548, 4550, + 6159, 4551, 4557, 4549, 4558, 4560, 4559, 4561, 4565, 4566, + 4562, 4570, 4571, 4572, 4582, 4584, 4586, 4588, 4578, 4589, + 4592, 4593, 4595, 4598, 4599, 4600, 4601, 4603, 4604, 4606, - 4596, 4606, 4607, 4608, 4609, 4611, 4614, 4616, 4613, 4619, - 4620, 6133, 4618, 4623, 4624, 4628, 4629, 4637, 4639, 4641, - 4649, 4650, 6133, 4652, 6133, 4654, 4638, 4646, 4658, 4659, - 6133, 4660, 4661, 4662, 4663, 4664, 4665, 4666, 4667, 4670, - 4671, 4675, 6133, 4682, 4669, 4686, 4693, 6133, 4690, 4697, - 4694, 4698, 4700, 4702, 4701, 4703, 4704, 4705, 4709, 4711, - 4714, 4678, 4715, 4722, 4706, 4718, 4726, 4727, 4729, 4728, - 4732, 4736, 4740, 6133, 4735, 6133, 4741, 4742, 4743, 4744, - 4748, 4745, 4749, 6133, 6133, 4751, 4756, 4758, 4752, 4760, - 4763, 4766, 6133, 4769, 4772, 4774, 4775, 6133, 4777, 4779, + 4609, 4613, 4614, 4612, 4615, 4616, 4625, 4618, 4621, 4629, + 4622, 4632, 4633, 4634, 4635, 4637, 4640, 4642, 4639, 4645, + 4646, 6159, 4644, 4649, 4650, 4654, 4655, 4663, 4665, 4667, + 4675, 4676, 6159, 4678, 6159, 4680, 4664, 4672, 4684, 4685, + 6159, 4686, 4687, 4688, 4689, 4690, 4691, 4692, 4693, 4696, + 4697, 4701, 6159, 4708, 6159, 4695, 4712, 4719, 6159, 4716, + 4723, 4720, 4724, 4726, 4728, 4727, 4729, 4730, 4731, 4735, + 4737, 4740, 4704, 4741, 4748, 4732, 4744, 4752, 4753, 4755, + 4754, 4758, 4762, 4766, 6159, 4761, 6159, 4767, 4768, 4769, + 4770, 4774, 4771, 4775, 6159, 6159, 4777, 4782, 4784, 4778, - 4780, 4782, 6133, 4783, 4785, 4786, 4797, 4787, 4802, 4793, - 4803, 4789, 4804, 4808, 6133, 6133, 6133, 6133, 4809, 4791, - 4815, 4811, 4817, 4818, 4819, 4821, 4822, 6133, 4826, 6133, - 6133, 4829, 4831, 4832, 4833, 4835, 4823, 4839, 4841, 6133, - 4840, 4845, 4847, 4844, 4854, 4857, 4861, 4851, 4862, 4863, - 4864, 4871, 4868, 4869, 4872, 4874, 4876, 4878, 6133, 6133, - 4880, 4884, 4885, 4892, 4889, 4890, 4896, 4903, 4898, 4899, - 4900, 4901, 4905, 4906, 4914, 4917, 4907, 4918, 6133, 4915, - 4919, 6133, 4921, 6133, 4923, 4924, 4925, 4926, 4931, 4932, - 4934, 4936, 6133, 6133, 6133, 4937, 4938, 4942, 4947, 4944, + 4786, 4789, 4792, 6159, 4795, 4798, 4800, 4801, 6159, 4803, + 4805, 4806, 4808, 6159, 4809, 4811, 4812, 4823, 4813, 4828, + 4819, 4829, 4815, 4830, 4834, 6159, 6159, 6159, 6159, 4835, + 4817, 4841, 4837, 4843, 4844, 4845, 4847, 4848, 6159, 4852, + 6159, 6159, 4855, 4857, 4858, 4859, 4861, 4849, 4865, 4867, + 6159, 4866, 4871, 4873, 4870, 4880, 4883, 4887, 4877, 4888, + 4889, 4890, 4897, 4894, 4895, 4898, 4900, 4902, 4904, 6159, + 6159, 4906, 4910, 4911, 4918, 4915, 4916, 4922, 4929, 4924, + 4925, 4926, 4927, 4931, 4932, 4940, 4943, 4933, 4944, 6159, + 4941, 4945, 6159, 4947, 6159, 4949, 4950, 4951, 4952, 4957, - 4948, 4949, 4951, 4952, 6133, 4953, 6133, 4954, 4955, 4966, - 4960, 4973, 4975, 4976, 4978, 4972, 4979, 6133, 4981, 4982, - 6133, 4983, 4986, 4988, 6133, 4991, 4989, 4994, 4997, 6133, - 4999, 5001, 5004, 6133, 5011, 6133, 5002, 5008, 5006, 5020, - 6133, 5012, 5015, 6133, 5024, 5026, 5027, 5021, 6133, 5017, - 6133, 5028, 5037, 5038, 5041, 5029, 5043, 5033, 5031, 5045, - 5053, 5051, 5052, 6133, 6133, 181, 5061, 5054, 5058, 5062, - 5057, 5070, 5065, 5067, 5069, 6133, 6133, 5074, 6133, 5072, - 5073, 6133, 5066, 5081, 5085, 5075, 5083, 5087, 5089, 5094, - 5096, 5097, 5099, 5098, 5100, 5106, 5121, 5103, 5117, 5123, + 4958, 4960, 4962, 6159, 6159, 6159, 4963, 4964, 4968, 4973, + 4970, 4974, 4975, 4977, 4978, 6159, 4979, 6159, 4980, 4981, + 4992, 4986, 4999, 5001, 5002, 5004, 4998, 5005, 6159, 5007, + 5008, 6159, 5009, 5012, 5014, 6159, 5017, 5015, 5020, 5023, + 6159, 5025, 5027, 5030, 6159, 5037, 6159, 5028, 5034, 5032, + 5046, 6159, 5038, 5041, 6159, 5050, 5052, 5053, 5047, 6159, + 5043, 6159, 5054, 5063, 5064, 5067, 5055, 5069, 5059, 5057, + 5071, 5079, 5077, 5078, 6159, 6159, 181, 5087, 5080, 5084, + 5088, 5083, 5096, 5091, 5093, 5095, 6159, 6159, 5100, 6159, + 5098, 5099, 6159, 5092, 5107, 5111, 5101, 5109, 5113, 5115, - 5125, 5127, 5129, 5118, 5131, 5113, 5132, 5135, 5137, 5139, - 6133, 5141, 5101, 5138, 6133, 5143, 5145, 5147, 5148, 6133, - 5150, 5151, 5154, 5155, 6133, 5161, 5166, 5167, 5168, 5169, - 5176, 5172, 5173, 5174, 6133, 6133, 6133, 5181, 5188, 6133, - 5190, 5180, 5183, 5191, 6133, 5192, 5193, 6133, 6133, 5195, - 5197, 5196, 5204, 6133, 5199, 6133, 5200, 6133, 5202, 5210, - 5212, 5214, 6133, 5217, 5224, 6133, 5219, 5227, 5230, 5231, - 5232, 5234, 5233, 6133, 5241, 5237, 5239, 5246, 5236, 5243, - 5247, 5251, 5248, 5263, 5249, 5259, 6133, 5260, 5262, 5265, - 5271, 5250, 5261, 5273, 6133, 5278, 6133, 5275, 5279, 5280, + 5120, 5122, 5123, 5125, 5124, 5126, 5132, 5147, 5129, 5143, + 5149, 5151, 5153, 5155, 5144, 5157, 5139, 5158, 5161, 5163, + 5165, 6159, 5167, 5127, 5164, 6159, 5169, 5171, 5173, 5174, + 6159, 5176, 5177, 5180, 5181, 6159, 5187, 5192, 5193, 5194, + 5195, 5202, 5198, 5199, 5200, 6159, 6159, 6159, 5207, 5214, + 6159, 5216, 5206, 5209, 5217, 6159, 5218, 5219, 6159, 6159, + 5221, 5223, 5222, 5230, 6159, 5225, 6159, 5226, 6159, 5228, + 5236, 5238, 5240, 6159, 5243, 5250, 6159, 5245, 5253, 5256, + 5257, 5258, 5260, 5259, 6159, 5267, 5263, 5265, 5272, 5262, + 5269, 5273, 5277, 5274, 5289, 5275, 5285, 6159, 5286, 5288, - 5281, 5282, 5283, 5286, 5291, 5285, 5300, 5287, 6133, 5304, - 5308, 6133, 5289, 6133, 5313, 6133, 5301, 5305, 5309, 5314, - 6133, 5316, 5318, 5297, 5322, 6133, 5323, 5326, 5327, 5329, - 6133, 6133, 5330, 5337, 5334, 5332, 5336, 5343, 5333, 5345, - 5347, 5348, 5349, 5361, 5351, 5356, 5352, 5360, 5362, 5366, - 6133, 6133, 6133, 5363, 5371, 5379, 5377, 5378, 5380, 5382, - 6133, 5383, 5385, 5387, 5386, 5395, 5390, 5394, 6133, 5397, - 5396, 5398, 5399, 5402, 5403, 5404, 6133, 5411, 5416, 5419, - 5406, 5421, 5418, 5428, 5430, 5431, 6133, 5433, 6133, 6133, - 5425, 6133, 5434, 5435, 5437, 5438, 6133, 5441, 5446, 5442, + 5291, 5297, 5276, 5287, 5299, 6159, 5304, 6159, 5301, 5305, + 5306, 5307, 5308, 5309, 5312, 5317, 5311, 5326, 5313, 6159, + 5330, 5334, 6159, 5315, 6159, 5339, 6159, 5327, 5331, 5335, + 5340, 6159, 5342, 5344, 5323, 5348, 6159, 5349, 5352, 5353, + 5355, 6159, 6159, 5356, 5363, 5360, 5358, 5362, 5369, 5359, + 5371, 5373, 5374, 5375, 5387, 5377, 5382, 5378, 5386, 5388, + 5392, 6159, 6159, 6159, 5389, 5397, 5405, 5403, 5404, 5406, + 5408, 6159, 5409, 5411, 5413, 5412, 5421, 5416, 5420, 6159, + 5423, 5422, 5424, 5425, 5428, 5429, 5430, 6159, 5437, 5442, + 5445, 5432, 5447, 5444, 5454, 5456, 5457, 6159, 5459, 6159, - 5443, 5448, 5450, 6133, 5451, 5453, 5455, 5458, 6133, 6133, - 5465, 6133, 5467, 5470, 5454, 5477, 5469, 5472, 5479, 5482, - 6133, 5476, 5483, 5484, 5485, 5486, 6133, 5490, 5488, 5491, - 5493, 6133, 5494, 5499, 5500, 5495, 5501, 6133, 5504, 5502, - 5514, 5505, 6133, 5519, 5520, 6133, 6133, 5524, 5526, 5527, - 6133, 6133, 6133, 5529, 6133, 5535, 5540, 5544, 5548, 5532, - 6133, 5550, 5543, 5551, 6133, 6133, 5547, 5552, 5553, 5555, - 6133, 6133, 5556, 5557, 5559, 5521, 5560, 6133, 5562, 5568, - 5569, 5574, 5579, 5571, 5582, 5576, 5590, 5597, 5583, 5592, - 5593, 5594, 5595, 5596, 5602, 5604, 5603, 5606, 5611, 5612, + 6159, 5451, 6159, 5460, 5461, 5463, 5464, 6159, 5467, 5472, + 5468, 5469, 5474, 5476, 6159, 5477, 5479, 5481, 5484, 6159, + 6159, 5491, 6159, 5493, 5496, 5480, 5503, 5495, 5498, 5505, + 5508, 6159, 5502, 5509, 5510, 5511, 5512, 6159, 5516, 5514, + 5517, 5519, 6159, 5520, 5525, 5526, 5521, 5527, 6159, 5530, + 5528, 5540, 5531, 6159, 5545, 5546, 6159, 6159, 5550, 5552, + 5553, 6159, 6159, 6159, 5555, 6159, 5561, 5566, 5570, 5574, + 5558, 6159, 5576, 5569, 5577, 6159, 6159, 5573, 5578, 5579, + 5581, 6159, 6159, 5582, 5583, 5585, 5547, 5586, 6159, 5588, + 5594, 5595, 5600, 5605, 5597, 5608, 5602, 5616, 5623, 5609, - 6133, 6133, 5619, 6133, 6133, 5621, 5623, 5625, 5627, 5629, - 5631, 5633, 6133, 5634, 5636, 5637, 5638, 5639, 6133, 5641, - 5645, 5640, 5648, 5642, 5651, 5647, 5657, 6133, 6133, 5649, - 5613, 5653, 5663, 5658, 6133, 5665, 5672, 5669, 5670, 5671, - 5673, 5677, 6133, 5674, 5678, 6133, 6133, 5681, 6133, 6133, - 6133, 6133, 6133, 6133, 6133, 6133, 5682, 6133, 5684, 5689, - 5695, 5699, 6133, 5686, 5692, 5700, 5702, 5703, 6133, 5705, - 5707, 5706, 5708, 5712, 5713, 5716, 5715, 5719, 5720, 5721, - 5723, 5724, 5730, 5726, 5725, 5735, 6133, 6133, 6133, 5739, - 5731, 5744, 5732, 5749, 5754, 5757, 5759, 5750, 5752, 5760, + 5618, 5619, 5620, 5621, 5622, 5628, 5630, 5629, 5632, 5637, + 5638, 6159, 6159, 5645, 6159, 6159, 5647, 5649, 5651, 5653, + 5655, 5657, 5659, 6159, 5660, 5662, 5663, 5664, 5665, 6159, + 5667, 5671, 5666, 5674, 5668, 5677, 5673, 5683, 6159, 6159, + 5675, 5639, 5679, 5689, 5684, 6159, 5691, 5698, 5695, 5696, + 5697, 5699, 5703, 6159, 5700, 5704, 6159, 6159, 5707, 6159, + 6159, 6159, 6159, 6159, 6159, 6159, 6159, 5708, 6159, 5710, + 5715, 5721, 5725, 6159, 5712, 5718, 5726, 5728, 5729, 6159, + 5731, 5733, 5732, 5734, 5738, 5739, 5742, 5741, 5745, 5746, + 5747, 5749, 5750, 5756, 5752, 5751, 5761, 6159, 6159, 6159, - 5761, 5762, 5764, 5765, 5774, 5770, 5771, 5773, 5775, 5777, - 5779, 5781, 5786, 6133, 5782, 6133, 5787, 6133, 6133, 5791, - 5792, 5788, 5798, 5807, 5808, 5799, 5803, 5804, 5806, 5810, - 5815, 6133, 5812, 5818, 6133, 5820, 5821, 6133, 5819, 5822, - 5824, 5828, 5829, 5826, 5830, 5831, 5847, 6133, 6133, 5832, - 5837, 5840, 5849, 5851, 5850, 5853, 5857, 5858, 5860, 5861, - 5870, 6133, 5867, 5868, 5872, 6133, 5874, 5869, 5875, 5876, - 5877, 5885, 5881, 5884, 6133, 5886, 6133, 5890, 5892, 5893, - 5883, 5891, 5894, 5905, 5903, 5899, 6133, 5909, 5913, 5911, - 5915, 5917, 5919, 5920, 5921, 5923, 5926, 5932, 5929, 5936, + 5765, 5757, 5770, 5758, 5775, 5780, 5783, 5785, 5776, 5778, + 5786, 5787, 5788, 5790, 5791, 5800, 5796, 5797, 5799, 5801, + 5803, 5805, 5807, 5812, 6159, 5808, 6159, 5813, 6159, 6159, + 5817, 5818, 5814, 5824, 5833, 5834, 5825, 5829, 5830, 5832, + 5836, 5841, 6159, 5838, 5844, 6159, 5846, 5847, 6159, 5845, + 5848, 5850, 5854, 5855, 5852, 5856, 5857, 5873, 6159, 6159, + 5858, 5863, 5866, 5875, 5877, 5876, 5879, 5883, 5884, 5886, + 5887, 5896, 6159, 5893, 5894, 5898, 6159, 5900, 5895, 5901, + 5902, 5903, 5911, 5907, 5910, 6159, 5912, 6159, 5916, 5918, + 5919, 5909, 5917, 5920, 5931, 5929, 5925, 6159, 5935, 5939, - 5937, 5933, 5941, 5938, 6133, 5948, 5939, 6133, 5945, 5949, - 5942, 5951, 5955, 6133, 5960, 5953, 5962, 5963, 5966, 5967, - 6133, 5969, 5976, 5971, 6133, 5977, 6133, 6133, 5979, 5973, - 5980, 5986, 5988, 6133, 6133, 6133, 6013, 6020, 6027, 6034, - 6041, 6048, 6055, 88, 6062, 6069, 6076, 6083, 6090, 6097, - 6104, 6111, 6118, 6125 + 5937, 5941, 5943, 5945, 5946, 5947, 5949, 5952, 5958, 5955, + 5962, 5963, 5959, 5967, 5964, 6159, 5974, 5965, 6159, 5971, + 5975, 5968, 5977, 5981, 6159, 5986, 5979, 5988, 5989, 5992, + 5993, 6159, 5995, 6002, 5997, 6159, 6003, 6159, 6159, 6005, + 5999, 6006, 6012, 6014, 6159, 6159, 6159, 6039, 6046, 6053, + 6060, 6067, 6074, 6081, 88, 6088, 6095, 6102, 6109, 6116, + 6123, 6130, 6137, 6144, 6151 } ; -static const flex_int16_t yy_def[3155] = +static const flex_int16_t yy_def[3166] = { 0, - 3136, 1, 3137, 3137, 3138, 3138, 3139, 3139, 3140, 3140, - 3141, 3141, 3142, 3142, 3143, 3143, 3136, 3144, 3136, 3136, - 3136, 3136, 3145, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3146, 3136, 3136, 3136, - 3146, 3147, 3136, 3136, 3136, 3147, 3148, 3136, 3136, 3136, - 3136, 3148, 3149, 3136, 3136, 3136, 3149, 3150, 3136, 3151, - 3136, 3150, 3150, 3152, 3136, 3136, 3136, 3136, 3152, 3153, - 3136, 3136, 3136, 3153, 3144, 3144, 3136, 3154, 3145, 3154, - 3145, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3147, 1, 3148, 3148, 3149, 3149, 3150, 3150, 3151, 3151, + 3152, 3152, 3153, 3153, 3154, 3154, 3147, 3155, 3147, 3147, + 3147, 3147, 3156, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3157, 3147, 3147, 3147, + 3157, 3158, 3147, 3147, 3147, 3158, 3159, 3147, 3147, 3147, + 3147, 3159, 3160, 3147, 3147, 3147, 3160, 3161, 3147, 3162, + 3147, 3161, 3161, 3163, 3147, 3147, 3147, 3147, 3163, 3164, + 3147, 3147, 3147, 3164, 3155, 3155, 3147, 3165, 3156, 3165, + 3156, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3146, 3146, 3147, 3147, - 3148, 3148, 3136, 3149, 3149, 3150, 3150, 3151, 3151, 3150, - 3152, 3152, 3136, 3153, 3153, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3157, 3157, 3158, 3158, + 3159, 3159, 3147, 3160, 3160, 3161, 3161, 3162, 3162, 3161, + 3163, 3163, 3147, 3164, 3164, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3150, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3161, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3150, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3161, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3150, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3161, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3150, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3161, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3136, 3136, 3144, 3136, 3136, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3147, 3147, 3155, 3147, 3147, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3150, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3161, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3136, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3147, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3150, - 3150, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3161, 3161, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3150, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3161, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3136, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3150, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3161, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3136, 3150, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3161, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3136, 3136, 3144, 3144, 3144, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3150, 3144, 3136, 3144, 3144, 3144, 3136, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3147, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3136, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3136, 3144, - 3136, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3136, + 3161, 3155, 3147, 3155, 3155, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3147, 3155, 3147, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3147, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3136, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3150, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3147, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3161, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3147, 3155, 3155, 3155, 3155, 3155, - 3136, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3136, 3144, 3144, 3144, 3144, 3150, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, + 3155, 3155, 3155, 3155, 3161, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3136, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3136, 3136, 3144, 3136, 3144, 3136, 3144, - 3144, 3136, 3136, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3147, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3147, 3147, 3155, 3147, 3155, 3147, 3155, + 3155, 3147, 3147, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3150, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3136, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3161, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3147, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3147, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3147, 3155, 3155, 3155, 3155, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3136, 3136, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3136, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3150, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3136, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3136, 3136, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3147, 3147, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3147, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3161, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3147, 3155, 3147, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3136, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3136, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3136, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3136, 3150, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3136, 3136, 3144, 3136, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3147, 3147, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3147, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3147, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3147, 3161, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3147, 3155, 3147, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3136, 3136, 3144, 3144, 3136, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3136, 3136, 3144, - 3144, 3144, 3144, 3136, 3144, 3136, 3144, 3136, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3136, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3147, 3147, 3155, 3155, + 3147, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3147, 3147, + 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3147, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3144, 3136, 3144, 3136, 3144, 3136, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3136, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3136, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3136, 3136, - 3144, 3136, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3147, 3155, 3147, 3155, 3147, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, + 3155, 3147, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3147, 3147, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3136, 3136, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3136, 3136, 3144, 3144, 3144, - 3136, 3136, 3136, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3136, 3136, 3144, 3144, 3144, 3144, - 3136, 3136, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3147, 3155, 3147, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3147, + 3147, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3147, 3147, 3155, 3155, + 3155, 3147, 3147, 3147, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3147, 3147, 3155, 3155, 3155, + 3155, 3147, 3147, 3155, 3155, 3155, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, - 3136, 3136, 3144, 3136, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3136, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3136, 3136, 3144, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3144, 3136, 3144, 3144, - 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3136, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3147, 3155, 3147, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3147, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3147, 3147, 3155, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3155, 3147, 3155, + 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, 3147, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3147, 3147, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3136, 3144, 3136, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3136, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3136, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, - 3144, 3136, 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3136, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3144, - 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, 3144, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3147, 3147, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3147, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3147, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3147, 3155, 3155, 3155, 3147, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3147, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, - 3144, 3144, 3144, 3144, 3136, 3144, 3144, 3136, 3144, 3144, - 3144, 3144, 3144, 3136, 3144, 3144, 3144, 3144, 3144, 3144, - 3136, 3144, 3144, 3144, 3136, 3144, 3136, 3136, 3144, 3144, - 3144, 3144, 3144, 3136, 3136, 0, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136 + 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, 3155, + 3155, 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3147, 3155, + 3155, 3155, 3155, 3155, 3147, 3155, 3155, 3155, 3155, 3155, + 3155, 3147, 3155, 3155, 3155, 3147, 3155, 3147, 3147, 3155, + 3155, 3155, 3155, 3155, 3147, 3147, 0, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147 } ; -static const flex_int16_t yy_nxt[6174] = +static const flex_int16_t yy_nxt[6200] = { 0, 18, 19, 20, 21, 22, 23, 22, 18, 18, 18, 18, 18, 22, 24, 25, 26, 27, 28, 29, 30, @@ -1541,7 +1544,7 @@ static const flex_int16_t yy_nxt[6174] = 86, 433, 434, 431, 430, 436, 86, 86, 86, 435, 86, 86, 86, 86, 449, 86, 443, 445, 454, 86, 432, 86, 86, 455, 86, 446, 450, 447, 444, 86, - 437, 451, 86, 438, 452, 453, 86, 606, 439, 440, + 437, 451, 86, 438, 452, 453, 86, 607, 439, 440, 441, 442, 86, 448, 86, 456, 457, 86, 86, 458, 86, 459, 86, 460, 462, 86, 461, 463, 86, 464, @@ -1553,7 +1556,7 @@ static const flex_int16_t yy_nxt[6174] = 86, 485, 493, 86, 486, 86, 487, 86, 494, 86, 508, 167, 495, 505, 86, 506, 504, 507, 519, 510, 496, 86, 497, 86, 498, 520, 509, 86, 86, 518, - 521, 86, 523, 522, 86, 86, 86, 499, 525, 841, + 521, 86, 523, 522, 86, 86, 86, 499, 525, 843, 500, 86, 501, 528, 502, 86, 86, 511, 512, 86, 526, 86, 86, 524, 527, 86, 86, 513, 86, 514, @@ -1561,583 +1564,586 @@ static const flex_int16_t yy_nxt[6174] = 537, 540, 538, 533, 86, 534, 535, 86, 536, 86, 541, 86, 86, 539, 545, 86, 86, 86, 549, 550, 86, 86, 548, 543, 542, 86, 544, 86, 86, 86, - 86, 555, 547, 86, 86, 86, 556, 86, 86, 558, - 546, 559, 86, 552, 553, 551, 86, 554, 86, 561, - 86, 86, 634, 86, 557, 86, 560, 562, 564, 86, - 86, 563, 567, 572, 570, 566, 86, 86, 565, 573, + 160, 555, 547, 86, 86, 86, 556, 557, 86, 559, + 546, 86, 560, 552, 553, 551, 86, 554, 86, 562, + 86, 86, 86, 86, 558, 86, 86, 561, 86, 86, + 563, 564, 86, 572, 568, 571, 565, 567, 86, 566, - 574, 571, 86, 568, 86, 569, 86, 86, 576, 86, - 86, 577, 578, 86, 581, 579, 86, 86, 575, 583, - 86, 86, 584, 86, 580, 86, 586, 587, 86, 582, - 86, 86, 588, 86, 585, 86, 591, 86, 589, 86, - 592, 86, 593, 86, 86, 86, 86, 86, 599, 595, - 594, 590, 603, 86, 86, 602, 598, 600, 601, 596, - 86, 597, 86, 605, 86, 607, 86, 86, 86, 86, - 86, 86, 86, 617, 86, 609, 86, 610, 619, 86, - 86, 604, 612, 86, 86, 618, 624, 608, 616, 611, - 613, 615, 614, 86, 621, 86, 86, 86, 620, 627, + 575, 574, 573, 576, 86, 569, 86, 570, 86, 581, + 577, 86, 578, 86, 579, 86, 582, 86, 580, 584, + 86, 86, 86, 86, 587, 588, 585, 86, 86, 86, + 583, 86, 589, 86, 86, 586, 86, 594, 592, 593, + 86, 86, 590, 86, 86, 595, 86, 86, 86, 600, + 591, 601, 596, 86, 603, 599, 86, 86, 86, 86, + 602, 597, 598, 604, 86, 606, 86, 608, 86, 86, + 86, 613, 86, 86, 86, 618, 610, 605, 609, 611, + 620, 86, 86, 86, 86, 158, 86, 86, 617, 612, + 614, 619, 615, 616, 86, 623, 86, 622, 624, 621, - 86, 86, 630, 622, 629, 86, 623, 86, 86, 86, - 625, 86, 626, 86, 633, 86, 86, 636, 86, 86, - 628, 632, 86, 637, 639, 86, 631, 86, 86, 86, - 638, 86, 635, 653, 86, 641, 86, 667, 640, 86, - 642, 86, 643, 652, 86, 651, 86, 644, 656, 645, - 654, 660, 655, 86, 659, 646, 86, 647, 657, 86, - 648, 649, 658, 664, 86, 86, 86, 650, 663, 86, - 86, 670, 661, 86, 665, 662, 86, 672, 86, 86, - 666, 86, 86, 86, 86, 86, 669, 86, 668, 678, - 86, 674, 86, 673, 679, 86, 675, 86, 671, 683, + 86, 86, 628, 625, 629, 631, 86, 86, 86, 630, + 626, 86, 86, 86, 86, 86, 627, 634, 637, 86, + 86, 633, 86, 86, 638, 640, 86, 86, 86, 632, + 86, 86, 86, 668, 86, 635, 636, 639, 86, 641, + 643, 86, 654, 903, 86, 642, 86, 644, 652, 653, + 655, 86, 645, 86, 646, 657, 86, 656, 86, 660, + 647, 661, 648, 658, 86, 649, 650, 659, 86, 667, + 665, 86, 651, 86, 86, 671, 86, 664, 86, 86, + 662, 666, 86, 663, 86, 673, 86, 86, 86, 86, + 86, 675, 86, 670, 669, 679, 86, 674, 680, 86, - 167, 676, 685, 682, 684, 677, 680, 681, 86, 86, - 687, 86, 86, 86, 86, 86, 86, 86, 86, 692, - 694, 686, 696, 86, 86, 695, 689, 697, 690, 693, - 688, 699, 691, 86, 86, 86, 698, 86, 701, 86, - 86, 86, 86, 86, 705, 86, 700, 704, 713, 86, - 86, 710, 706, 702, 715, 703, 711, 86, 86, 707, - 86, 709, 708, 712, 714, 86, 716, 86, 717, 86, - 718, 86, 719, 86, 722, 86, 86, 720, 86, 721, - 723, 86, 86, 86, 86, 726, 86, 86, 727, 725, - 731, 730, 724, 86, 86, 86, 86, 732, 86, 86, + 86, 676, 683, 672, 167, 86, 677, 686, 685, 684, + 678, 681, 86, 86, 682, 86, 86, 687, 86, 86, + 86, 86, 86, 695, 693, 697, 86, 688, 86, 86, + 690, 86, 698, 691, 689, 694, 696, 692, 86, 700, + 86, 699, 86, 701, 86, 86, 86, 702, 86, 86, + 86, 705, 706, 86, 703, 711, 724, 704, 86, 707, + 712, 86, 714, 86, 710, 86, 708, 715, 86, 709, + 716, 713, 717, 86, 718, 86, 86, 719, 86, 720, + 86, 86, 86, 86, 721, 86, 722, 725, 86, 727, + 723, 728, 86, 86, 86, 733, 86, 729, 86, 726, - 734, 86, 736, 86, 737, 729, 86, 728, 86, 86, - 743, 86, 733, 86, 739, 738, 86, 86, 735, 740, - 86, 742, 746, 741, 744, 747, 86, 750, 86, 745, - 748, 86, 86, 86, 752, 86, 753, 751, 86, 86, - 755, 749, 756, 757, 86, 86, 86, 86, 86, 86, - 764, 86, 762, 760, 86, 86, 86, 86, 754, 86, - 758, 761, 770, 759, 765, 160, 768, 86, 86, 763, - 86, 769, 767, 766, 86, 86, 771, 772, 773, 774, - 86, 86, 86, 775, 779, 777, 86, 776, 781, 778, - 86, 780, 86, 86, 86, 782, 784, 86, 783, 86, + 732, 86, 734, 86, 86, 86, 738, 86, 86, 736, + 86, 86, 86, 731, 741, 739, 730, 86, 86, 742, + 763, 735, 740, 743, 86, 737, 86, 745, 86, 86, + 86, 86, 752, 748, 749, 744, 746, 86, 86, 86, + 747, 755, 86, 86, 750, 754, 751, 86, 753, 86, + 86, 86, 757, 758, 759, 86, 86, 86, 86, 760, + 86, 764, 762, 756, 766, 86, 86, 767, 772, 761, + 86, 86, 86, 86, 86, 86, 773, 765, 774, 768, + 770, 86, 769, 86, 771, 775, 776, 86, 86, 86, + 777, 779, 781, 783, 778, 780, 86, 86, 86, 86, - 86, 785, 86, 791, 86, 788, 86, 86, 86, 86, - 786, 86, 787, 794, 86, 793, 86, 796, 797, 789, - 790, 86, 800, 792, 798, 86, 801, 795, 86, 803, - 802, 86, 805, 86, 804, 86, 86, 86, 807, 799, - 86, 86, 809, 86, 86, 86, 86, 815, 86, 86, - 86, 86, 816, 86, 86, 86, 808, 86, 806, 810, - 817, 811, 812, 86, 813, 818, 814, 820, 86, 819, - 824, 86, 823, 86, 821, 822, 86, 86, 86, 86, - 86, 86, 825, 826, 829, 86, 86, 86, 86, 86, - 838, 86, 827, 836, 831, 839, 828, 830, 86, 832, + 784, 782, 86, 786, 86, 86, 86, 785, 787, 86, + 793, 790, 86, 86, 86, 86, 86, 788, 789, 796, + 86, 798, 795, 86, 86, 791, 792, 800, 802, 86, + 799, 794, 86, 805, 86, 797, 86, 804, 806, 86, + 86, 803, 801, 86, 807, 86, 86, 809, 811, 86, + 86, 86, 86, 86, 817, 86, 86, 86, 86, 810, + 86, 808, 818, 86, 819, 86, 86, 812, 813, 814, + 86, 815, 820, 816, 822, 86, 86, 826, 821, 86, + 86, 825, 824, 86, 823, 86, 86, 86, 828, 827, + 831, 86, 86, 86, 86, 86, 86, 840, 829, 830, - 86, 837, 86, 833, 834, 835, 86, 843, 86, 86, - 86, 86, 86, 86, 842, 86, 847, 840, 848, 849, - 850, 86, 844, 846, 86, 86, 851, 845, 86, 852, - 86, 853, 86, 167, 854, 86, 86, 86, 858, 856, - 859, 86, 855, 86, 857, 860, 86, 86, 86, 861, - 86, 863, 862, 866, 86, 86, 867, 869, 86, 870, - 864, 86, 86, 872, 868, 86, 874, 871, 865, 86, - 86, 86, 878, 86, 86, 86, 86, 875, 86, 86, - 880, 873, 879, 86, 86, 86, 86, 86, 898, 877, - 894, 86, 86, 881, 893, 876, 86, 895, 891, 883, + 838, 86, 86, 832, 86, 834, 841, 833, 839, 86, + 835, 836, 837, 86, 845, 86, 86, 86, 844, 86, + 842, 86, 86, 849, 850, 86, 86, 852, 851, 846, + 848, 853, 86, 86, 847, 86, 86, 86, 86, 855, + 861, 167, 856, 854, 86, 858, 860, 86, 862, 857, + 859, 86, 86, 86, 86, 868, 86, 86, 869, 86, + 864, 863, 871, 86, 86, 874, 870, 865, 866, 86, + 86, 86, 86, 872, 867, 86, 876, 86, 873, 880, + 86, 86, 877, 86, 86, 86, 86, 86, 881, 875, + 882, 86, 86, 86, 901, 879, 86, 86, 86, 883, - 897, 882, 86, 892, 884, 86, 899, 885, 896, 86, - 86, 886, 86, 86, 887, 86, 86, 904, 86, 920, - 900, 888, 889, 86, 890, 86, 902, 86, 901, 86, - 912, 158, 916, 903, 86, 905, 906, 913, 907, 86, - 915, 908, 917, 86, 86, 914, 909, 918, 86, 923, - 919, 86, 910, 911, 921, 86, 922, 86, 86, 86, - 924, 926, 86, 925, 86, 86, 927, 86, 86, 930, - 929, 928, 86, 86, 934, 86, 933, 86, 86, 86, - 937, 86, 86, 941, 943, 86, 86, 931, 86, 86, - 935, 932, 936, 939, 86, 938, 944, 962, 86, 942, + 878, 895, 893, 896, 897, 898, 885, 86, 894, 884, + 86, 86, 886, 86, 86, 887, 86, 900, 86, 888, + 86, 902, 889, 899, 86, 905, 86, 907, 86, 890, + 891, 915, 892, 86, 904, 916, 86, 923, 906, 86, + 908, 909, 917, 910, 86, 86, 911, 919, 86, 920, + 175, 912, 922, 918, 921, 86, 86, 913, 914, 86, + 925, 926, 86, 924, 86, 927, 929, 86, 86, 928, + 930, 86, 86, 86, 86, 86, 86, 933, 86, 86, + 937, 86, 86, 931, 86, 940, 936, 86, 86, 173, + 938, 932, 944, 86, 934, 935, 939, 86, 86, 941, - 947, 945, 86, 946, 940, 948, 86, 86, 950, 86, - 86, 86, 949, 951, 86, 952, 86, 954, 86, 955, - 86, 86, 86, 86, 953, 86, 86, 86, 958, 956, - 961, 86, 959, 964, 86, 963, 86, 86, 86, 86, - 957, 86, 86, 86, 86, 960, 966, 967, 969, 86, - 970, 86, 971, 965, 86, 86, 972, 86, 973, 977, - 968, 86, 979, 975, 978, 86, 86, 974, 976, 86, - 86, 86, 980, 86, 984, 986, 987, 86, 982, 86, - 86, 86, 985, 86, 86, 981, 989, 86, 86, 86, - 86, 86, 86, 86, 983, 997, 1000, 86, 995, 86, + 942, 947, 945, 946, 86, 86, 948, 86, 950, 943, + 949, 951, 963, 86, 86, 953, 86, 86, 952, 954, + 86, 86, 86, 957, 86, 86, 955, 958, 86, 86, + 956, 86, 86, 959, 964, 86, 961, 86, 967, 962, + 86, 86, 86, 86, 86, 86, 965, 960, 966, 86, + 86, 969, 970, 86, 972, 86, 974, 86, 86, 973, + 968, 86, 975, 86, 86, 982, 86, 86, 980, 971, + 978, 86, 976, 981, 86, 86, 979, 990, 86, 86, + 977, 983, 987, 86, 985, 989, 984, 86, 86, 86, + 988, 86, 86, 992, 86, 986, 86, 86, 86, 86, - 988, 990, 86, 991, 992, 86, 1001, 86, 994, 993, - 998, 1002, 999, 996, 86, 86, 86, 86, 1008, 86, - 1005, 1004, 1007, 86, 1003, 86, 86, 86, 86, 1006, - 86, 86, 1010, 1017, 1012, 1018, 1009, 1020, 86, 86, - 86, 86, 1022, 86, 86, 1011, 175, 1013, 86, 1015, - 1014, 1016, 1019, 1023, 86, 86, 86, 86, 1024, 86, - 1021, 1028, 1031, 1025, 86, 1030, 86, 1026, 86, 1032, - 86, 86, 86, 1035, 86, 1027, 1037, 86, 1029, 86, - 86, 86, 86, 86, 1034, 1040, 1039, 1043, 1033, 1042, - 1041, 167, 1036, 86, 1044, 86, 86, 86, 1038, 86, + 86, 86, 86, 1000, 86, 998, 86, 1003, 991, 86, + 993, 994, 995, 86, 1005, 1004, 996, 997, 1001, 86, + 1002, 999, 86, 1006, 86, 86, 1011, 86, 1008, 1012, + 1010, 86, 86, 1007, 86, 86, 86, 86, 1009, 86, + 1013, 1020, 1015, 1021, 1023, 86, 86, 86, 1025, 86, + 86, 1026, 1014, 86, 86, 1016, 1018, 86, 1017, 1019, + 1022, 86, 86, 86, 86, 1024, 1027, 86, 1031, 86, + 1033, 1034, 1028, 1029, 86, 86, 1038, 86, 1035, 86, + 1037, 1030, 86, 1040, 86, 1032, 86, 86, 86, 1043, + 86, 1047, 1036, 1042, 1044, 167, 86, 86, 86, 1039, - 86, 1047, 86, 86, 1045, 86, 1059, 86, 1062, 86, - 86, 1060, 86, 86, 1050, 1046, 1048, 1064, 86, 86, - 1087, 86, 1051, 1049, 1052, 86, 86, 1061, 1053, 86, - 1054, 1078, 86, 1065, 1055, 1063, 1056, 1067, 86, 1069, - 1066, 1057, 86, 1068, 1070, 86, 1058, 1071, 86, 86, - 86, 86, 1073, 86, 1079, 86, 1072, 86, 1076, 86, - 86, 86, 86, 173, 1074, 1075, 1084, 1085, 1077, 1080, - 1083, 1082, 1081, 86, 1086, 86, 1088, 1089, 1091, 86, - 86, 86, 86, 86, 1090, 86, 86, 1101, 86, 1104, - 86, 1100, 86, 1092, 86, 1093, 86, 1105, 1103, 1102, + 1046, 86, 1045, 86, 1041, 86, 1050, 86, 86, 86, + 86, 1062, 86, 1065, 86, 172, 1063, 86, 1049, 1048, + 86, 1053, 1051, 86, 86, 1091, 86, 1067, 1054, 1052, + 1055, 86, 1064, 86, 1056, 86, 1057, 86, 1070, 1068, + 1058, 86, 1059, 86, 86, 1066, 86, 1060, 1072, 1069, + 1074, 1071, 1061, 1073, 86, 86, 1081, 1075, 86, 1076, + 86, 1078, 86, 1079, 86, 1082, 86, 86, 86, 86, + 86, 1077, 1088, 1080, 1092, 1087, 1083, 1086, 1089, 86, + 1085, 1090, 1093, 86, 86, 1084, 86, 86, 86, 86, + 86, 86, 1094, 86, 86, 1105, 86, 1108, 86, 1109, - 1094, 86, 1095, 86, 1106, 1110, 86, 86, 1096, 1108, - 86, 1111, 1113, 1097, 1098, 1107, 86, 86, 86, 1114, - 1099, 86, 1109, 1117, 86, 86, 86, 86, 86, 86, - 1112, 1118, 86, 86, 1116, 86, 1115, 1120, 1123, 86, - 1126, 1121, 86, 1119, 86, 1127, 1125, 86, 1124, 1122, - 86, 86, 86, 86, 86, 86, 1128, 1135, 86, 1133, - 1131, 1132, 1130, 86, 86, 86, 86, 1129, 86, 1137, - 86, 1134, 86, 86, 1136, 1143, 86, 86, 1144, 1140, - 86, 1145, 86, 1147, 1138, 1139, 1141, 1142, 1148, 1146, - 1149, 86, 1151, 86, 86, 86, 1153, 1152, 86, 1154, + 86, 1104, 1095, 1107, 1096, 86, 1097, 1106, 1110, 86, + 86, 1098, 1111, 1099, 1114, 86, 86, 86, 167, 1100, + 1115, 1117, 86, 86, 1101, 1102, 1118, 86, 1112, 1113, + 86, 1103, 1121, 86, 86, 86, 86, 1116, 86, 1122, + 86, 1119, 1127, 1120, 1124, 1125, 86, 86, 86, 86, + 86, 86, 1123, 86, 1130, 1128, 1126, 86, 86, 86, + 86, 86, 86, 86, 86, 1132, 1129, 1135, 1136, 1134, + 1131, 86, 86, 1133, 1139, 86, 1140, 1137, 1138, 86, + 86, 1145, 1142, 1143, 165, 86, 1141, 86, 86, 1144, + 1147, 86, 1148, 1149, 1146, 86, 1151, 1152, 86, 86, - 86, 86, 86, 1155, 86, 86, 86, 1150, 1162, 86, - 1164, 86, 86, 1157, 86, 1156, 86, 1166, 1158, 1160, - 1161, 86, 1159, 86, 86, 86, 1165, 1168, 86, 1163, - 1170, 86, 86, 1171, 86, 1167, 86, 1173, 86, 1174, - 86, 1180, 86, 86, 1169, 1179, 1176, 1172, 1175, 1178, - 86, 86, 86, 86, 1177, 86, 1183, 86, 1184, 1181, - 86, 86, 86, 86, 86, 1188, 1190, 86, 1191, 1192, - 1182, 86, 86, 1185, 86, 86, 1189, 86, 1195, 1186, - 1193, 1187, 1194, 1198, 86, 1196, 86, 86, 86, 86, - 86, 1197, 1199, 1200, 86, 1201, 86, 1202, 86, 86, + 1150, 1155, 86, 86, 86, 1157, 1156, 86, 1158, 86, + 86, 1153, 1159, 86, 86, 1154, 1160, 1166, 86, 86, + 86, 1168, 86, 86, 86, 86, 163, 86, 86, 1162, + 1161, 1164, 1163, 1170, 1165, 86, 86, 1169, 1171, 1172, + 1167, 86, 86, 86, 86, 86, 1173, 1174, 1175, 1177, + 1178, 1176, 86, 1179, 86, 86, 1183, 86, 1180, 1184, + 86, 1182, 86, 86, 86, 86, 1185, 1187, 86, 1188, + 1181, 86, 86, 86, 86, 86, 1192, 86, 1194, 1195, + 1196, 1186, 1197, 1189, 86, 86, 86, 1193, 1199, 86, + 1190, 1198, 1191, 86, 86, 1202, 86, 86, 1204, 86, - 86, 1205, 1206, 86, 86, 86, 1211, 1212, 1203, 86, - 86, 1207, 86, 86, 1214, 1204, 1209, 1215, 86, 86, - 86, 1208, 1219, 86, 1210, 1213, 86, 86, 86, 86, - 86, 86, 1225, 86, 1217, 1218, 167, 1221, 1216, 86, - 86, 86, 86, 1232, 86, 1220, 1230, 86, 1222, 86, - 1224, 172, 1229, 1227, 1234, 1223, 1226, 1228, 1231, 1235, - 86, 86, 86, 86, 1237, 86, 1236, 1233, 1238, 86, - 86, 86, 86, 86, 86, 86, 1241, 86, 1247, 86, - 86, 1244, 86, 1239, 1240, 86, 86, 1242, 86, 167, - 1245, 1251, 1243, 86, 1248, 86, 1246, 86, 1253, 1257, + 86, 86, 1203, 86, 86, 1205, 86, 1200, 86, 1206, + 86, 1209, 86, 1201, 86, 1210, 86, 1211, 1215, 1216, + 86, 1207, 86, 1208, 86, 86, 1213, 86, 1212, 1219, + 86, 86, 1218, 86, 86, 1214, 1223, 1217, 86, 1220, + 86, 86, 86, 86, 167, 1221, 1222, 1225, 1229, 86, + 86, 1224, 86, 86, 86, 86, 86, 86, 1234, 1241, + 1226, 162, 1228, 1235, 1230, 1232, 1231, 1227, 1233, 1236, + 86, 1238, 1239, 86, 86, 1237, 86, 86, 86, 1240, + 86, 1242, 86, 86, 86, 86, 86, 1243, 1245, 86, + 1251, 86, 1248, 86, 1244, 86, 86, 1246, 86, 86, - 1249, 1250, 86, 1258, 1261, 86, 86, 1254, 1252, 1255, - 1259, 86, 1256, 1260, 86, 86, 86, 86, 1263, 86, - 1262, 86, 86, 86, 1267, 86, 1266, 1270, 86, 86, - 1264, 1273, 86, 86, 1265, 1269, 1271, 86, 1274, 86, - 1268, 86, 1275, 86, 1277, 1278, 86, 1272, 86, 1276, - 86, 86, 1279, 86, 86, 86, 86, 86, 86, 86, - 86, 1280, 1285, 1281, 86, 1283, 1284, 86, 1286, 1282, - 1290, 1295, 86, 1287, 1291, 86, 1289, 86, 1288, 86, - 1292, 1294, 86, 86, 86, 86, 86, 1293, 86, 1300, - 1296, 1298, 86, 1297, 1302, 86, 1307, 1301, 86, 1303, + 86, 1249, 86, 1247, 1255, 1263, 1261, 1252, 1250, 86, + 86, 1254, 86, 1253, 1257, 86, 1262, 1264, 86, 1256, + 86, 86, 86, 1258, 1266, 1259, 86, 1265, 1260, 1267, + 86, 1268, 86, 86, 1273, 1271, 86, 86, 86, 1269, + 86, 1270, 1274, 1278, 86, 86, 86, 86, 86, 1276, + 1275, 1279, 1272, 1280, 86, 86, 1284, 86, 1283, 1277, + 1282, 86, 86, 86, 86, 1281, 86, 86, 86, 86, + 86, 86, 1285, 1290, 86, 1288, 1286, 1295, 86, 1289, + 1291, 1287, 86, 86, 86, 1300, 1292, 86, 1294, 1296, + 1293, 86, 1299, 86, 86, 86, 86, 86, 1297, 1301, - 86, 1306, 1299, 1316, 86, 1304, 1305, 86, 86, 86, - 1375, 1314, 1308, 1315, 86, 1309, 1310, 86, 1317, 1318, - 1311, 1320, 86, 86, 86, 86, 1312, 86, 1321, 1322, - 1313, 1319, 86, 1323, 86, 1325, 86, 86, 86, 1326, - 86, 1327, 86, 86, 86, 86, 1324, 1335, 1332, 1330, - 86, 86, 1344, 86, 1336, 1337, 1329, 1328, 1333, 86, - 86, 86, 1331, 1334, 86, 1338, 1345, 1346, 1339, 86, - 86, 86, 86, 1340, 86, 1341, 1348, 1342, 86, 1343, - 86, 1347, 1350, 1351, 1352, 86, 1349, 1354, 86, 1353, - 86, 86, 86, 1356, 86, 86, 86, 1362, 86, 1357, + 86, 1302, 1298, 1303, 1307, 1305, 1306, 86, 86, 1308, + 86, 1310, 86, 1304, 86, 1309, 86, 1312, 1321, 160, + 1311, 86, 1338, 1320, 86, 1319, 1313, 86, 1322, 1314, + 1315, 86, 86, 1325, 1316, 86, 1323, 86, 86, 86, + 1317, 1324, 1326, 1327, 1318, 86, 1328, 86, 1330, 86, + 86, 86, 1331, 86, 1332, 86, 1329, 86, 86, 86, + 1340, 1341, 1335, 1337, 1412, 86, 86, 86, 86, 1334, + 1333, 86, 86, 1342, 1344, 1336, 1343, 1339, 86, 1345, + 86, 1346, 1352, 1347, 1353, 1348, 86, 1349, 1350, 1351, + 86, 86, 86, 1354, 1357, 86, 86, 86, 86, 1358, - 1358, 86, 1355, 86, 86, 1363, 1364, 86, 86, 1361, - 1365, 1359, 1366, 1360, 86, 1367, 86, 1368, 86, 1372, - 86, 86, 86, 1371, 1374, 86, 86, 1377, 86, 1376, - 86, 86, 1369, 1380, 86, 86, 1373, 1382, 86, 1379, - 1384, 1370, 86, 1383, 86, 86, 86, 1378, 1387, 86, - 86, 1381, 86, 86, 86, 1389, 86, 86, 86, 1391, - 86, 1397, 1393, 86, 1394, 1385, 1386, 1392, 86, 86, - 1388, 1395, 1396, 1390, 1399, 86, 86, 1398, 86, 86, - 86, 1401, 86, 1400, 1402, 86, 1403, 1404, 86, 1409, - 86, 86, 1410, 1408, 1406, 86, 1405, 1407, 86, 86, + 86, 1356, 1361, 86, 1359, 86, 86, 86, 1355, 1367, + 86, 1368, 1362, 86, 1363, 86, 86, 86, 1360, 86, + 86, 1366, 1364, 86, 1369, 1365, 86, 1370, 1371, 1373, + 86, 1372, 1377, 86, 86, 1376, 86, 1374, 1379, 86, + 86, 86, 1380, 86, 1381, 86, 1385, 86, 1382, 1378, + 86, 1375, 1387, 86, 1384, 1383, 86, 1388, 86, 86, + 86, 1392, 86, 1389, 86, 86, 86, 86, 1394, 86, + 1386, 86, 1396, 1398, 86, 86, 86, 86, 1397, 1400, + 1390, 1391, 1402, 86, 1393, 86, 1395, 86, 86, 86, + 1401, 86, 1399, 1404, 1406, 1405, 1407, 1403, 86, 1408, - 1412, 86, 86, 86, 1411, 167, 86, 1416, 86, 86, - 1413, 1417, 86, 1421, 1415, 86, 1422, 86, 1424, 86, - 1418, 1414, 86, 1423, 86, 86, 86, 1428, 86, 1419, - 86, 86, 1431, 86, 86, 1420, 86, 86, 86, 1425, - 1436, 86, 1429, 1435, 86, 1426, 1427, 86, 1430, 1438, - 1440, 86, 86, 1432, 1434, 1441, 86, 86, 86, 1433, - 1437, 1443, 86, 86, 86, 1444, 1439, 165, 86, 1442, - 86, 86, 1445, 1449, 86, 1456, 1450, 1446, 1447, 1451, - 86, 1448, 1452, 1454, 86, 1453, 1457, 86, 1455, 86, - 86, 1458, 86, 1459, 86, 86, 86, 86, 86, 1462, + 86, 86, 86, 1410, 1414, 1409, 1415, 1411, 86, 86, + 86, 1417, 86, 1416, 86, 1413, 86, 86, 1418, 1421, + 86, 86, 167, 86, 86, 1426, 1427, 1420, 86, 1429, + 86, 86, 86, 1419, 1428, 86, 86, 1423, 86, 86, + 86, 1422, 86, 1424, 1430, 86, 1436, 1425, 86, 86, + 1431, 1433, 1434, 86, 86, 86, 1432, 86, 1435, 1440, + 1441, 86, 1437, 86, 1445, 86, 86, 1439, 1443, 1446, + 86, 86, 86, 1438, 1444, 1447, 1442, 86, 86, 1450, + 1448, 1451, 86, 1454, 86, 1449, 1455, 1452, 86, 1459, + 1453, 1456, 86, 86, 1457, 86, 1462, 1460, 1458, 1461, - 1463, 86, 1465, 86, 86, 86, 1470, 86, 1461, 86, - 86, 1471, 86, 1460, 1464, 1467, 86, 1474, 1466, 86, - 86, 1468, 1469, 86, 1475, 86, 86, 1472, 86, 1473, - 86, 86, 86, 1477, 86, 1476, 1481, 1482, 86, 1480, - 1478, 1479, 86, 1483, 86, 1486, 1484, 1487, 86, 86, - 1489, 1485, 86, 1492, 1488, 1493, 86, 1491, 86, 86, - 1497, 86, 86, 1494, 86, 1495, 1496, 86, 86, 86, - 1490, 86, 86, 86, 1503, 86, 1499, 1498, 86, 1502, - 86, 86, 86, 1500, 1509, 86, 1501, 1506, 1505, 1510, - 86, 1511, 1507, 86, 1514, 1504, 1512, 86, 86, 86, + 86, 1463, 86, 86, 86, 86, 86, 86, 86, 86, + 1467, 1468, 86, 86, 1471, 86, 86, 86, 1476, 1464, + 86, 86, 1466, 86, 1477, 1469, 86, 1473, 1470, 1465, + 1480, 86, 1472, 1474, 1475, 86, 86, 86, 1481, 1478, + 86, 86, 1479, 86, 86, 86, 86, 86, 1487, 1483, + 1482, 1488, 1484, 86, 86, 1485, 1491, 86, 1489, 86, + 1486, 86, 1492, 1490, 1498, 1494, 86, 1496, 1499, 1493, + 86, 1497, 86, 1495, 86, 86, 1500, 86, 1501, 1502, + 86, 86, 86, 86, 86, 1503, 86, 86, 1509, 86, + 1505, 1504, 86, 1508, 86, 86, 86, 1506, 1515, 1507, - 1508, 86, 86, 86, 86, 1513, 1522, 1518, 86, 86, - 1517, 86, 86, 1525, 1523, 86, 86, 1515, 1516, 86, - 86, 86, 1519, 1528, 1520, 86, 1521, 1527, 86, 86, - 86, 86, 86, 86, 1526, 1529, 1542, 1524, 86, 1530, - 86, 1536, 86, 86, 1531, 1533, 1537, 1532, 1535, 86, - 1538, 1534, 1539, 86, 1540, 86, 86, 86, 86, 86, - 1549, 1541, 1543, 86, 1550, 1546, 1544, 86, 86, 1547, - 86, 1545, 1554, 86, 86, 1556, 86, 86, 86, 1555, - 86, 86, 1548, 1551, 86, 1559, 1553, 1552, 1560, 86, - 1558, 1557, 86, 1561, 86, 1565, 1566, 86, 1562, 86, + 1511, 1512, 86, 1516, 86, 1517, 86, 1520, 1513, 1510, + 1518, 86, 86, 86, 1514, 86, 86, 86, 86, 86, + 1528, 1524, 1519, 86, 1523, 86, 86, 1531, 1529, 86, + 86, 1521, 1522, 86, 86, 1534, 1525, 1527, 1526, 86, + 1533, 86, 86, 86, 86, 86, 86, 1542, 1532, 1535, + 86, 1530, 86, 1543, 86, 1545, 86, 158, 1536, 1539, + 86, 1537, 1538, 1546, 86, 1540, 1544, 1541, 86, 86, + 86, 86, 86, 1547, 1548, 86, 86, 1552, 1555, 86, + 1550, 1553, 1549, 86, 1556, 1551, 86, 1560, 86, 86, + 86, 1557, 1562, 86, 1554, 1561, 86, 86, 86, 86, - 86, 86, 86, 86, 1570, 1571, 86, 1569, 1573, 86, - 1563, 86, 86, 86, 1564, 1574, 86, 1567, 1575, 86, - 86, 1568, 86, 1578, 86, 86, 1572, 86, 1581, 1576, - 86, 86, 1577, 1580, 86, 86, 86, 1587, 86, 1585, - 1582, 86, 1579, 86, 86, 86, 1592, 1588, 86, 1586, - 1584, 1583, 86, 86, 86, 86, 1597, 86, 1590, 1589, - 1595, 86, 1593, 86, 1600, 1598, 86, 86, 1596, 1591, - 1594, 86, 86, 167, 1599, 1603, 86, 86, 1602, 1606, - 86, 1605, 86, 86, 86, 86, 86, 1614, 1601, 1607, - 86, 1604, 86, 86, 86, 1608, 1609, 1615, 1612, 1618, + 86, 1565, 1559, 1558, 1563, 86, 1564, 86, 1571, 1566, + 86, 1567, 1572, 86, 86, 86, 86, 1568, 1569, 1570, + 1577, 1575, 86, 1576, 86, 86, 86, 86, 1573, 1579, + 86, 86, 1581, 86, 1580, 86, 1574, 86, 1584, 86, + 86, 1582, 86, 1583, 1578, 86, 1587, 86, 1586, 86, + 86, 86, 1593, 86, 1591, 1588, 86, 1585, 86, 86, + 86, 1598, 1594, 1589, 1592, 86, 1590, 86, 86, 86, + 86, 1603, 86, 1596, 1595, 1601, 86, 86, 1606, 1599, + 1604, 86, 86, 1602, 1597, 1600, 86, 86, 167, 1605, + 1609, 86, 86, 1608, 1612, 86, 1611, 86, 86, 86, - 86, 86, 1610, 1611, 86, 1619, 1621, 86, 86, 1623, - 1613, 1625, 1622, 1616, 1617, 86, 86, 86, 1627, 86, - 86, 1620, 86, 86, 86, 86, 1632, 1630, 1624, 1629, - 1626, 86, 1633, 86, 86, 86, 86, 86, 86, 1628, - 1637, 86, 1638, 86, 86, 1645, 86, 1634, 1631, 1646, - 1636, 86, 1635, 86, 1639, 1640, 1642, 86, 1641, 1643, - 1647, 86, 86, 86, 1661, 86, 86, 1650, 1652, 1654, - 1649, 1644, 1653, 86, 86, 86, 1648, 86, 1656, 1655, - 86, 1657, 86, 1658, 86, 1662, 86, 1659, 1651, 86, - 86, 86, 1665, 1664, 1666, 1668, 1667, 1660, 86, 86, + 86, 86, 1620, 1607, 1613, 86, 1610, 86, 86, 86, + 1614, 1615, 1621, 1618, 1624, 86, 86, 1616, 1617, 86, + 1625, 1627, 86, 86, 1629, 1619, 1631, 1628, 1622, 1623, + 86, 86, 86, 1633, 86, 86, 1626, 86, 86, 86, + 86, 1638, 1636, 1630, 1635, 1632, 86, 1639, 86, 86, + 86, 86, 86, 86, 1634, 1643, 86, 1644, 86, 86, + 1651, 86, 1640, 1637, 1652, 1642, 86, 1641, 86, 1645, + 1646, 1648, 86, 1647, 1649, 1653, 86, 86, 86, 1668, + 86, 86, 1656, 1658, 1660, 1655, 1650, 1659, 86, 1661, + 86, 1654, 86, 86, 1663, 86, 1665, 1662, 86, 1664, - 86, 86, 86, 1671, 86, 86, 1663, 1670, 86, 86, - 1672, 86, 86, 86, 86, 1681, 86, 86, 86, 86, - 86, 86, 1669, 86, 1678, 86, 1673, 1676, 1677, 1674, - 1679, 1675, 1680, 86, 1684, 86, 1682, 1683, 1686, 86, - 1688, 86, 1689, 86, 1685, 1687, 86, 86, 1690, 86, - 86, 86, 86, 86, 163, 86, 86, 1691, 1694, 1696, - 86, 1704, 86, 1703, 1697, 1693, 1695, 1698, 86, 1699, - 1692, 1700, 1705, 86, 86, 1702, 1701, 86, 86, 86, - 1706, 1708, 1709, 86, 86, 86, 86, 86, 86, 1712, - 1710, 1713, 1707, 86, 86, 1721, 86, 1716, 1711, 86, + 86, 86, 86, 1657, 86, 1666, 86, 86, 86, 1672, + 1671, 1673, 1675, 1674, 1667, 86, 86, 86, 86, 86, + 1678, 86, 86, 1669, 1677, 86, 1670, 1679, 86, 86, + 86, 86, 1688, 86, 86, 86, 86, 86, 86, 1676, + 86, 86, 86, 1680, 1683, 1684, 1685, 1686, 1681, 1682, + 1687, 1693, 86, 1689, 1691, 86, 1690, 1697, 86, 86, + 1696, 86, 1692, 1695, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 3147, 1710, 1694, 1701, 1703, 1698, 86, + 86, 1702, 86, 1700, 1706, 1699, 86, 1707, 1704, 1711, + 86, 1705, 1708, 1717, 1709, 1712, 86, 86, 1713, 86, - 86, 86, 86, 1715, 1714, 1718, 1722, 86, 1719, 1720, - 86, 86, 1717, 86, 1723, 1724, 86, 1725, 86, 86, - 1731, 86, 86, 86, 1726, 1728, 86, 1727, 1734, 86, - 1735, 1733, 86, 86, 86, 1737, 1730, 1732, 1738, 1739, - 86, 1729, 1743, 86, 1736, 86, 86, 1744, 86, 1749, - 1740, 86, 86, 1752, 1741, 86, 1748, 1745, 1742, 86, - 1746, 1751, 86, 86, 86, 1754, 86, 86, 1747, 1753, - 1750, 86, 1755, 1758, 86, 86, 1762, 86, 1760, 86, - 86, 1757, 86, 1756, 1761, 1763, 86, 1759, 86, 86, - 86, 86, 86, 86, 1772, 86, 1766, 86, 1767, 1764, + 1714, 86, 1715, 1716, 86, 86, 1719, 86, 86, 86, + 1720, 86, 86, 86, 1728, 86, 1718, 86, 1723, 86, + 86, 1727, 1725, 86, 1722, 1726, 1721, 1729, 86, 86, + 1724, 1733, 1731, 86, 86, 1730, 86, 86, 1738, 86, + 86, 1732, 86, 86, 86, 1734, 1735, 1741, 1746, 1740, + 86, 1742, 86, 1744, 1737, 1739, 1745, 86, 1736, 86, + 86, 1750, 86, 86, 86, 1743, 1751, 86, 1755, 1756, + 1747, 86, 1758, 86, 1752, 86, 1759, 1749, 1748, 1753, + 86, 1761, 86, 86, 1754, 1760, 86, 86, 86, 1757, + 1765, 86, 1762, 1769, 86, 86, 86, 86, 86, 86, - 1777, 86, 1774, 1768, 1769, 1765, 1770, 1771, 86, 1775, - 1776, 86, 86, 86, 86, 86, 1773, 1782, 86, 86, - 86, 1786, 86, 86, 86, 86, 86, 1781, 86, 1788, - 1779, 1778, 1780, 1789, 86, 1784, 86, 86, 1785, 1790, - 1783, 1791, 167, 86, 1787, 86, 1792, 1796, 86, 1793, - 86, 86, 1800, 86, 1794, 86, 86, 86, 1795, 86, - 86, 86, 1798, 1802, 1797, 86, 86, 1807, 86, 1801, - 1799, 1803, 1804, 86, 1810, 162, 1805, 1808, 1811, 86, - 86, 1806, 86, 1812, 1809, 1813, 86, 1814, 86, 1816, - 1817, 86, 86, 86, 86, 86, 1819, 1815, 86, 86, + 1767, 86, 1764, 1763, 1766, 86, 1768, 86, 86, 1770, + 86, 1775, 86, 1771, 1772, 1773, 1781, 1774, 1776, 1779, + 86, 1782, 86, 86, 1777, 86, 1778, 86, 1784, 86, + 86, 86, 1789, 86, 86, 86, 1783, 86, 86, 1793, + 86, 1780, 86, 86, 86, 1785, 1788, 1795, 1786, 1796, + 1787, 1791, 86, 86, 86, 1792, 1790, 1797, 1798, 86, + 167, 86, 1794, 1799, 1803, 86, 86, 86, 86, 1807, + 86, 86, 1801, 86, 86, 86, 1802, 86, 1809, 1805, + 86, 86, 1800, 86, 1814, 1804, 3147, 1806, 1808, 1810, + 86, 86, 1811, 1813, 1812, 1815, 86, 1817, 86, 1816, - 86, 1820, 86, 86, 1818, 86, 86, 86, 1825, 86, - 1826, 86, 86, 1821, 86, 1827, 1830, 86, 1823, 1828, - 1824, 1822, 1834, 1831, 1829, 86, 86, 1838, 86, 1835, - 1836, 1839, 1833, 86, 86, 86, 1832, 86, 86, 160, - 86, 1837, 1844, 86, 86, 1847, 1848, 86, 1849, 86, - 86, 1842, 86, 1841, 1840, 1851, 86, 1845, 1843, 1846, - 86, 1852, 86, 1855, 86, 86, 1857, 86, 86, 1856, - 1850, 1858, 86, 1853, 1859, 1861, 86, 1864, 86, 86, - 86, 86, 1863, 1854, 86, 1860, 86, 1865, 1867, 1866, - 86, 86, 86, 1874, 86, 86, 86, 86, 86, 86, + 1818, 86, 86, 1820, 86, 1819, 86, 1822, 1823, 1824, + 86, 1821, 86, 86, 86, 1826, 86, 86, 1829, 1827, + 86, 86, 86, 86, 1825, 86, 86, 1832, 1833, 86, + 86, 1837, 86, 86, 1834, 86, 86, 1828, 1830, 1831, + 1841, 1835, 1838, 86, 86, 1836, 86, 1842, 1843, 1845, + 86, 1844, 1840, 1846, 86, 1839, 86, 86, 86, 86, + 1852, 86, 86, 86, 1855, 1847, 1849, 1856, 86, 1857, + 86, 86, 1850, 1848, 1859, 86, 1853, 1851, 1854, 86, + 1860, 1858, 86, 1863, 86, 86, 86, 1865, 86, 1864, + 1867, 1866, 1861, 86, 1869, 86, 86, 86, 86, 86, - 1876, 1862, 1868, 1869, 1870, 1877, 86, 86, 1880, 1871, - 1878, 1872, 1873, 1881, 86, 1875, 1879, 1882, 86, 86, - 1886, 86, 86, 86, 86, 1888, 86, 1883, 1885, 86, - 86, 1891, 1892, 86, 86, 1894, 86, 86, 86, 1884, - 86, 86, 86, 86, 1899, 86, 1889, 1896, 1887, 1897, - 86, 1890, 1900, 86, 1893, 86, 1902, 86, 86, 86, - 1906, 86, 1895, 1898, 1901, 1903, 1904, 86, 1910, 86, - 1913, 1905, 1909, 86, 86, 86, 86, 1908, 1914, 86, - 1912, 1907, 1915, 86, 86, 86, 86, 86, 1917, 1911, - 1916, 86, 86, 86, 1921, 1918, 86, 1924, 1925, 1920, + 86, 1871, 1874, 1862, 1868, 1872, 86, 86, 1873, 1875, + 86, 1876, 1877, 1878, 86, 86, 1882, 86, 1879, 1884, + 1870, 86, 86, 86, 1885, 86, 86, 86, 1887, 86, + 1880, 86, 1891, 1890, 1881, 1886, 86, 1883, 1888, 86, + 1894, 86, 86, 86, 1889, 86, 1896, 86, 86, 1899, + 86, 1892, 1900, 86, 1902, 86, 86, 1893, 86, 86, + 1907, 86, 86, 1897, 1908, 86, 86, 1904, 1895, 1898, + 1901, 1905, 86, 86, 86, 86, 86, 86, 1914, 86, + 1906, 1903, 1909, 1911, 1912, 86, 1918, 1910, 86, 86, + 1917, 1921, 86, 1923, 86, 1916, 1920, 86, 1922, 1913, - 1926, 86, 86, 86, 86, 1919, 86, 1929, 86, 86, - 1922, 86, 1934, 86, 86, 86, 1933, 1928, 86, 1923, - 86, 1927, 86, 1930, 1938, 86, 86, 86, 1931, 86, - 1936, 1932, 1939, 1935, 1940, 1941, 86, 1937, 86, 86, - 1943, 1948, 1942, 1945, 86, 1944, 86, 86, 1946, 86, - 1952, 1949, 86, 1947, 86, 86, 86, 1954, 1955, 86, - 86, 1956, 86, 1958, 86, 86, 1957, 1950, 86, 1951, - 1953, 1962, 86, 1963, 86, 1959, 1964, 1966, 1967, 86, - 1960, 1965, 86, 86, 86, 1961, 86, 86, 86, 1971, - 86, 1969, 86, 86, 1968, 86, 1973, 1976, 86, 1970, + 1915, 86, 86, 86, 86, 86, 1924, 86, 1919, 86, + 86, 1925, 1929, 86, 86, 1932, 1933, 86, 86, 1928, + 1934, 86, 86, 1926, 1927, 1937, 86, 86, 1930, 86, + 86, 1942, 86, 1936, 86, 1941, 86, 1935, 86, 1931, + 86, 1938, 86, 86, 86, 1948, 1946, 1939, 1950, 1947, + 86, 1940, 86, 1943, 86, 1944, 86, 1945, 1949, 86, + 86, 1951, 1953, 86, 86, 1957, 1952, 86, 1955, 86, + 1960, 86, 86, 1954, 1962, 1956, 86, 1963, 86, 86, + 1964, 86, 86, 1967, 1958, 1965, 1961, 1959, 1968, 86, + 86, 1966, 1970, 86, 1971, 86, 1972, 1974, 1975, 86, - 1972, 1978, 1974, 86, 1975, 167, 86, 86, 86, 86, - 1979, 86, 1985, 86, 1983, 1977, 1984, 1982, 1980, 86, - 1981, 1986, 86, 1987, 86, 1989, 86, 86, 86, 86, - 158, 86, 1990, 1991, 86, 1992, 1993, 86, 86, 1988, - 86, 1995, 1994, 86, 1997, 86, 1996, 86, 86, 2001, - 86, 86, 1998, 2000, 86, 86, 2002, 1999, 86, 2003, - 2004, 2005, 2006, 86, 86, 86, 86, 86, 86, 86, - 2013, 2007, 2011, 2008, 2012, 86, 86, 86, 86, 86, - 2018, 2017, 86, 2009, 86, 2010, 2015, 86, 86, 86, - 2022, 2019, 86, 2014, 86, 86, 2016, 2021, 86, 2024, + 86, 1973, 86, 86, 86, 1977, 1979, 86, 86, 1969, + 86, 1978, 86, 86, 1981, 1984, 1976, 86, 1986, 1980, + 1982, 86, 167, 86, 86, 86, 86, 1987, 86, 86, + 86, 1993, 1992, 1991, 86, 1988, 3147, 1989, 1983, 1985, + 1994, 86, 1995, 86, 1997, 1990, 86, 86, 86, 86, + 86, 86, 1998, 1999, 1996, 2000, 2001, 86, 86, 86, + 2005, 2003, 2002, 2004, 86, 86, 86, 2009, 86, 86, + 86, 2008, 2014, 86, 86, 2011, 2006, 2007, 2010, 2012, + 86, 86, 86, 2013, 86, 86, 86, 86, 2021, 86, + 2019, 2016, 2020, 86, 86, 86, 86, 86, 86, 2026, - 2020, 2023, 86, 2026, 86, 2025, 86, 2027, 2028, 86, - 86, 2030, 86, 2029, 86, 2034, 86, 2036, 2031, 2032, - 2033, 86, 86, 86, 2037, 2038, 86, 86, 86, 2035, - 86, 2039, 86, 2043, 2040, 86, 2041, 86, 86, 2044, - 86, 86, 86, 86, 86, 86, 86, 86, 2042, 2046, - 2047, 2051, 2048, 2055, 86, 86, 2045, 2050, 2054, 86, - 86, 86, 2056, 2053, 2052, 86, 2059, 2049, 2058, 86, - 86, 86, 2062, 86, 2061, 2057, 2064, 86, 2063, 2060, - 2065, 86, 86, 86, 86, 86, 2066, 2070, 86, 86, - 2072, 2068, 86, 2074, 86, 2069, 86, 86, 86, 2067, + 86, 2015, 2017, 86, 2018, 2023, 3147, 2022, 86, 2025, + 2027, 2024, 2029, 86, 2030, 2028, 86, 2031, 86, 86, + 2033, 2034, 86, 86, 2035, 2037, 86, 2032, 86, 86, + 86, 2038, 86, 86, 2043, 2036, 86, 2045, 86, 2039, + 86, 86, 86, 2046, 2042, 2040, 2048, 2041, 2047, 86, + 2044, 86, 86, 86, 2052, 86, 86, 86, 2049, 86, + 86, 86, 86, 86, 2050, 2053, 86, 86, 86, 2055, + 86, 2056, 2051, 2057, 2060, 86, 2054, 2059, 2063, 2064, + 86, 86, 86, 2062, 2067, 2065, 2058, 2061, 86, 86, + 2066, 86, 86, 2068, 2070, 2069, 86, 2073, 2071, 86, - 2077, 2076, 2078, 2071, 86, 86, 2073, 86, 2082, 2079, - 86, 86, 86, 86, 86, 2075, 2083, 86, 2085, 2088, - 86, 86, 2089, 2080, 86, 2084, 86, 2081, 2092, 86, - 86, 2087, 2086, 86, 86, 2093, 86, 86, 2094, 2090, - 86, 2096, 2098, 86, 86, 2100, 2091, 2095, 86, 2097, - 86, 2101, 2099, 86, 86, 2104, 86, 2102, 2103, 86, - 86, 2107, 2109, 2105, 86, 86, 2106, 2110, 86, 2111, - 86, 86, 86, 86, 86, 86, 2112, 2108, 2114, 2115, - 86, 2118, 2113, 86, 2116, 2117, 2119, 86, 86, 86, - 86, 86, 86, 2120, 86, 86, 86, 2128, 2121, 2122, + 2072, 86, 86, 86, 86, 86, 2074, 2079, 86, 2076, + 2075, 2077, 86, 86, 2081, 2078, 2083, 86, 86, 86, + 2086, 86, 2082, 2080, 2085, 86, 2087, 86, 86, 2091, + 2088, 86, 86, 86, 86, 86, 2092, 86, 86, 2084, + 2094, 2097, 86, 86, 2098, 2089, 2093, 86, 2090, 2101, + 86, 2096, 86, 2095, 86, 86, 2103, 2102, 2100, 86, + 2107, 86, 2099, 86, 86, 86, 2109, 2105, 2104, 86, + 2110, 86, 2111, 86, 86, 2106, 2108, 86, 2112, 2116, + 86, 86, 2118, 2114, 86, 86, 2115, 2119, 86, 2113, + 2120, 86, 86, 86, 86, 86, 2121, 2122, 2123, 2124, - 2129, 86, 2123, 2125, 2124, 2130, 2126, 2131, 86, 86, - 2127, 86, 86, 86, 2133, 86, 2139, 86, 86, 167, - 2132, 2141, 86, 86, 2138, 86, 2135, 2140, 86, 2143, - 2136, 86, 2134, 2144, 2147, 86, 86, 2149, 2137, 2148, - 86, 2146, 2142, 86, 2145, 2150, 86, 86, 2191, 2151, - 86, 86, 2154, 86, 86, 2152, 2153, 86, 2155, 2158, - 2159, 86, 86, 2160, 86, 2163, 2161, 86, 86, 86, - 2165, 86, 2156, 2164, 2166, 86, 86, 86, 2168, 86, - 86, 2167, 2162, 2157, 86, 86, 86, 2170, 86, 2169, - 2171, 86, 86, 2174, 86, 86, 86, 2172, 86, 2177, + 86, 2117, 2128, 86, 2125, 86, 86, 86, 86, 2127, + 86, 86, 2126, 2129, 86, 86, 86, 86, 86, 86, + 2134, 2132, 2131, 2130, 2137, 2133, 2135, 86, 86, 86, + 86, 2136, 2138, 2144, 2145, 2140, 2142, 2139, 2143, 86, + 86, 86, 2146, 2148, 86, 2150, 86, 86, 2141, 2147, + 2149, 2152, 86, 86, 167, 2156, 2158, 2153, 2151, 2159, + 2157, 86, 86, 86, 86, 86, 2154, 2160, 86, 2163, + 86, 2161, 86, 2164, 86, 3147, 2155, 2168, 86, 86, + 2169, 86, 86, 2167, 2172, 86, 86, 2165, 2162, 2178, + 86, 2173, 86, 2170, 86, 2174, 2175, 86, 2166, 86, - 86, 2183, 86, 2175, 2173, 2181, 2176, 86, 86, 86, - 2178, 2179, 2184, 86, 2186, 86, 2180, 86, 86, 86, - 2182, 86, 2185, 2190, 2193, 86, 86, 2188, 86, 2194, - 86, 86, 86, 86, 86, 86, 2189, 2192, 86, 2187, - 2204, 86, 86, 2205, 86, 2195, 2201, 2196, 86, 86, - 86, 2199, 2206, 2197, 2200, 2198, 2202, 2203, 2208, 86, - 2210, 2207, 86, 2209, 2211, 86, 2212, 86, 86, 86, - 2215, 86, 2218, 86, 86, 86, 86, 2213, 86, 2219, - 2216, 2214, 86, 2217, 2224, 86, 86, 2220, 2225, 86, - 2223, 2227, 86, 86, 86, 2221, 2222, 2229, 86, 86, + 2171, 2177, 86, 86, 2176, 86, 2180, 86, 86, 86, + 86, 86, 2179, 2183, 86, 86, 2186, 86, 86, 2190, + 86, 2192, 86, 2181, 86, 2185, 86, 86, 2193, 86, + 2182, 86, 2184, 2187, 2188, 86, 2195, 2189, 86, 86, + 86, 2194, 2191, 86, 2200, 2197, 86, 2198, 2199, 2203, + 86, 86, 86, 2196, 2204, 86, 2201, 86, 2202, 86, + 86, 86, 86, 2214, 86, 86, 3147, 86, 2216, 86, + 2205, 2206, 86, 2211, 2215, 86, 3147, 86, 2207, 2209, + 2210, 2208, 2213, 2212, 86, 2217, 86, 2220, 86, 2218, + 2219, 2221, 86, 2222, 86, 86, 2225, 86, 86, 2223, - 2232, 86, 2233, 86, 2231, 2226, 86, 86, 86, 2230, - 86, 2228, 86, 2239, 86, 86, 2235, 2238, 2241, 86, - 2234, 86, 2236, 86, 86, 86, 2244, 86, 2245, 2237, - 2243, 2247, 86, 86, 2240, 86, 2251, 86, 86, 2242, - 86, 86, 86, 2246, 2248, 86, 2255, 86, 2249, 2256, - 86, 86, 2258, 86, 2250, 86, 2254, 86, 2252, 2261, - 86, 86, 86, 2253, 2257, 86, 2259, 86, 2260, 2263, - 86, 2264, 86, 2268, 86, 2262, 86, 2271, 86, 2265, - 2270, 86, 2274, 2266, 86, 2269, 2275, 86, 86, 2276, - 86, 86, 2272, 2267, 2273, 86, 2280, 86, 86, 86, + 86, 2224, 2228, 86, 86, 2229, 2226, 86, 86, 2227, + 2234, 86, 2230, 2235, 86, 86, 2237, 86, 2231, 86, + 2233, 2239, 86, 86, 2232, 86, 2242, 86, 2243, 86, + 2241, 86, 86, 86, 2236, 86, 86, 2238, 2240, 86, + 86, 2245, 2249, 86, 2248, 2244, 86, 2246, 2251, 86, + 86, 86, 2253, 2254, 2247, 2250, 86, 2255, 2252, 2257, + 86, 86, 86, 2261, 86, 86, 86, 86, 86, 86, + 2258, 86, 2256, 2265, 2266, 86, 2259, 86, 86, 2271, + 86, 2260, 2264, 2268, 86, 2262, 2269, 2267, 86, 2263, + 86, 86, 2270, 86, 86, 2273, 86, 2278, 86, 86, - 2285, 2278, 2282, 2283, 86, 86, 86, 2287, 86, 86, - 2288, 2279, 2277, 86, 2284, 86, 86, 86, 86, 2292, - 2289, 2281, 2291, 86, 86, 2286, 2293, 2294, 86, 2298, - 2299, 86, 2295, 2290, 3136, 86, 86, 2296, 2297, 86, - 86, 86, 2303, 2300, 2304, 86, 2305, 167, 86, 2302, - 86, 2301, 2307, 86, 2306, 86, 2312, 86, 86, 86, - 86, 86, 86, 86, 86, 86, 3136, 2319, 2308, 2310, - 2309, 2311, 2314, 2313, 2315, 2316, 2317, 2318, 86, 86, - 2321, 2323, 86, 2320, 86, 2324, 2325, 86, 86, 86, - 2328, 2322, 2326, 2327, 2329, 86, 86, 2331, 86, 86, + 86, 2280, 86, 86, 2272, 2274, 2281, 2279, 2275, 86, + 86, 2276, 2284, 86, 2285, 2286, 86, 86, 86, 86, + 2277, 2282, 2290, 2283, 2292, 86, 2288, 2287, 86, 2295, + 2293, 86, 2297, 86, 86, 86, 86, 2289, 86, 2298, + 86, 2299, 86, 2294, 2291, 2302, 86, 86, 86, 86, + 86, 86, 2296, 2301, 2308, 2303, 2304, 2305, 2300, 2306, + 86, 2309, 86, 2307, 86, 86, 2310, 86, 86, 2313, + 2314, 2311, 167, 2312, 86, 2315, 86, 2317, 86, 86, + 2322, 86, 86, 2316, 86, 2318, 86, 2319, 86, 86, + 86, 86, 86, 2324, 2320, 2321, 86, 2323, 2325, 2329, - 86, 86, 2333, 86, 2330, 86, 86, 86, 2337, 86, - 2338, 86, 86, 2332, 86, 2334, 86, 2340, 2341, 2335, - 2345, 86, 86, 2339, 2342, 2336, 2343, 86, 86, 86, - 86, 2348, 86, 2344, 2347, 86, 86, 86, 86, 86, - 86, 2350, 2346, 2354, 86, 86, 86, 2357, 2349, 2351, - 2356, 86, 2353, 86, 86, 86, 86, 2352, 2360, 2362, - 2355, 2358, 2359, 2363, 2364, 86, 86, 2361, 2365, 86, - 86, 2367, 86, 86, 86, 2368, 86, 2370, 2371, 2366, - 2372, 86, 2374, 86, 86, 86, 86, 2376, 86, 86, - 86, 86, 86, 2373, 2375, 86, 2380, 2384, 86, 2369, + 86, 2328, 86, 86, 2326, 2327, 2336, 2330, 2333, 86, + 2370, 2331, 2332, 86, 2334, 2335, 86, 86, 2338, 2339, + 86, 86, 2337, 86, 86, 86, 2341, 86, 86, 2340, + 86, 2343, 86, 86, 2347, 2342, 2348, 2345, 86, 86, + 2344, 86, 86, 86, 2350, 2351, 2352, 2353, 86, 86, + 86, 2346, 2349, 86, 2354, 2355, 86, 86, 86, 2356, + 86, 2358, 2359, 86, 86, 2361, 86, 86, 86, 86, + 86, 2360, 2365, 2357, 2368, 2367, 86, 86, 86, 2374, + 86, 2364, 2369, 86, 2362, 86, 2363, 86, 2373, 2366, + 2371, 86, 86, 2372, 2376, 2375, 86, 2378, 86, 86, - 2382, 86, 2377, 2378, 86, 2386, 2379, 2385, 86, 2383, - 86, 86, 86, 2387, 86, 86, 86, 2388, 2381, 2390, - 2393, 86, 86, 2395, 86, 86, 2398, 86, 2392, 86, - 86, 2394, 2389, 2399, 2391, 86, 86, 86, 86, 2402, - 2397, 2404, 2396, 2403, 86, 86, 86, 86, 86, 86, - 2408, 2407, 86, 86, 2400, 2401, 2406, 86, 86, 86, - 3136, 2411, 2412, 2405, 2414, 86, 2409, 2410, 2415, 86, - 2416, 86, 2417, 86, 2418, 86, 86, 2419, 2413, 86, - 86, 2422, 86, 2423, 2421, 86, 86, 86, 86, 2428, - 86, 86, 2430, 86, 2420, 2431, 86, 2424, 2425, 86, + 86, 2379, 86, 2381, 2382, 2377, 2383, 86, 2385, 86, + 86, 86, 86, 2387, 86, 86, 86, 86, 86, 2384, + 2386, 86, 2391, 2395, 86, 2380, 2393, 86, 2388, 2389, + 86, 2397, 2390, 2396, 86, 2394, 86, 86, 86, 2398, + 86, 86, 86, 2399, 2392, 2401, 2404, 86, 86, 2406, + 86, 86, 2409, 86, 2403, 86, 86, 2405, 2400, 2410, + 2402, 86, 86, 86, 86, 2413, 2408, 2415, 2407, 2414, + 86, 86, 86, 86, 86, 86, 2419, 2418, 86, 86, + 2411, 2412, 2417, 86, 86, 86, 3147, 2422, 2423, 2416, + 2425, 86, 2420, 2421, 2426, 86, 2427, 86, 2428, 86, - 86, 86, 86, 86, 2427, 86, 2434, 2426, 86, 86, - 2429, 2432, 86, 2433, 2435, 2440, 86, 2437, 2441, 86, - 86, 86, 86, 2436, 86, 2438, 86, 167, 2439, 86, - 2448, 86, 86, 86, 2444, 2449, 86, 86, 2446, 2447, - 2443, 86, 86, 3136, 2455, 2442, 2445, 2450, 2451, 2452, - 86, 86, 86, 2459, 86, 2457, 2456, 2458, 2453, 86, - 2454, 2460, 86, 86, 2461, 86, 2462, 86, 2463, 2464, - 2465, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 2474, 86, 86, 86, 2496, 2472, 2467, 86, 2478, - 2466, 86, 2469, 2468, 2479, 86, 2471, 2470, 2473, 86, + 2429, 86, 86, 2430, 2424, 86, 86, 2433, 86, 2434, + 2432, 86, 86, 86, 86, 2439, 86, 86, 2441, 86, + 2431, 2442, 86, 2435, 2436, 86, 86, 86, 86, 86, + 2438, 86, 2445, 2437, 86, 86, 2440, 2443, 86, 2444, + 2446, 2451, 86, 2448, 2452, 86, 86, 86, 86, 2447, + 86, 2449, 86, 167, 2450, 86, 2459, 86, 86, 86, + 2455, 2460, 86, 86, 2457, 2458, 2454, 86, 86, 3147, + 2466, 2453, 2456, 2461, 2462, 2463, 86, 86, 86, 2470, + 86, 2468, 2467, 2469, 2464, 86, 2465, 2471, 86, 86, + 2472, 86, 2473, 86, 2474, 2475, 2476, 86, 86, 86, - 2475, 2476, 2477, 86, 2480, 2482, 86, 86, 2481, 2484, - 86, 86, 2483, 86, 86, 86, 86, 86, 86, 86, - 2487, 2493, 86, 2494, 86, 2485, 2495, 86, 86, 2486, - 2488, 86, 2489, 2491, 2490, 86, 2500, 2492, 2499, 86, - 86, 86, 86, 2504, 2505, 86, 2497, 2503, 86, 86, - 2498, 2506, 2507, 86, 86, 86, 86, 86, 86, 2501, - 2502, 86, 86, 2509, 86, 86, 2513, 2508, 2511, 86, - 2518, 86, 2517, 86, 2510, 2521, 86, 2512, 2514, 86, - 2519, 2515, 86, 2522, 2516, 86, 2525, 86, 86, 2524, - 86, 2520, 86, 86, 2530, 86, 86, 2523, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 2485, 86, 86, + 86, 2507, 2483, 2478, 86, 2489, 2477, 86, 2480, 2479, + 2490, 86, 2482, 2481, 2484, 86, 2486, 2487, 2488, 86, + 2491, 2493, 86, 86, 2492, 2495, 86, 86, 2494, 86, + 86, 86, 86, 86, 86, 86, 2498, 2504, 86, 2505, + 86, 2496, 2506, 86, 86, 2497, 2499, 86, 2500, 2502, + 2501, 86, 2511, 2503, 2510, 86, 86, 86, 86, 2515, + 2516, 86, 2508, 2514, 86, 86, 2509, 2517, 2518, 86, + 86, 86, 86, 86, 86, 2512, 2513, 86, 86, 2520, + 86, 86, 2524, 2519, 2522, 86, 2529, 86, 2528, 86, - 86, 2526, 86, 2533, 86, 2527, 86, 2532, 2531, 2534, - 86, 2537, 2528, 2529, 2536, 86, 86, 86, 2539, 2535, - 2541, 86, 86, 2542, 86, 2538, 2543, 2544, 86, 2540, - 86, 86, 86, 2549, 86, 86, 86, 2545, 2551, 86, - 2547, 2548, 86, 2546, 86, 86, 86, 2552, 86, 2553, - 2550, 2555, 86, 86, 86, 2557, 2556, 86, 86, 2554, - 86, 2558, 2559, 2561, 86, 2562, 2564, 86, 2560, 2565, - 86, 2567, 2563, 2566, 167, 86, 86, 86, 2571, 3136, - 2568, 86, 86, 2573, 86, 86, 2572, 86, 2576, 86, - 2577, 86, 2575, 86, 2569, 2570, 2579, 86, 86, 2581, + 2521, 2532, 86, 2523, 2525, 86, 2530, 2526, 86, 2533, + 2527, 86, 2536, 86, 86, 2535, 86, 2531, 86, 86, + 2541, 86, 86, 2534, 86, 86, 86, 2537, 86, 2544, + 86, 2538, 86, 2543, 2542, 2545, 86, 2548, 2539, 2540, + 2547, 86, 86, 86, 2550, 2546, 2552, 86, 86, 2553, + 86, 2549, 2554, 2555, 86, 2551, 86, 86, 86, 2560, + 86, 86, 86, 2556, 2562, 86, 2558, 2559, 86, 2557, + 86, 86, 86, 2563, 86, 2564, 2561, 2566, 86, 86, + 86, 2568, 2567, 86, 86, 2565, 86, 2569, 2570, 2572, + 86, 2573, 2575, 86, 2571, 2576, 86, 2578, 2574, 2577, - 2574, 2580, 86, 86, 2582, 86, 2578, 2583, 2584, 86, - 2586, 86, 86, 86, 86, 2587, 86, 2588, 86, 86, - 86, 2593, 2589, 2585, 2594, 2595, 2591, 86, 86, 2590, - 86, 86, 86, 2597, 86, 2598, 86, 86, 86, 86, - 2592, 2600, 2601, 2596, 86, 86, 2599, 86, 2606, 86, - 86, 86, 2603, 2604, 2605, 86, 2602, 86, 2607, 2611, - 86, 86, 86, 2615, 86, 86, 86, 86, 86, 2608, - 2613, 2609, 2619, 86, 2610, 3136, 2612, 2614, 2620, 86, - 2622, 2617, 2623, 2624, 2616, 86, 86, 2618, 86, 86, - 2625, 86, 86, 2626, 86, 86, 86, 2627, 2621, 86, + 167, 86, 86, 86, 2582, 3147, 2579, 86, 86, 2584, + 86, 86, 2583, 86, 2587, 86, 2588, 86, 2586, 86, + 2580, 2581, 2590, 86, 86, 2592, 2585, 2591, 86, 86, + 2593, 86, 2589, 2594, 2595, 86, 2597, 86, 86, 86, + 86, 2598, 86, 2599, 86, 86, 86, 2604, 2600, 2596, + 2605, 2606, 2602, 86, 86, 2601, 86, 86, 86, 2608, + 86, 2609, 86, 86, 86, 86, 2603, 2611, 2612, 2607, + 86, 86, 2610, 86, 2617, 86, 86, 86, 2614, 2615, + 2616, 86, 2613, 86, 2618, 2622, 86, 86, 86, 2626, + 86, 86, 86, 86, 86, 2619, 2624, 2620, 2630, 86, - 2630, 86, 86, 2628, 86, 2633, 2635, 86, 2629, 2636, - 86, 2637, 86, 2631, 86, 86, 2632, 86, 2638, 86, - 2634, 86, 2639, 2640, 86, 86, 2642, 2644, 86, 2647, - 86, 2643, 2645, 86, 86, 2641, 2648, 86, 2649, 86, - 86, 86, 86, 2650, 86, 2646, 86, 2651, 2652, 2654, - 86, 86, 2655, 2656, 86, 2658, 86, 2657, 86, 2659, - 2662, 2653, 2660, 2663, 86, 86, 86, 86, 2665, 2664, - 86, 86, 2661, 2666, 86, 86, 2670, 2671, 86, 86, - 86, 2674, 86, 86, 2673, 86, 86, 86, 86, 2677, - 2667, 2668, 2675, 2676, 86, 2669, 86, 2679, 86, 2680, + 2621, 3147, 2623, 2625, 2631, 86, 2633, 2628, 2634, 2635, + 2627, 86, 86, 2629, 86, 86, 2636, 86, 86, 2637, + 86, 86, 86, 2638, 2632, 86, 2641, 86, 86, 2639, + 86, 2644, 2646, 86, 2640, 2647, 86, 2648, 86, 2642, + 86, 86, 2643, 86, 2649, 86, 2645, 86, 2650, 2651, + 86, 86, 2653, 2655, 86, 2658, 86, 2654, 2656, 86, + 86, 2652, 2659, 86, 2660, 86, 86, 86, 86, 2661, + 86, 2657, 86, 2662, 2663, 2665, 86, 86, 2666, 2667, + 86, 2669, 86, 2668, 86, 2670, 2673, 2664, 2671, 2674, + 86, 86, 86, 86, 2676, 2675, 86, 86, 2672, 2677, - 86, 2683, 86, 2672, 2678, 2681, 2682, 86, 2687, 86, - 86, 86, 86, 86, 86, 2689, 86, 2710, 2684, 86, - 3136, 2686, 2685, 2690, 2688, 2691, 86, 2693, 2694, 2697, - 86, 86, 2692, 2695, 86, 2696, 86, 2698, 86, 2699, - 86, 2700, 86, 2701, 86, 86, 2704, 2702, 86, 2703, - 86, 86, 86, 2709, 86, 2712, 86, 2706, 86, 2714, - 86, 86, 2716, 86, 86, 2713, 2715, 86, 86, 2711, - 2707, 2705, 2708, 2717, 86, 3136, 2718, 2719, 2721, 86, - 86, 86, 86, 2725, 2722, 86, 86, 86, 2726, 86, - 2723, 2729, 2720, 86, 86, 2728, 86, 2724, 2727, 2730, + 86, 86, 2681, 2682, 86, 86, 86, 2685, 86, 86, + 2684, 86, 86, 86, 86, 2688, 2678, 2679, 2686, 2687, + 86, 2680, 86, 2690, 86, 2691, 86, 2694, 86, 2683, + 2689, 2692, 2693, 86, 2698, 86, 86, 86, 86, 86, + 86, 2700, 86, 2721, 2695, 86, 3147, 2697, 2696, 2701, + 2699, 2702, 86, 2704, 2705, 2708, 86, 86, 2703, 2706, + 86, 2707, 86, 2709, 86, 2710, 86, 2711, 86, 2712, + 86, 86, 2715, 2713, 86, 2714, 86, 86, 86, 2720, + 86, 2723, 86, 2717, 86, 2725, 86, 86, 2727, 86, + 86, 2724, 2726, 86, 86, 2722, 2718, 2716, 2719, 2728, - 2731, 86, 2732, 86, 86, 86, 86, 2733, 86, 86, - 86, 2741, 86, 86, 2736, 86, 3136, 86, 2737, 2739, - 2744, 2734, 2735, 86, 2742, 86, 2746, 86, 2745, 2740, - 86, 2751, 86, 2738, 2743, 2748, 2747, 86, 2749, 2752, - 86, 2750, 2753, 86, 86, 86, 86, 86, 2758, 86, - 86, 2757, 86, 2754, 86, 2759, 86, 2760, 2761, 86, - 86, 86, 86, 86, 86, 2755, 2756, 2762, 2763, 2765, - 2767, 2769, 86, 86, 86, 86, 86, 2770, 86, 2766, - 2771, 2764, 2774, 2772, 86, 2773, 86, 2768, 86, 2775, - 2777, 86, 86, 86, 86, 86, 86, 2780, 86, 86, + 86, 3147, 2729, 2730, 2732, 86, 86, 86, 86, 2736, + 2733, 86, 86, 86, 2737, 86, 2734, 2740, 2731, 86, + 86, 2739, 86, 2735, 2738, 2741, 2742, 86, 2743, 86, + 86, 86, 86, 2744, 86, 86, 86, 2752, 86, 86, + 2747, 86, 3147, 86, 2748, 2750, 2755, 2745, 2746, 86, + 2753, 86, 2757, 86, 2756, 2751, 86, 2762, 86, 2749, + 2754, 2759, 2758, 86, 2760, 2763, 86, 2761, 2764, 86, + 86, 86, 86, 86, 2769, 86, 86, 2768, 86, 2765, + 86, 2770, 86, 2771, 2772, 86, 86, 86, 86, 86, + 86, 2766, 2767, 2773, 2774, 2776, 2778, 2780, 86, 86, - 86, 2778, 86, 2781, 86, 2779, 2776, 2784, 3136, 2785, - 86, 2782, 2787, 86, 86, 2783, 2789, 86, 86, 2788, - 2790, 86, 86, 2791, 2786, 2792, 86, 86, 2797, 86, - 2793, 86, 2796, 2799, 2794, 86, 86, 2801, 2795, 86, - 86, 2804, 86, 86, 2806, 86, 86, 86, 2809, 86, - 86, 2798, 2807, 2802, 2800, 2810, 86, 2812, 86, 2803, - 86, 86, 86, 2805, 86, 86, 2811, 2808, 2817, 86, - 2815, 2814, 2821, 86, 86, 86, 86, 2813, 2822, 86, - 2823, 2819, 2816, 2818, 86, 2820, 2826, 2829, 2824, 2827, - 86, 86, 86, 86, 2828, 86, 86, 2832, 86, 86, + 86, 86, 86, 2781, 86, 2777, 2782, 2775, 2785, 2783, + 86, 2784, 86, 2779, 86, 2786, 2788, 86, 86, 86, + 86, 86, 86, 2791, 86, 86, 86, 2789, 86, 2792, + 86, 2790, 2787, 2795, 3147, 2796, 86, 2793, 2798, 86, + 86, 2794, 2800, 86, 86, 2799, 2801, 86, 86, 2802, + 2797, 2803, 86, 86, 2808, 86, 2804, 86, 2807, 2810, + 2805, 86, 86, 2812, 2806, 86, 86, 2815, 86, 86, + 2817, 86, 86, 86, 2820, 86, 86, 2809, 2818, 2813, + 2811, 2821, 86, 2823, 86, 2814, 86, 86, 86, 2816, + 86, 86, 2822, 2819, 2828, 86, 2826, 2825, 2832, 86, - 86, 2831, 2835, 86, 2825, 2833, 2838, 86, 86, 86, - 86, 86, 86, 2830, 2843, 86, 86, 86, 2834, 86, - 2836, 2837, 2839, 2846, 86, 2842, 2845, 2840, 2847, 86, - 2851, 86, 86, 2849, 86, 2844, 2841, 2848, 86, 2850, - 2852, 86, 2853, 86, 86, 2855, 86, 86, 86, 2854, - 86, 86, 2860, 2861, 86, 86, 86, 2856, 2867, 86, - 2865, 86, 2866, 86, 86, 2864, 86, 86, 86, 2857, - 2858, 86, 2859, 2862, 3136, 2863, 2870, 2871, 86, 2872, - 86, 2874, 86, 86, 2875, 86, 2868, 2869, 2873, 86, - 86, 2878, 86, 2877, 2876, 86, 86, 86, 86, 86, + 86, 86, 86, 2824, 2833, 86, 2834, 2830, 2827, 2829, + 86, 2831, 2837, 2840, 2835, 2838, 86, 86, 86, 86, + 2839, 86, 86, 2843, 86, 86, 86, 2842, 2846, 86, + 2836, 2844, 2849, 86, 86, 86, 86, 86, 86, 2841, + 2854, 86, 86, 86, 2845, 86, 2847, 2848, 2850, 2857, + 86, 2853, 2856, 2851, 2858, 86, 2862, 86, 86, 2860, + 86, 2855, 2852, 2859, 86, 2861, 2863, 86, 2864, 86, + 86, 2866, 86, 86, 86, 2865, 86, 86, 2871, 2872, + 86, 86, 86, 2867, 2878, 86, 2876, 86, 2877, 86, + 86, 2875, 86, 86, 86, 2868, 2869, 86, 2870, 2873, - 2879, 86, 2882, 86, 86, 2884, 86, 86, 86, 2880, - 2883, 2885, 86, 86, 86, 86, 2881, 86, 86, 2894, - 2886, 2897, 2895, 2898, 2887, 2889, 2888, 86, 2890, 2893, - 2891, 2892, 86, 86, 86, 2896, 2901, 86, 2902, 86, - 86, 2904, 86, 2923, 2903, 86, 2900, 2905, 86, 2912, - 2906, 2907, 2899, 86, 2908, 2909, 86, 86, 2910, 2911, - 86, 86, 2913, 86, 86, 86, 86, 2919, 86, 86, - 86, 2918, 86, 86, 2914, 86, 2922, 2921, 2915, 3136, - 2916, 86, 86, 2927, 86, 2917, 2928, 86, 2924, 86, - 2926, 2929, 86, 2925, 2920, 86, 86, 2934, 2932, 2930, + 3147, 2874, 2881, 2882, 86, 2883, 86, 2885, 86, 86, + 2886, 86, 2879, 2880, 2884, 86, 86, 2889, 86, 2888, + 2887, 86, 86, 86, 86, 86, 2890, 86, 2893, 86, + 86, 2895, 86, 86, 86, 2891, 2894, 2896, 86, 86, + 86, 86, 2892, 86, 86, 2905, 2897, 2908, 2906, 2909, + 2898, 2900, 2899, 86, 2901, 2904, 2902, 2903, 86, 86, + 86, 2907, 2912, 86, 2913, 86, 86, 2915, 86, 2934, + 2914, 86, 2911, 2916, 86, 2923, 2917, 2918, 2910, 86, + 2919, 2920, 86, 86, 2921, 2922, 86, 86, 2924, 86, + 86, 86, 86, 2930, 86, 86, 86, 2929, 86, 86, - 2931, 2933, 2935, 86, 2936, 86, 86, 86, 86, 86, - 86, 2944, 2940, 2941, 2943, 86, 86, 86, 2946, 86, - 2938, 2937, 2945, 2947, 86, 86, 86, 2939, 2942, 2971, - 2948, 2949, 86, 2950, 86, 2951, 86, 2952, 86, 2953, - 86, 2954, 86, 2955, 86, 2956, 86, 86, 2958, 86, - 86, 86, 86, 86, 86, 86, 2957, 2963, 86, 2959, - 86, 86, 86, 2960, 86, 2967, 86, 2966, 2964, 2969, - 86, 86, 2961, 2962, 2965, 2968, 86, 2973, 86, 2976, - 2970, 2975, 86, 86, 86, 86, 86, 86, 2978, 2974, - 86, 86, 2972, 2982, 86, 86, 2977, 86, 2985, 86, + 2925, 86, 2933, 2932, 2926, 3147, 2927, 86, 86, 2938, + 86, 2928, 2939, 86, 2935, 86, 2937, 2940, 86, 2936, + 2931, 86, 86, 2945, 2943, 2941, 2942, 2944, 2946, 86, + 2947, 86, 86, 86, 86, 86, 86, 2955, 2951, 2952, + 2954, 86, 86, 86, 2957, 86, 2949, 2948, 2956, 2958, + 86, 86, 86, 2950, 2953, 2982, 2959, 2960, 86, 2961, + 86, 2962, 86, 2963, 86, 2964, 86, 2965, 86, 2966, + 86, 2967, 86, 86, 2969, 86, 86, 86, 86, 86, + 86, 86, 2968, 2974, 86, 2970, 86, 86, 86, 2971, + 86, 2978, 86, 2977, 2975, 2980, 86, 86, 2972, 2973, - 2983, 2987, 86, 2979, 2980, 86, 2981, 2988, 86, 2984, - 2986, 2989, 86, 86, 2991, 86, 86, 2992, 86, 86, - 86, 86, 2990, 2998, 2997, 86, 86, 3000, 86, 86, - 2994, 2996, 86, 86, 86, 2993, 86, 86, 86, 86, - 2999, 2995, 3001, 86, 86, 86, 3007, 3002, 86, 3004, - 3003, 3006, 86, 3011, 3015, 3008, 3014, 86, 3010, 3005, - 3009, 3016, 86, 86, 3013, 86, 3012, 86, 3017, 3018, - 86, 3019, 86, 86, 86, 86, 3022, 86, 86, 3023, - 3024, 3027, 3020, 86, 86, 3021, 86, 86, 86, 3032, - 86, 3030, 86, 3026, 86, 86, 3029, 3028, 3035, 86, + 2976, 2979, 86, 2984, 86, 2987, 2981, 2986, 86, 86, + 86, 86, 86, 86, 2989, 2985, 86, 86, 2983, 2993, + 86, 86, 2988, 86, 2996, 86, 2994, 2998, 86, 2990, + 2991, 86, 2992, 2999, 86, 2995, 2997, 3000, 86, 86, + 3002, 86, 86, 3003, 86, 86, 86, 86, 3001, 3009, + 3008, 86, 86, 3011, 86, 86, 3005, 3007, 86, 86, + 86, 3004, 86, 86, 86, 86, 3010, 3006, 3012, 86, + 86, 86, 3018, 3013, 86, 3015, 3014, 3017, 86, 3022, + 3026, 3019, 3025, 86, 3021, 3016, 3020, 3027, 86, 86, + 3024, 86, 3023, 86, 3028, 3029, 86, 3030, 86, 86, - 86, 86, 3025, 3038, 86, 86, 3039, 3033, 3031, 3040, - 3036, 86, 86, 3034, 3042, 3043, 86, 86, 3037, 86, - 86, 86, 3048, 86, 3047, 86, 3044, 3049, 86, 3045, - 3041, 86, 86, 86, 86, 86, 3046, 86, 3053, 86, - 3055, 86, 86, 86, 86, 86, 3050, 3052, 3060, 3061, - 86, 3051, 3054, 86, 3057, 3058, 3056, 3068, 3059, 3062, - 86, 3066, 86, 86, 86, 3063, 86, 3069, 3064, 3067, - 86, 86, 3065, 86, 86, 3070, 3071, 3074, 3072, 3075, - 86, 86, 86, 86, 3077, 86, 3076, 86, 86, 86, - 86, 3078, 3083, 3073, 86, 3080, 86, 86, 86, 86, + 86, 86, 3033, 86, 86, 3034, 3035, 3038, 3031, 86, + 86, 3032, 86, 86, 86, 3043, 86, 3041, 86, 3037, + 86, 86, 3040, 3039, 3046, 86, 86, 86, 3036, 3049, + 86, 86, 3050, 3044, 3042, 3051, 3047, 86, 86, 3045, + 3053, 3054, 86, 86, 3048, 86, 86, 86, 3059, 86, + 3058, 86, 3055, 3060, 86, 3056, 3052, 86, 86, 86, + 86, 86, 3057, 86, 3064, 86, 3066, 86, 86, 86, + 86, 86, 3061, 3063, 3071, 3072, 86, 3062, 3065, 86, + 3068, 3069, 3067, 3079, 3070, 3073, 86, 3077, 86, 86, + 86, 3074, 86, 3080, 3075, 3078, 86, 86, 3076, 86, - 3086, 3079, 3087, 86, 86, 86, 86, 86, 3081, 3082, - 3085, 3090, 86, 3084, 3088, 3091, 86, 3089, 86, 3094, - 3093, 3095, 86, 3092, 86, 3096, 86, 3098, 86, 3100, - 86, 3101, 86, 86, 86, 3105, 86, 3102, 3136, 86, - 3103, 3108, 86, 3099, 3106, 86, 86, 3107, 3097, 86, - 86, 86, 86, 3104, 86, 86, 3109, 3110, 86, 3112, - 3114, 86, 86, 3116, 86, 3111, 86, 3117, 86, 3120, - 3113, 3115, 3121, 86, 3118, 86, 86, 3124, 3125, 86, - 86, 3127, 86, 3119, 86, 3122, 86, 3126, 3128, 86, - 86, 3129, 86, 86, 3123, 3130, 3136, 3131, 3134, 86, + 86, 3081, 3082, 3085, 3083, 3086, 86, 86, 86, 86, + 3088, 86, 3087, 86, 86, 86, 86, 3089, 3094, 3084, + 86, 3091, 86, 86, 86, 86, 3097, 3090, 3098, 86, + 86, 86, 86, 86, 3092, 3093, 3096, 3101, 86, 3095, + 3099, 3102, 86, 3100, 86, 3105, 3104, 3106, 86, 3103, + 86, 3107, 86, 3109, 86, 3111, 86, 3112, 86, 86, + 86, 3116, 86, 3113, 3147, 86, 3114, 3119, 86, 3110, + 3117, 86, 86, 3118, 3108, 86, 86, 86, 86, 3115, + 86, 86, 3120, 3121, 86, 3123, 3125, 86, 86, 3127, + 86, 3122, 86, 3128, 86, 3131, 3124, 3126, 3132, 86, - 3135, 86, 3136, 3136, 3136, 3132, 3136, 3136, 3136, 3136, - 3136, 3136, 3133, 47, 47, 47, 47, 47, 47, 47, - 52, 52, 52, 52, 52, 52, 52, 57, 57, 57, - 57, 57, 57, 57, 63, 63, 63, 63, 63, 63, - 63, 68, 68, 68, 68, 68, 68, 68, 74, 74, - 74, 74, 74, 74, 74, 80, 80, 80, 80, 80, - 80, 80, 89, 89, 3136, 89, 89, 89, 89, 157, - 157, 3136, 3136, 3136, 157, 157, 159, 159, 3136, 3136, - 159, 3136, 159, 161, 3136, 3136, 3136, 3136, 3136, 161, - 164, 164, 3136, 3136, 3136, 164, 164, 166, 3136, 3136, + 3129, 86, 86, 3135, 3136, 86, 86, 3138, 86, 3130, + 86, 3133, 86, 3137, 3139, 86, 86, 3140, 86, 86, + 3134, 3141, 3147, 3142, 3145, 86, 3146, 86, 3147, 3147, + 3147, 3143, 3147, 3147, 3147, 3147, 3147, 3147, 3144, 47, + 47, 47, 47, 47, 47, 47, 52, 52, 52, 52, + 52, 52, 52, 57, 57, 57, 57, 57, 57, 57, + 63, 63, 63, 63, 63, 63, 63, 68, 68, 68, + 68, 68, 68, 68, 74, 74, 74, 74, 74, 74, + 74, 80, 80, 80, 80, 80, 80, 80, 89, 89, + 3147, 89, 89, 89, 89, 157, 157, 3147, 3147, 3147, + + 157, 157, 159, 159, 3147, 3147, 159, 3147, 159, 161, + 3147, 3147, 3147, 3147, 3147, 161, 164, 164, 3147, 3147, + 3147, 164, 164, 166, 3147, 3147, 3147, 3147, 3147, 166, + 168, 168, 3147, 168, 168, 168, 168, 171, 3147, 3147, + 3147, 3147, 3147, 171, 174, 174, 3147, 3147, 3147, 174, + 174, 90, 90, 3147, 90, 90, 90, 90, 17, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147 - 3136, 3136, 3136, 166, 168, 168, 3136, 168, 168, 168, - 168, 171, 3136, 3136, 3136, 3136, 3136, 171, 174, 174, - 3136, 3136, 3136, 174, 174, 90, 90, 3136, 90, 90, - 90, 90, 17, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136 } ; -static const flex_int16_t yy_chk[6174] = +static const flex_int16_t yy_chk[6200] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -2147,7 +2153,7 @@ static const flex_int16_t yy_chk[6174] = 5, 3, 6, 24, 4, 24, 24, 5, 24, 6, 7, 7, 7, 7, 24, 7, 8, 8, 8, 8, 33, 8, 7, 9, 9, 9, 26, 26, 8, 10, - 10, 10, 19, 29, 9, 33, 19, 29, 3144, 35, + 10, 10, 19, 29, 9, 33, 19, 29, 3155, 35, 10, 11, 11, 11, 11, 11, 11, 13, 13, 13, 13, 34, 13, 11, 35, 99, 34, 29, 38, 13, @@ -2159,7 +2165,7 @@ static const flex_int16_t yy_chk[6174] = 43, 43, 40, 43, 25, 28, 31, 87, 30, 32, 28, 87, 43, 32, 28, 94, 32, 28, 43, 28, 28, 56, 94, 32, 56, 32, 36, 36, 37, 37, - 28, 45, 45, 37, 2566, 36, 45, 39, 41, 41, + 28, 45, 45, 37, 2577, 36, 45, 39, 41, 41, 45, 36, 39, 41, 124, 36, 39, 67, 67, 37, 73, 124, 39, 41, 41, 39, 41, 44, 42, 84, @@ -2183,7 +2189,7 @@ static const flex_int16_t yy_chk[6174] = 136, 140, 147, 141, 138, 144, 149, 151, 144, 145, 152, 146, 150, 148, 150, 152, 153, 156, 154, 151, - 155, 147, 149, 150, 1041, 155, 158, 158, 153, 160, + 155, 147, 149, 150, 1044, 155, 158, 158, 153, 160, 182, 156, 160, 165, 165, 150, 154, 162, 182, 162, 162, 167, 162, 167, 167, 168, 167, 168, 168, 170, 168, 172, 170, 172, 172, 176, 172, 168, 175, 175, @@ -2235,8 +2241,8 @@ static const flex_int16_t yy_chk[6174] = 359, 362, 360, 361, 361, 366, 362, 365, 367, 363, 368, 357, 363, 369, 357, 372, 357, 371, 363, 375, 371, 378, 363, 367, 374, 368, 366, 369, 375, 372, - 363, 364, 364, 380, 364, 376, 371, 377, 667, 374, - 376, 376, 378, 377, 379, 382, 384, 364, 380, 667, + 363, 364, 364, 380, 364, 376, 371, 377, 668, 374, + 376, 376, 378, 377, 379, 382, 384, 364, 380, 668, 364, 381, 364, 383, 364, 373, 385, 373, 373, 383, 381, 386, 388, 379, 382, 391, 389, 373, 390, 373, @@ -2244,580 +2250,583 @@ static const flex_int16_t yy_chk[6174] = 391, 394, 392, 387, 396, 388, 389, 394, 390, 395, 395, 397, 398, 393, 399, 400, 401, 402, 403, 403, 399, 403, 402, 397, 396, 404, 398, 405, 406, 408, - 481, 408, 401, 407, 409, 410, 409, 411, 413, 410, - 400, 411, 415, 405, 406, 404, 414, 407, 412, 412, - 416, 417, 481, 418, 409, 419, 411, 413, 415, 421, - 422, 414, 418, 421, 419, 417, 420, 424, 416, 422, + 159, 408, 401, 407, 409, 410, 409, 409, 411, 410, + 400, 413, 411, 405, 406, 404, 414, 407, 412, 412, + 415, 416, 424, 417, 409, 418, 419, 411, 420, 429, + 413, 414, 422, 420, 418, 419, 415, 417, 421, 416, - 423, 420, 425, 418, 429, 418, 423, 426, 425, 427, - 428, 426, 427, 430, 430, 428, 431, 433, 424, 432, - 432, 434, 433, 438, 429, 435, 435, 436, 437, 431, - 439, 440, 437, 436, 434, 441, 440, 443, 438, 444, - 441, 442, 442, 445, 446, 447, 449, 451, 447, 443, - 442, 439, 451, 448, 450, 450, 446, 448, 449, 444, - 452, 445, 453, 453, 456, 456, 457, 458, 459, 460, - 461, 464, 463, 466, 465, 458, 467, 459, 468, 466, - 470, 452, 461, 472, 468, 467, 472, 457, 465, 460, - 463, 464, 463, 469, 470, 471, 473, 474, 469, 475, + 423, 422, 421, 424, 425, 418, 423, 418, 426, 429, + 425, 427, 426, 428, 427, 430, 430, 431, 428, 432, + 432, 433, 434, 435, 435, 436, 433, 438, 437, 439, + 431, 436, 437, 440, 441, 434, 442, 442, 440, 441, + 443, 444, 438, 446, 445, 442, 447, 448, 449, 447, + 439, 448, 443, 450, 450, 446, 452, 457, 451, 461, + 449, 444, 445, 451, 453, 453, 456, 456, 458, 460, + 459, 461, 463, 464, 465, 466, 458, 452, 457, 459, + 468, 466, 467, 470, 476, 157, 468, 471, 465, 460, + 463, 467, 463, 464, 469, 471, 473, 470, 471, 469, - 476, 477, 478, 471, 477, 475, 471, 479, 478, 480, - 473, 482, 474, 483, 480, 485, 488, 483, 484, 486, - 476, 479, 487, 484, 486, 492, 478, 489, 493, 494, - 485, 495, 482, 494, 505, 488, 496, 505, 487, 499, - 489, 490, 490, 493, 497, 492, 500, 490, 497, 490, - 495, 500, 496, 498, 499, 490, 501, 490, 498, 502, - 490, 490, 498, 503, 504, 506, 507, 490, 502, 503, - 508, 508, 501, 509, 503, 501, 510, 510, 511, 512, - 504, 513, 514, 515, 516, 517, 507, 518, 506, 516, - 522, 512, 519, 511, 517, 526, 513, 520, 509, 522, + 472, 474, 475, 472, 476, 478, 477, 479, 475, 477, + 473, 478, 480, 481, 483, 482, 474, 480, 483, 484, + 486, 479, 485, 487, 484, 486, 488, 489, 492, 478, + 505, 495, 728, 505, 493, 481, 482, 485, 494, 487, + 489, 496, 494, 728, 499, 488, 490, 490, 492, 493, + 495, 497, 490, 504, 490, 497, 500, 496, 498, 499, + 490, 500, 490, 498, 501, 490, 490, 498, 502, 504, + 503, 506, 490, 507, 508, 508, 503, 502, 509, 512, + 501, 503, 511, 501, 510, 510, 513, 514, 515, 517, + 516, 512, 518, 507, 506, 516, 520, 511, 517, 519, - 523, 514, 524, 520, 523, 515, 518, 519, 524, 525, - 526, 527, 528, 529, 530, 531, 532, 534, 533, 531, - 533, 525, 535, 535, 537, 534, 528, 536, 529, 532, - 527, 538, 530, 536, 539, 540, 537, 538, 540, 541, - 542, 544, 543, 545, 544, 546, 539, 543, 549, 549, - 548, 547, 545, 541, 551, 542, 547, 547, 556, 545, - 551, 546, 545, 548, 550, 550, 552, 552, 553, 553, - 554, 557, 555, 559, 557, 558, 554, 555, 555, 556, - 558, 560, 561, 562, 563, 561, 564, 565, 562, 560, - 566, 565, 559, 567, 568, 569, 566, 567, 570, 572, + 522, 513, 520, 509, 523, 525, 514, 524, 523, 522, + 515, 518, 526, 524, 519, 527, 528, 525, 529, 530, + 531, 533, 532, 533, 531, 535, 535, 526, 534, 537, + 528, 539, 536, 529, 527, 532, 534, 530, 536, 538, + 541, 537, 542, 539, 540, 538, 543, 540, 546, 544, + 545, 543, 544, 558, 541, 547, 558, 542, 548, 545, + 547, 547, 549, 549, 546, 556, 545, 550, 550, 545, + 551, 548, 552, 552, 553, 553, 551, 554, 557, 555, + 560, 561, 559, 554, 555, 555, 556, 559, 562, 561, + 557, 562, 563, 564, 565, 567, 566, 563, 568, 560, - 569, 573, 571, 575, 572, 564, 577, 563, 571, 576, - 576, 574, 568, 578, 574, 573, 581, 579, 570, 574, - 580, 575, 579, 574, 577, 580, 582, 584, 585, 578, - 581, 586, 587, 584, 586, 588, 587, 585, 590, 589, - 588, 582, 589, 590, 591, 592, 593, 595, 594, 596, - 597, 597, 595, 593, 599, 598, 600, 601, 587, 602, - 591, 594, 603, 592, 598, 159, 601, 609, 603, 596, - 604, 602, 600, 599, 605, 610, 604, 605, 606, 606, - 607, 606, 608, 607, 611, 609, 612, 608, 613, 610, - 611, 612, 614, 615, 613, 614, 616, 617, 615, 618, + 566, 567, 568, 569, 570, 571, 572, 595, 574, 570, + 573, 575, 572, 565, 575, 573, 564, 576, 578, 575, + 595, 569, 574, 575, 579, 571, 577, 577, 580, 581, + 582, 583, 585, 580, 581, 576, 578, 588, 585, 586, + 579, 588, 587, 592, 582, 587, 583, 589, 586, 591, + 590, 593, 589, 590, 591, 594, 596, 597, 599, 592, + 600, 596, 594, 588, 598, 598, 601, 599, 604, 593, + 605, 602, 603, 610, 604, 606, 605, 597, 606, 600, + 602, 611, 601, 85, 603, 607, 607, 608, 607, 609, + 608, 610, 612, 614, 609, 611, 613, 615, 612, 614, - 619, 616, 616, 620, 621, 619, 622, 624, 623, 620, - 617, 626, 618, 623, 629, 622, 625, 625, 626, 619, - 619, 627, 628, 621, 627, 630, 629, 624, 628, 631, - 630, 632, 632, 633, 631, 631, 634, 635, 634, 627, - 636, 637, 636, 638, 639, 640, 641, 642, 643, 647, - 645, 644, 643, 642, 646, 648, 635, 650, 633, 637, - 644, 638, 639, 649, 640, 645, 641, 647, 652, 646, - 651, 653, 650, 654, 648, 649, 651, 655, 658, 657, - 656, 659, 652, 653, 656, 660, 661, 663, 662, 664, - 664, 665, 654, 662, 658, 665, 655, 657, 666, 659, + 615, 613, 616, 617, 618, 619, 620, 616, 617, 617, + 621, 620, 622, 623, 624, 625, 621, 618, 619, 624, + 626, 626, 623, 627, 628, 620, 620, 628, 629, 630, + 627, 622, 631, 632, 629, 625, 634, 631, 632, 632, + 636, 630, 628, 633, 633, 635, 637, 635, 637, 638, + 639, 640, 641, 642, 643, 645, 648, 646, 644, 636, + 643, 634, 644, 647, 645, 649, 651, 638, 639, 640, + 650, 641, 646, 642, 648, 653, 654, 652, 647, 655, + 656, 651, 650, 652, 649, 658, 657, 660, 654, 653, + 657, 659, 661, 662, 664, 663, 665, 665, 655, 656, - 668, 663, 669, 660, 660, 661, 670, 669, 671, 673, - 672, 678, 675, 674, 668, 676, 673, 666, 674, 675, - 676, 677, 670, 672, 679, 680, 677, 671, 681, 678, - 682, 679, 683, 684, 680, 687, 689, 685, 684, 682, - 685, 686, 681, 688, 683, 686, 690, 691, 697, 687, - 695, 689, 688, 692, 692, 693, 693, 694, 694, 695, - 690, 699, 700, 698, 693, 701, 700, 697, 691, 698, - 702, 703, 704, 706, 705, 707, 708, 701, 704, 709, - 706, 699, 705, 712, 719, 718, 715, 724, 724, 703, - 719, 721, 722, 707, 718, 702, 723, 721, 712, 709, + 663, 667, 666, 658, 669, 660, 666, 659, 664, 670, + 661, 661, 662, 671, 670, 672, 674, 673, 669, 675, + 667, 676, 677, 674, 675, 679, 678, 677, 676, 671, + 673, 678, 680, 681, 672, 682, 683, 686, 684, 680, + 686, 685, 681, 679, 687, 683, 685, 688, 687, 682, + 684, 689, 690, 692, 691, 693, 693, 694, 694, 698, + 689, 688, 695, 695, 696, 699, 694, 690, 691, 700, + 702, 699, 701, 696, 692, 703, 701, 704, 698, 705, + 706, 708, 702, 707, 709, 705, 710, 713, 706, 700, + 707, 716, 719, 726, 726, 704, 723, 720, 722, 708, - 723, 708, 710, 715, 710, 725, 725, 710, 722, 726, - 727, 710, 728, 729, 710, 735, 733, 730, 739, 739, - 726, 710, 710, 730, 710, 732, 728, 734, 727, 736, - 732, 157, 736, 729, 731, 731, 731, 733, 731, 740, - 735, 731, 737, 738, 742, 734, 731, 737, 737, 742, - 738, 748, 731, 731, 740, 741, 741, 743, 744, 747, - 743, 745, 745, 744, 746, 749, 746, 750, 752, 749, - 748, 747, 751, 753, 753, 754, 752, 757, 755, 756, - 756, 758, 759, 760, 762, 762, 85, 750, 781, 760, - 754, 751, 755, 758, 761, 757, 763, 781, 765, 761, + 703, 719, 713, 720, 722, 723, 710, 724, 716, 709, + 711, 730, 711, 725, 735, 711, 729, 725, 731, 711, + 727, 727, 711, 724, 736, 730, 734, 732, 737, 711, + 711, 734, 711, 732, 729, 735, 741, 741, 731, 733, + 733, 733, 736, 733, 738, 740, 733, 738, 742, 739, + 80, 733, 740, 737, 739, 739, 744, 733, 733, 743, + 743, 744, 745, 742, 746, 745, 747, 747, 748, 746, + 748, 749, 750, 751, 752, 756, 753, 751, 754, 755, + 755, 759, 757, 749, 758, 758, 754, 761, 760, 75, + 756, 750, 762, 781, 752, 753, 757, 763, 762, 759, - 766, 763, 763, 765, 759, 767, 766, 768, 769, 771, - 770, 767, 768, 770, 769, 771, 772, 773, 773, 774, - 774, 775, 776, 777, 772, 778, 779, 782, 777, 775, - 780, 780, 778, 783, 784, 782, 788, 786, 787, 783, - 776, 790, 794, 789, 793, 779, 786, 787, 789, 791, - 790, 792, 791, 784, 795, 796, 792, 799, 793, 797, - 788, 798, 798, 795, 797, 797, 800, 794, 796, 801, - 802, 803, 799, 805, 803, 805, 806, 806, 801, 807, - 809, 808, 803, 810, 811, 800, 808, 812, 813, 814, - 815, 816, 817, 818, 802, 816, 819, 820, 814, 821, + 760, 765, 763, 764, 764, 767, 765, 765, 768, 761, + 767, 769, 781, 770, 768, 771, 772, 769, 770, 772, + 773, 771, 774, 775, 775, 777, 773, 776, 776, 778, + 774, 779, 780, 777, 782, 782, 779, 783, 785, 780, + 784, 786, 788, 789, 785, 790, 783, 778, 784, 791, + 792, 788, 789, 793, 791, 796, 793, 794, 795, 792, + 786, 797, 794, 798, 800, 800, 801, 802, 799, 790, + 797, 804, 795, 799, 799, 803, 798, 808, 808, 805, + 796, 801, 805, 807, 803, 807, 802, 809, 810, 811, + 805, 812, 813, 810, 814, 804, 816, 815, 817, 818, - 807, 809, 819, 810, 811, 822, 820, 823, 813, 812, - 817, 821, 818, 815, 824, 825, 828, 826, 827, 827, - 824, 823, 826, 829, 822, 830, 831, 832, 833, 825, - 834, 835, 829, 836, 831, 837, 828, 839, 838, 836, - 840, 837, 841, 839, 844, 830, 80, 832, 841, 834, - 833, 835, 838, 842, 843, 845, 846, 847, 843, 842, - 840, 846, 849, 844, 848, 848, 850, 845, 849, 850, - 851, 852, 854, 853, 859, 845, 855, 855, 847, 853, - 856, 857, 862, 860, 852, 858, 857, 860, 851, 859, - 858, 858, 854, 861, 861, 863, 864, 865, 856, 867, + 819, 820, 823, 818, 824, 816, 822, 821, 809, 830, + 811, 812, 813, 821, 823, 822, 814, 815, 819, 825, + 820, 817, 826, 824, 827, 828, 829, 829, 826, 830, + 828, 831, 832, 825, 833, 834, 835, 836, 827, 837, + 831, 838, 833, 839, 841, 842, 840, 838, 843, 839, + 841, 844, 832, 846, 843, 834, 836, 844, 835, 837, + 840, 847, 845, 848, 849, 842, 845, 854, 848, 850, + 850, 851, 846, 847, 853, 852, 855, 851, 852, 856, + 854, 847, 855, 857, 857, 849, 858, 861, 859, 860, + 863, 863, 853, 859, 860, 860, 862, 864, 865, 856, - 868, 864, 870, 871, 862, 873, 873, 874, 876, 876, - 877, 874, 875, 878, 868, 863, 865, 878, 879, 889, - 898, 898, 870, 867, 871, 872, 880, 875, 872, 882, - 872, 889, 881, 879, 872, 877, 872, 881, 884, 883, - 880, 872, 885, 882, 883, 883, 872, 884, 886, 890, - 887, 892, 886, 888, 890, 891, 885, 893, 888, 902, - 895, 894, 901, 75, 886, 887, 895, 896, 888, 891, - 894, 893, 892, 896, 897, 903, 899, 900, 902, 905, - 897, 899, 906, 900, 901, 907, 908, 906, 909, 909, - 913, 905, 910, 903, 904, 904, 911, 910, 908, 907, + 862, 866, 861, 867, 858, 869, 866, 870, 872, 873, + 875, 875, 876, 878, 878, 74, 876, 877, 865, 864, + 879, 870, 867, 880, 881, 901, 901, 880, 872, 869, + 873, 874, 877, 883, 874, 882, 874, 884, 883, 881, + 874, 886, 874, 887, 891, 879, 889, 874, 885, 882, + 886, 884, 874, 885, 885, 888, 891, 887, 890, 888, + 892, 889, 893, 890, 894, 892, 895, 898, 896, 897, + 904, 888, 898, 890, 902, 897, 893, 896, 899, 902, + 895, 900, 903, 905, 899, 894, 906, 900, 903, 908, + 909, 911, 904, 910, 913, 909, 912, 912, 915, 913, - 904, 912, 904, 914, 911, 915, 915, 916, 904, 913, - 917, 916, 919, 904, 904, 912, 920, 921, 919, 920, - 904, 922, 914, 923, 925, 934, 924, 932, 927, 923, - 917, 924, 928, 929, 922, 933, 921, 927, 930, 931, - 933, 928, 935, 925, 930, 934, 932, 936, 931, 929, - 937, 938, 939, 940, 941, 946, 935, 942, 944, 940, - 938, 939, 937, 942, 947, 949, 948, 936, 950, 946, - 952, 941, 951, 953, 944, 952, 956, 960, 953, 949, - 957, 956, 958, 958, 947, 948, 950, 951, 959, 957, - 960, 962, 963, 967, 959, 964, 964, 963, 963, 964, + 914, 908, 905, 911, 906, 907, 907, 910, 914, 916, + 917, 907, 915, 907, 918, 918, 919, 920, 68, 907, + 919, 922, 924, 923, 907, 907, 923, 922, 916, 917, + 925, 907, 926, 928, 927, 930, 931, 920, 926, 927, + 932, 924, 933, 925, 930, 931, 934, 935, 933, 936, + 937, 938, 928, 939, 936, 934, 932, 940, 941, 942, + 947, 944, 950, 953, 951, 938, 935, 941, 942, 940, + 937, 943, 949, 939, 945, 952, 947, 943, 944, 954, + 945, 953, 950, 951, 63, 955, 949, 956, 959, 952, + 955, 960, 956, 959, 954, 961, 961, 962, 963, 965, - 965, 966, 968, 965, 969, 971, 970, 962, 972, 973, - 974, 975, 976, 967, 972, 966, 974, 976, 968, 970, - 971, 977, 969, 980, 979, 981, 975, 979, 982, 973, - 981, 983, 984, 982, 985, 977, 986, 984, 989, 985, - 988, 992, 992, 990, 980, 991, 988, 983, 986, 990, - 993, 991, 994, 995, 989, 997, 995, 996, 996, 993, - 998, 999, 1000, 1001, 1004, 1000, 1002, 1009, 1003, 1004, - 994, 1010, 1002, 997, 1003, 1005, 1001, 1006, 1007, 998, - 1005, 999, 1006, 1011, 1007, 1009, 1014, 1012, 1015, 1011, - 1016, 1010, 1012, 1013, 1013, 1014, 1017, 1015, 1018, 1019, + 960, 966, 969, 962, 967, 967, 966, 966, 967, 968, + 970, 963, 968, 971, 972, 965, 969, 975, 973, 974, + 976, 977, 978, 975, 980, 983, 58, 977, 979, 971, + 970, 973, 972, 979, 974, 986, 982, 978, 980, 982, + 976, 989, 984, 985, 987, 988, 983, 984, 985, 987, + 988, 986, 991, 989, 992, 993, 994, 996, 991, 995, + 995, 993, 994, 997, 998, 1000, 996, 998, 999, 999, + 992, 1001, 1002, 1003, 1004, 1007, 1003, 1008, 1005, 1006, + 1007, 997, 1008, 1000, 1005, 1006, 1009, 1004, 1010, 1012, + 1001, 1009, 1002, 1013, 1010, 1014, 1017, 1015, 1016, 1016, - 1020, 1018, 1019, 1021, 1022, 1023, 1024, 1025, 1016, 1027, - 1026, 1020, 1024, 1025, 1027, 1017, 1022, 1028, 1028, 1029, - 1030, 1021, 1032, 1031, 1023, 1026, 1032, 1033, 1034, 1035, - 1036, 1038, 1039, 1039, 1030, 1031, 1040, 1034, 1029, 1042, - 1044, 1045, 1043, 1047, 1047, 1033, 1045, 1048, 1035, 1046, - 1038, 74, 1044, 1042, 1049, 1036, 1040, 1043, 1046, 1050, - 1049, 1051, 1052, 1053, 1052, 1050, 1051, 1048, 1053, 1054, - 1055, 1056, 1057, 1058, 1059, 1060, 1056, 1061, 1063, 1063, - 1064, 1059, 1065, 1054, 1055, 1067, 1066, 1057, 1068, 68, - 1060, 1067, 1058, 1069, 1064, 1071, 1061, 1075, 1069, 1071, + 1018, 1014, 1015, 1019, 1020, 1017, 1023, 1012, 1021, 1018, + 1024, 1021, 1022, 1013, 1025, 1022, 1026, 1023, 1027, 1028, + 1032, 1019, 1029, 1020, 1027, 1028, 1025, 1030, 1024, 1031, + 1031, 1033, 1030, 1036, 1034, 1026, 1035, 1029, 1037, 1032, + 1035, 1038, 1039, 1041, 1043, 1033, 1034, 1037, 1042, 1042, + 1046, 1036, 1045, 1048, 1049, 1051, 1047, 1055, 1048, 1055, + 1038, 57, 1041, 1049, 1043, 1046, 1045, 1039, 1047, 1050, + 1050, 1052, 1053, 1057, 1054, 1051, 1056, 1052, 1053, 1054, + 1058, 1056, 1060, 1059, 1061, 1062, 1063, 1057, 1059, 1064, + 1066, 1066, 1062, 1067, 1058, 1068, 1069, 1060, 1070, 1071, - 1065, 1066, 1072, 1072, 1075, 1073, 1076, 1069, 1068, 1069, - 1073, 1078, 1069, 1074, 1074, 1077, 1079, 1080, 1077, 1081, - 1076, 1082, 1084, 1083, 1081, 1085, 1080, 1084, 1086, 1091, - 1078, 1088, 1088, 1089, 1079, 1083, 1085, 1090, 1089, 1092, - 1082, 1093, 1090, 1094, 1092, 1093, 1095, 1086, 1096, 1091, - 1097, 1099, 1094, 1098, 1102, 1100, 1101, 1103, 1104, 1106, - 1107, 1095, 1100, 1096, 1105, 1098, 1099, 1108, 1101, 1097, - 1105, 1111, 1109, 1102, 1106, 1112, 1104, 1111, 1103, 1113, - 1107, 1109, 1115, 1114, 1116, 1117, 1119, 1108, 1121, 1116, - 1112, 1114, 1120, 1113, 1118, 1122, 1122, 1117, 1124, 1118, + 1076, 1063, 1074, 1061, 1070, 1076, 1074, 1067, 1064, 1072, + 1079, 1069, 1081, 1068, 1072, 1075, 1075, 1077, 1077, 1071, + 1078, 1082, 1086, 1072, 1079, 1072, 1080, 1078, 1072, 1080, + 1084, 1081, 1083, 1085, 1086, 1084, 1088, 1087, 1089, 1082, + 1090, 1083, 1087, 1092, 1092, 1095, 1093, 1098, 1094, 1089, + 1088, 1093, 1085, 1094, 1097, 1096, 1098, 1099, 1097, 1090, + 1096, 1100, 1101, 1102, 1103, 1095, 1104, 1106, 1105, 1107, + 1108, 1109, 1099, 1104, 1110, 1102, 1100, 1109, 1111, 1103, + 1105, 1101, 1112, 1113, 1116, 1115, 1106, 1117, 1108, 1110, + 1107, 1115, 1113, 1119, 1121, 1118, 1123, 1124, 1111, 1116, - 1118, 1121, 1115, 1126, 1125, 1119, 1120, 1123, 1179, 1126, - 1179, 1124, 1123, 1125, 1128, 1123, 1123, 1127, 1127, 1128, - 1123, 1130, 1129, 1131, 1132, 1134, 1123, 1130, 1131, 1132, - 1123, 1129, 1133, 1133, 1135, 1135, 1136, 1137, 1138, 1136, - 1139, 1136, 1140, 1141, 1142, 1143, 1134, 1144, 1141, 1139, - 1146, 1149, 1149, 1144, 1145, 1146, 1138, 1137, 1142, 1148, - 1145, 1147, 1140, 1143, 1155, 1147, 1150, 1150, 1148, 1150, - 1151, 1154, 1153, 1148, 1156, 1148, 1153, 1148, 1158, 1148, - 1159, 1151, 1155, 1156, 1157, 1161, 1154, 1158, 1160, 1157, - 1157, 1162, 1163, 1160, 1164, 1165, 1169, 1166, 1168, 1161, + 1120, 1117, 1112, 1118, 1122, 1120, 1121, 1125, 1146, 1122, + 1122, 1124, 1128, 1119, 1129, 1123, 1126, 1126, 1130, 52, + 1125, 1127, 1146, 1129, 1130, 1128, 1127, 1131, 1131, 1127, + 1127, 1132, 1133, 1134, 1127, 1138, 1132, 1135, 1136, 1134, + 1127, 1133, 1135, 1136, 1127, 1137, 1137, 1139, 1139, 1140, + 1141, 1142, 1140, 1143, 1140, 1144, 1138, 1217, 1145, 1147, + 1148, 1149, 1143, 1145, 1217, 1152, 1148, 1149, 1150, 1142, + 1141, 1155, 1151, 1150, 1152, 1144, 1151, 1147, 1158, 1152, + 1157, 1152, 1155, 1152, 1157, 1152, 1153, 1153, 1154, 1154, + 1159, 1154, 1160, 1158, 1161, 1162, 1163, 1164, 1165, 1161, - 1162, 1171, 1159, 1166, 1167, 1167, 1168, 1170, 1172, 1165, - 1169, 1163, 1170, 1164, 1173, 1171, 1174, 1172, 1175, 1176, - 1176, 1177, 1182, 1175, 1178, 1178, 1181, 1182, 1183, 1181, - 1184, 1186, 1173, 1185, 1185, 1189, 1177, 1187, 1187, 1184, - 1189, 1174, 1188, 1188, 1190, 1191, 1199, 1183, 1192, 1192, - 1193, 1186, 1194, 1195, 1196, 1194, 1203, 1202, 1197, 1196, - 1198, 1203, 1198, 1204, 1199, 1190, 1191, 1197, 1201, 1205, - 1193, 1201, 1202, 1195, 1205, 1206, 1207, 1204, 1211, 1208, - 1214, 1207, 1210, 1206, 1208, 1209, 1209, 1210, 1212, 1216, - 1213, 1224, 1217, 1214, 1212, 1216, 1211, 1213, 1217, 1218, + 1161, 1160, 1164, 1167, 1162, 1166, 1168, 1169, 1159, 1170, + 1171, 1171, 1165, 1173, 1166, 1170, 1172, 1175, 1163, 1177, + 1176, 1169, 1167, 1174, 1172, 1168, 1178, 1173, 1174, 1176, + 1179, 1175, 1180, 1180, 1181, 1179, 1187, 1177, 1182, 1182, + 1183, 1185, 1183, 1186, 1185, 1188, 1189, 1189, 1186, 1181, + 1190, 1178, 1191, 1191, 1188, 1187, 1192, 1192, 1193, 1194, + 1195, 1196, 1196, 1193, 1197, 1198, 1199, 1200, 1198, 1201, + 1190, 1202, 1200, 1202, 1203, 1206, 1205, 1207, 1201, 1205, + 1194, 1195, 1207, 1208, 1197, 1215, 1199, 1210, 1209, 1211, + 1206, 1212, 1203, 1209, 1211, 1210, 1212, 1208, 1213, 1213, - 1219, 1220, 1221, 1222, 1218, 1226, 1219, 1223, 1223, 1227, - 1220, 1224, 1228, 1229, 1222, 1236, 1230, 1231, 1233, 1229, - 1226, 1221, 1230, 1231, 1233, 1234, 1235, 1236, 1237, 1227, - 1238, 1239, 1239, 1240, 1241, 1228, 1242, 1245, 1243, 1234, - 1244, 1244, 1237, 1243, 1246, 1234, 1235, 1248, 1238, 1246, - 1249, 1250, 1251, 1240, 1242, 1249, 1249, 1252, 1253, 1241, - 1245, 1251, 1254, 1255, 1263, 1252, 1248, 63, 1256, 1250, - 1257, 1259, 1253, 1256, 1265, 1263, 1256, 1254, 1255, 1257, - 1258, 1255, 1258, 1261, 1262, 1259, 1264, 1266, 1262, 1261, - 1267, 1264, 1264, 1265, 1268, 1269, 1270, 1271, 1272, 1268, + 1214, 1216, 1218, 1215, 1220, 1214, 1221, 1216, 1222, 1224, + 1220, 1223, 1221, 1222, 1225, 1218, 1226, 1223, 1224, 1227, + 1227, 1228, 1230, 1231, 1232, 1233, 1234, 1226, 1235, 1237, + 1238, 1233, 1234, 1225, 1235, 1237, 1239, 1230, 1241, 1240, + 1242, 1228, 1244, 1231, 1238, 1243, 1243, 1232, 1245, 1246, + 1238, 1240, 1241, 1249, 1247, 1252, 1239, 1254, 1242, 1247, + 1248, 1248, 1244, 1250, 1253, 1257, 1258, 1246, 1250, 1253, + 1253, 1255, 1259, 1245, 1252, 1254, 1249, 1256, 1260, 1257, + 1255, 1258, 1261, 1260, 1263, 1256, 1260, 1259, 1267, 1265, + 1259, 1261, 1262, 1266, 1262, 1265, 1268, 1266, 1263, 1267, - 1269, 1274, 1271, 1275, 1276, 1277, 1277, 1278, 1267, 1279, - 1280, 1278, 1282, 1266, 1270, 1274, 1283, 1281, 1272, 1284, - 1287, 1275, 1276, 1281, 1282, 1285, 1286, 1279, 1291, 1280, - 1289, 1288, 1294, 1284, 1296, 1283, 1288, 1289, 1290, 1287, - 1285, 1286, 1292, 1290, 1293, 1293, 1291, 1294, 1295, 1297, - 1296, 1292, 1298, 1299, 1295, 1300, 1305, 1298, 1307, 1299, - 1305, 1300, 1301, 1301, 1302, 1302, 1304, 1304, 1306, 1308, - 1297, 1309, 1310, 1311, 1311, 1312, 1307, 1306, 1315, 1310, - 1313, 1316, 1314, 1308, 1317, 1319, 1309, 1314, 1313, 1317, - 1317, 1318, 1315, 1320, 1320, 1312, 1318, 1318, 1321, 1322, + 1269, 1268, 1268, 1270, 1271, 1272, 1273, 1274, 1275, 1276, + 1272, 1273, 1277, 1279, 1276, 1280, 1281, 1282, 1282, 1269, + 1283, 1284, 1271, 1285, 1283, 1274, 1287, 1279, 1275, 1270, + 1286, 1288, 1277, 1280, 1281, 1289, 1286, 1290, 1287, 1284, + 1291, 1292, 1285, 1293, 1294, 1296, 1302, 1297, 1293, 1289, + 1288, 1294, 1290, 1295, 1299, 1291, 1297, 1301, 1295, 1300, + 1292, 1298, 1298, 1296, 1304, 1300, 1303, 1302, 1305, 1299, + 1304, 1303, 1312, 1301, 1305, 1306, 1306, 1307, 1307, 1309, + 1309, 1310, 1311, 1313, 1314, 1310, 1315, 1316, 1316, 1317, + 1312, 1311, 1318, 1315, 1320, 1321, 1319, 1313, 1322, 1314, - 1316, 1323, 1324, 1325, 1326, 1319, 1328, 1324, 1327, 1329, - 1323, 1330, 1328, 1331, 1329, 1332, 1335, 1321, 1322, 1331, - 1336, 1333, 1325, 1334, 1326, 1337, 1327, 1333, 1338, 1334, - 1340, 1339, 1348, 1341, 1332, 1335, 1348, 1330, 1344, 1336, - 1342, 1342, 1354, 1343, 1337, 1339, 1343, 1338, 1341, 1349, - 1344, 1340, 1345, 1345, 1346, 1346, 1347, 1350, 1351, 1355, - 1354, 1347, 1349, 1352, 1355, 1352, 1350, 1357, 1356, 1352, - 1358, 1351, 1359, 1359, 1360, 1361, 1362, 1363, 1367, 1360, - 1364, 1361, 1352, 1356, 1365, 1364, 1358, 1357, 1365, 1366, - 1363, 1362, 1368, 1366, 1369, 1370, 1371, 1371, 1367, 1373, + 1318, 1319, 1324, 1322, 1322, 1323, 1325, 1325, 1320, 1317, + 1323, 1323, 1326, 1327, 1321, 1328, 1329, 1330, 1331, 1332, + 1333, 1329, 1324, 1334, 1328, 1335, 1333, 1336, 1334, 1337, + 1340, 1326, 1327, 1336, 1338, 1339, 1330, 1332, 1331, 1341, + 1338, 1339, 1342, 1343, 1345, 1344, 1347, 1347, 1337, 1340, + 1348, 1335, 1346, 1348, 1349, 1350, 1350, 47, 1341, 1344, + 1359, 1342, 1343, 1351, 1351, 1345, 1349, 1346, 1352, 1354, + 1353, 1355, 1356, 1352, 1353, 1357, 1361, 1357, 1359, 1360, + 1355, 1357, 1354, 1362, 1360, 1356, 1363, 1364, 1364, 1367, + 1365, 1361, 1366, 1368, 1357, 1365, 1369, 1372, 1366, 1374, - 1375, 1370, 1376, 1377, 1377, 1378, 1379, 1376, 1381, 1381, - 1368, 1378, 1383, 1385, 1369, 1383, 1386, 1373, 1384, 1384, - 1388, 1375, 1389, 1388, 1390, 1392, 1379, 1391, 1391, 1385, - 1393, 1394, 1386, 1390, 1395, 1396, 1397, 1397, 1398, 1395, - 1392, 1399, 1389, 1400, 1401, 1402, 1402, 1398, 1403, 1396, - 1394, 1393, 1404, 1406, 1409, 1405, 1407, 1407, 1400, 1399, - 1405, 1408, 1403, 1410, 1410, 1408, 1411, 1412, 1406, 1401, - 1404, 1413, 1414, 1418, 1409, 1413, 1415, 1419, 1412, 1417, - 1417, 1415, 1420, 1421, 1422, 1423, 1424, 1424, 1411, 1418, - 1428, 1414, 1425, 1426, 1427, 1419, 1420, 1425, 1422, 1428, + 1373, 1369, 1363, 1362, 1367, 1370, 1368, 1371, 1375, 1370, + 1378, 1371, 1376, 1376, 1375, 1380, 1381, 1372, 1373, 1374, + 1383, 1381, 1382, 1382, 1384, 1390, 1383, 1391, 1378, 1386, + 1386, 1388, 1389, 1389, 1388, 1393, 1380, 1394, 1393, 1395, + 1397, 1390, 1398, 1391, 1384, 1396, 1396, 1399, 1395, 1400, + 1401, 1402, 1402, 1403, 1400, 1397, 1404, 1394, 1405, 1406, + 1407, 1407, 1403, 1398, 1401, 1408, 1399, 1409, 1411, 1414, + 1410, 1412, 1412, 1405, 1404, 1410, 1413, 1415, 1415, 1408, + 1413, 1416, 1417, 1411, 1406, 1409, 1418, 1419, 1423, 1414, + 1418, 1420, 1424, 1417, 1422, 1422, 1420, 1425, 1426, 1427, - 1429, 1430, 1421, 1421, 1431, 1429, 1431, 1432, 1434, 1433, - 1423, 1435, 1432, 1426, 1427, 1433, 1437, 1435, 1438, 1438, - 1439, 1430, 1442, 1440, 1443, 1444, 1444, 1442, 1434, 1440, - 1437, 1445, 1445, 1446, 1447, 1448, 1451, 1449, 1453, 1439, - 1449, 1450, 1450, 1452, 1456, 1455, 1471, 1446, 1443, 1456, - 1448, 1455, 1447, 1454, 1451, 1452, 1454, 1457, 1453, 1454, - 1457, 1459, 1460, 1461, 1471, 1462, 1472, 1460, 1462, 1464, - 1459, 1454, 1463, 1463, 1465, 1464, 1457, 1466, 1466, 1465, - 1467, 1467, 1469, 1468, 1470, 1472, 1473, 1469, 1461, 1468, - 1474, 1477, 1475, 1474, 1476, 1478, 1477, 1470, 1475, 1479, + 1428, 1429, 1429, 1416, 1423, 1433, 1419, 1430, 1431, 1432, + 1424, 1425, 1430, 1427, 1433, 1434, 1435, 1426, 1426, 1436, + 1434, 1436, 1437, 1439, 1438, 1428, 1440, 1437, 1431, 1432, + 1438, 1442, 1440, 1443, 1443, 1444, 1435, 1447, 1445, 1448, + 1449, 1449, 1447, 1439, 1445, 1442, 1450, 1450, 1451, 1452, + 1453, 1456, 1454, 1458, 1444, 1454, 1455, 1455, 1457, 1461, + 1460, 1477, 1451, 1448, 1461, 1453, 1460, 1452, 1459, 1456, + 1457, 1459, 1462, 1458, 1459, 1462, 1464, 1465, 1466, 1477, + 1467, 18, 1465, 1467, 1469, 1464, 1459, 1468, 1468, 1470, + 1469, 1462, 1471, 1472, 1472, 1470, 1474, 1471, 1473, 1473, - 1476, 1478, 1480, 1481, 1481, 1482, 1473, 1480, 1483, 1484, - 1482, 1485, 1488, 1486, 1487, 1491, 1492, 1493, 1489, 1490, - 1494, 1491, 1479, 1495, 1488, 1498, 1483, 1486, 1487, 1484, - 1489, 1485, 1490, 1501, 1494, 1499, 1492, 1493, 1497, 1497, - 1499, 1500, 1500, 1502, 1495, 1498, 1503, 1504, 1501, 1505, - 1513, 1506, 1507, 1509, 58, 1508, 1511, 1502, 1505, 1507, - 1514, 1515, 1515, 1514, 1508, 1504, 1506, 1508, 1517, 1509, - 1503, 1511, 1516, 1516, 1518, 1513, 1511, 1521, 1519, 1522, - 1517, 1519, 1520, 1520, 1523, 1525, 1524, 1526, 1527, 1523, - 1521, 1524, 1518, 1528, 1533, 1531, 1529, 1527, 1522, 1535, + 1475, 1476, 1474, 1466, 1478, 1475, 1479, 1480, 1483, 1481, + 1480, 1482, 1484, 1483, 1476, 1481, 1485, 1482, 1484, 1486, + 1487, 1487, 1488, 1478, 1486, 1489, 1479, 1488, 1490, 1491, + 1492, 1493, 1497, 1498, 1494, 1495, 1499, 1496, 1497, 1485, + 1500, 1501, 1507, 1489, 1492, 1493, 1494, 1495, 1490, 1491, + 1496, 1503, 1503, 1498, 1500, 1504, 1499, 1507, 1505, 1506, + 1506, 1509, 1501, 1505, 1508, 1510, 1512, 1511, 1515, 1519, + 1513, 1520, 1517, 17, 1520, 1504, 1511, 1513, 1508, 1514, + 1527, 1512, 1524, 1510, 1515, 1509, 1523, 1517, 1514, 1521, + 1521, 1514, 1517, 1527, 1519, 1522, 1522, 1528, 1523, 1525, - 1530, 1531, 1534, 1526, 1525, 1529, 1532, 1532, 1529, 1530, - 1536, 1537, 1528, 1538, 1533, 1534, 1541, 1535, 1542, 1543, - 1543, 1544, 1545, 1546, 1536, 1538, 1548, 1537, 1546, 1547, - 1547, 1545, 1550, 1551, 1549, 1548, 1542, 1544, 1548, 1549, - 1552, 1541, 1553, 1555, 1547, 1556, 1557, 1553, 1553, 1559, - 1550, 1558, 1560, 1562, 1551, 1559, 1558, 1555, 1552, 1562, - 1556, 1561, 1561, 1567, 1563, 1564, 1565, 1568, 1557, 1563, - 1560, 1564, 1565, 1569, 1570, 1571, 1572, 1574, 1571, 1569, - 1576, 1568, 1572, 1567, 1571, 1574, 1577, 1570, 1578, 1579, - 1580, 1581, 1582, 1583, 1584, 1584, 1578, 1587, 1579, 1576, + 1524, 1529, 1525, 1526, 1526, 1530, 1529, 1531, 1532, 1533, + 1530, 1534, 1536, 1535, 1537, 1539, 1528, 1542, 1533, 1540, + 1537, 1536, 1535, 1541, 1532, 1535, 1531, 1538, 1538, 1543, + 1534, 1542, 1540, 1547, 1544, 1539, 1548, 1549, 1549, 1550, + 1551, 1541, 1552, 1555, 1554, 1543, 1544, 1552, 1555, 1551, + 1553, 1553, 1556, 1554, 1548, 1550, 1554, 1557, 1547, 1558, + 1561, 1559, 1563, 1564, 1562, 1553, 1559, 1559, 1564, 1565, + 1556, 1566, 1567, 1567, 1561, 1565, 1568, 1558, 1557, 1562, + 1569, 1570, 1568, 1573, 1563, 1569, 1571, 1570, 1574, 1566, + 1575, 1576, 1571, 1578, 1582, 1583, 1575, 1577, 1586, 1578, - 1588, 1588, 1585, 1580, 1581, 1577, 1582, 1583, 1585, 1586, - 1587, 1589, 1590, 1591, 1592, 1586, 1584, 1593, 1594, 1595, - 1596, 1598, 1598, 1593, 1599, 1600, 1605, 1592, 1601, 1600, - 1590, 1589, 1591, 1601, 1602, 1595, 1603, 1604, 1596, 1602, - 1594, 1603, 1607, 1608, 1599, 1610, 1604, 1609, 1609, 1605, - 1611, 1612, 1613, 1613, 1607, 1614, 1615, 1618, 1608, 1616, - 1617, 1619, 1611, 1615, 1610, 1621, 1622, 1620, 1623, 1614, - 1612, 1616, 1617, 1620, 1623, 57, 1618, 1621, 1624, 1624, - 1625, 1619, 1628, 1625, 1622, 1626, 1626, 1628, 1629, 1630, - 1631, 1631, 1632, 1635, 1633, 1630, 1633, 1629, 1634, 1636, + 1577, 1580, 1574, 1573, 1576, 1587, 1577, 1584, 1585, 1580, + 1588, 1586, 1589, 1582, 1583, 1584, 1591, 1585, 1587, 1590, + 1590, 1592, 1591, 1593, 1588, 1595, 1589, 1592, 1594, 1594, + 1596, 1597, 1599, 1598, 1600, 1601, 1593, 1602, 1599, 1604, + 1604, 1590, 1605, 1606, 1607, 1595, 1598, 1606, 1596, 1607, + 1597, 1601, 1608, 1609, 1610, 1602, 1600, 1608, 1609, 1611, + 1613, 1614, 1605, 1610, 1615, 1615, 1616, 1617, 1618, 1619, + 1619, 1621, 1613, 1625, 1620, 1624, 1614, 1622, 1621, 1617, + 1623, 1628, 1611, 1627, 1626, 1616, 0, 1618, 1620, 1622, + 1626, 1629, 1623, 1625, 1624, 1627, 1642, 1629, 1635, 1628, - 1637, 1634, 1638, 1639, 1632, 1640, 1641, 1642, 1639, 1643, - 1640, 1644, 1646, 1635, 1645, 1641, 1644, 1647, 1637, 1642, - 1638, 1636, 1647, 1645, 1643, 1648, 1649, 1650, 1650, 1647, - 1648, 1651, 1646, 1652, 1654, 1655, 1645, 1651, 1656, 52, - 1657, 1649, 1657, 1658, 1659, 1659, 1660, 1660, 1661, 1661, - 1662, 1655, 1665, 1654, 1652, 1663, 1663, 1658, 1656, 1658, - 1664, 1664, 1666, 1667, 1667, 1668, 1669, 1673, 1670, 1668, - 1662, 1670, 1669, 1665, 1672, 1674, 1675, 1677, 1677, 1676, - 1672, 1674, 1676, 1666, 1679, 1673, 1678, 1678, 1680, 1679, - 1681, 1682, 1683, 1684, 1680, 1685, 1688, 1690, 1691, 1684, + 1630, 1630, 1631, 1632, 1632, 1631, 1634, 1635, 1636, 1637, + 1637, 1634, 1638, 1639, 1636, 1639, 1640, 1641, 1642, 1640, + 1643, 1644, 1645, 1646, 1638, 1647, 1650, 1645, 1646, 1648, + 1649, 1650, 1652, 1651, 1647, 1653, 1655, 1641, 1643, 1644, + 1653, 1648, 1651, 1654, 1658, 1649, 1661, 1653, 1654, 1656, + 1656, 1655, 1652, 1657, 1660, 1651, 1662, 1663, 1664, 1657, + 1664, 1669, 1665, 1666, 1666, 1658, 1661, 1667, 1667, 1668, + 1668, 1672, 1662, 1660, 1670, 1670, 1665, 1663, 1665, 1671, + 1671, 1669, 1673, 1674, 1674, 1675, 1680, 1676, 1677, 1675, + 1679, 1677, 1672, 1676, 1681, 1682, 1679, 1686, 1683, 1688, - 1687, 1675, 1681, 1681, 1681, 1687, 1687, 1695, 1690, 1681, - 1688, 1682, 1683, 1691, 1689, 1685, 1689, 1692, 1693, 1694, - 1696, 1696, 1697, 1692, 1698, 1698, 1699, 1693, 1695, 1700, - 1701, 1701, 1702, 1702, 1703, 1706, 1706, 1707, 1708, 1694, - 1710, 1715, 1711, 1714, 1712, 1718, 1699, 1708, 1697, 1710, - 1712, 1700, 1713, 1713, 1703, 1720, 1715, 1717, 1716, 1719, - 1719, 1721, 1707, 1711, 1714, 1716, 1717, 1723, 1724, 1725, - 1727, 1718, 1723, 1726, 1724, 1732, 1727, 1721, 1728, 1731, - 1726, 1720, 1729, 1729, 1728, 1730, 1733, 1734, 1731, 1725, - 1730, 1735, 1736, 1737, 1735, 1732, 1738, 1738, 1739, 1734, + 1681, 1683, 1686, 1673, 1680, 1684, 1684, 1685, 1685, 1687, + 1689, 1688, 1688, 1688, 1690, 1687, 1691, 1692, 1688, 1694, + 1682, 1695, 1691, 1700, 1694, 1694, 1696, 1697, 1696, 1698, + 1689, 1701, 1700, 1699, 1690, 1695, 1702, 1692, 1697, 1699, + 1703, 1703, 1704, 1706, 1698, 1705, 1705, 1707, 1708, 1708, + 1710, 1701, 1709, 1709, 1713, 1713, 1714, 1702, 1715, 1718, + 1719, 1721, 1717, 1706, 1720, 1720, 1719, 1715, 1704, 1707, + 1710, 1717, 1722, 1725, 1727, 1724, 1723, 1726, 1726, 1728, + 1718, 1714, 1721, 1723, 1724, 1730, 1731, 1722, 1732, 1733, + 1730, 1734, 1731, 1736, 1736, 1728, 1733, 1734, 1735, 1725, - 1740, 1741, 1742, 1743, 1739, 1733, 1740, 1743, 1745, 1746, - 1736, 1747, 1748, 1748, 1749, 1750, 1747, 1742, 1752, 1737, - 1753, 1741, 1762, 1743, 1753, 1755, 1754, 1760, 1745, 1758, - 1750, 1746, 1754, 1749, 1755, 1756, 1756, 1752, 1757, 1761, - 1758, 1762, 1757, 1759, 1759, 1758, 1763, 1764, 1760, 1765, - 1766, 1763, 1768, 1761, 1773, 1767, 1766, 1768, 1769, 1769, - 1770, 1770, 1771, 1773, 1774, 1775, 1771, 1764, 1782, 1765, - 1767, 1776, 1776, 1778, 1778, 1774, 1779, 1780, 1781, 1790, - 1774, 1779, 1779, 1780, 1781, 1775, 1783, 1784, 1787, 1785, - 1789, 1783, 1788, 1792, 1782, 1785, 1788, 1791, 1798, 1784, + 1727, 1737, 1738, 1739, 1735, 1740, 1737, 1741, 1732, 1742, + 1743, 1738, 1742, 1744, 1745, 1745, 1746, 1748, 1749, 1741, + 1747, 1750, 1746, 1739, 1740, 1750, 1747, 1752, 1743, 1753, + 1754, 1755, 1755, 1749, 1756, 1754, 1762, 1748, 1759, 1744, + 1757, 1750, 1760, 1761, 1764, 1762, 1760, 1752, 1764, 1761, + 1765, 1753, 1767, 1756, 1768, 1757, 1769, 1759, 1763, 1763, + 1770, 1765, 1766, 1766, 1771, 1770, 1765, 1772, 1768, 1775, + 1773, 1774, 1781, 1767, 1775, 1769, 1773, 1776, 1776, 1777, + 1777, 1778, 1780, 1781, 1771, 1778, 1774, 1772, 1781, 1782, + 1789, 1780, 1783, 1783, 1785, 1785, 1786, 1787, 1788, 1791, - 1787, 1793, 1789, 1791, 1790, 1794, 1795, 1793, 1797, 1799, - 1794, 1802, 1802, 1801, 1799, 1792, 1801, 1798, 1795, 1805, - 1797, 1803, 1803, 1804, 1804, 1806, 1807, 1810, 1808, 1809, - 47, 1806, 1807, 1808, 1815, 1809, 1810, 1812, 1814, 1805, - 1818, 1814, 1812, 1816, 1816, 1819, 1815, 1822, 1820, 1821, - 1821, 1827, 1818, 1820, 1823, 1824, 1822, 1819, 1825, 1823, - 1824, 1825, 1826, 1826, 1828, 1829, 1830, 1837, 1831, 1832, - 1833, 1827, 1831, 1828, 1832, 1834, 1833, 1835, 1836, 1839, - 1839, 1837, 1840, 1829, 1845, 1830, 1835, 1844, 1841, 1842, - 1842, 1839, 1843, 1834, 1847, 1853, 1836, 1841, 1846, 1844, + 1790, 1786, 1786, 1787, 1788, 1790, 1792, 1794, 1796, 1782, + 1795, 1791, 1792, 1797, 1795, 1798, 1789, 1799, 1800, 1794, + 1796, 1798, 1801, 1802, 1800, 1804, 1805, 1801, 1806, 1808, + 1809, 1809, 1808, 1806, 1812, 1802, 0, 1804, 1797, 1799, + 1810, 1810, 1811, 1811, 1813, 1805, 1814, 1817, 1815, 1816, + 1813, 1822, 1814, 1815, 1812, 1816, 1817, 1819, 1821, 1823, + 1823, 1821, 1819, 1822, 1825, 1826, 1827, 1828, 1828, 1829, + 1830, 1827, 1833, 1833, 1831, 1830, 1825, 1826, 1829, 1831, + 1832, 1834, 1835, 1832, 1836, 1837, 1838, 1839, 1840, 1841, + 1838, 1835, 1839, 1843, 1840, 1844, 1842, 1847, 1846, 1846, - 1840, 1843, 1854, 1846, 1856, 1845, 1857, 1847, 1850, 1850, - 1852, 1853, 1859, 1852, 1866, 1858, 1860, 1860, 1854, 1856, - 1857, 1858, 1861, 1863, 1861, 1862, 1862, 1865, 1867, 1859, - 1869, 1863, 1868, 1868, 1865, 1870, 1866, 1871, 1872, 1869, - 1873, 1874, 1875, 1878, 1881, 1876, 1879, 18, 1867, 1871, - 1872, 1876, 1873, 1880, 1880, 1882, 1870, 1875, 1879, 1885, - 1889, 1884, 1881, 1878, 1876, 1883, 1884, 1874, 1883, 1887, - 1888, 1890, 1888, 1891, 1887, 1882, 1890, 1893, 1889, 1885, - 1891, 1895, 1896, 1897, 1899, 1898, 1893, 1898, 1901, 1904, - 1901, 1896, 1902, 1903, 1903, 1897, 1905, 1907, 1906, 1895, + 1853, 1834, 1836, 1848, 1837, 1842, 0, 1841, 1852, 1844, + 1846, 1843, 1848, 1849, 1849, 1847, 1850, 1850, 1851, 1854, + 1852, 1853, 1855, 1861, 1854, 1858, 1858, 1851, 1860, 1862, + 1865, 1860, 1864, 1867, 1866, 1855, 1868, 1868, 1871, 1861, + 1866, 1869, 1874, 1869, 1865, 1862, 1871, 1864, 1870, 1870, + 1867, 1873, 1875, 1876, 1876, 1878, 1877, 1879, 1873, 1880, + 1882, 1881, 1883, 1886, 1874, 1877, 1887, 1889, 1884, 1879, + 1890, 1880, 1875, 1881, 1884, 1893, 1878, 1883, 1887, 1888, + 1888, 1891, 1897, 1886, 1891, 1889, 1882, 1884, 1892, 1895, + 1890, 1903, 1898, 1892, 1895, 1893, 1896, 1898, 1896, 1899, - 1906, 1905, 1907, 1899, 1908, 1909, 1902, 1910, 1911, 1908, - 1914, 1912, 1913, 1916, 1911, 1904, 1912, 1917, 1914, 1918, - 1918, 1919, 1919, 1909, 1920, 1913, 1921, 1910, 1922, 1925, - 1923, 1917, 1916, 1926, 1922, 1923, 1924, 1933, 1924, 1920, - 1928, 1926, 1927, 1927, 1929, 1929, 1921, 1925, 1931, 1926, - 1930, 1930, 1928, 1932, 1935, 1933, 1937, 1931, 1932, 1936, - 1939, 1936, 1938, 1935, 1940, 1947, 1935, 1938, 1938, 1939, - 1942, 1946, 1948, 1943, 1944, 1950, 1940, 1937, 1943, 1944, - 1951, 1948, 1942, 1952, 1946, 1947, 1949, 1949, 1953, 1954, - 1958, 1956, 1959, 1950, 1957, 1960, 1961, 1959, 1951, 1952, + 1897, 1901, 1904, 1905, 1907, 1906, 1899, 1906, 1910, 1903, + 1901, 1904, 1909, 1912, 1909, 1905, 1911, 1911, 1914, 1913, + 1914, 1915, 1910, 1907, 1913, 1916, 1915, 1917, 1918, 1919, + 1916, 1920, 1922, 1921, 1924, 1919, 1920, 1925, 1929, 1912, + 1922, 1926, 1926, 1927, 1927, 1917, 1921, 1928, 1918, 1930, + 1933, 1925, 1931, 1924, 1932, 1930, 1932, 1931, 1929, 1934, + 1935, 1935, 1928, 1939, 1936, 1937, 1937, 1934, 1933, 1938, + 1938, 1941, 1939, 1940, 1943, 1934, 1936, 1944, 1940, 1944, + 1945, 1947, 1946, 1943, 1948, 1950, 1943, 1946, 1946, 1941, + 1947, 1954, 1955, 1951, 1952, 1958, 1948, 1950, 1951, 1952, - 1960, 1964, 1953, 1956, 1954, 1961, 1957, 1964, 1966, 1967, - 1958, 1968, 1969, 1970, 1966, 1971, 1972, 1972, 1973, 1979, - 1964, 1974, 1974, 1975, 1971, 1976, 1968, 1973, 1977, 1976, - 1969, 1978, 1967, 1977, 1980, 2025, 1985, 1981, 1970, 1980, - 1980, 1979, 1975, 1981, 1978, 1982, 1983, 1984, 2025, 1983, - 1990, 1982, 1988, 1988, 1993, 1984, 1985, 1989, 1989, 1990, - 1991, 1991, 1992, 1992, 1994, 1995, 1993, 2003, 1996, 1997, - 1997, 1995, 1989, 1996, 1998, 1998, 1999, 2005, 2000, 2007, - 2009, 1999, 1994, 1989, 2000, 2002, 2004, 2003, 2008, 2002, - 2004, 2010, 2012, 2008, 2011, 2013, 2014, 2005, 2016, 2011, + 1956, 1945, 1957, 1957, 1954, 1959, 1960, 1961, 1964, 1956, + 1962, 1966, 1955, 1958, 1965, 1975, 1977, 1978, 1976, 1967, + 1964, 1961, 1960, 1959, 1967, 1962, 1965, 1968, 1969, 1972, + 1974, 1966, 1968, 1976, 1977, 1972, 1974, 1969, 1975, 1983, + 1979, 1981, 1978, 1980, 1980, 1982, 1982, 1984, 1972, 1979, + 1981, 1984, 1985, 1986, 1987, 1988, 1989, 1985, 1983, 1990, + 1988, 1988, 1989, 1992, 1991, 1990, 1986, 1991, 1993, 1996, + 1996, 1992, 1997, 1997, 1998, 0, 1987, 1999, 1999, 2000, + 2000, 2001, 2002, 1998, 2003, 2010, 2004, 1997, 1993, 2010, + 2003, 2004, 2011, 2001, 2005, 2005, 2006, 2006, 1997, 2007, - 2015, 2017, 2017, 2009, 2007, 2015, 2010, 2019, 2018, 2020, - 2012, 2013, 2018, 2021, 2020, 2022, 2014, 2023, 2024, 2026, - 2016, 2029, 2019, 2024, 2027, 2027, 2030, 2022, 2031, 2029, - 2032, 2033, 2034, 2035, 2036, 2037, 2023, 2026, 2041, 2021, - 2040, 2040, 2039, 2041, 2044, 2030, 2036, 2031, 2043, 2042, - 2045, 2034, 2042, 2032, 2035, 2033, 2037, 2039, 2044, 2046, - 2046, 2043, 2049, 2045, 2047, 2047, 2048, 2048, 2050, 2051, - 2051, 2052, 2053, 2053, 2054, 2057, 2058, 2049, 2059, 2054, - 2052, 2050, 2056, 2052, 2060, 2060, 2062, 2056, 2061, 2061, - 2059, 2063, 2063, 2064, 2066, 2057, 2058, 2065, 2065, 2067, + 2002, 2008, 2012, 2013, 2007, 2015, 2012, 2008, 2016, 2017, + 2018, 2019, 2011, 2016, 2023, 2020, 2019, 2022, 2021, 2023, + 2024, 2025, 2025, 2013, 2026, 2018, 2027, 2029, 2026, 2032, + 2015, 2028, 2017, 2020, 2021, 2031, 2028, 2022, 2030, 2033, + 2035, 2027, 2024, 2034, 2033, 2030, 2038, 2031, 2032, 2036, + 2036, 2039, 2040, 2029, 2038, 2041, 2034, 2042, 2035, 2044, + 2043, 2045, 2046, 2049, 2049, 2051, 0, 2048, 2051, 2050, + 2039, 2040, 2052, 2045, 2050, 2053, 0, 2054, 2041, 2043, + 2044, 2042, 2048, 2046, 2058, 2052, 2055, 2055, 2059, 2053, + 2054, 2056, 2056, 2057, 2057, 2060, 2060, 2061, 2066, 2058, - 2068, 2068, 2069, 2069, 2067, 2062, 2070, 2071, 2072, 2066, - 2073, 2064, 2075, 2076, 2076, 2077, 2071, 2075, 2078, 2078, - 2070, 2079, 2072, 2081, 2080, 2084, 2081, 2082, 2082, 2073, - 2080, 2083, 2083, 2085, 2077, 2086, 2087, 2087, 2089, 2079, - 2090, 2091, 2092, 2082, 2084, 2094, 2092, 2095, 2085, 2093, - 2093, 2096, 2095, 2097, 2086, 2100, 2091, 2102, 2089, 2099, - 2099, 2103, 2101, 2090, 2094, 2104, 2096, 2105, 2097, 2101, - 2111, 2102, 2106, 2106, 2109, 2100, 2107, 2109, 2108, 2103, - 2108, 2112, 2111, 2104, 2113, 2107, 2112, 2114, 2115, 2113, - 2116, 2117, 2109, 2105, 2109, 2118, 2117, 2120, 2121, 2122, + 2063, 2059, 2062, 2062, 2067, 2063, 2061, 2065, 2068, 2061, + 2069, 2069, 2065, 2070, 2070, 2071, 2072, 2072, 2066, 2073, + 2068, 2074, 2074, 2075, 2067, 2076, 2077, 2077, 2078, 2078, + 2076, 2079, 2080, 2081, 2071, 2082, 2086, 2073, 2075, 2084, + 2088, 2080, 2085, 2085, 2084, 2079, 2089, 2081, 2087, 2087, + 2090, 2093, 2089, 2090, 2082, 2086, 2091, 2091, 2088, 2092, + 2092, 2094, 2095, 2096, 2096, 2098, 2099, 2100, 2103, 2101, + 2093, 2105, 2091, 2101, 2102, 2102, 2094, 2106, 2104, 2108, + 2108, 2095, 2100, 2104, 2109, 2098, 2105, 2103, 2110, 2099, + 2112, 2111, 2106, 2113, 2114, 2110, 2115, 2115, 2116, 2117, - 2123, 2115, 2120, 2121, 2124, 2126, 2123, 2125, 2128, 2129, - 2126, 2116, 2114, 2125, 2122, 2127, 2130, 2131, 2132, 2130, - 2127, 2118, 2129, 2133, 2135, 2124, 2131, 2132, 2134, 2136, - 2137, 2140, 2133, 2128, 17, 2136, 2137, 2134, 2135, 2138, - 2142, 2143, 2143, 2138, 2144, 2145, 2145, 2146, 2147, 2142, - 2144, 2140, 2146, 2149, 2145, 2150, 2151, 2151, 2152, 2156, - 2162, 2157, 2155, 2153, 2160, 2158, 0, 2160, 2147, 2149, - 2147, 2150, 2153, 2152, 2155, 2156, 2157, 2158, 2161, 2163, - 2162, 2164, 2164, 2161, 2165, 2165, 2167, 2167, 2169, 2168, - 2170, 2163, 2168, 2169, 2171, 2172, 2170, 2173, 2173, 2174, + 2120, 2117, 2123, 2118, 2109, 2111, 2118, 2116, 2112, 2121, + 2122, 2113, 2120, 2124, 2121, 2122, 2125, 2126, 2127, 2129, + 2114, 2118, 2126, 2118, 2129, 2130, 2124, 2123, 2131, 2132, + 2130, 2133, 2134, 2137, 2135, 2132, 2136, 2125, 2134, 2135, + 2138, 2136, 2139, 2131, 2127, 2139, 2140, 2141, 2142, 2144, + 2143, 2149, 2133, 2138, 2145, 2140, 2141, 2142, 2137, 2143, + 2145, 2146, 2147, 2144, 2151, 2156, 2147, 2146, 2152, 2152, + 2153, 2149, 2155, 2151, 2154, 2154, 2153, 2155, 2158, 2159, + 2160, 2160, 2161, 2154, 2162, 2156, 2164, 2156, 2165, 2167, + 2166, 2171, 2213, 2162, 2158, 2159, 2169, 2161, 2164, 2169, - 2171, 2175, 2175, 2176, 2172, 2177, 2178, 2179, 2179, 2181, - 2180, 2188, 2182, 2174, 2184, 2176, 2180, 2182, 2184, 2177, - 2188, 2185, 2189, 2181, 2185, 2178, 2186, 2186, 2187, 2195, - 2190, 2191, 2191, 2187, 2190, 2192, 2194, 2196, 2197, 2198, - 2199, 2194, 2189, 2198, 2203, 2200, 2205, 2201, 2192, 2195, - 2200, 2206, 2197, 2201, 2207, 2202, 2209, 2196, 2205, 2207, - 2199, 2202, 2203, 2208, 2209, 2213, 2210, 2206, 2210, 2208, - 2214, 2214, 2215, 2216, 2219, 2215, 2217, 2217, 2219, 2213, - 2220, 2221, 2222, 2222, 2228, 2223, 2220, 2226, 2226, 2230, - 2231, 2234, 2235, 2221, 2223, 2236, 2234, 2238, 2238, 2216, + 2172, 2167, 2170, 2177, 2165, 2166, 2177, 2170, 2173, 2173, + 2213, 2171, 2172, 2174, 2174, 2176, 2176, 2178, 2179, 2180, + 2181, 2183, 2178, 2186, 2179, 2180, 2182, 2182, 2185, 2181, + 2184, 2184, 2187, 2188, 2188, 2183, 2189, 2186, 2190, 2191, + 2185, 2193, 2189, 2194, 2191, 2193, 2194, 2195, 2195, 2196, + 2198, 2187, 2190, 2199, 2196, 2197, 2197, 2200, 2202, 2198, + 2204, 2200, 2201, 2201, 2205, 2204, 2206, 2207, 2208, 2209, + 2210, 2202, 2208, 2199, 2211, 2210, 2212, 2216, 2215, 2218, + 2211, 2207, 2212, 2217, 2205, 2218, 2206, 2219, 2217, 2209, + 2215, 2223, 2220, 2216, 2220, 2219, 2224, 2224, 2225, 2226, - 2236, 2244, 2228, 2230, 2237, 2242, 2231, 2240, 2240, 2237, - 2245, 2242, 2243, 2243, 2246, 2248, 2249, 2244, 2235, 2246, - 2250, 2250, 2252, 2253, 2254, 2255, 2257, 2257, 2249, 2253, - 2258, 2252, 2245, 2258, 2248, 2259, 2264, 2260, 2262, 2262, - 2255, 2264, 2254, 2263, 2263, 2265, 2267, 2266, 2268, 2271, - 2268, 2267, 2269, 2270, 2259, 2260, 2266, 2272, 2273, 2274, - 0, 2271, 2272, 2265, 2274, 2279, 2269, 2270, 2275, 2275, - 2276, 2276, 2277, 2277, 2278, 2278, 2280, 2279, 2273, 2281, - 2282, 2282, 2283, 2283, 2281, 2284, 2285, 2286, 2287, 2288, - 2288, 2289, 2290, 2290, 2280, 2291, 2291, 2284, 2285, 2294, + 2229, 2225, 2227, 2227, 2229, 2223, 2230, 2231, 2232, 2232, + 2238, 2233, 2230, 2236, 2236, 2240, 2241, 2244, 2245, 2231, + 2233, 2246, 2244, 2248, 2248, 2226, 2246, 2254, 2238, 2240, + 2247, 2252, 2241, 2250, 2250, 2247, 2255, 2252, 2253, 2253, + 2256, 2258, 2259, 2254, 2245, 2256, 2260, 2260, 2262, 2263, + 2264, 2265, 2267, 2267, 2259, 2263, 2268, 2262, 2255, 2268, + 2258, 2269, 2274, 2270, 2272, 2272, 2265, 2274, 2264, 2273, + 2273, 2275, 2277, 2276, 2278, 2281, 2278, 2277, 2279, 2280, + 2269, 2270, 2276, 2282, 2283, 2284, 0, 2281, 2282, 2275, + 2284, 2289, 2279, 2280, 2285, 2285, 2286, 2286, 2287, 2287, - 2292, 2293, 2295, 2296, 2287, 2298, 2294, 2286, 2299, 2301, - 2289, 2292, 2297, 2293, 2295, 2300, 2300, 2297, 2301, 2302, - 2303, 2304, 2305, 2296, 2306, 2298, 2309, 2307, 2299, 2308, - 2308, 2313, 2310, 2311, 2304, 2309, 2314, 2315, 2306, 2307, - 2303, 2316, 2317, 0, 2316, 2302, 2305, 2310, 2311, 2313, - 2318, 2327, 2319, 2320, 2320, 2318, 2317, 2319, 2314, 2328, - 2315, 2321, 2321, 2322, 2322, 2324, 2324, 2326, 2326, 2327, - 2328, 2329, 2330, 2332, 2333, 2334, 2335, 2336, 2337, 2338, - 2339, 2338, 2345, 2340, 2341, 2362, 2336, 2330, 2342, 2342, - 2329, 2362, 2333, 2332, 2344, 2344, 2335, 2334, 2337, 2346, + 2288, 2288, 2290, 2289, 2283, 2291, 2292, 2292, 2293, 2293, + 2291, 2294, 2295, 2296, 2297, 2298, 2298, 2299, 2300, 2300, + 2290, 2301, 2301, 2294, 2295, 2304, 2302, 2303, 2305, 2306, + 2297, 2308, 2304, 2296, 2309, 2311, 2299, 2302, 2307, 2303, + 2305, 2310, 2310, 2307, 2311, 2312, 2313, 2314, 2315, 2306, + 2316, 2308, 2319, 2317, 2309, 2318, 2318, 2323, 2320, 2321, + 2314, 2319, 2324, 2325, 2316, 2317, 2313, 2326, 2327, 0, + 2326, 2312, 2315, 2320, 2321, 2323, 2328, 2337, 2329, 2330, + 2330, 2328, 2327, 2329, 2324, 2338, 2325, 2331, 2331, 2332, + 2332, 2334, 2334, 2336, 2336, 2337, 2338, 2339, 2340, 2342, - 2339, 2340, 2341, 2349, 2345, 2347, 2347, 2351, 2346, 2350, - 2350, 2352, 2349, 2353, 2355, 2354, 2356, 2357, 2358, 2365, - 2353, 2359, 2359, 2360, 2360, 2351, 2361, 2361, 2363, 2352, - 2354, 2366, 2355, 2357, 2356, 2364, 2366, 2358, 2365, 2367, - 2368, 2370, 2369, 2370, 2371, 2371, 2363, 2369, 2375, 2372, - 2364, 2372, 2373, 2373, 2377, 2378, 2379, 2380, 2382, 2367, - 2368, 2381, 2383, 2377, 2386, 2389, 2381, 2375, 2379, 2387, - 2388, 2388, 2387, 2390, 2378, 2391, 2391, 2380, 2382, 2392, - 2389, 2383, 2394, 2392, 2386, 2395, 2396, 2396, 2397, 2395, - 2399, 2390, 2400, 2401, 2402, 2402, 2404, 2394, 2405, 2406, + 2343, 2344, 2345, 2346, 2347, 2348, 2349, 2348, 2356, 2350, + 2351, 2373, 2346, 2340, 2352, 2352, 2339, 2373, 2343, 2342, + 2354, 2354, 2345, 2344, 2347, 2357, 2349, 2350, 2351, 2360, + 2356, 2358, 2358, 2362, 2357, 2361, 2361, 2363, 2360, 2364, + 2366, 2365, 2367, 2368, 2369, 2376, 2364, 2370, 2370, 2371, + 2371, 2362, 2372, 2372, 2374, 2363, 2365, 2377, 2366, 2368, + 2367, 2375, 2377, 2369, 2376, 2378, 2379, 2381, 2380, 2381, + 2382, 2382, 2374, 2380, 2386, 2383, 2375, 2383, 2384, 2384, + 2388, 2389, 2390, 2391, 2393, 2378, 2379, 2392, 2394, 2388, + 2397, 2400, 2392, 2386, 2390, 2398, 2399, 2399, 2398, 2401, - 2408, 2397, 2412, 2406, 2420, 2399, 2410, 2405, 2404, 2407, - 2407, 2410, 2400, 2401, 2409, 2409, 2411, 2413, 2412, 2408, - 2414, 2414, 2419, 2419, 2422, 2411, 2420, 2421, 2421, 2413, - 2423, 2424, 2425, 2426, 2426, 2427, 2437, 2422, 2429, 2429, - 2424, 2425, 2432, 2423, 2433, 2434, 2435, 2432, 2436, 2433, - 2427, 2435, 2438, 2441, 2439, 2437, 2436, 2444, 2442, 2434, - 2443, 2438, 2439, 2442, 2448, 2443, 2445, 2445, 2441, 2446, - 2446, 2448, 2444, 2447, 2447, 2449, 2450, 2451, 2452, 0, - 2449, 2453, 2454, 2454, 2452, 2455, 2453, 2456, 2457, 2457, - 2458, 2458, 2456, 2461, 2450, 2451, 2462, 2462, 2463, 2464, + 2389, 2402, 2402, 2391, 2393, 2403, 2400, 2394, 2405, 2403, + 2397, 2406, 2407, 2407, 2408, 2406, 2410, 2401, 2411, 2412, + 2413, 2413, 2415, 2405, 2416, 2417, 2419, 2408, 2423, 2417, + 2431, 2410, 2421, 2416, 2415, 2418, 2418, 2421, 2411, 2412, + 2420, 2420, 2422, 2424, 2423, 2419, 2425, 2425, 2430, 2430, + 2433, 2422, 2431, 2432, 2432, 2424, 2434, 2435, 2436, 2437, + 2437, 2438, 2448, 2433, 2440, 2440, 2435, 2436, 2443, 2434, + 2444, 2445, 2446, 2443, 2447, 2444, 2438, 2446, 2449, 2452, + 2450, 2448, 2447, 2455, 2453, 2445, 2454, 2449, 2450, 2453, + 2459, 2454, 2456, 2456, 2452, 2457, 2457, 2459, 2455, 2458, - 2455, 2463, 2465, 2466, 2464, 2464, 2461, 2465, 2466, 2467, - 2468, 2469, 2470, 2471, 2472, 2469, 2468, 2470, 2473, 2474, - 2477, 2475, 2471, 2467, 2476, 2477, 2473, 2475, 2480, 2472, - 2476, 2478, 2481, 2480, 2483, 2481, 2485, 2486, 2487, 2488, - 2474, 2485, 2486, 2478, 2489, 2490, 2483, 2491, 2491, 2492, - 2496, 2497, 2488, 2489, 2490, 2498, 2487, 2500, 2492, 2499, - 2499, 2501, 2502, 2503, 2503, 2504, 2506, 2508, 2509, 2496, - 2501, 2497, 2509, 2511, 2498, 0, 2500, 2502, 2510, 2510, - 2512, 2506, 2513, 2514, 2504, 2516, 2512, 2508, 2513, 2514, - 2515, 2515, 2517, 2516, 2519, 2520, 2522, 2517, 2511, 2523, + 2458, 2460, 2461, 2462, 2463, 0, 2460, 2464, 2465, 2465, + 2463, 2466, 2464, 2467, 2468, 2468, 2469, 2469, 2467, 2472, + 2461, 2462, 2473, 2473, 2474, 2475, 2466, 2474, 2476, 2477, + 2475, 2475, 2472, 2476, 2477, 2478, 2479, 2480, 2481, 2482, + 2483, 2480, 2479, 2481, 2484, 2485, 2488, 2486, 2482, 2478, + 2487, 2488, 2484, 2486, 2491, 2483, 2487, 2489, 2492, 2491, + 2494, 2492, 2496, 2497, 2498, 2499, 2485, 2496, 2497, 2489, + 2500, 2501, 2494, 2502, 2502, 2503, 2507, 2508, 2499, 2500, + 2501, 2509, 2498, 2511, 2503, 2510, 2510, 2512, 2513, 2514, + 2514, 2515, 2517, 2519, 2520, 2507, 2512, 2508, 2520, 2522, - 2522, 2524, 2527, 2519, 2526, 2526, 2528, 2528, 2520, 2529, - 2529, 2531, 2531, 2523, 2532, 2537, 2524, 2533, 2532, 2539, - 2527, 2538, 2533, 2535, 2535, 2542, 2538, 2540, 2543, 2543, - 2550, 2539, 2540, 2540, 2548, 2537, 2545, 2545, 2546, 2546, - 2547, 2552, 2556, 2547, 2559, 2542, 2558, 2548, 2550, 2553, - 2553, 2554, 2554, 2555, 2555, 2557, 2557, 2556, 2560, 2558, - 2561, 2552, 2559, 2562, 2562, 2563, 2561, 2568, 2567, 2563, - 2571, 2569, 2560, 2567, 2567, 2570, 2571, 2572, 2573, 2583, - 2574, 2575, 2575, 2572, 2574, 2580, 2581, 2578, 2586, 2581, - 2568, 2569, 2578, 2580, 2584, 2570, 2587, 2584, 2585, 2585, + 2509, 0, 2511, 2513, 2521, 2521, 2523, 2517, 2524, 2525, + 2515, 2527, 2523, 2519, 2524, 2525, 2526, 2526, 2528, 2527, + 2530, 2531, 2533, 2528, 2522, 2534, 2533, 2535, 2538, 2530, + 2537, 2537, 2539, 2539, 2531, 2540, 2540, 2542, 2542, 2534, + 2543, 2548, 2535, 2544, 2543, 2550, 2538, 2549, 2544, 2546, + 2546, 2553, 2549, 2551, 2554, 2554, 2561, 2550, 2551, 2551, + 2559, 2548, 2556, 2556, 2557, 2557, 2558, 2563, 2567, 2558, + 2570, 2553, 2569, 2559, 2561, 2564, 2564, 2565, 2565, 2566, + 2566, 2568, 2568, 2567, 2571, 2569, 2572, 2563, 2570, 2573, + 2573, 2574, 2572, 2579, 2578, 2574, 2582, 2580, 2571, 2578, - 2588, 2587, 2589, 2573, 2583, 2586, 2586, 2590, 2591, 2591, - 2592, 2594, 2593, 2595, 2613, 2593, 2598, 2613, 2588, 2596, - 0, 2590, 2589, 2593, 2592, 2594, 2606, 2596, 2597, 2599, - 2599, 2604, 2595, 2597, 2597, 2598, 2600, 2600, 2601, 2601, - 2602, 2602, 2603, 2603, 2605, 2607, 2606, 2604, 2608, 2605, - 2609, 2614, 2610, 2612, 2612, 2616, 2616, 2608, 2617, 2618, - 2618, 2619, 2621, 2621, 2622, 2617, 2619, 2623, 2624, 2614, - 2609, 2607, 2610, 2622, 2626, 0, 2623, 2624, 2627, 2627, - 2628, 2629, 2630, 2631, 2628, 2632, 2633, 2634, 2631, 2631, - 2629, 2634, 2626, 2642, 2638, 2633, 2643, 2630, 2632, 2638, + 2578, 2581, 2582, 2583, 2584, 2594, 2585, 2586, 2586, 2583, + 2585, 2591, 2592, 2589, 2597, 2592, 2579, 2580, 2589, 2591, + 2595, 2581, 2598, 2595, 2596, 2596, 2599, 2598, 2600, 2584, + 2594, 2597, 2597, 2601, 2602, 2602, 2603, 2605, 2604, 2606, + 2624, 2604, 2609, 2624, 2599, 2607, 0, 2601, 2600, 2604, + 2603, 2605, 2617, 2607, 2608, 2610, 2610, 2615, 2606, 2608, + 2608, 2609, 2611, 2611, 2612, 2612, 2613, 2613, 2614, 2614, + 2616, 2618, 2617, 2615, 2619, 2616, 2620, 2625, 2621, 2623, + 2623, 2627, 2627, 2619, 2628, 2629, 2629, 2630, 2632, 2632, + 2633, 2628, 2630, 2634, 2635, 2625, 2620, 2618, 2621, 2633, - 2639, 2639, 2641, 2641, 2644, 2646, 2647, 2642, 2650, 2652, - 2651, 2653, 2655, 2657, 2646, 2659, 0, 2653, 2647, 2651, - 2659, 2643, 2644, 2660, 2655, 2661, 2661, 2662, 2660, 2652, - 2664, 2667, 2667, 2650, 2657, 2664, 2662, 2665, 2665, 2668, - 2668, 2665, 2669, 2669, 2670, 2671, 2673, 2672, 2675, 2679, - 2676, 2673, 2677, 2670, 2675, 2676, 2680, 2677, 2678, 2678, - 2681, 2683, 2685, 2692, 2682, 2671, 2672, 2679, 2680, 2682, - 2684, 2686, 2686, 2688, 2693, 2689, 2684, 2688, 2690, 2683, - 2689, 2681, 2692, 2690, 2691, 2691, 2694, 2685, 2698, 2693, - 2696, 2696, 2699, 2700, 2701, 2702, 2703, 2700, 2706, 2704, + 2637, 0, 2634, 2635, 2638, 2638, 2639, 2640, 2641, 2642, + 2639, 2643, 2644, 2645, 2642, 2642, 2640, 2645, 2637, 2653, + 2649, 2644, 2654, 2641, 2643, 2649, 2650, 2650, 2652, 2652, + 2655, 2657, 2658, 2653, 2661, 2663, 2662, 2664, 2666, 2668, + 2657, 2670, 0, 2664, 2658, 2662, 2670, 2654, 2655, 2671, + 2666, 2672, 2672, 2673, 2671, 2663, 2675, 2678, 2678, 2661, + 2668, 2675, 2673, 2676, 2676, 2679, 2679, 2676, 2680, 2680, + 2681, 2682, 2684, 2683, 2686, 2690, 2687, 2684, 2688, 2681, + 2686, 2687, 2691, 2688, 2689, 2689, 2692, 2694, 2696, 2703, + 2693, 2682, 2683, 2690, 2691, 2693, 2695, 2697, 2697, 2699, - 2708, 2698, 2713, 2701, 2705, 2699, 2694, 2704, 0, 2705, - 2724, 2702, 2707, 2707, 2717, 2703, 2710, 2710, 2718, 2708, - 2711, 2711, 2719, 2713, 2706, 2715, 2715, 2720, 2722, 2722, - 2717, 2723, 2720, 2724, 2718, 2725, 2727, 2727, 2719, 2728, - 2729, 2730, 2730, 2733, 2734, 2736, 2739, 2735, 2737, 2737, - 2734, 2723, 2735, 2728, 2725, 2738, 2738, 2740, 2740, 2729, - 2741, 2742, 2743, 2733, 2745, 2747, 2739, 2736, 2744, 2746, - 2742, 2741, 2748, 2748, 2744, 2749, 2754, 2740, 2749, 2750, - 2750, 2746, 2743, 2745, 2755, 2747, 2756, 2759, 2754, 2757, - 2757, 2758, 2756, 2759, 2758, 2760, 2762, 2763, 2763, 2765, + 2704, 2700, 2695, 2699, 2701, 2694, 2700, 2692, 2703, 2701, + 2702, 2702, 2705, 2696, 2709, 2704, 2707, 2707, 2710, 2711, + 2712, 2713, 2714, 2711, 2717, 2715, 2719, 2709, 2724, 2712, + 2716, 2710, 2705, 2715, 0, 2716, 2735, 2713, 2718, 2718, + 2728, 2714, 2721, 2721, 2729, 2719, 2722, 2722, 2730, 2724, + 2717, 2726, 2726, 2731, 2733, 2733, 2728, 2734, 2731, 2735, + 2729, 2736, 2738, 2738, 2730, 2739, 2740, 2741, 2741, 2744, + 2745, 2747, 2750, 2746, 2748, 2748, 2745, 2734, 2746, 2739, + 2736, 2749, 2749, 2751, 2751, 2740, 2752, 2753, 2754, 2744, + 2756, 2758, 2750, 2747, 2755, 2757, 2753, 2752, 2759, 2759, - 2764, 2762, 2766, 2767, 2755, 2764, 2768, 2768, 2766, 2771, - 2770, 2772, 2773, 2760, 2774, 2774, 2775, 2776, 2765, 2781, - 2767, 2767, 2770, 2778, 2778, 2773, 2776, 2771, 2779, 2779, - 2783, 2783, 2780, 2781, 2782, 2775, 2772, 2780, 2791, 2782, - 2784, 2784, 2785, 2785, 2786, 2788, 2788, 2793, 2794, 2786, - 2795, 2796, 2796, 2798, 2798, 2800, 2801, 2791, 2805, 2799, - 2802, 2802, 2803, 2803, 2805, 2801, 2806, 2815, 2807, 2793, - 2794, 2808, 2795, 2799, 0, 2800, 2808, 2811, 2811, 2813, - 2813, 2815, 2817, 2814, 2816, 2818, 2806, 2807, 2814, 2822, - 2816, 2819, 2819, 2818, 2817, 2820, 2823, 2824, 2825, 2826, + 2755, 2760, 2765, 2751, 2760, 2761, 2761, 2757, 2754, 2756, + 2766, 2758, 2767, 2770, 2765, 2768, 2768, 2769, 2767, 2770, + 2769, 2771, 2773, 2774, 2774, 2776, 2775, 2773, 2777, 2778, + 2766, 2775, 2779, 2779, 2777, 2782, 2781, 2783, 2784, 2771, + 2785, 2785, 2786, 2787, 2776, 2792, 2778, 2778, 2781, 2789, + 2789, 2784, 2787, 2782, 2790, 2790, 2794, 2794, 2791, 2792, + 2793, 2786, 2783, 2791, 2802, 2793, 2795, 2795, 2796, 2796, + 2797, 2799, 2799, 2804, 2805, 2797, 2806, 2807, 2807, 2809, + 2809, 2811, 2812, 2802, 2816, 2810, 2813, 2813, 2814, 2814, + 2816, 2812, 2817, 2826, 2818, 2804, 2805, 2819, 2806, 2810, - 2820, 2829, 2824, 2828, 2830, 2826, 2831, 2833, 2836, 2822, - 2825, 2828, 2834, 2835, 2837, 2840, 2823, 2839, 2842, 2837, - 2829, 2841, 2839, 2842, 2830, 2833, 2831, 2841, 2834, 2836, - 2835, 2835, 2844, 2845, 2876, 2840, 2848, 2848, 2849, 2849, - 2850, 2854, 2854, 2876, 2850, 2860, 2845, 2856, 2856, 2860, - 2857, 2857, 2844, 2857, 2858, 2858, 2863, 2858, 2859, 2859, - 2867, 2859, 2862, 2862, 2864, 2868, 2869, 2870, 2870, 2873, - 2874, 2869, 2875, 2877, 2863, 2879, 2875, 2874, 2864, 0, - 2867, 2880, 2881, 2881, 2884, 2868, 2882, 2882, 2877, 2886, - 2880, 2883, 2883, 2879, 2873, 2885, 2889, 2887, 2886, 2884, + 0, 2811, 2819, 2822, 2822, 2824, 2824, 2826, 2828, 2825, + 2827, 2829, 2817, 2818, 2825, 2833, 2827, 2830, 2830, 2829, + 2828, 2831, 2834, 2835, 2836, 2837, 2831, 2840, 2835, 2839, + 2841, 2837, 2842, 2844, 2847, 2833, 2836, 2839, 2845, 2846, + 2848, 2851, 2834, 2850, 2853, 2848, 2840, 2852, 2850, 2853, + 2841, 2844, 2842, 2852, 2845, 2847, 2846, 2846, 2855, 2856, + 2887, 2851, 2859, 2859, 2860, 2860, 2861, 2865, 2865, 2887, + 2861, 2871, 2856, 2867, 2867, 2871, 2868, 2868, 2855, 2868, + 2869, 2869, 2874, 2869, 2870, 2870, 2878, 2870, 2873, 2873, + 2875, 2879, 2880, 2881, 2881, 2884, 2885, 2880, 2886, 2888, - 2885, 2886, 2887, 2887, 2888, 2890, 2891, 2892, 2893, 2894, - 2888, 2896, 2892, 2893, 2895, 2895, 2897, 2896, 2898, 2898, - 2890, 2889, 2897, 2899, 2899, 2900, 2931, 2891, 2894, 2931, - 2900, 2903, 2903, 2906, 2906, 2907, 2907, 2908, 2908, 2909, - 2909, 2910, 2910, 2911, 2911, 2912, 2912, 2914, 2915, 2915, - 2916, 2917, 2918, 2922, 2920, 2924, 2914, 2921, 2921, 2916, - 2926, 2923, 2930, 2917, 2925, 2925, 2932, 2924, 2922, 2927, - 2927, 2934, 2918, 2920, 2923, 2926, 2933, 2933, 2936, 2937, - 2930, 2936, 2938, 2939, 2940, 2937, 2941, 2944, 2939, 2934, - 2942, 2945, 2932, 2944, 2948, 2957, 2938, 2959, 2957, 2964, + 2874, 2890, 2886, 2885, 2875, 0, 2878, 2891, 2892, 2892, + 2895, 2879, 2893, 2893, 2888, 2897, 2891, 2894, 2894, 2890, + 2884, 2896, 2900, 2898, 2897, 2895, 2896, 2897, 2898, 2898, + 2899, 2901, 2902, 2903, 2904, 2905, 2899, 2907, 2903, 2904, + 2906, 2906, 2908, 2907, 2909, 2909, 2901, 2900, 2908, 2910, + 2910, 2911, 2942, 2902, 2905, 2942, 2911, 2914, 2914, 2917, + 2917, 2918, 2918, 2919, 2919, 2920, 2920, 2921, 2921, 2922, + 2922, 2923, 2923, 2925, 2926, 2926, 2927, 2928, 2929, 2933, + 2931, 2935, 2925, 2932, 2932, 2927, 2937, 2934, 2941, 2928, + 2936, 2936, 2943, 2935, 2933, 2938, 2938, 2945, 2929, 2931, - 2945, 2960, 2960, 2940, 2941, 2965, 2942, 2961, 2961, 2948, - 2959, 2962, 2962, 2966, 2965, 2967, 2968, 2966, 2970, 2972, - 2971, 2973, 2964, 2973, 2972, 2974, 2975, 2975, 2977, 2976, - 2968, 2971, 2978, 2979, 2980, 2967, 2981, 2982, 2985, 2984, - 2974, 2970, 2976, 2983, 2991, 2993, 2982, 2977, 2986, 2979, - 2978, 2981, 2990, 2986, 2993, 2983, 2992, 2992, 2985, 2980, - 2984, 2994, 2994, 2998, 2991, 2999, 2990, 2995, 2995, 2996, - 2996, 2997, 2997, 3000, 3001, 3002, 3000, 3003, 3004, 3001, - 3002, 3005, 2998, 3006, 3007, 2999, 3008, 3005, 3009, 3010, - 3010, 3008, 3011, 3004, 3012, 3015, 3007, 3006, 3013, 3013, + 2934, 2937, 2944, 2944, 2947, 2948, 2941, 2947, 2949, 2950, + 2951, 2948, 2952, 2955, 2950, 2945, 2953, 2956, 2943, 2955, + 2959, 2968, 2949, 2970, 2968, 2975, 2956, 2971, 2971, 2951, + 2952, 2976, 2953, 2972, 2972, 2959, 2970, 2973, 2973, 2977, + 2976, 2978, 2979, 2977, 2981, 2983, 2982, 2984, 2975, 2984, + 2983, 2985, 2986, 2986, 2988, 2987, 2979, 2982, 2989, 2990, + 2991, 2978, 2992, 2993, 2996, 2995, 2985, 2981, 2987, 2994, + 3002, 3004, 2993, 2988, 2997, 2990, 2989, 2992, 3001, 2997, + 3004, 2994, 3003, 3003, 2996, 2991, 2995, 3005, 3005, 3009, + 3002, 3010, 3001, 3006, 3006, 3007, 3007, 3008, 3008, 3011, - 3017, 3022, 3003, 3020, 3020, 3021, 3021, 3011, 3009, 3022, - 3015, 3023, 3026, 3012, 3024, 3025, 3027, 3028, 3017, 3029, - 3024, 3025, 3030, 3030, 3029, 3033, 3026, 3031, 3031, 3027, - 3023, 3034, 3039, 3036, 3037, 3040, 3028, 3041, 3037, 3044, - 3040, 3042, 3043, 3045, 3046, 3050, 3033, 3036, 3045, 3046, - 3051, 3034, 3039, 3052, 3042, 3043, 3041, 3055, 3044, 3047, - 3047, 3053, 3053, 3055, 3054, 3050, 3056, 3056, 3051, 3054, - 3057, 3058, 3052, 3059, 3060, 3057, 3058, 3061, 3059, 3063, - 3063, 3064, 3068, 3061, 3065, 3065, 3064, 3067, 3069, 3070, - 3071, 3067, 3072, 3060, 3073, 3069, 3081, 3074, 3072, 3076, + 3012, 3013, 3011, 3014, 3015, 3012, 3013, 3016, 3009, 3017, + 3018, 3010, 3019, 3016, 3020, 3021, 3021, 3019, 3022, 3015, + 3023, 3026, 3018, 3017, 3024, 3024, 3028, 3033, 3014, 3031, + 3031, 3032, 3032, 3022, 3020, 3033, 3026, 3034, 3037, 3023, + 3035, 3036, 3038, 3039, 3028, 3040, 3035, 3036, 3041, 3041, + 3040, 3044, 3037, 3042, 3042, 3038, 3034, 3045, 3050, 3047, + 3048, 3051, 3039, 3052, 3048, 3055, 3051, 3053, 3054, 3056, + 3057, 3061, 3044, 3047, 3056, 3057, 3062, 3045, 3050, 3063, + 3053, 3054, 3052, 3066, 3055, 3058, 3058, 3064, 3064, 3066, + 3065, 3061, 3067, 3067, 3062, 3065, 3068, 3069, 3063, 3070, - 3076, 3068, 3078, 3078, 3082, 3079, 3080, 3083, 3070, 3071, - 3074, 3080, 3086, 3073, 3079, 3081, 3085, 3079, 3084, 3084, - 3083, 3085, 3088, 3082, 3090, 3086, 3089, 3089, 3091, 3091, - 3092, 3092, 3093, 3094, 3095, 3096, 3096, 3093, 0, 3097, - 3094, 3099, 3099, 3090, 3097, 3098, 3102, 3098, 3088, 3100, - 3101, 3104, 3107, 3095, 3103, 3111, 3100, 3101, 3109, 3103, - 3106, 3106, 3110, 3109, 3112, 3102, 3116, 3110, 3113, 3113, - 3104, 3107, 3115, 3115, 3111, 3117, 3118, 3118, 3119, 3119, - 3120, 3122, 3122, 3112, 3124, 3116, 3130, 3120, 3123, 3123, - 3126, 3124, 3129, 3131, 3117, 3126, 0, 3129, 3132, 3132, + 3071, 3068, 3069, 3072, 3070, 3074, 3074, 3075, 3079, 3072, + 3076, 3076, 3075, 3078, 3080, 3081, 3082, 3078, 3083, 3071, + 3084, 3080, 3092, 3085, 3083, 3087, 3087, 3079, 3089, 3089, + 3093, 3090, 3091, 3094, 3081, 3082, 3085, 3091, 3097, 3084, + 3090, 3092, 3096, 3090, 3095, 3095, 3094, 3096, 3099, 3093, + 3101, 3097, 3100, 3100, 3102, 3102, 3103, 3103, 3104, 3105, + 3106, 3107, 3107, 3104, 0, 3108, 3105, 3110, 3110, 3101, + 3108, 3109, 3113, 3109, 3099, 3111, 3112, 3115, 3118, 3106, + 3114, 3122, 3111, 3112, 3120, 3114, 3117, 3117, 3121, 3120, + 3123, 3113, 3127, 3121, 3124, 3124, 3115, 3118, 3126, 3126, - 3133, 3133, 0, 0, 0, 3130, 0, 0, 0, 0, - 0, 0, 3131, 3137, 3137, 3137, 3137, 3137, 3137, 3137, - 3138, 3138, 3138, 3138, 3138, 3138, 3138, 3139, 3139, 3139, - 3139, 3139, 3139, 3139, 3140, 3140, 3140, 3140, 3140, 3140, - 3140, 3141, 3141, 3141, 3141, 3141, 3141, 3141, 3142, 3142, - 3142, 3142, 3142, 3142, 3142, 3143, 3143, 3143, 3143, 3143, - 3143, 3143, 3145, 3145, 0, 3145, 3145, 3145, 3145, 3146, - 3146, 0, 0, 0, 3146, 3146, 3147, 3147, 0, 0, - 3147, 0, 3147, 3148, 0, 0, 0, 0, 0, 3148, - 3149, 3149, 0, 0, 0, 3149, 3149, 3150, 0, 0, + 3122, 3128, 3129, 3129, 3130, 3130, 3131, 3133, 3133, 3123, + 3135, 3127, 3141, 3131, 3134, 3134, 3137, 3135, 3140, 3142, + 3128, 3137, 0, 3140, 3143, 3143, 3144, 3144, 0, 0, + 0, 3141, 0, 0, 0, 0, 0, 0, 3142, 3148, + 3148, 3148, 3148, 3148, 3148, 3148, 3149, 3149, 3149, 3149, + 3149, 3149, 3149, 3150, 3150, 3150, 3150, 3150, 3150, 3150, + 3151, 3151, 3151, 3151, 3151, 3151, 3151, 3152, 3152, 3152, + 3152, 3152, 3152, 3152, 3153, 3153, 3153, 3153, 3153, 3153, + 3153, 3154, 3154, 3154, 3154, 3154, 3154, 3154, 3156, 3156, + 0, 3156, 3156, 3156, 3156, 3157, 3157, 0, 0, 0, + + 3157, 3157, 3158, 3158, 0, 0, 3158, 0, 3158, 3159, + 0, 0, 0, 0, 0, 3159, 3160, 3160, 0, 0, + 0, 3160, 3160, 3161, 0, 0, 0, 0, 0, 3161, + 3162, 3162, 0, 3162, 3162, 3162, 3162, 3163, 0, 0, + 0, 0, 0, 3163, 3164, 3164, 0, 0, 0, 3164, + 3164, 3165, 3165, 0, 3165, 3165, 3165, 3165, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, + 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147, 3147 - 0, 0, 0, 3150, 3151, 3151, 0, 3151, 3151, 3151, - 3151, 3152, 0, 0, 0, 0, 0, 3152, 3153, 3153, - 0, 0, 0, 3153, 3153, 3154, 3154, 0, 3154, 3154, - 3154, 3154, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, 3136, - 3136, 3136, 3136 } ; static yy_state_type yy_last_accepting_state; @@ -3023,7 +3032,7 @@ static void config_end_include(void) } #endif -#line 3024 "" +#line 3034 "" #define YY_NO_INPUT 1 #line 191 "./util/configlexer.lex" #ifndef YY_NO_UNPUT @@ -3032,9 +3041,9 @@ static void config_end_include(void) #ifndef YY_NO_INPUT #define YY_NO_INPUT 1 #endif -#line 3033 "" +#line 3043 "" -#line 3035 "" +#line 3045 "" #define INITIAL 0 #define quotedstring 1 @@ -3258,7 +3267,7 @@ YY_DECL { #line 211 "./util/configlexer.lex" -#line 3259 "" +#line 3269 "" while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ { @@ -3291,13 +3300,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3137 ) + if ( yy_current_state >= 3148 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 6133 ); + while ( yy_base[yy_current_state] != 6159 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -4806,40 +4815,45 @@ YY_RULE_SETUP { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } YY_BREAK case 295: -/* rule 295 can match eol */ YY_RULE_SETUP #line 520 "./util/configlexer.lex" +{ YDVAR(2, VAR_EDNS_CLIENT_TAG) } + YY_BREAK +case 296: +/* rule 296 can match eol */ +YY_RULE_SETUP +#line 521 "./util/configlexer.lex" { LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK /* Quoted strings. Strip leading and ending quotes */ -case 296: +case 297: YY_RULE_SETUP -#line 523 "./util/configlexer.lex" +#line 524 "./util/configlexer.lex" { BEGIN(quotedstring); LEXOUT(("QS ")); } YY_BREAK case YY_STATE_EOF(quotedstring): -#line 524 "./util/configlexer.lex" +#line 525 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 297: -YY_RULE_SETUP -#line 529 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 298: -/* rule 298 can match eol */ YY_RULE_SETUP #line 530 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 299: +/* rule 299 can match eol */ +YY_RULE_SETUP +#line 531 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end \""); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 299: +case 300: YY_RULE_SETUP -#line 532 "./util/configlexer.lex" +#line 533 "./util/configlexer.lex" { LEXOUT(("QE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4852,34 +4866,34 @@ YY_RULE_SETUP } YY_BREAK /* Single Quoted strings. Strip leading and ending quotes */ -case 300: +case 301: YY_RULE_SETUP -#line 544 "./util/configlexer.lex" +#line 545 "./util/configlexer.lex" { BEGIN(singlequotedstr); LEXOUT(("SQS ")); } YY_BREAK case YY_STATE_EOF(singlequotedstr): -#line 545 "./util/configlexer.lex" +#line 546 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); if(--num_args == 0) { BEGIN(INITIAL); } else { BEGIN(val); } } YY_BREAK -case 301: -YY_RULE_SETUP -#line 550 "./util/configlexer.lex" -{ LEXOUT(("STR(%s) ", yytext)); yymore(); } - YY_BREAK case 302: -/* rule 302 can match eol */ YY_RULE_SETUP #line 551 "./util/configlexer.lex" +{ LEXOUT(("STR(%s) ", yytext)); yymore(); } + YY_BREAK +case 303: +/* rule 303 can match eol */ +YY_RULE_SETUP +#line 552 "./util/configlexer.lex" { yyerror("newline inside quoted string, no end '"); cfg_parser->line++; BEGIN(INITIAL); } YY_BREAK -case 303: +case 304: YY_RULE_SETUP -#line 553 "./util/configlexer.lex" +#line 554 "./util/configlexer.lex" { LEXOUT(("SQE ")); if(--num_args == 0) { BEGIN(INITIAL); } @@ -4892,38 +4906,38 @@ YY_RULE_SETUP } YY_BREAK /* include: directive */ -case 304: +case 305: YY_RULE_SETUP -#line 565 "./util/configlexer.lex" +#line 566 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); } YY_BREAK case YY_STATE_EOF(include): -#line 567 "./util/configlexer.lex" +#line 568 "./util/configlexer.lex" { yyerror("EOF inside include directive"); BEGIN(inc_prev); } YY_BREAK -case 305: -YY_RULE_SETUP -#line 571 "./util/configlexer.lex" -{ LEXOUT(("ISP ")); /* ignore */ } - YY_BREAK case 306: -/* rule 306 can match eol */ YY_RULE_SETUP #line 572 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++;} +{ LEXOUT(("ISP ")); /* ignore */ } YY_BREAK case 307: +/* rule 307 can match eol */ YY_RULE_SETUP #line 573 "./util/configlexer.lex" -{ LEXOUT(("IQS ")); BEGIN(include_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++;} YY_BREAK case 308: YY_RULE_SETUP #line 574 "./util/configlexer.lex" +{ LEXOUT(("IQS ")); BEGIN(include_quoted); } + YY_BREAK +case 309: +YY_RULE_SETUP +#line 575 "./util/configlexer.lex" { LEXOUT(("Iunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 0); @@ -4931,27 +4945,27 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_quoted): -#line 579 "./util/configlexer.lex" +#line 580 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 309: -YY_RULE_SETUP -#line 583 "./util/configlexer.lex" -{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } - YY_BREAK case 310: -/* rule 310 can match eol */ YY_RULE_SETUP #line 584 "./util/configlexer.lex" +{ LEXOUT(("ISTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 311: +/* rule 311 can match eol */ +YY_RULE_SETUP +#line 585 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 311: +case 312: YY_RULE_SETUP -#line 586 "./util/configlexer.lex" +#line 587 "./util/configlexer.lex" { LEXOUT(("IQE ")); yytext[yyleng - 1] = '\0'; @@ -4961,7 +4975,7 @@ YY_RULE_SETUP YY_BREAK case YY_STATE_EOF(INITIAL): case YY_STATE_EOF(val): -#line 592 "./util/configlexer.lex" +#line 593 "./util/configlexer.lex" { LEXOUT(("LEXEOF ")); yy_set_bol(1); /* Set beginning of line, so "^" rules match. */ @@ -4976,39 +4990,39 @@ case YY_STATE_EOF(val): } YY_BREAK /* include-toplevel: directive */ -case 312: +case 313: YY_RULE_SETUP -#line 606 "./util/configlexer.lex" +#line 607 "./util/configlexer.lex" { LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include_toplevel); } YY_BREAK case YY_STATE_EOF(include_toplevel): -#line 609 "./util/configlexer.lex" +#line 610 "./util/configlexer.lex" { yyerror("EOF inside include_toplevel directive"); BEGIN(inc_prev); } YY_BREAK -case 313: -YY_RULE_SETUP -#line 613 "./util/configlexer.lex" -{ LEXOUT(("ITSP ")); /* ignore */ } - YY_BREAK case 314: -/* rule 314 can match eol */ YY_RULE_SETUP #line 614 "./util/configlexer.lex" -{ LEXOUT(("NL\n")); cfg_parser->line++; } +{ LEXOUT(("ITSP ")); /* ignore */ } YY_BREAK case 315: +/* rule 315 can match eol */ YY_RULE_SETUP #line 615 "./util/configlexer.lex" -{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } +{ LEXOUT(("NL\n")); cfg_parser->line++; } YY_BREAK case 316: YY_RULE_SETUP #line 616 "./util/configlexer.lex" +{ LEXOUT(("ITQS ")); BEGIN(include_toplevel_quoted); } + YY_BREAK +case 317: +YY_RULE_SETUP +#line 617 "./util/configlexer.lex" { LEXOUT(("ITunquotedstr(%s) ", yytext)); config_start_include_glob(yytext, 1); @@ -5017,29 +5031,29 @@ YY_RULE_SETUP } YY_BREAK case YY_STATE_EOF(include_toplevel_quoted): -#line 622 "./util/configlexer.lex" +#line 623 "./util/configlexer.lex" { yyerror("EOF inside quoted string"); BEGIN(inc_prev); } YY_BREAK -case 317: -YY_RULE_SETUP -#line 626 "./util/configlexer.lex" -{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } - YY_BREAK case 318: -/* rule 318 can match eol */ YY_RULE_SETUP #line 627 "./util/configlexer.lex" +{ LEXOUT(("ITSTR(%s) ", yytext)); yymore(); } + YY_BREAK +case 319: +/* rule 319 can match eol */ +YY_RULE_SETUP +#line 628 "./util/configlexer.lex" { yyerror("newline before \" in include name"); cfg_parser->line++; BEGIN(inc_prev); } YY_BREAK -case 319: +case 320: YY_RULE_SETUP -#line 631 "./util/configlexer.lex" +#line 632 "./util/configlexer.lex" { LEXOUT(("ITQE ")); yytext[yyleng - 1] = '\0'; @@ -5048,33 +5062,33 @@ YY_RULE_SETUP return (VAR_FORCE_TOPLEVEL); } YY_BREAK -case 320: +case 321: YY_RULE_SETUP -#line 639 "./util/configlexer.lex" +#line 640 "./util/configlexer.lex" { LEXOUT(("unquotedstr(%s) ", yytext)); if(--num_args == 0) { BEGIN(INITIAL); } yylval.str = strdup(yytext); return STRING_ARG; } YY_BREAK -case 321: +case 322: YY_RULE_SETUP -#line 643 "./util/configlexer.lex" +#line 644 "./util/configlexer.lex" { ub_c_error_msg("unknown keyword '%s'", yytext); } YY_BREAK -case 322: +case 323: YY_RULE_SETUP -#line 647 "./util/configlexer.lex" +#line 648 "./util/configlexer.lex" { ub_c_error_msg("stray '%s'", yytext); } YY_BREAK -case 323: +case 324: YY_RULE_SETUP -#line 651 "./util/configlexer.lex" +#line 652 "./util/configlexer.lex" ECHO; YY_BREAK -#line 5075 "" +#line 5090 "" case YY_END_OF_BUFFER: { @@ -5369,7 +5383,7 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3137 ) + if ( yy_current_state >= 3148 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; @@ -5397,11 +5411,11 @@ static int yy_get_next_buffer (void) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 3137 ) + if ( yy_current_state >= 3148 ) yy_c = yy_meta[yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 3136); + yy_is_jam = (yy_current_state == 3147); return yy_is_jam ? 0 : yy_current_state; } @@ -6040,6 +6054,6 @@ void yyfree (void * ptr ) #define YYTABLES_NAME "yytables" -#line 651 "./util/configlexer.lex" +#line 652 "./util/configlexer.lex" diff --git a/util/configlexer.lex b/util/configlexer.lex index 83cea4b99..79a0edcad 100644 --- a/util/configlexer.lex +++ b/util/configlexer.lex @@ -517,6 +517,7 @@ name-v4{COLON} { YDVAR(1, VAR_IPSET_NAME_V4) } name-v6{COLON} { YDVAR(1, VAR_IPSET_NAME_V6) } udp-upstream-without-downstream{COLON} { YDVAR(1, VAR_UDP_UPSTREAM_WITHOUT_DOWNSTREAM) } tcp-connection-limit{COLON} { YDVAR(2, VAR_TCP_CONNECTION_LIMIT) } +edns-client-tag{COLON} { YDVAR(2, VAR_EDNS_CLIENT_TAG) } {NEWLINE} { LEXOUT(("NL\n")); cfg_parser->line++; } /* Quoted strings. Strip leading and ending quotes */ diff --git a/util/configparser.c b/util/configparser.c index 2c9af619a..1d5be9fa0 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.5. */ +/* A Bison parser, made by GNU Bison 3.5.1. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -48,7 +48,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.5" +#define YYBISON_VERSION "3.5.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -431,7 +431,8 @@ extern int yydebug; VAR_RPZ_LOG = 543, VAR_RPZ_LOG_NAME = 544, VAR_DYNLIB = 545, - VAR_DYNLIB_FILE = 546 + VAR_DYNLIB_FILE = 546, + VAR_EDNS_CLIENT_TAG = 547 }; #endif /* Tokens. */ @@ -724,6 +725,7 @@ extern int yydebug; #define VAR_RPZ_LOG_NAME 544 #define VAR_DYNLIB 545 #define VAR_DYNLIB_FILE 546 +#define VAR_EDNS_CLIENT_TAG 547 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -733,7 +735,7 @@ union YYSTYPE char* str; -#line 737 "util/configparser.c" +#line 739 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -1052,19 +1054,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 2 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 620 +#define YYLAST 622 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 292 +#define YYNTOKENS 293 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 317 +#define YYNNTS 318 /* YYNRULES -- Number of rules. */ -#define YYNRULES 610 +#define YYNRULES 612 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 905 +#define YYNSTATES 909 #define YYUNDEFTOK 2 -#define YYMAXUTOK 546 +#define YYMAXUTOK 547 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1130,7 +1132,7 @@ static const yytype_int16 yytranslate[] = 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291 + 285, 286, 287, 288, 289, 290, 291, 292 }; #if YYDEBUG @@ -1158,47 +1160,47 @@ static const yytype_int16 yyrline[] = 273, 273, 273, 274, 274, 274, 275, 275, 275, 276, 276, 277, 278, 278, 279, 279, 280, 280, 281, 281, 282, 282, 282, 283, 283, 283, 284, 284, 284, 285, - 285, 286, 286, 287, 287, 288, 290, 302, 303, 304, - 304, 304, 304, 304, 305, 305, 307, 319, 320, 321, - 321, 321, 321, 322, 322, 324, 338, 339, 340, 340, - 340, 340, 341, 341, 341, 343, 360, 361, 362, 362, - 362, 362, 363, 363, 363, 364, 367, 386, 403, 411, - 421, 429, 446, 447, 448, 448, 448, 448, 448, 449, - 449, 449, 450, 450, 452, 461, 470, 481, 490, 499, - 508, 519, 528, 540, 554, 569, 580, 597, 614, 631, - 648, 663, 678, 691, 706, 715, 724, 733, 742, 751, - 760, 769, 778, 787, 796, 805, 814, 823, 832, 845, - 854, 867, 876, 885, 894, 901, 908, 917, 924, 933, - 941, 948, 955, 963, 972, 981, 990, 1004, 1013, 1022, - 1031, 1040, 1049, 1058, 1065, 1072, 1098, 1106, 1113, 1120, - 1127, 1134, 1142, 1150, 1158, 1165, 1176, 1187, 1194, 1203, - 1212, 1221, 1228, 1235, 1243, 1251, 1261, 1271, 1281, 1295, - 1303, 1316, 1327, 1335, 1348, 1357, 1366, 1375, 1385, 1395, - 1403, 1416, 1425, 1433, 1442, 1450, 1463, 1472, 1479, 1489, - 1499, 1509, 1519, 1529, 1539, 1549, 1559, 1566, 1573, 1580, - 1589, 1598, 1607, 1616, 1623, 1633, 1653, 1660, 1678, 1691, - 1704, 1713, 1722, 1731, 1740, 1750, 1760, 1771, 1780, 1789, - 1798, 1807, 1816, 1825, 1838, 1851, 1860, 1867, 1876, 1885, - 1894, 1903, 1911, 1924, 1932, 1973, 1980, 1995, 2005, 2015, - 2022, 2029, 2036, 2045, 2053, 2067, 2088, 2109, 2121, 2133, - 2145, 2154, 2175, 2185, 2194, 2202, 2210, 2223, 2236, 2251, - 2266, 2275, 2284, 2290, 2299, 2308, 2318, 2328, 2341, 2354, - 2366, 2380, 2392, 2406, 2416, 2423, 2430, 2439, 2448, 2458, - 2468, 2478, 2485, 2492, 2501, 2510, 2520, 2530, 2537, 2544, - 2551, 2559, 2569, 2579, 2589, 2599, 2638, 2648, 2656, 2664, - 2679, 2688, 2693, 2694, 2695, 2695, 2695, 2696, 2696, 2696, - 2697, 2697, 2699, 2709, 2718, 2725, 2732, 2739, 2746, 2753, - 2760, 2765, 2766, 2767, 2767, 2767, 2768, 2768, 2768, 2769, - 2770, 2770, 2771, 2771, 2772, 2772, 2773, 2774, 2775, 2776, - 2777, 2778, 2780, 2789, 2799, 2806, 2813, 2822, 2829, 2836, - 2843, 2850, 2859, 2868, 2875, 2882, 2892, 2902, 2912, 2922, - 2932, 2942, 2947, 2948, 2949, 2951, 2957, 2962, 2963, 2964, - 2966, 2972, 2982, 2989, 2998, 3006, 3011, 3012, 3014, 3014, - 3014, 3015, 3015, 3016, 3017, 3018, 3019, 3020, 3022, 3032, - 3041, 3048, 3057, 3064, 3073, 3081, 3094, 3102, 3115, 3120, - 3121, 3122, 3122, 3123, 3123, 3123, 3124, 3126, 3138, 3150, - 3162, 3177, 3190, 3203, 3214, 3219, 3220, 3221, 3221, 3223, - 3238 + 285, 286, 286, 287, 287, 288, 288, 290, 302, 303, + 304, 304, 304, 304, 304, 305, 305, 307, 319, 320, + 321, 321, 321, 321, 322, 322, 324, 338, 339, 340, + 340, 340, 340, 341, 341, 341, 343, 360, 361, 362, + 362, 362, 362, 363, 363, 363, 364, 367, 386, 403, + 411, 421, 429, 446, 447, 448, 448, 448, 448, 448, + 449, 449, 449, 450, 450, 452, 461, 470, 481, 490, + 499, 508, 519, 528, 540, 554, 569, 580, 597, 614, + 631, 648, 663, 678, 691, 706, 715, 724, 733, 742, + 751, 760, 769, 778, 787, 796, 805, 814, 823, 832, + 845, 854, 867, 876, 885, 894, 901, 908, 917, 924, + 933, 941, 948, 955, 963, 972, 981, 990, 1004, 1013, + 1022, 1031, 1040, 1049, 1058, 1065, 1072, 1098, 1106, 1113, + 1120, 1127, 1134, 1142, 1150, 1158, 1165, 1176, 1187, 1194, + 1203, 1212, 1221, 1228, 1235, 1243, 1251, 1261, 1271, 1281, + 1295, 1303, 1316, 1327, 1335, 1348, 1357, 1366, 1375, 1385, + 1395, 1403, 1416, 1425, 1433, 1442, 1450, 1463, 1472, 1479, + 1489, 1499, 1509, 1519, 1529, 1539, 1549, 1559, 1566, 1573, + 1580, 1589, 1598, 1607, 1616, 1623, 1633, 1653, 1660, 1678, + 1691, 1704, 1713, 1722, 1731, 1740, 1750, 1760, 1771, 1780, + 1789, 1798, 1807, 1816, 1825, 1838, 1851, 1860, 1867, 1876, + 1885, 1894, 1903, 1911, 1924, 1932, 1973, 1980, 1995, 2005, + 2015, 2022, 2029, 2036, 2045, 2053, 2067, 2088, 2109, 2121, + 2133, 2145, 2154, 2175, 2185, 2194, 2202, 2210, 2223, 2236, + 2251, 2266, 2275, 2284, 2290, 2299, 2308, 2318, 2328, 2341, + 2354, 2366, 2380, 2392, 2406, 2421, 2431, 2438, 2445, 2454, + 2463, 2473, 2483, 2493, 2500, 2507, 2516, 2525, 2535, 2545, + 2552, 2559, 2566, 2574, 2584, 2594, 2604, 2614, 2653, 2663, + 2671, 2679, 2694, 2703, 2708, 2709, 2710, 2710, 2710, 2711, + 2711, 2711, 2712, 2712, 2714, 2724, 2733, 2740, 2747, 2754, + 2761, 2768, 2775, 2780, 2781, 2782, 2782, 2782, 2783, 2783, + 2783, 2784, 2785, 2785, 2786, 2786, 2787, 2787, 2788, 2789, + 2790, 2791, 2792, 2793, 2795, 2804, 2814, 2821, 2828, 2837, + 2844, 2851, 2858, 2865, 2874, 2883, 2890, 2897, 2907, 2917, + 2927, 2937, 2947, 2957, 2962, 2963, 2964, 2966, 2972, 2977, + 2978, 2979, 2981, 2987, 2997, 3004, 3013, 3021, 3026, 3027, + 3029, 3029, 3029, 3030, 3030, 3031, 3032, 3033, 3034, 3035, + 3037, 3047, 3056, 3063, 3072, 3079, 3088, 3096, 3109, 3117, + 3130, 3135, 3136, 3137, 3137, 3138, 3138, 3138, 3139, 3141, + 3153, 3165, 3177, 3192, 3205, 3218, 3229, 3234, 3235, 3236, + 3236, 3238, 3253 }; #endif @@ -1314,17 +1316,17 @@ static const char *const yytname[] = "VAR_IPSET_NAME_V4", "VAR_IPSET_NAME_V6", "VAR_TLS_SESSION_TICKET_KEYS", "VAR_RPZ", "VAR_TAGS", "VAR_RPZ_ACTION_OVERRIDE", "VAR_RPZ_CNAME_OVERRIDE", "VAR_RPZ_LOG", "VAR_RPZ_LOG_NAME", - "VAR_DYNLIB", "VAR_DYNLIB_FILE", "$accept", "toplevelvars", - "toplevelvar", "force_toplevel", "serverstart", "contents_server", - "content_server", "stubstart", "contents_stub", "content_stub", - "forwardstart", "contents_forward", "content_forward", "viewstart", - "contents_view", "content_view", "authstart", "contents_auth", - "content_auth", "rpz_tag", "rpz_action_override", "rpz_cname_override", - "rpz_log", "rpz_log_name", "rpzstart", "contents_rpz", "content_rpz", - "server_num_threads", "server_verbosity", "server_statistics_interval", - "server_statistics_cumulative", "server_extended_statistics", - "server_shm_enable", "server_shm_key", "server_port", - "server_send_client_subnet", "server_client_subnet_zone", + "VAR_DYNLIB", "VAR_DYNLIB_FILE", "VAR_EDNS_CLIENT_TAG", "$accept", + "toplevelvars", "toplevelvar", "force_toplevel", "serverstart", + "contents_server", "content_server", "stubstart", "contents_stub", + "content_stub", "forwardstart", "contents_forward", "content_forward", + "viewstart", "contents_view", "content_view", "authstart", + "contents_auth", "content_auth", "rpz_tag", "rpz_action_override", + "rpz_cname_override", "rpz_log", "rpz_log_name", "rpzstart", + "contents_rpz", "content_rpz", "server_num_threads", "server_verbosity", + "server_statistics_interval", "server_statistics_cumulative", + "server_extended_statistics", "server_shm_enable", "server_shm_key", + "server_port", "server_send_client_subnet", "server_client_subnet_zone", "server_client_subnet_always_forward", "server_client_subnet_opcode", "server_max_client_subnet_ipv4", "server_max_client_subnet_ipv6", "server_min_client_subnet_ipv4", "server_min_client_subnet_ipv6", @@ -1403,11 +1405,12 @@ static const char *const yytname[] = "server_qname_minimisation_strict", "server_ipsecmod_enabled", "server_ipsecmod_ignore_bogus", "server_ipsecmod_hook", "server_ipsecmod_max_ttl", "server_ipsecmod_whitelist", - "server_ipsecmod_strict", "stub_name", "stub_host", "stub_addr", - "stub_first", "stub_no_cache", "stub_ssl_upstream", "stub_prime", - "forward_name", "forward_host", "forward_addr", "forward_first", - "forward_no_cache", "forward_ssl_upstream", "auth_name", "auth_zonefile", - "auth_master", "auth_url", "auth_allow_notify", "auth_for_downstream", + "server_ipsecmod_strict", "server_edns_client_tag", "stub_name", + "stub_host", "stub_addr", "stub_first", "stub_no_cache", + "stub_ssl_upstream", "stub_prime", "forward_name", "forward_host", + "forward_addr", "forward_first", "forward_no_cache", + "forward_ssl_upstream", "auth_name", "auth_zonefile", "auth_master", + "auth_url", "auth_allow_notify", "auth_for_downstream", "auth_for_upstream", "auth_fallback_enabled", "view_name", "view_local_zone", "view_response_ip", "view_response_ip_data", "view_local_data", "view_local_data_ptr", "view_first", "rcstart", @@ -1477,7 +1480,7 @@ static const yytype_int16 yytoknum[] = 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546 + 545, 546, 547 }; # endif @@ -1518,7 +1521,7 @@ static const yytype_int16 yypact[] = 241, 242, 243, 244, 245, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 271, 272, - 273, 275, 276, 277, 279, 313, 314, 315, 316, -285, + 273, 275, 276, 277, 279, 313, 314, 315, 316, 320, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, @@ -1538,54 +1541,54 @@ static const yytype_int16 yypact[] = -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, 320, 321, 322, 364, 365, 366, - 367, -285, -285, -285, -285, -285, -285, -285, -285, 368, - 369, 370, 371, 372, 376, -285, -285, -285, -285, -285, - -285, -285, 380, 381, 406, 407, 408, 410, 421, -285, - -285, -285, -285, -285, -285, -285, -285, 422, 423, 424, - 425, 426, 427, 428, 429, -285, -285, -285, -285, -285, - -285, -285, -285, -285, 430, 431, 432, 433, 434, -285, + -285, -285, -285, -285, -285, -285, 321, 322, 364, 365, + 366, 367, 368, -285, -285, -285, -285, -285, -285, -285, + -285, 369, 370, 371, 372, 376, 380, -285, -285, -285, + -285, -285, -285, -285, 381, 406, 407, 408, 410, 421, + 422, -285, -285, -285, -285, -285, -285, -285, -285, 423, + 424, 425, 426, 427, 428, 429, 430, -285, -285, -285, + -285, -285, -285, -285, -285, -285, 431, 432, 433, 434, + 435, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, 436, 437, 438, 439, 440, 480, 482, 498, + -285, -285, -285, -285, -285, -285, -285, -285, -285, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 508, 515, + 516, 517, 518, 519, 520, 521, 523, 524, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - 435, 436, 437, 438, 439, 440, 480, 482, -285, -285, - -285, -285, -285, -285, -285, -285, -285, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 515, 516, - 517, 518, 519, 520, 521, 523, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, 524, -285, -285, 525, - -285, -285, 526, 527, 528, 529, 532, 535, 538, 539, - 548, 549, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, 550, 552, 553, 554, 555, 556, -285, - -285, -285, -285, -285, -285, -285, 557, 558, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, 525, -285, + -285, 526, -285, -285, 527, 528, 529, 532, 535, 538, + 539, 548, 549, 550, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, 552, 553, 554, 555, 556, + 557, -285, -285, -285, -285, -285, -285, -285, 558, 559, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, 559, 560, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, 561, 562, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, 561, 562, - 563, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, 564, 565, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, 566, 567, 568, 569, 570, 571, -285, -285, + 563, 564, 565, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, 566, 567, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, 568, 569, 570, 571, 572, 573, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, 572, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, 574, -285, -285, + -285, -285, -285, -285, -285, -285, -285, 575, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, 573, - -285, -285, 574, 575, -285, -285, -285, -285, -285, -285, + -285, -285, 576, -285, -285, 577, 578, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, 576, 577, 578, -285, -285, -285, - -285, -285, -285, -285, -285 + -285, -285, -285, -285, -285, -285, -285, 579, 580, 581, + -285, -285, -285, -285, -285, -285, -285, -285, -285 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1593,10 +1596,10 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 2, 0, 1, 18, 19, 216, 226, 491, 551, 510, - 235, 565, 588, 245, 604, 261, 556, 3, 17, 21, - 218, 228, 237, 247, 263, 493, 512, 553, 558, 567, - 590, 606, 4, 5, 6, 10, 14, 15, 8, 9, + 2, 0, 1, 18, 19, 217, 227, 493, 553, 512, + 236, 567, 590, 246, 606, 262, 558, 3, 17, 21, + 219, 229, 238, 248, 264, 495, 514, 555, 560, 569, + 592, 608, 4, 5, 6, 10, 14, 15, 8, 9, 7, 16, 11, 12, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1616,74 +1619,74 @@ static const yytype_int16 yydefact[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, - 22, 23, 86, 89, 98, 186, 187, 24, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 37, 77, - 25, 90, 91, 48, 70, 85, 26, 27, 30, 31, - 28, 29, 32, 33, 34, 35, 36, 121, 198, 122, - 124, 125, 126, 200, 205, 201, 212, 213, 214, 215, - 182, 87, 76, 102, 119, 120, 210, 207, 123, 38, - 39, 40, 41, 42, 78, 92, 93, 108, 64, 74, - 65, 190, 191, 103, 58, 59, 189, 60, 61, 112, - 116, 130, 139, 165, 142, 211, 113, 71, 43, 44, - 45, 100, 131, 132, 133, 46, 47, 49, 50, 52, - 53, 51, 137, 54, 55, 56, 62, 81, 117, 95, - 138, 88, 161, 96, 97, 114, 115, 208, 101, 57, - 79, 82, 63, 66, 104, 105, 80, 162, 106, 67, - 68, 69, 199, 118, 175, 176, 177, 178, 179, 180, - 188, 107, 75, 109, 110, 111, 163, 72, 73, 94, - 83, 84, 99, 127, 128, 209, 129, 134, 135, 136, - 166, 167, 169, 171, 172, 170, 173, 183, 140, 141, - 145, 146, 143, 144, 147, 148, 150, 149, 202, 204, - 203, 164, 174, 192, 194, 193, 195, 196, 197, 168, - 181, 184, 185, 206, 0, 0, 0, 0, 0, 0, - 0, 217, 219, 220, 221, 223, 224, 225, 222, 0, - 0, 0, 0, 0, 0, 227, 229, 230, 231, 232, - 233, 234, 0, 0, 0, 0, 0, 0, 0, 236, - 238, 239, 242, 243, 240, 244, 241, 0, 0, 0, - 0, 0, 0, 0, 0, 246, 248, 249, 250, 251, - 255, 252, 253, 254, 0, 0, 0, 0, 0, 266, - 270, 271, 272, 273, 262, 264, 265, 267, 268, 269, - 0, 0, 0, 0, 0, 0, 0, 0, 492, 494, - 496, 495, 501, 497, 498, 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 511, 513, 515, 514, - 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, - 526, 527, 528, 529, 530, 531, 0, 552, 554, 0, - 557, 559, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 566, 568, 569, 570, 572, 573, 571, 574, - 575, 576, 577, 0, 0, 0, 0, 0, 0, 589, - 591, 592, 593, 594, 595, 596, 0, 0, 605, 607, - 608, 275, 274, 281, 294, 292, 304, 300, 301, 305, - 302, 303, 306, 307, 308, 309, 310, 333, 334, 335, - 336, 337, 362, 363, 364, 369, 370, 297, 371, 372, - 375, 373, 374, 377, 378, 379, 393, 348, 349, 351, - 352, 380, 396, 342, 344, 397, 403, 404, 405, 298, - 361, 421, 422, 343, 416, 326, 293, 338, 394, 400, - 381, 0, 0, 425, 299, 276, 325, 385, 277, 295, - 296, 339, 340, 423, 383, 387, 388, 278, 426, 365, - 392, 327, 347, 398, 399, 402, 415, 341, 419, 417, - 418, 353, 360, 389, 390, 354, 355, 382, 407, 328, - 329, 332, 311, 313, 314, 315, 316, 317, 427, 428, - 430, 366, 367, 368, 376, 431, 432, 433, 0, 0, - 0, 384, 356, 358, 561, 442, 446, 444, 443, 447, - 445, 0, 0, 450, 451, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 386, 401, 420, 455, 456, - 357, 434, 0, 0, 0, 0, 0, 0, 408, 409, - 410, 411, 412, 413, 414, 562, 350, 345, 406, 324, - 279, 280, 346, 457, 459, 458, 460, 461, 462, 312, - 319, 452, 454, 453, 318, 0, 331, 391, 429, 330, - 359, 320, 321, 323, 322, 463, 464, 465, 469, 468, - 466, 467, 470, 471, 472, 473, 475, 474, 484, 0, - 488, 489, 0, 0, 490, 476, 482, 477, 478, 479, - 481, 483, 480, 256, 257, 258, 259, 260, 502, 504, - 503, 506, 507, 508, 509, 505, 532, 534, 535, 536, - 537, 538, 539, 540, 541, 542, 533, 543, 544, 545, - 546, 547, 548, 549, 550, 555, 560, 578, 579, 580, - 583, 581, 582, 584, 585, 586, 587, 597, 598, 599, - 600, 601, 602, 609, 610, 395, 424, 441, 563, 564, - 448, 449, 435, 436, 0, 0, 0, 440, 603, 485, - 486, 487, 439, 437, 438 + 20, 22, 23, 86, 89, 98, 186, 187, 24, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 37, + 77, 25, 90, 91, 48, 70, 85, 26, 27, 30, + 31, 28, 29, 32, 33, 34, 35, 36, 121, 198, + 122, 124, 125, 126, 200, 205, 201, 212, 213, 214, + 215, 182, 87, 76, 102, 119, 120, 210, 207, 123, + 38, 39, 40, 41, 42, 78, 92, 93, 108, 64, + 74, 65, 190, 191, 103, 58, 59, 189, 60, 61, + 112, 116, 130, 139, 165, 142, 211, 113, 71, 43, + 44, 45, 100, 131, 132, 133, 46, 47, 49, 50, + 52, 53, 51, 137, 54, 55, 56, 62, 81, 117, + 95, 138, 88, 161, 96, 97, 114, 115, 208, 101, + 57, 79, 82, 63, 66, 104, 105, 80, 162, 106, + 67, 68, 69, 199, 118, 175, 176, 177, 178, 179, + 180, 188, 107, 75, 109, 110, 111, 163, 72, 73, + 94, 83, 84, 99, 127, 128, 209, 129, 134, 135, + 136, 166, 167, 169, 171, 172, 170, 173, 183, 140, + 141, 145, 146, 143, 144, 147, 148, 150, 149, 202, + 204, 203, 164, 174, 192, 194, 193, 195, 196, 197, + 216, 168, 181, 184, 185, 206, 0, 0, 0, 0, + 0, 0, 0, 218, 220, 221, 222, 224, 225, 226, + 223, 0, 0, 0, 0, 0, 0, 228, 230, 231, + 232, 233, 234, 235, 0, 0, 0, 0, 0, 0, + 0, 237, 239, 240, 243, 244, 241, 245, 242, 0, + 0, 0, 0, 0, 0, 0, 0, 247, 249, 250, + 251, 252, 256, 253, 254, 255, 0, 0, 0, 0, + 0, 267, 271, 272, 273, 274, 263, 265, 266, 268, + 269, 270, 0, 0, 0, 0, 0, 0, 0, 0, + 494, 496, 498, 497, 503, 499, 500, 501, 502, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 513, 515, + 517, 516, 518, 519, 520, 521, 522, 523, 524, 525, + 526, 527, 528, 529, 530, 531, 532, 533, 0, 554, + 556, 0, 559, 561, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 568, 570, 571, 572, 574, 575, + 573, 576, 577, 578, 579, 0, 0, 0, 0, 0, + 0, 591, 593, 594, 595, 596, 597, 598, 0, 0, + 607, 609, 610, 276, 275, 282, 295, 293, 305, 301, + 302, 306, 303, 304, 307, 308, 309, 310, 311, 334, + 335, 336, 337, 338, 363, 364, 365, 370, 371, 298, + 372, 373, 376, 374, 375, 378, 379, 380, 394, 349, + 350, 352, 353, 381, 397, 343, 345, 398, 404, 405, + 406, 299, 362, 422, 423, 344, 417, 327, 294, 339, + 395, 401, 382, 0, 0, 426, 300, 277, 326, 386, + 278, 296, 297, 340, 341, 424, 384, 388, 389, 279, + 427, 366, 393, 328, 348, 399, 400, 403, 416, 342, + 420, 418, 419, 354, 361, 390, 391, 355, 356, 383, + 408, 329, 330, 333, 312, 314, 315, 316, 317, 318, + 428, 429, 431, 367, 368, 369, 377, 432, 433, 434, + 0, 0, 0, 385, 357, 359, 563, 443, 447, 445, + 444, 448, 446, 0, 0, 451, 452, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 387, 402, 421, + 456, 457, 358, 435, 0, 0, 0, 0, 0, 0, + 409, 410, 411, 412, 413, 414, 415, 564, 351, 346, + 407, 325, 280, 281, 347, 458, 460, 459, 461, 462, + 463, 313, 320, 453, 455, 454, 319, 0, 332, 392, + 430, 331, 360, 321, 322, 324, 323, 0, 465, 466, + 467, 471, 470, 468, 469, 472, 473, 474, 475, 477, + 476, 486, 0, 490, 491, 0, 0, 492, 478, 484, + 479, 480, 481, 483, 485, 482, 257, 258, 259, 260, + 261, 504, 506, 505, 508, 509, 510, 511, 507, 534, + 536, 537, 538, 539, 540, 541, 542, 543, 544, 535, + 545, 546, 547, 548, 549, 550, 551, 552, 557, 562, + 580, 581, 582, 585, 583, 584, 586, 587, 588, 589, + 599, 600, 601, 602, 603, 604, 611, 612, 396, 425, + 442, 565, 566, 449, 450, 436, 437, 0, 0, 0, + 441, 605, 464, 487, 488, 489, 440, 438, 439 }; /* YYPGOTO[NTERM-NUM]. */ @@ -1711,8 +1714,8 @@ static const yytype_int16 yypgoto[] = -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285, -285, -285, 579, - 580, 581, 582, 583, -285, -285, -285, -285, -285, -285, + -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, + 560, 582, 583, 584, 585, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, @@ -1720,44 +1723,44 @@ static const yytype_int16 yypgoto[] = -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, -285, - -285, -285, -285, -285, -285, -285, -285 + -285, -285, -285, -285, -285, -285, -285, -285 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 1, 17, 18, 19, 32, 239, 20, 33, 441, - 21, 34, 455, 22, 35, 469, 23, 36, 485, 499, - 500, 501, 502, 503, 24, 37, 504, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, - 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 442, 443, 444, 445, - 446, 447, 448, 456, 457, 458, 459, 460, 461, 486, - 487, 488, 489, 490, 491, 492, 493, 470, 471, 472, - 473, 474, 475, 476, 25, 38, 518, 519, 520, 521, - 522, 523, 524, 525, 526, 26, 39, 546, 547, 548, - 549, 550, 551, 552, 553, 554, 555, 556, 557, 558, - 559, 560, 561, 562, 563, 564, 565, 27, 40, 567, - 568, 28, 41, 570, 571, 429, 430, 431, 432, 29, - 42, 582, 583, 584, 585, 586, 587, 588, 589, 590, - 591, 592, 30, 43, 599, 600, 601, 602, 603, 604, - 605, 433, 31, 44, 608, 609, 610 + -1, 1, 17, 18, 19, 32, 240, 20, 33, 443, + 21, 34, 457, 22, 35, 471, 23, 36, 487, 501, + 502, 503, 504, 505, 24, 37, 506, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 428, 429, 430, 444, 445, 446, + 447, 448, 449, 450, 458, 459, 460, 461, 462, 463, + 488, 489, 490, 491, 492, 493, 494, 495, 472, 473, + 474, 475, 476, 477, 478, 25, 38, 520, 521, 522, + 523, 524, 525, 526, 527, 528, 26, 39, 548, 549, + 550, 551, 552, 553, 554, 555, 556, 557, 558, 559, + 560, 561, 562, 563, 564, 565, 566, 567, 27, 40, + 569, 570, 28, 41, 572, 573, 431, 432, 433, 434, + 29, 42, 584, 585, 586, 587, 588, 589, 590, 591, + 592, 593, 594, 30, 43, 601, 602, 603, 604, 605, + 606, 607, 435, 31, 44, 610, 611, 612 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1765,69 +1768,69 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 2, 477, 462, 434, 566, 435, 436, 569, 449, 606, - 607, 3, 4, 611, 612, 613, 450, 451, 593, 594, - 595, 596, 597, 598, 477, 572, 573, 574, 575, 576, - 577, 578, 579, 580, 581, 614, 615, 616, 463, 464, - 617, 618, 619, 620, 621, 622, 5, 623, 624, 625, - 626, 627, 6, 628, 629, 630, 631, 632, 633, 634, - 635, 636, 637, 465, 638, 639, 437, 527, 528, 529, - 530, 531, 532, 533, 534, 535, 536, 537, 538, 539, - 540, 541, 542, 543, 544, 545, 510, 511, 512, 513, - 514, 515, 516, 517, 640, 641, 7, 438, 642, 643, - 439, 452, 644, 453, 645, 646, 647, 648, 649, 650, - 651, 652, 8, 653, 654, 655, 656, 657, 658, 659, - 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, - 670, 466, 467, 671, 672, 673, 674, 675, 676, 677, - 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, - 688, 689, 690, 9, 691, 692, 693, 694, 695, 696, - 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, - 707, 468, 708, 709, 710, 711, 712, 713, 714, 715, - 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, - 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, - 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, - 746, 747, 10, 479, 480, 481, 748, 749, 750, 751, - 752, 753, 754, 484, 755, 756, 757, 758, 759, 440, - 11, 760, 761, 454, 478, 762, 479, 480, 481, 482, - 483, 494, 495, 496, 497, 498, 484, 12, 763, 764, - 765, 766, 767, 768, 769, 770, 13, 771, 772, 773, - 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, - 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, - 14, 794, 795, 796, 15, 797, 798, 799, 0, 800, + 2, 479, 464, 436, 568, 437, 438, 571, 451, 608, + 609, 3, 4, 613, 614, 615, 452, 453, 595, 596, + 597, 598, 599, 600, 479, 574, 575, 576, 577, 578, + 579, 580, 581, 582, 583, 616, 617, 618, 465, 466, + 619, 620, 621, 622, 623, 624, 5, 625, 626, 627, + 628, 629, 6, 630, 631, 632, 633, 634, 635, 636, + 637, 638, 639, 467, 640, 641, 439, 529, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 512, 513, 514, 515, + 516, 517, 518, 519, 642, 643, 7, 440, 644, 645, + 441, 454, 646, 455, 647, 648, 649, 650, 651, 652, + 653, 654, 8, 655, 656, 657, 658, 659, 660, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 468, 469, 673, 674, 675, 676, 677, 678, 679, + 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, + 690, 691, 692, 9, 693, 694, 695, 696, 697, 698, + 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, + 709, 470, 710, 711, 712, 713, 714, 715, 716, 717, + 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, + 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, + 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, + 748, 749, 10, 481, 482, 483, 750, 751, 752, 753, + 754, 755, 756, 486, 757, 758, 759, 760, 761, 442, + 11, 762, 763, 456, 480, 764, 481, 482, 483, 484, + 485, 496, 497, 498, 499, 500, 486, 12, 765, 766, + 767, 768, 769, 770, 771, 772, 13, 773, 774, 775, + 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, + 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, + 14, 796, 797, 798, 15, 799, 800, 801, 0, 802, 16, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 801, 802, 803, 804, 77, 78, 79, - 805, 806, 807, 80, 81, 82, 83, 84, 85, 86, + 74, 75, 76, 803, 804, 805, 806, 77, 78, 79, + 807, 808, 809, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 808, 809, 810, 811, 812, 813, - 814, 815, 816, 121, 122, 123, 817, 124, 125, 126, - 818, 819, 127, 128, 129, 130, 131, 132, 133, 134, + 117, 118, 119, 120, 810, 811, 812, 813, 814, 815, + 816, 817, 818, 121, 122, 123, 819, 124, 125, 126, + 820, 821, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 820, 821, 822, 151, - 823, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 824, 825, 826, 827, 828, 829, 830, 831, 832, - 833, 834, 835, 836, 837, 838, 839, 840, 841, 842, - 843, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 145, 146, 147, 148, 149, 150, 822, 823, 824, 151, + 825, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 826, 827, 828, 829, 830, 831, 832, 833, 834, + 835, 836, 837, 838, 839, 840, 841, 842, 843, 844, + 845, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 844, 201, 845, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 846, 847, - 848, 849, 850, 851, 852, 853, 854, 855, 856, 217, - 218, 219, 220, 221, 222, 857, 858, 859, 860, 861, - 862, 863, 223, 864, 865, 866, 867, 868, 869, 870, - 224, 225, 871, 226, 227, 872, 228, 229, 873, 874, - 230, 231, 232, 233, 234, 235, 236, 237, 875, 876, - 877, 238, 878, 879, 880, 881, 882, 883, 884, 885, - 886, 887, 888, 889, 890, 891, 892, 893, 894, 895, - 896, 897, 898, 899, 900, 901, 902, 903, 904, 0, + 846, 201, 847, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 848, 849, + 850, 851, 852, 853, 854, 855, 856, 857, 858, 217, + 218, 219, 220, 221, 222, 859, 860, 861, 862, 863, + 864, 865, 223, 866, 867, 868, 869, 870, 871, 872, + 224, 225, 873, 226, 227, 874, 228, 229, 875, 876, + 230, 231, 232, 233, 234, 235, 236, 237, 877, 878, + 879, 238, 880, 881, 882, 883, 884, 885, 886, 887, + 239, 888, 889, 890, 891, 892, 893, 894, 895, 896, + 897, 898, 899, 900, 901, 902, 903, 904, 905, 906, + 907, 908, 0, 0, 0, 0, 0, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 505, 506, 507, 508, - 509 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, + 509, 510, 511 }; static const yytype_int16 yycheck[] = @@ -1889,23 +1892,23 @@ static const yytype_int16 yycheck[] = 262, 263, 10, 265, 266, 10, 268, 269, 10, 10, 272, 273, 274, 275, 276, 277, 278, 279, 10, 10, 10, 283, 10, 10, 10, 10, 10, 10, 10, 10, + 292, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 10, -1, + 10, 10, -1, -1, -1, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 37, 37, 37, 37, - 37 + -1, -1, -1, -1, -1, -1, -1, -1, -1, 37, + 37, 37, 37 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_int16 yystos[] = { - 0, 293, 0, 11, 12, 46, 52, 96, 112, 153, - 212, 230, 247, 256, 280, 284, 290, 294, 295, 296, - 299, 302, 305, 308, 316, 536, 547, 569, 573, 581, - 594, 604, 297, 300, 303, 306, 309, 317, 537, 548, - 570, 574, 582, 595, 605, 13, 14, 15, 16, 17, + 0, 294, 0, 11, 12, 46, 52, 96, 112, 153, + 212, 230, 247, 256, 280, 284, 290, 295, 296, 297, + 300, 303, 306, 309, 317, 538, 549, 571, 575, 583, + 596, 606, 298, 301, 304, 307, 310, 318, 539, 550, + 572, 576, 584, 597, 607, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 49, 50, 51, @@ -1924,8 +1927,8 @@ static const yytype_int16 yystos[] = 211, 213, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 241, 242, 243, 244, 245, 246, 254, 262, 263, 265, 266, 268, 269, - 272, 273, 274, 275, 276, 277, 278, 279, 283, 298, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 272, 273, 274, 275, 276, 277, 278, 279, 283, 292, + 299, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, @@ -1943,26 +1946,26 @@ static const yytype_int16 yystos[] = 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 577, - 578, 579, 580, 603, 45, 47, 48, 108, 139, 142, - 271, 301, 508, 509, 510, 511, 512, 513, 514, 45, - 53, 54, 138, 140, 270, 304, 515, 516, 517, 518, - 519, 520, 45, 81, 82, 106, 174, 175, 214, 307, - 529, 530, 531, 532, 533, 534, 535, 45, 255, 257, - 258, 259, 260, 261, 267, 310, 521, 522, 523, 524, - 525, 526, 527, 528, 285, 286, 287, 288, 289, 311, - 312, 313, 314, 315, 318, 521, 522, 523, 524, 525, - 97, 98, 99, 100, 101, 102, 103, 104, 538, 539, - 540, 541, 542, 543, 544, 545, 546, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 549, 550, 551, 552, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, + 509, 579, 580, 581, 582, 605, 45, 47, 48, 108, + 139, 142, 271, 302, 510, 511, 512, 513, 514, 515, + 516, 45, 53, 54, 138, 140, 270, 305, 517, 518, + 519, 520, 521, 522, 45, 81, 82, 106, 174, 175, + 214, 308, 531, 532, 533, 534, 535, 536, 537, 45, + 255, 257, 258, 259, 260, 261, 267, 311, 523, 524, + 525, 526, 527, 528, 529, 530, 285, 286, 287, 288, + 289, 312, 313, 314, 315, 316, 319, 523, 524, 525, + 526, 527, 97, 98, 99, 100, 101, 102, 103, 104, + 540, 541, 542, 543, 544, 545, 546, 547, 548, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, - 563, 564, 565, 566, 567, 568, 113, 571, 572, 291, - 575, 576, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 583, 584, 585, 586, 587, 588, 589, 590, - 591, 592, 593, 248, 249, 250, 251, 252, 253, 596, - 597, 598, 599, 600, 601, 602, 281, 282, 606, 607, - 608, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 563, 564, 565, 566, 567, 568, 569, 570, 113, 573, + 574, 291, 577, 578, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 585, 586, 587, 588, 589, 590, + 591, 592, 593, 594, 595, 248, 249, 250, 251, 252, + 253, 598, 599, 600, 601, 602, 603, 604, 281, 282, + 608, 609, 610, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, @@ -1991,40 +1994,40 @@ static const yytype_int16 yystos[] = 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10 + 10, 10, 10, 10, 10, 10, 10, 10, 10 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 292, 293, 293, 294, 294, 294, 294, 294, 294, - 294, 294, 294, 294, 294, 294, 294, 294, 295, 296, - 297, 297, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 298, 298, 299, 300, 300, 301, - 301, 301, 301, 301, 301, 301, 302, 303, 303, 304, - 304, 304, 304, 304, 304, 305, 306, 306, 307, 307, - 307, 307, 307, 307, 307, 308, 309, 309, 310, 310, - 310, 310, 310, 310, 310, 310, 311, 312, 313, 314, - 315, 316, 317, 317, 318, 318, 318, 318, 318, 318, - 318, 318, 318, 318, 319, 320, 321, 322, 323, 324, + 0, 293, 294, 294, 295, 295, 295, 295, 295, 295, + 295, 295, 295, 295, 295, 295, 295, 295, 296, 297, + 298, 298, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, + 299, 299, 299, 299, 299, 299, 299, 300, 301, 301, + 302, 302, 302, 302, 302, 302, 302, 303, 304, 304, + 305, 305, 305, 305, 305, 305, 306, 307, 307, 308, + 308, 308, 308, 308, 308, 308, 309, 310, 310, 311, + 311, 311, 311, 311, 311, 311, 311, 312, 313, 314, + 315, 316, 317, 318, 318, 319, 319, 319, 319, 319, + 319, 319, 319, 319, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, @@ -2046,19 +2049,19 @@ static const yytype_int16 yyr1[] = 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 537, 538, 538, 538, 538, 538, 538, - 538, 538, 539, 540, 541, 542, 543, 544, 545, 546, - 547, 548, 548, 549, 549, 549, 549, 549, 549, 549, - 549, 549, 549, 549, 549, 549, 549, 549, 549, 549, - 549, 549, 550, 551, 552, 553, 554, 555, 556, 557, + 535, 536, 537, 538, 539, 539, 540, 540, 540, 540, + 540, 540, 540, 540, 541, 542, 543, 544, 545, 546, + 547, 548, 549, 550, 550, 551, 551, 551, 551, 551, + 551, 551, 551, 551, 551, 551, 551, 551, 551, 551, + 551, 551, 551, 551, 552, 553, 554, 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, 565, 566, 567, - 568, 569, 570, 570, 571, 572, 573, 574, 574, 575, - 576, 577, 578, 579, 580, 581, 582, 582, 583, 583, - 583, 583, 583, 583, 583, 583, 583, 583, 584, 585, + 568, 569, 570, 571, 572, 572, 573, 574, 575, 576, + 576, 577, 578, 579, 580, 581, 582, 583, 584, 584, + 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, - 595, 596, 596, 596, 596, 596, 596, 597, 598, 599, - 600, 601, 602, 603, 604, 605, 605, 606, 606, 607, - 608 + 596, 597, 597, 598, 598, 598, 598, 598, 598, 599, + 600, 601, 602, 603, 604, 605, 606, 607, 607, 608, + 608, 609, 610 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -2085,13 +2088,13 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -2103,29 +2106,29 @@ static const yytype_int8 yyr2[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 3, 3, 4, 4, + 4, 3, 3, 2, 2, 2, 2, 2, 2, 3, + 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 3, 3, 4, 4, 4, - 3, 3, 2, 2, 2, 2, 2, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 3, 3, 3, 2, 2, - 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, - 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, + 2, 2, 2, 1, 2, 0, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 1, 2, 0, 1, 2, 1, 2, 0, 1, - 2, 2, 2, 3, 3, 1, 2, 0, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, - 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 3, 1, 2, 0, 1, 1, 2, - 2 + 2, 2, 2, 1, 2, 0, 1, 2, 1, 2, + 0, 1, 2, 2, 2, 3, 3, 1, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 3, 1, 2, 0, 1, + 1, 2, 2 }; @@ -2272,7 +2275,7 @@ yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule) { YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], + yystos[+yyssp[yyi + 1 - yynrhs]], &yyvsp[(yyi + 1) - (yynrhs)] ); YYFPRINTF (stderr, "\n"); @@ -2450,7 +2453,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, */ if (yytoken != YYEMPTY) { - int yyn = yypact[*yyssp]; + int yyn = yypact[+*yyssp]; YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); yysize = yysize0; yyarg[yycount++] = yytname[yytoken]; @@ -2825,7 +2828,7 @@ yyreduce: { OUTYY(("\nP(force-toplevel)\n")); } -#line 2829 "util/configparser.c" +#line 2832 "util/configparser.c" break; case 19: @@ -2833,10 +2836,10 @@ yyreduce: { OUTYY(("\nP(server:)\n")); } -#line 2837 "util/configparser.c" +#line 2840 "util/configparser.c" break; - case 216: + case 217: #line 291 "./util/configparser.y" { struct config_stub* s; @@ -2848,10 +2851,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2852 "util/configparser.c" +#line 2855 "util/configparser.c" break; - case 226: + case 227: #line 308 "./util/configparser.y" { struct config_stub* s; @@ -2863,10 +2866,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2867 "util/configparser.c" +#line 2870 "util/configparser.c" break; - case 235: + case 236: #line 325 "./util/configparser.y" { struct config_view* s; @@ -2880,10 +2883,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2884 "util/configparser.c" +#line 2887 "util/configparser.c" break; - case 245: + case 246: #line 344 "./util/configparser.y" { struct config_auth* s; @@ -2900,10 +2903,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2904 "util/configparser.c" +#line 2907 "util/configparser.c" break; - case 256: + case 257: #line 368 "./util/configparser.y" { uint8_t* bitlist; @@ -2921,10 +2924,10 @@ yyreduce: } } -#line 2925 "util/configparser.c" +#line 2928 "util/configparser.c" break; - case 257: + case 258: #line 387 "./util/configparser.y" { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); @@ -2940,20 +2943,20 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2944 "util/configparser.c" +#line 2947 "util/configparser.c" break; - case 258: + case 259: #line 404 "./util/configparser.y" { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2954 "util/configparser.c" +#line 2957 "util/configparser.c" break; - case 259: + case 260: #line 412 "./util/configparser.y" { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); @@ -2962,20 +2965,20 @@ yyreduce: else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2966 "util/configparser.c" +#line 2969 "util/configparser.c" break; - case 260: + case 261: #line 422 "./util/configparser.y" { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 2976 "util/configparser.c" +#line 2979 "util/configparser.c" break; - case 261: + case 262: #line 430 "./util/configparser.y" { struct config_auth* s; @@ -2992,10 +2995,10 @@ yyreduce: } else yyerror("out of memory"); } -#line 2996 "util/configparser.c" +#line 2999 "util/configparser.c" break; - case 274: + case 275: #line 453 "./util/configparser.y" { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); @@ -3004,10 +3007,10 @@ yyreduce: else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3008 "util/configparser.c" +#line 3011 "util/configparser.c" break; - case 275: + case 276: #line 462 "./util/configparser.y" { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); @@ -3016,10 +3019,10 @@ yyreduce: else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3020 "util/configparser.c" +#line 3023 "util/configparser.c" break; - case 276: + case 277: #line 471 "./util/configparser.y" { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); @@ -3030,10 +3033,10 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3034 "util/configparser.c" +#line 3037 "util/configparser.c" break; - case 277: + case 278: #line 482 "./util/configparser.y" { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); @@ -3042,10 +3045,10 @@ yyreduce: else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3046 "util/configparser.c" +#line 3049 "util/configparser.c" break; - case 278: + case 279: #line 491 "./util/configparser.y" { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); @@ -3054,10 +3057,10 @@ yyreduce: else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3058 "util/configparser.c" +#line 3061 "util/configparser.c" break; - case 279: + case 280: #line 500 "./util/configparser.y" { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); @@ -3066,10 +3069,10 @@ yyreduce: else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3070 "util/configparser.c" +#line 3073 "util/configparser.c" break; - case 280: + case 281: #line 509 "./util/configparser.y" { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); @@ -3080,10 +3083,10 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3084 "util/configparser.c" +#line 3087 "util/configparser.c" break; - case 281: + case 282: #line 520 "./util/configparser.y" { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); @@ -3092,10 +3095,10 @@ yyreduce: else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3096 "util/configparser.c" +#line 3099 "util/configparser.c" break; - case 282: + case 283: #line 529 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3107,10 +3110,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3111 "util/configparser.c" +#line 3114 "util/configparser.c" break; - case 283: + case 284: #line 541 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3123,10 +3126,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3127 "util/configparser.c" +#line 3130 "util/configparser.c" break; - case 284: + case 285: #line 555 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3141,10 +3144,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3145 "util/configparser.c" +#line 3148 "util/configparser.c" break; - case 285: + case 286: #line 570 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3155,10 +3158,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3159 "util/configparser.c" +#line 3162 "util/configparser.c" break; - case 286: + case 287: #line 581 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3175,10 +3178,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3179 "util/configparser.c" +#line 3182 "util/configparser.c" break; - case 287: + case 288: #line 598 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3195,10 +3198,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3199 "util/configparser.c" +#line 3202 "util/configparser.c" break; - case 288: + case 289: #line 615 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3215,10 +3218,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3219 "util/configparser.c" +#line 3222 "util/configparser.c" break; - case 289: + case 290: #line 632 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3235,10 +3238,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3239 "util/configparser.c" +#line 3242 "util/configparser.c" break; - case 290: + case 291: #line 649 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3253,10 +3256,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3257 "util/configparser.c" +#line 3260 "util/configparser.c" break; - case 291: + case 292: #line 664 "./util/configparser.y" { #ifdef CLIENT_SUBNET @@ -3271,10 +3274,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3275 "util/configparser.c" +#line 3278 "util/configparser.c" break; - case 292: + case 293: #line 679 "./util/configparser.y" { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); @@ -3287,10 +3290,10 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3291 "util/configparser.c" +#line 3294 "util/configparser.c" break; - case 293: + case 294: #line 692 "./util/configparser.y" { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); @@ -3305,10 +3308,10 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3309 "util/configparser.c" +#line 3312 "util/configparser.c" break; - case 294: + case 295: #line 707 "./util/configparser.y" { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); @@ -3317,10 +3320,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3321 "util/configparser.c" +#line 3324 "util/configparser.c" break; - case 295: + case 296: #line 716 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); @@ -3329,10 +3332,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3333 "util/configparser.c" +#line 3336 "util/configparser.c" break; - case 296: + case 297: #line 725 "./util/configparser.y" { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); @@ -3341,10 +3344,10 @@ yyreduce: yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3345 "util/configparser.c" +#line 3348 "util/configparser.c" break; - case 297: + case 298: #line 734 "./util/configparser.y" { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); @@ -3353,10 +3356,10 @@ yyreduce: else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3357 "util/configparser.c" +#line 3360 "util/configparser.c" break; - case 298: + case 299: #line 743 "./util/configparser.y" { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); @@ -3365,10 +3368,10 @@ yyreduce: else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3369 "util/configparser.c" +#line 3372 "util/configparser.c" break; - case 299: + case 300: #line 752 "./util/configparser.y" { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); @@ -3377,10 +3380,10 @@ yyreduce: else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3381 "util/configparser.c" +#line 3384 "util/configparser.c" break; - case 300: + case 301: #line 761 "./util/configparser.y" { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); @@ -3389,10 +3392,10 @@ yyreduce: else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3393 "util/configparser.c" +#line 3396 "util/configparser.c" break; - case 301: + case 302: #line 770 "./util/configparser.y" { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); @@ -3401,10 +3404,10 @@ yyreduce: else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3405 "util/configparser.c" +#line 3408 "util/configparser.c" break; - case 302: + case 303: #line 779 "./util/configparser.y" { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); @@ -3413,10 +3416,10 @@ yyreduce: else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3417 "util/configparser.c" +#line 3420 "util/configparser.c" break; - case 303: + case 304: #line 788 "./util/configparser.y" { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); @@ -3425,10 +3428,10 @@ yyreduce: else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3429 "util/configparser.c" +#line 3432 "util/configparser.c" break; - case 304: + case 305: #line 797 "./util/configparser.y" { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); @@ -3437,10 +3440,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3441 "util/configparser.c" +#line 3444 "util/configparser.c" break; - case 305: + case 306: #line 806 "./util/configparser.y" { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); @@ -3449,10 +3452,10 @@ yyreduce: else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3453 "util/configparser.c" +#line 3456 "util/configparser.c" break; - case 306: + case 307: #line 815 "./util/configparser.y" { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -3461,10 +3464,10 @@ yyreduce: else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3465 "util/configparser.c" +#line 3468 "util/configparser.c" break; - case 307: + case 308: #line 824 "./util/configparser.y" { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); @@ -3473,10 +3476,10 @@ yyreduce: else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3477 "util/configparser.c" +#line 3480 "util/configparser.c" break; - case 308: + case 309: #line 833 "./util/configparser.y" { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); @@ -3489,10 +3492,10 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3493 "util/configparser.c" +#line 3496 "util/configparser.c" break; - case 309: + case 310: #line 846 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); @@ -3501,10 +3504,10 @@ yyreduce: else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3505 "util/configparser.c" +#line 3508 "util/configparser.c" break; - case 310: + case 311: #line 855 "./util/configparser.y" { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); @@ -3517,10 +3520,10 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3521 "util/configparser.c" +#line 3524 "util/configparser.c" break; - case 311: + case 312: #line 868 "./util/configparser.y" { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); @@ -3529,10 +3532,10 @@ yyreduce: else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3533 "util/configparser.c" +#line 3536 "util/configparser.c" break; - case 312: + case 313: #line 877 "./util/configparser.y" { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); @@ -3541,10 +3544,10 @@ yyreduce: else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3545 "util/configparser.c" +#line 3548 "util/configparser.c" break; - case 313: + case 314: #line 886 "./util/configparser.y" { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); @@ -3553,30 +3556,30 @@ yyreduce: else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3557 "util/configparser.c" +#line 3560 "util/configparser.c" break; - case 314: + case 315: #line 895 "./util/configparser.y" { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3567 "util/configparser.c" +#line 3570 "util/configparser.c" break; - case 315: + case 316: #line 902 "./util/configparser.y" { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3577 "util/configparser.c" +#line 3580 "util/configparser.c" break; - case 316: + case 317: #line 909 "./util/configparser.y" { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); @@ -3585,20 +3588,20 @@ yyreduce: else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3589 "util/configparser.c" +#line 3592 "util/configparser.c" break; - case 317: + case 318: #line 918 "./util/configparser.y" { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3599 "util/configparser.c" +#line 3602 "util/configparser.c" break; - case 318: + case 319: #line 925 "./util/configparser.y" { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); @@ -3607,10 +3610,10 @@ yyreduce: else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3611 "util/configparser.c" +#line 3614 "util/configparser.c" break; - case 319: + case 320: #line 934 "./util/configparser.y" { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); @@ -3618,30 +3621,30 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3622 "util/configparser.c" +#line 3625 "util/configparser.c" break; - case 320: + case 321: #line 942 "./util/configparser.y" { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3632 "util/configparser.c" +#line 3635 "util/configparser.c" break; - case 321: + case 322: #line 949 "./util/configparser.y" { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3642 "util/configparser.c" +#line 3645 "util/configparser.c" break; - case 322: + case 323: #line 956 "./util/configparser.y" { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); @@ -3649,10 +3652,10 @@ yyreduce: (yyvsp[0].str))) yyerror("out of memory"); } -#line 3653 "util/configparser.c" +#line 3656 "util/configparser.c" break; - case 323: + case 324: #line 964 "./util/configparser.y" { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); @@ -3661,10 +3664,10 @@ yyreduce: else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3665 "util/configparser.c" +#line 3668 "util/configparser.c" break; - case 324: + case 325: #line 973 "./util/configparser.y" { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); @@ -3673,10 +3676,10 @@ yyreduce: else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3677 "util/configparser.c" +#line 3680 "util/configparser.c" break; - case 325: + case 326: #line 982 "./util/configparser.y" { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); @@ -3685,10 +3688,10 @@ yyreduce: else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3689 "util/configparser.c" +#line 3692 "util/configparser.c" break; - case 326: + case 327: #line 991 "./util/configparser.y" { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); @@ -3702,10 +3705,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3706 "util/configparser.c" +#line 3709 "util/configparser.c" break; - case 327: + case 328: #line 1005 "./util/configparser.y" { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); @@ -3714,10 +3717,10 @@ yyreduce: else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3718 "util/configparser.c" +#line 3721 "util/configparser.c" break; - case 328: + case 329: #line 1014 "./util/configparser.y" { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); @@ -3726,10 +3729,10 @@ yyreduce: else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3730 "util/configparser.c" +#line 3733 "util/configparser.c" break; - case 329: + case 330: #line 1023 "./util/configparser.y" { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); @@ -3738,10 +3741,10 @@ yyreduce: else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3742 "util/configparser.c" +#line 3745 "util/configparser.c" break; - case 330: + case 331: #line 1032 "./util/configparser.y" { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); @@ -3750,10 +3753,10 @@ yyreduce: else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3754 "util/configparser.c" +#line 3757 "util/configparser.c" break; - case 331: + case 332: #line 1041 "./util/configparser.y" { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); @@ -3762,10 +3765,10 @@ yyreduce: else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3766 "util/configparser.c" +#line 3769 "util/configparser.c" break; - case 332: + case 333: #line 1050 "./util/configparser.y" { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); @@ -3774,30 +3777,30 @@ yyreduce: else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3778 "util/configparser.c" +#line 3781 "util/configparser.c" break; - case 333: + case 334: #line 1059 "./util/configparser.y" { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3788 "util/configparser.c" +#line 3791 "util/configparser.c" break; - case 334: + case 335: #line 1066 "./util/configparser.y" { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3798 "util/configparser.c" +#line 3801 "util/configparser.c" break; - case 335: + case 336: #line 1073 "./util/configparser.y" { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); @@ -3823,10 +3826,10 @@ yyreduce: } } } -#line 3827 "util/configparser.c" +#line 3830 "util/configparser.c" break; - case 336: + case 337: #line 1099 "./util/configparser.y" { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); @@ -3834,50 +3837,50 @@ yyreduce: cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3838 "util/configparser.c" +#line 3841 "util/configparser.c" break; - case 337: + case 338: #line 1107 "./util/configparser.y" { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3848 "util/configparser.c" +#line 3851 "util/configparser.c" break; - case 338: + case 339: #line 1114 "./util/configparser.y" { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3858 "util/configparser.c" +#line 3861 "util/configparser.c" break; - case 339: + case 340: #line 1121 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dlv_anchor_file); cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); } -#line 3868 "util/configparser.c" +#line 3871 "util/configparser.c" break; - case 340: + case 341: #line 1128 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3878 "util/configparser.c" +#line 3881 "util/configparser.c" break; - case 341: + case 342: #line 1135 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); @@ -3885,10 +3888,10 @@ yyreduce: auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3889 "util/configparser.c" +#line 3892 "util/configparser.c" break; - case 342: + case 343: #line 1143 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); @@ -3896,10 +3899,10 @@ yyreduce: trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3900 "util/configparser.c" +#line 3903 "util/configparser.c" break; - case 343: + case 344: #line 1151 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); @@ -3907,20 +3910,20 @@ yyreduce: trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3911 "util/configparser.c" +#line 3914 "util/configparser.c" break; - case 344: + case 345: #line 1159 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3921 "util/configparser.c" +#line 3924 "util/configparser.c" break; - case 345: + case 346: #line 1166 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); @@ -3931,10 +3934,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3935 "util/configparser.c" +#line 3938 "util/configparser.c" break; - case 346: + case 347: #line 1177 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); @@ -3945,20 +3948,20 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3949 "util/configparser.c" +#line 3952 "util/configparser.c" break; - case 347: + case 348: #line 1188 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3959 "util/configparser.c" +#line 3962 "util/configparser.c" break; - case 348: + case 349: #line 1195 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); @@ -3967,10 +3970,10 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3971 "util/configparser.c" +#line 3974 "util/configparser.c" break; - case 349: + case 350: #line 1204 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); @@ -3979,10 +3982,10 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3983 "util/configparser.c" +#line 3986 "util/configparser.c" break; - case 350: + case 351: #line 1213 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); @@ -3991,30 +3994,30 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3995 "util/configparser.c" +#line 3998 "util/configparser.c" break; - case 351: + case 352: #line 1222 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 4005 "util/configparser.c" +#line 4008 "util/configparser.c" break; - case 352: + case 353: #line 1229 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 4015 "util/configparser.c" +#line 4018 "util/configparser.c" break; - case 353: + case 354: #line 1236 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); @@ -4022,10 +4025,10 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4026 "util/configparser.c" +#line 4029 "util/configparser.c" break; - case 354: + case 355: #line 1244 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); @@ -4033,10 +4036,10 @@ yyreduce: yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4037 "util/configparser.c" +#line 4040 "util/configparser.c" break; - case 355: + case 356: #line 1252 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); @@ -4046,10 +4049,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4050 "util/configparser.c" +#line 4053 "util/configparser.c" break; - case 356: + case 357: #line 1262 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); @@ -4059,10 +4062,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4063 "util/configparser.c" +#line 4066 "util/configparser.c" break; - case 357: + case 358: #line 1272 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); @@ -4072,10 +4075,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4076 "util/configparser.c" +#line 4079 "util/configparser.c" break; - case 358: + case 359: #line 1282 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); @@ -4089,10 +4092,10 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4093 "util/configparser.c" +#line 4096 "util/configparser.c" break; - case 359: + case 360: #line 1296 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); @@ -4100,10 +4103,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4104 "util/configparser.c" +#line 4107 "util/configparser.c" break; - case 360: + case 361: #line 1304 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4116,10 +4119,10 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4120 "util/configparser.c" +#line 4123 "util/configparser.c" break; - case 361: + case 362: #line 1317 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); @@ -4130,10 +4133,10 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4134 "util/configparser.c" +#line 4137 "util/configparser.c" break; - case 362: + case 363: #line 1328 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); @@ -4141,10 +4144,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4145 "util/configparser.c" +#line 4148 "util/configparser.c" break; - case 363: + case 364: #line 1336 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4157,10 +4160,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4161 "util/configparser.c" +#line 4164 "util/configparser.c" break; - case 364: + case 365: #line 1349 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); @@ -4169,10 +4172,10 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4173 "util/configparser.c" +#line 4176 "util/configparser.c" break; - case 365: + case 366: #line 1358 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); @@ -4181,10 +4184,10 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4185 "util/configparser.c" +#line 4188 "util/configparser.c" break; - case 366: + case 367: #line 1367 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); @@ -4193,10 +4196,10 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4197 "util/configparser.c" +#line 4200 "util/configparser.c" break; - case 367: + case 368: #line 1376 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); @@ -4206,10 +4209,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4210 "util/configparser.c" +#line 4213 "util/configparser.c" break; - case 368: + case 369: #line 1386 "./util/configparser.y" { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); @@ -4219,10 +4222,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4223 "util/configparser.c" +#line 4226 "util/configparser.c" break; - case 369: + case 370: #line 1396 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); @@ -4230,10 +4233,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4234 "util/configparser.c" +#line 4237 "util/configparser.c" break; - case 370: + case 371: #line 1404 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4246,10 +4249,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4250 "util/configparser.c" +#line 4253 "util/configparser.c" break; - case 371: + case 372: #line 1417 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); @@ -4258,10 +4261,10 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4262 "util/configparser.c" +#line 4265 "util/configparser.c" break; - case 372: + case 373: #line 1426 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); @@ -4269,10 +4272,10 @@ yyreduce: "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4273 "util/configparser.c" +#line 4276 "util/configparser.c" break; - case 373: + case 374: #line 1434 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); @@ -4281,10 +4284,10 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4285 "util/configparser.c" +#line 4288 "util/configparser.c" break; - case 374: + case 375: #line 1443 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); @@ -4292,10 +4295,10 @@ yyreduce: "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4296 "util/configparser.c" +#line 4299 "util/configparser.c" break; - case 375: + case 376: #line 1451 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4308,10 +4311,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4312 "util/configparser.c" +#line 4315 "util/configparser.c" break; - case 376: + case 377: #line 1464 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); @@ -4320,20 +4323,20 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4324 "util/configparser.c" +#line 4327 "util/configparser.c" break; - case 377: + case 378: #line 1473 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4334 "util/configparser.c" +#line 4337 "util/configparser.c" break; - case 378: + case 379: #line 1480 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); @@ -4343,10 +4346,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4347 "util/configparser.c" +#line 4350 "util/configparser.c" break; - case 379: + case 380: #line 1490 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); @@ -4356,10 +4359,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4360 "util/configparser.c" +#line 4363 "util/configparser.c" break; - case 380: + case 381: #line 1500 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); @@ -4369,10 +4372,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4373 "util/configparser.c" +#line 4376 "util/configparser.c" break; - case 381: + case 382: #line 1510 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); @@ -4382,10 +4385,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4386 "util/configparser.c" +#line 4389 "util/configparser.c" break; - case 382: + case 383: #line 1520 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); @@ -4395,10 +4398,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4399 "util/configparser.c" +#line 4402 "util/configparser.c" break; - case 383: + case 384: #line 1530 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); @@ -4408,10 +4411,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4412 "util/configparser.c" +#line 4415 "util/configparser.c" break; - case 384: + case 385: #line 1540 "./util/configparser.y" { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); @@ -4421,10 +4424,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4425 "util/configparser.c" +#line 4428 "util/configparser.c" break; - case 385: + case 386: #line 1550 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); @@ -4434,40 +4437,40 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4438 "util/configparser.c" +#line 4441 "util/configparser.c" break; - case 386: + case 387: #line 1560 "./util/configparser.y" { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4448 "util/configparser.c" +#line 4451 "util/configparser.c" break; - case 387: + case 388: #line 1567 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4458 "util/configparser.c" +#line 4461 "util/configparser.c" break; - case 388: + case 389: #line 1574 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4468 "util/configparser.c" +#line 4471 "util/configparser.c" break; - case 389: + case 390: #line 1581 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); @@ -4476,10 +4479,10 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4480 "util/configparser.c" +#line 4483 "util/configparser.c" break; - case 390: + case 391: #line 1590 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); @@ -4488,10 +4491,10 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4492 "util/configparser.c" +#line 4495 "util/configparser.c" break; - case 391: + case 392: #line 1599 "./util/configparser.y" { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); @@ -4500,10 +4503,10 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4504 "util/configparser.c" +#line 4507 "util/configparser.c" break; - case 392: + case 393: #line 1608 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); @@ -4512,20 +4515,20 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4516 "util/configparser.c" +#line 4519 "util/configparser.c" break; - case 393: + case 394: #line 1617 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4526 "util/configparser.c" +#line 4529 "util/configparser.c" break; - case 394: + case 395: #line 1624 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); @@ -4535,10 +4538,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4539 "util/configparser.c" +#line 4542 "util/configparser.c" break; - case 395: + case 396: #line 1634 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -4558,20 +4561,20 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4562 "util/configparser.c" +#line 4565 "util/configparser.c" break; - case 396: + case 397: #line 1654 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4572 "util/configparser.c" +#line 4575 "util/configparser.c" break; - case 397: + case 398: #line 1661 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); @@ -4589,10 +4592,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4593 "util/configparser.c" +#line 4596 "util/configparser.c" break; - case 398: + case 399: #line 1679 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); @@ -4605,10 +4608,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4609 "util/configparser.c" +#line 4612 "util/configparser.c" break; - case 399: + case 400: #line 1692 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); @@ -4621,10 +4624,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4625 "util/configparser.c" +#line 4628 "util/configparser.c" break; - case 400: + case 401: #line 1705 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); @@ -4633,10 +4636,10 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4637 "util/configparser.c" +#line 4640 "util/configparser.c" break; - case 401: + case 402: #line 1714 "./util/configparser.y" { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); @@ -4645,10 +4648,10 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4649 "util/configparser.c" +#line 4652 "util/configparser.c" break; - case 402: + case 403: #line 1723 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); @@ -4657,10 +4660,10 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4661 "util/configparser.c" +#line 4664 "util/configparser.c" break; - case 403: + case 404: #line 1732 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); @@ -4669,10 +4672,10 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4673 "util/configparser.c" +#line 4676 "util/configparser.c" break; - case 404: + case 405: #line 1741 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); @@ -4682,10 +4685,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4686 "util/configparser.c" +#line 4689 "util/configparser.c" break; - case 405: + case 406: #line 1751 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); @@ -4695,10 +4698,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4699 "util/configparser.c" +#line 4702 "util/configparser.c" break; - case 406: + case 407: #line 1761 "./util/configparser.y" { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); @@ -4709,10 +4712,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4713 "util/configparser.c" +#line 4716 "util/configparser.c" break; - case 407: + case 408: #line 1772 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); @@ -4721,10 +4724,10 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4725 "util/configparser.c" +#line 4728 "util/configparser.c" break; - case 408: + case 409: #line 1781 "./util/configparser.y" { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); @@ -4733,10 +4736,10 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4737 "util/configparser.c" +#line 4740 "util/configparser.c" break; - case 409: + case 410: #line 1790 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); @@ -4745,10 +4748,10 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4749 "util/configparser.c" +#line 4752 "util/configparser.c" break; - case 410: + case 411: #line 1799 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); @@ -4757,10 +4760,10 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4761 "util/configparser.c" +#line 4764 "util/configparser.c" break; - case 411: + case 412: #line 1808 "./util/configparser.y" { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); @@ -4769,10 +4772,10 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4773 "util/configparser.c" +#line 4776 "util/configparser.c" break; - case 412: + case 413: #line 1817 "./util/configparser.y" { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); @@ -4781,10 +4784,10 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4785 "util/configparser.c" +#line 4788 "util/configparser.c" break; - case 413: + case 414: #line 1826 "./util/configparser.y" { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); @@ -4797,10 +4800,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4801 "util/configparser.c" +#line 4804 "util/configparser.c" break; - case 414: + case 415: #line 1839 "./util/configparser.y" { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); @@ -4813,10 +4816,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4817 "util/configparser.c" +#line 4820 "util/configparser.c" break; - case 415: + case 416: #line 1852 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); @@ -4825,20 +4828,20 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4829 "util/configparser.c" +#line 4832 "util/configparser.c" break; - case 416: + case 417: #line 1861 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 4839 "util/configparser.c" +#line 4842 "util/configparser.c" break; - case 417: + case 418: #line 1868 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); @@ -4847,10 +4850,10 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4851 "util/configparser.c" +#line 4854 "util/configparser.c" break; - case 418: + case 419: #line 1877 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); @@ -4859,10 +4862,10 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4863 "util/configparser.c" +#line 4866 "util/configparser.c" break; - case 419: + case 420: #line 1886 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); @@ -4871,10 +4874,10 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4875 "util/configparser.c" +#line 4878 "util/configparser.c" break; - case 420: + case 421: #line 1895 "./util/configparser.y" { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); @@ -4884,10 +4887,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4888 "util/configparser.c" +#line 4891 "util/configparser.c" break; - case 421: + case 422: #line 1904 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); @@ -4895,10 +4898,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4899 "util/configparser.c" +#line 4902 "util/configparser.c" break; - case 422: + case 423: #line 1912 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); @@ -4911,10 +4914,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4915 "util/configparser.c" +#line 4918 "util/configparser.c" break; - case 423: + case 424: #line 1925 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); @@ -4922,10 +4925,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4926 "util/configparser.c" +#line 4929 "util/configparser.c" break; - case 424: + case 425: #line 1933 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -4966,20 +4969,20 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4970 "util/configparser.c" +#line 4973 "util/configparser.c" break; - case 425: + case 426: #line 1974 "./util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 4980 "util/configparser.c" +#line 4983 "util/configparser.c" break; - case 426: + case 427: #line 1981 "./util/configparser.y" { char* ptr; @@ -4994,10 +4997,10 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4998 "util/configparser.c" +#line 5001 "util/configparser.c" break; - case 427: + case 428: #line 1996 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); @@ -5007,10 +5010,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5011 "util/configparser.c" +#line 5014 "util/configparser.c" break; - case 428: + case 429: #line 2006 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); @@ -5020,40 +5023,40 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5024 "util/configparser.c" +#line 5027 "util/configparser.c" break; - case 429: + case 430: #line 2016 "./util/configparser.y" { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5034 "util/configparser.c" +#line 5037 "util/configparser.c" break; - case 430: + case 431: #line 2023 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5044 "util/configparser.c" +#line 5047 "util/configparser.c" break; - case 431: + case 432: #line 2030 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 5054 "util/configparser.c" +#line 5057 "util/configparser.c" break; - case 432: + case 433: #line 2037 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); @@ -5062,10 +5065,10 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5066 "util/configparser.c" +#line 5069 "util/configparser.c" break; - case 433: + case 434: #line 2046 "./util/configparser.y" { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); @@ -5073,10 +5076,10 @@ yyreduce: (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5077 "util/configparser.c" +#line 5080 "util/configparser.c" break; - case 434: + case 435: #line 2054 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); @@ -5090,10 +5093,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5094 "util/configparser.c" +#line 5097 "util/configparser.c" break; - case 435: + case 436: #line 2068 "./util/configparser.y" { size_t len = 0; @@ -5114,10 +5117,10 @@ yyreduce: } } } -#line 5118 "util/configparser.c" +#line 5121 "util/configparser.c" break; - case 436: + case 437: #line 2089 "./util/configparser.y" { size_t len = 0; @@ -5138,10 +5141,10 @@ yyreduce: } } } -#line 5142 "util/configparser.c" +#line 5145 "util/configparser.c" break; - case 437: + case 438: #line 2110 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); @@ -5153,10 +5156,10 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5157 "util/configparser.c" +#line 5160 "util/configparser.c" break; - case 438: + case 439: #line 2122 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); @@ -5168,10 +5171,10 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5172 "util/configparser.c" +#line 5175 "util/configparser.c" break; - case 439: + case 440: #line 2134 "./util/configparser.y" { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); @@ -5183,10 +5186,10 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5187 "util/configparser.c" +#line 5190 "util/configparser.c" break; - case 440: + case 441: #line 2146 "./util/configparser.y" { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5195,10 +5198,10 @@ yyreduce: yyerror("out of memory"); } } -#line 5199 "util/configparser.c" +#line 5202 "util/configparser.c" break; - case 441: + case 442: #line 2155 "./util/configparser.y" { size_t len = 0; @@ -5219,10 +5222,10 @@ yyreduce: } } } -#line 5223 "util/configparser.c" +#line 5226 "util/configparser.c" break; - case 442: + case 443: #line 2176 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); @@ -5231,10 +5234,10 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5235 "util/configparser.c" +#line 5238 "util/configparser.c" break; - case 443: + case 444: #line 2186 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); @@ -5243,10 +5246,10 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5247 "util/configparser.c" +#line 5250 "util/configparser.c" break; - case 444: + case 445: #line 2195 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); @@ -5254,10 +5257,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5258 "util/configparser.c" +#line 5261 "util/configparser.c" break; - case 445: + case 446: #line 2203 "./util/configparser.y" { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); @@ -5265,10 +5268,10 @@ yyreduce: yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5269 "util/configparser.c" +#line 5272 "util/configparser.c" break; - case 446: + case 447: #line 2211 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); @@ -5281,10 +5284,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5285 "util/configparser.c" +#line 5288 "util/configparser.c" break; - case 447: + case 448: #line 2224 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); @@ -5297,10 +5300,10 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5301 "util/configparser.c" +#line 5304 "util/configparser.c" break; - case 448: + case 449: #line 2237 "./util/configparser.y" { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5315,10 +5318,10 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5319 "util/configparser.c" +#line 5322 "util/configparser.c" break; - case 449: + case 450: #line 2252 "./util/configparser.y" { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); @@ -5333,10 +5336,10 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5337 "util/configparser.c" +#line 5340 "util/configparser.c" break; - case 450: + case 451: #line 2267 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); @@ -5345,10 +5348,10 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5349 "util/configparser.c" +#line 5352 "util/configparser.c" break; - case 451: + case 452: #line 2276 "./util/configparser.y" { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); @@ -5357,19 +5360,19 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5361 "util/configparser.c" +#line 5364 "util/configparser.c" break; - case 452: + case 453: #line 2285 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5370 "util/configparser.c" +#line 5373 "util/configparser.c" break; - case 453: + case 454: #line 2291 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); @@ -5378,10 +5381,10 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5382 "util/configparser.c" +#line 5385 "util/configparser.c" break; - case 454: + case 455: #line 2300 "./util/configparser.y" { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); @@ -5390,10 +5393,10 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5394 "util/configparser.c" +#line 5397 "util/configparser.c" break; - case 455: + case 456: #line 2309 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); @@ -5403,10 +5406,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5407 "util/configparser.c" +#line 5410 "util/configparser.c" break; - case 456: + case 457: #line 2319 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); @@ -5416,10 +5419,10 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5420 "util/configparser.c" +#line 5423 "util/configparser.c" break; - case 457: + case 458: #line 2329 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -5432,10 +5435,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5436 "util/configparser.c" +#line 5439 "util/configparser.c" break; - case 458: + case 459: #line 2342 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -5448,10 +5451,10 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5452 "util/configparser.c" +#line 5455 "util/configparser.c" break; - case 459: + case 460: #line 2355 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -5463,10 +5466,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5467 "util/configparser.c" +#line 5470 "util/configparser.c" break; - case 460: + case 461: #line 2367 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -5480,10 +5483,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5484 "util/configparser.c" +#line 5487 "util/configparser.c" break; - case 461: + case 462: #line 2381 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -5495,10 +5498,10 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5499 "util/configparser.c" +#line 5502 "util/configparser.c" break; - case 462: + case 463: #line 2393 "./util/configparser.y" { #ifdef USE_IPSECMOD @@ -5512,11 +5515,29 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5516 "util/configparser.c" +#line 5519 "util/configparser.c" break; - case 463: + case 464: #line 2407 "./util/configparser.y" + { + int tag_data; + OUTYY(("P(server_edns_client_tag:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); + tag_data = atoi((yyvsp[0].str)); + if(tag_data > 65535 || tag_data < 0 || + (tag_data == 0 && (strlen((yyvsp[0].str)) != 1 || (yyvsp[0].str)[0] != '0'))) + yyerror("edns-client-tag data invalid, needs to be a " + "number from 0 to 65535"); + if(!cfg_str2list_insert( + &cfg_parser->cfg->edns_client_tags, (yyvsp[-1].str), (yyvsp[0].str))) + fatal_exit("out of memory adding " + "edns-client-tag"); + } +#line 5537 "util/configparser.c" + break; + + case 465: +#line 2422 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5525,31 +5546,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5529 "util/configparser.c" +#line 5550 "util/configparser.c" break; - case 464: -#line 2417 "./util/configparser.y" + case 466: +#line 2432 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5539 "util/configparser.c" +#line 5560 "util/configparser.c" break; - case 465: -#line 2424 "./util/configparser.y" + case 467: +#line 2439 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5549 "util/configparser.c" +#line 5570 "util/configparser.c" break; - case 466: -#line 2431 "./util/configparser.y" + case 468: +#line 2446 "./util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5557,11 +5578,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5561 "util/configparser.c" +#line 5582 "util/configparser.c" break; - case 467: -#line 2440 "./util/configparser.y" + case 469: +#line 2455 "./util/configparser.y" { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5569,11 +5590,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5573 "util/configparser.c" +#line 5594 "util/configparser.c" break; - case 468: -#line 2449 "./util/configparser.y" + case 470: +#line 2464 "./util/configparser.y" { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5582,11 +5603,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5586 "util/configparser.c" +#line 5607 "util/configparser.c" break; - case 469: -#line 2459 "./util/configparser.y" + case 471: +#line 2474 "./util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5595,11 +5616,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5599 "util/configparser.c" +#line 5620 "util/configparser.c" break; - case 470: -#line 2469 "./util/configparser.y" + case 472: +#line 2484 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5608,31 +5629,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5612 "util/configparser.c" +#line 5633 "util/configparser.c" break; - case 471: -#line 2479 "./util/configparser.y" + case 473: +#line 2494 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5622 "util/configparser.c" +#line 5643 "util/configparser.c" break; - case 472: -#line 2486 "./util/configparser.y" + case 474: +#line 2501 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5632 "util/configparser.c" +#line 5653 "util/configparser.c" break; - case 473: -#line 2493 "./util/configparser.y" + case 475: +#line 2508 "./util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5640,11 +5661,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5644 "util/configparser.c" +#line 5665 "util/configparser.c" break; - case 474: -#line 2502 "./util/configparser.y" + case 476: +#line 2517 "./util/configparser.y" { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5652,11 +5673,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5656 "util/configparser.c" +#line 5677 "util/configparser.c" break; - case 475: -#line 2511 "./util/configparser.y" + case 477: +#line 2526 "./util/configparser.y" { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5665,11 +5686,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5669 "util/configparser.c" +#line 5690 "util/configparser.c" break; - case 476: -#line 2521 "./util/configparser.y" + case 478: +#line 2536 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5678,45 +5699,24 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5682 "util/configparser.c" +#line 5703 "util/configparser.c" break; - case 477: -#line 2531 "./util/configparser.y" + case 479: +#line 2546 "./util/configparser.y" { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5692 "util/configparser.c" - break; - - case 478: -#line 2538 "./util/configparser.y" - { - OUTYY(("P(master:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5702 "util/configparser.c" - break; - - case 479: -#line 2545 "./util/configparser.y" - { - OUTYY(("P(url:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) - yyerror("out of memory"); - } -#line 5712 "util/configparser.c" +#line 5713 "util/configparser.c" break; case 480: -#line 2552 "./util/configparser.y" +#line 2553 "./util/configparser.y" { - OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, - (yyvsp[0].str))) + OUTYY(("P(master:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } #line 5723 "util/configparser.c" @@ -5724,6 +5724,27 @@ yyreduce: case 481: #line 2560 "./util/configparser.y" + { + OUTYY(("P(url:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) + yyerror("out of memory"); + } +#line 5733 "util/configparser.c" + break; + + case 482: +#line 2567 "./util/configparser.y" + { + OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); + if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, + (yyvsp[0].str))) + yyerror("out of memory"); + } +#line 5744 "util/configparser.c" + break; + + case 483: +#line 2575 "./util/configparser.y" { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5732,11 +5753,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5736 "util/configparser.c" +#line 5757 "util/configparser.c" break; - case 482: -#line 2570 "./util/configparser.y" + case 484: +#line 2585 "./util/configparser.y" { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5745,11 +5766,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5749 "util/configparser.c" +#line 5770 "util/configparser.c" break; - case 483: -#line 2580 "./util/configparser.y" + case 485: +#line 2595 "./util/configparser.y" { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5758,11 +5779,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5762 "util/configparser.c" +#line 5783 "util/configparser.c" break; - case 484: -#line 2590 "./util/configparser.y" + case 486: +#line 2605 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5771,11 +5792,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5775 "util/configparser.c" +#line 5796 "util/configparser.c" break; - case 485: -#line 2600 "./util/configparser.y" + case 487: +#line 2615 "./util/configparser.y" { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -5813,11 +5834,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5817 "util/configparser.c" +#line 5838 "util/configparser.c" break; - case 486: -#line 2639 "./util/configparser.y" + case 488: +#line 2654 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5826,33 +5847,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5830 "util/configparser.c" +#line 5851 "util/configparser.c" break; - case 487: -#line 2649 "./util/configparser.y" + case 489: +#line 2664 "./util/configparser.y" { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5841 "util/configparser.c" +#line 5862 "util/configparser.c" break; - case 488: -#line 2657 "./util/configparser.y" + case 490: +#line 2672 "./util/configparser.y" { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 5852 "util/configparser.c" +#line 5873 "util/configparser.c" break; - case 489: -#line 2665 "./util/configparser.y" + case 491: +#line 2680 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5866,11 +5887,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5870 "util/configparser.c" +#line 5891 "util/configparser.c" break; - case 490: -#line 2680 "./util/configparser.y" + case 492: +#line 2695 "./util/configparser.y" { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5878,19 +5899,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5882 "util/configparser.c" +#line 5903 "util/configparser.c" break; - case 491: -#line 2689 "./util/configparser.y" + case 493: +#line 2704 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 5890 "util/configparser.c" +#line 5911 "util/configparser.c" break; - case 502: -#line 2700 "./util/configparser.y" + case 504: +#line 2715 "./util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5899,11 +5920,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5903 "util/configparser.c" +#line 5924 "util/configparser.c" break; - case 503: -#line 2710 "./util/configparser.y" + case 505: +#line 2725 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5911,79 +5932,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5915 "util/configparser.c" +#line 5936 "util/configparser.c" break; - case 504: -#line 2719 "./util/configparser.y" + case 506: +#line 2734 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5925 "util/configparser.c" +#line 5946 "util/configparser.c" break; - case 505: -#line 2726 "./util/configparser.y" + case 507: +#line 2741 "./util/configparser.y" { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5935 "util/configparser.c" +#line 5956 "util/configparser.c" break; - case 506: -#line 2733 "./util/configparser.y" + case 508: +#line 2748 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 5945 "util/configparser.c" +#line 5966 "util/configparser.c" break; - case 507: -#line 2740 "./util/configparser.y" + case 509: +#line 2755 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 5955 "util/configparser.c" +#line 5976 "util/configparser.c" break; - case 508: -#line 2747 "./util/configparser.y" + case 510: +#line 2762 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 5965 "util/configparser.c" +#line 5986 "util/configparser.c" break; - case 509: -#line 2754 "./util/configparser.y" + case 511: +#line 2769 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 5975 "util/configparser.c" +#line 5996 "util/configparser.c" break; - case 510: -#line 2761 "./util/configparser.y" + case 512: +#line 2776 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 5983 "util/configparser.c" +#line 6004 "util/configparser.c" break; - case 532: -#line 2781 "./util/configparser.y" + case 534: +#line 2796 "./util/configparser.y" { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5991,11 +6012,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5995 "util/configparser.c" +#line 6016 "util/configparser.c" break; - case 533: -#line 2790 "./util/configparser.y" + case 535: +#line 2805 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6004,31 +6025,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6008 "util/configparser.c" +#line 6029 "util/configparser.c" break; - case 534: -#line 2800 "./util/configparser.y" + case 536: +#line 2815 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 6018 "util/configparser.c" +#line 6039 "util/configparser.c" break; - case 535: -#line 2807 "./util/configparser.y" + case 537: +#line 2822 "./util/configparser.y" { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 6028 "util/configparser.c" +#line 6049 "util/configparser.c" break; - case 536: -#line 2814 "./util/configparser.y" + case 538: +#line 2829 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6036,51 +6057,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6040 "util/configparser.c" +#line 6061 "util/configparser.c" break; - case 537: -#line 2823 "./util/configparser.y" + case 539: +#line 2838 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 6050 "util/configparser.c" +#line 6071 "util/configparser.c" break; - case 538: -#line 2830 "./util/configparser.y" + case 540: +#line 2845 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 6060 "util/configparser.c" +#line 6081 "util/configparser.c" break; - case 539: -#line 2837 "./util/configparser.y" + case 541: +#line 2852 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 6070 "util/configparser.c" +#line 6091 "util/configparser.c" break; - case 540: -#line 2844 "./util/configparser.y" + case 542: +#line 2859 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 6080 "util/configparser.c" +#line 6101 "util/configparser.c" break; - case 541: -#line 2851 "./util/configparser.y" + case 543: +#line 2866 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6088,11 +6109,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6092 "util/configparser.c" +#line 6113 "util/configparser.c" break; - case 542: -#line 2860 "./util/configparser.y" + case 544: +#line 2875 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6100,31 +6121,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6104 "util/configparser.c" +#line 6125 "util/configparser.c" break; - case 543: -#line 2869 "./util/configparser.y" + case 545: +#line 2884 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 6114 "util/configparser.c" +#line 6135 "util/configparser.c" break; - case 544: -#line 2876 "./util/configparser.y" + case 546: +#line 2891 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6124 "util/configparser.c" +#line 6145 "util/configparser.c" break; - case 545: -#line 2883 "./util/configparser.y" + case 547: +#line 2898 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6133,11 +6154,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6137 "util/configparser.c" +#line 6158 "util/configparser.c" break; - case 546: -#line 2893 "./util/configparser.y" + case 548: +#line 2908 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6146,11 +6167,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6150 "util/configparser.c" +#line 6171 "util/configparser.c" break; - case 547: -#line 2903 "./util/configparser.y" + case 549: +#line 2918 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6159,11 +6180,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6163 "util/configparser.c" +#line 6184 "util/configparser.c" break; - case 548: -#line 2913 "./util/configparser.y" + case 550: +#line 2928 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6172,11 +6193,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6176 "util/configparser.c" +#line 6197 "util/configparser.c" break; - case 549: -#line 2923 "./util/configparser.y" + case 551: +#line 2938 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6185,11 +6206,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6189 "util/configparser.c" +#line 6210 "util/configparser.c" break; - case 550: -#line 2933 "./util/configparser.y" + case 552: +#line 2948 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6198,47 +6219,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6202 "util/configparser.c" +#line 6223 "util/configparser.c" break; - case 551: -#line 2943 "./util/configparser.y" + case 553: +#line 2958 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6210 "util/configparser.c" +#line 6231 "util/configparser.c" break; - case 555: -#line 2952 "./util/configparser.y" + case 557: +#line 2967 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6220 "util/configparser.c" +#line 6241 "util/configparser.c" break; - case 556: -#line 2958 "./util/configparser.y" + case 558: +#line 2973 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 6228 "util/configparser.c" +#line 6249 "util/configparser.c" break; - case 560: -#line 2967 "./util/configparser.y" + case 562: +#line 2982 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6238 "util/configparser.c" +#line 6259 "util/configparser.c" break; - case 561: -#line 2973 "./util/configparser.y" + case 563: +#line 2988 "./util/configparser.y" { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6247,21 +6268,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6251 "util/configparser.c" +#line 6272 "util/configparser.c" break; - case 562: -#line 2983 "./util/configparser.y" + case 564: +#line 2998 "./util/configparser.y" { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6261 "util/configparser.c" +#line 6282 "util/configparser.c" break; - case 563: -#line 2990 "./util/configparser.y" + case 565: +#line 3005 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6269,30 +6290,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6273 "util/configparser.c" +#line 6294 "util/configparser.c" break; - case 564: -#line 2999 "./util/configparser.y" + case 566: +#line 3014 "./util/configparser.y" { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6284 "util/configparser.c" +#line 6305 "util/configparser.c" break; - case 565: -#line 3007 "./util/configparser.y" + case 567: +#line 3022 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6292 "util/configparser.c" +#line 6313 "util/configparser.c" break; - case 578: -#line 3023 "./util/configparser.y" + case 580: +#line 3038 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6300,11 +6321,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6304 "util/configparser.c" +#line 6325 "util/configparser.c" break; - case 579: -#line 3033 "./util/configparser.y" + case 581: +#line 3048 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6312,21 +6333,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6316 "util/configparser.c" +#line 6337 "util/configparser.c" break; - case 580: -#line 3042 "./util/configparser.y" + case 582: +#line 3057 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6326 "util/configparser.c" +#line 6347 "util/configparser.c" break; - case 581: -#line 3049 "./util/configparser.y" + case 583: +#line 3064 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -6334,21 +6355,21 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6338 "util/configparser.c" +#line 6359 "util/configparser.c" break; - case 582: -#line 3058 "./util/configparser.y" + case 584: +#line 3073 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6348 "util/configparser.c" +#line 6369 "util/configparser.c" break; - case 583: -#line 3065 "./util/configparser.y" + case 585: +#line 3080 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6356,22 +6377,22 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6360 "util/configparser.c" +#line 6381 "util/configparser.c" break; - case 584: -#line 3074 "./util/configparser.y" + case 586: +#line 3089 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6371 "util/configparser.c" +#line 6392 "util/configparser.c" break; - case 585: -#line 3082 "./util/configparser.y" + case 587: +#line 3097 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6383,22 +6404,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6387 "util/configparser.c" +#line 6408 "util/configparser.c" break; - case 586: -#line 3095 "./util/configparser.y" + case 588: +#line 3110 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6398 "util/configparser.c" +#line 6419 "util/configparser.c" break; - case 587: -#line 3103 "./util/configparser.y" + case 589: +#line 3118 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6410,19 +6431,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6414 "util/configparser.c" +#line 6435 "util/configparser.c" break; - case 588: -#line 3116 "./util/configparser.y" + case 590: +#line 3131 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6422 "util/configparser.c" +#line 6443 "util/configparser.c" break; - case 597: -#line 3127 "./util/configparser.y" + case 599: +#line 3142 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6433,11 +6454,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6437 "util/configparser.c" +#line 6458 "util/configparser.c" break; - case 598: -#line 3139 "./util/configparser.y" + case 600: +#line 3154 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6448,11 +6469,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6452 "util/configparser.c" +#line 6473 "util/configparser.c" break; - case 599: -#line 3151 "./util/configparser.y" + case 601: +#line 3166 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6463,11 +6484,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6467 "util/configparser.c" +#line 6488 "util/configparser.c" break; - case 600: -#line 3163 "./util/configparser.y" + case 602: +#line 3178 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6481,11 +6502,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6485 "util/configparser.c" +#line 6506 "util/configparser.c" break; - case 601: -#line 3178 "./util/configparser.y" + case 603: +#line 3193 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6497,11 +6518,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6501 "util/configparser.c" +#line 6522 "util/configparser.c" break; - case 602: -#line 3191 "./util/configparser.y" + case 604: +#line 3206 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6513,11 +6534,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6517 "util/configparser.c" +#line 6538 "util/configparser.c" break; - case 603: -#line 3204 "./util/configparser.y" + case 605: +#line 3219 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6527,19 +6548,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6531 "util/configparser.c" +#line 6552 "util/configparser.c" break; - case 604: -#line 3215 "./util/configparser.y" + case 606: +#line 3230 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6539 "util/configparser.c" +#line 6560 "util/configparser.c" break; - case 609: -#line 3224 "./util/configparser.y" + case 611: +#line 3239 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6553,11 +6574,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6557 "util/configparser.c" +#line 6578 "util/configparser.c" break; - case 610: -#line 3239 "./util/configparser.y" + case 612: +#line 3254 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6571,11 +6592,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6575 "util/configparser.c" +#line 6596 "util/configparser.c" break; -#line 6579 "util/configparser.c" +#line 6600 "util/configparser.c" default: break; } @@ -6794,7 +6815,7 @@ yyreturn: while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp); + yystos[+*yyssp], yyvsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -6807,7 +6828,7 @@ yyreturn: #endif return yyresult; } -#line 3253 "./util/configparser.y" +#line 3268 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 2a86ce512..2083891f9 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.5. */ +/* A Bison parser, made by GNU Bison 3.5.1. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -337,7 +337,8 @@ extern int yydebug; VAR_RPZ_LOG = 543, VAR_RPZ_LOG_NAME = 544, VAR_DYNLIB = 545, - VAR_DYNLIB_FILE = 546 + VAR_DYNLIB_FILE = 546, + VAR_EDNS_CLIENT_TAG = 547 }; #endif /* Tokens. */ @@ -630,6 +631,7 @@ extern int yydebug; #define VAR_RPZ_LOG_NAME 544 #define VAR_DYNLIB 545 #define VAR_DYNLIB_FILE 546 +#define VAR_EDNS_CLIENT_TAG 547 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED @@ -639,7 +641,7 @@ union YYSTYPE char* str; -#line 643 "util/configparser.h" +#line 645 "util/configparser.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/util/configparser.y b/util/configparser.y index fe600a999..1d0e86580 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -175,7 +175,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_IPSET VAR_IPSET_NAME_V4 VAR_IPSET_NAME_V6 %token VAR_TLS_SESSION_TICKET_KEYS VAR_RPZ VAR_TAGS VAR_RPZ_ACTION_OVERRIDE %token VAR_RPZ_CNAME_OVERRIDE VAR_RPZ_LOG VAR_RPZ_LOG_NAME -%token VAR_DYNLIB VAR_DYNLIB_FILE +%token VAR_DYNLIB VAR_DYNLIB_FILE VAR_EDNS_CLIENT_TAG %% toplevelvars: /* empty */ | toplevelvars toplevelvar ; @@ -285,7 +285,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_unknown_server_time_limit | server_log_tag_queryreply | server_stream_wait_size | server_tls_ciphers | server_tls_ciphersuites | server_tls_session_ticket_keys | - server_tls_use_sni + server_tls_use_sni | server_edns_client_tag ; stubstart: VAR_STUB_ZONE { @@ -2403,6 +2403,21 @@ server_ipsecmod_strict: VAR_IPSECMOD_STRICT STRING_ARG #endif } ; +server_edns_client_tag: VAR_EDNS_CLIENT_TAG STRING_ARG STRING_ARG + { + int tag_data; + OUTYY(("P(server_edns_client_tag:%s %s)\n", $2, $3)); + tag_data = atoi($3); + if(tag_data > 65535 || tag_data < 0 || + (tag_data == 0 && (strlen($3) != 1 || $3[0] != '0'))) + yyerror("edns-client-tag data invalid, needs to be a " + "number from 0 to 65535"); + if(!cfg_str2list_insert( + &cfg_parser->cfg->edns_client_tags, $2, $3)) + fatal_exit("out of memory adding " + "edns-client-tag"); + } + ; stub_name: VAR_NAME STRING_ARG { OUTYY(("P(name:%s)\n", $2)); diff --git a/util/edns.c b/util/edns.c index 0ab00cf7c..341b7f90a 100644 --- a/util/edns.c +++ b/util/edns.c @@ -75,6 +75,7 @@ int edns_tags_apply_cfg(struct edns_tags* edns_tags, /* TODO walk over config, create and insert node. */ + addr_tree_init_parents(&edns_tags->client_tags); return 1; } From 2fe398f4bf04dbb66b4224c72e61d916a3948990 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Fri, 24 Jul 2020 16:00:13 +0200 Subject: [PATCH 39/81] EDNS client tags - insert configured tags into tree --- services/outside_network.c | 2 +- util/edns.c | 44 +++++++++++++++++++++++++++++++++++--- util/edns.h | 2 +- 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/services/outside_network.c b/services/outside_network.c index b7ac5ef60..67eca05ed 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -2118,7 +2118,7 @@ outnet_serviced_query(struct outside_network* outnet, qstate, qstate->region)) return NULL; - if((client_tag_addr = edns_tag_addr_lookup(env->edns_tags->client_tags, + if((client_tag_addr = edns_tag_addr_lookup(&env->edns_tags->client_tags, addr, addrlen))) { uint16_t client_tag = htons(client_tag_addr->tag_data); edns_opt_list_append(&qstate->edns_opts_back_out, diff --git a/util/edns.c b/util/edns.c index 341b7f90a..db33212c0 100644 --- a/util/edns.c +++ b/util/edns.c @@ -43,6 +43,7 @@ #include "util/edns.h" #include "util/config_file.h" #include "util/netevent.h" +#include "util/net_help.h" #include "util/regional.h" #include "util/data/msgparse.h" #include "util/data/msgreply.h" @@ -67,23 +68,60 @@ void edns_tags_delete(struct edns_tags* edns_tags) free(edns_tags); } +static int +edns_tags_client_insert(struct edns_tags* edns_tags, + struct sockaddr_storage* addr, socklen_t addrlen, int net, + uint16_t tag_data) +{ + struct edns_tag_addr* eta = regional_alloc_zero(edns_tags->region, + sizeof(struct edns_tag_addr)); + if(!eta) + return 0; + eta->tag_data = tag_data; + if(!addr_tree_insert(&edns_tags->client_tags, &eta->node, addr, addrlen, + net)) { + verbose(VERB_QUERY, "duplicate EDNS client tag ignored."); + } + return 1; +} + int edns_tags_apply_cfg(struct edns_tags* edns_tags, struct config_file* config) { + struct config_str2list* c; regional_free_all(edns_tags->region); addr_tree_init(&edns_tags->client_tags); - /* TODO walk over config, create and insert node. */ + for(c=config->edns_client_tags; c; c=c->next) { + struct sockaddr_storage addr; + socklen_t addrlen; + int net; + uint16_t tag_data; + log_assert(c->str && c->str2); + + if(!netblockstrtoaddr(c->str, UNBOUND_DNS_PORT, &addr, &addrlen, + &net)) { + log_err("cannot parse EDNS client tag IP netblock: %s", + c->str); + return 0; + } + tag_data = atoi(c->str2); /* validated in config parser */ + if(!edns_tags_client_insert(edns_tags, &addr, addrlen, net, + tag_data)) { + log_err("out of memory while adding EDNS tags"); + return 0; + } + } addr_tree_init_parents(&edns_tags->client_tags); return 1; } struct edns_tag_addr* -edns_tag_addr_lookup(rbtree_type tree, struct sockaddr_storage* addr, +edns_tag_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr, socklen_t addrlen) { - return (struct edns_tag_addr*)addr_tree_lookup(&tree, addr, addrlen); + return (struct edns_tag_addr*)addr_tree_lookup(tree, addr, addrlen); } static int edns_keepalive(struct edns_data* edns_out, struct edns_data* edns_in, diff --git a/util/edns.h b/util/edns.h index 310ba1cd2..ee0e3de54 100644 --- a/util/edns.h +++ b/util/edns.h @@ -99,7 +99,7 @@ int edns_tags_apply_cfg(struct edns_tags* edns_tags, * @return: matching tree node, NULL otherwise */ struct edns_tag_addr* -edns_tag_addr_lookup(rbtree_type tree, struct sockaddr_storage* addr, +edns_tag_addr_lookup(rbtree_type* tree, struct sockaddr_storage* addr, socklen_t addrlen); /** From d201a11a673206b9f93f45649e80aba6767a8408 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 27 Jul 2020 12:10:28 +0200 Subject: [PATCH 40/81] - branch now named 1.11.1. 1.11.0rc1 became the 1.11.0 release. --- configure | 25 +++++++++++++------------ configure.ac | 5 +++-- doc/Changelog | 3 +++ 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/configure b/configure index ed66e8530..a976189e5 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for unbound 1.11.0. +# Generated by GNU Autoconf 2.69 for unbound 1.11.1. # # Report bugs to . # @@ -591,8 +591,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='unbound' PACKAGE_TARNAME='unbound' -PACKAGE_VERSION='1.11.0' -PACKAGE_STRING='unbound 1.11.0' +PACKAGE_VERSION='1.11.1' +PACKAGE_STRING='unbound 1.11.1' PACKAGE_BUGREPORT='unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues' PACKAGE_URL='' @@ -1458,7 +1458,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures unbound 1.11.0 to adapt to many kinds of systems. +\`configure' configures unbound 1.11.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1523,7 +1523,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of unbound 1.11.0:";; + short | recursive ) echo "Configuration of unbound 1.11.1:";; esac cat <<\_ACEOF @@ -1750,7 +1750,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -unbound configure 1.11.0 +unbound configure 1.11.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2459,7 +2459,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by unbound $as_me 1.11.0, which was +It was created by unbound $as_me 1.11.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2811,11 +2811,11 @@ UNBOUND_VERSION_MAJOR=1 UNBOUND_VERSION_MINOR=11 -UNBOUND_VERSION_MICRO=0 +UNBOUND_VERSION_MICRO=1 LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=9 +LIBUNBOUND_REVISION=10 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -2892,6 +2892,7 @@ LIBUNBOUND_AGE=1 # 1.10.0 had 9:7:1 # 1.10.1 had 9:8:1 # 1.11.0 had 9:9:1 +# 1.11.1 had 9:10:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary @@ -21619,7 +21620,7 @@ _ACEOF -version=1.11.0 +version=1.11.1 date=`date +'%b %e, %Y'` @@ -22138,7 +22139,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by unbound $as_me 1.11.0, which was +This file was extended by unbound $as_me 1.11.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -22204,7 +22205,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -unbound config.status 1.11.0 +unbound config.status 1.11.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index 1d16dce72..22319b5a9 100644 --- a/configure.ac +++ b/configure.ac @@ -11,14 +11,14 @@ sinclude(dnscrypt/dnscrypt.m4) # must be numbers. ac_defun because of later processing m4_define([VERSION_MAJOR],[1]) m4_define([VERSION_MINOR],[11]) -m4_define([VERSION_MICRO],[0]) +m4_define([VERSION_MICRO],[1]) AC_INIT(unbound, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues, unbound) AC_SUBST(UNBOUND_VERSION_MAJOR, [VERSION_MAJOR]) AC_SUBST(UNBOUND_VERSION_MINOR, [VERSION_MINOR]) AC_SUBST(UNBOUND_VERSION_MICRO, [VERSION_MICRO]) LIBUNBOUND_CURRENT=9 -LIBUNBOUND_REVISION=9 +LIBUNBOUND_REVISION=10 LIBUNBOUND_AGE=1 # 1.0.0 had 0:12:0 # 1.0.1 had 0:13:0 @@ -95,6 +95,7 @@ LIBUNBOUND_AGE=1 # 1.10.0 had 9:7:1 # 1.10.1 had 9:8:1 # 1.11.0 had 9:9:1 +# 1.11.1 had 9:10:1 # Current -- the number of the binary API that we're implementing # Revision -- which iteration of the implementation of the binary diff --git a/doc/Changelog b/doc/Changelog index 3339e77b3..6de5831d7 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +27 July 2020: Wouter + - branch now named 1.11.1. 1.11.0rc1 became the 1.11.0 release. + 20 July 2020: Wouter - Fix streamtcp to print packet data to stdout. This makes the stdout and stderr not mix together lines, when parsing its output. From 4bd97633a1599195a9aa68bc6295e76197742376 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Mon, 27 Jul 2020 12:14:08 +0200 Subject: [PATCH 41/81] =?UTF-8?q?-=20Merge=20PR=20#269,=20Fix=20python=20m?= =?UTF-8?q?odule=20len()=20implementations,=20by=20Torbj=C3=B6rn=20L=C3=B6?= =?UTF-8?q?nnemark?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 6de5831d7..1fa8d631d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +27 July 2020: Ralph + - Merge PR #269, Fix python module len() implementations, by Torbjörn + Lönnemark + 27 July 2020: Wouter - branch now named 1.11.1. 1.11.0rc1 became the 1.11.0 release. From e4b702ef4f8ac89f147cf3dc3d749f98fa75b1a1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 27 Jul 2020 13:02:47 +0200 Subject: [PATCH 42/81] Changelog note for PR #270 - Merge PR #270 from cgzones: munin plugin: always exit 0 in autoconf --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index 1fa8d631d..6494e04d2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ 27 July 2020: Wouter - branch now named 1.11.1. 1.11.0rc1 became the 1.11.0 release. + - Merge PR #270 from cgzones: munin plugin: always exit 0 in autoconf 20 July 2020: Wouter - Fix streamtcp to print packet data to stdout. This makes the From fa892b2456020b41a7e077cdd4ea5b3e8f2d201d Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Mon, 27 Jul 2020 15:54:43 +0200 Subject: [PATCH 43/81] - Add EDNS client tag test --- testcode/fake_event.c | 14 +++- testdata/edns_client_tag.rpl | 151 +++++++++++++++++++++++++++++++++++ 2 files changed, 163 insertions(+), 2 deletions(-) create mode 100644 testdata/edns_client_tag.rpl diff --git a/testcode/fake_event.c b/testcode/fake_event.c index d89eedce8..59df27f57 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -52,6 +52,7 @@ #include "util/data/msgreply.h" #include "util/data/msgencode.h" #include "util/data/dname.h" +#include "util/edns.h" #include "util/config_file.h" #include "services/listen_dnsport.h" #include "services/outside_network.h" @@ -1180,7 +1181,7 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, socklen_t addrlen, uint8_t* zone, size_t zonelen, struct module_qstate* qstate, comm_point_callback_type* callback, void* callback_arg, sldns_buffer* ATTR_UNUSED(buff), - struct module_env* ATTR_UNUSED(env)) + struct module_env* env) { struct replay_runtime* runtime = (struct replay_runtime*)outnet->base; struct fake_pending* pend = (struct fake_pending*)calloc(1, @@ -1209,6 +1210,7 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, sldns_buffer_flip(pend->buffer); if(1) { struct edns_data edns; + struct edns_tag_addr* client_tag_addr; if(!inplace_cb_query_call(env, qinfo, flags, addr, addrlen, zone, zonelen, qstate, qstate->region)) { free(pend); @@ -1220,9 +1222,17 @@ struct serviced_query* outnet_serviced_query(struct outside_network* outnet, edns.edns_version = EDNS_ADVERTISED_VERSION; edns.udp_size = EDNS_ADVERTISED_SIZE; edns.bits = 0; - edns.opt_list = qstate->edns_opts_back_out; if(dnssec) edns.bits = EDNS_DO; + if((client_tag_addr = edns_tag_addr_lookup( + &env->edns_tags->client_tags, + addr, addrlen))) { + uint16_t client_tag = htons(client_tag_addr->tag_data); + edns_opt_list_append(&qstate->edns_opts_back_out, + LDNS_EDNS_CLIENT_TAG, 2, + (uint8_t*)&client_tag, qstate->region); + } + edns.opt_list = qstate->edns_opts_back_out; attach_edns_record(pend->buffer, &edns); } memcpy(&pend->addr, addr, addrlen); diff --git a/testdata/edns_client_tag.rpl b/testdata/edns_client_tag.rpl new file mode 100644 index 000000000..767652c26 --- /dev/null +++ b/testdata/edns_client_tag.rpl @@ -0,0 +1,151 @@ +; config options +server: + edns-client-tag: 10.0.0.0/24 1234 + edns-client-tag: 10.0.0.10/32 5678 + +stub-zone: + name: "tag1234." + stub-addr: 10.0.0.1 + +stub-zone: + name: "tag5678." + stub-addr: 10.0.0.10 + +stub-zone: + name: "notag." + stub-addr: 10.10.0.1 + +CONFIG_END + +SCENARIO_BEGIN Test EDNS client tag option + +RANGE_BEGIN 0 1000 + ADDRESS 10.0.0.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +tag1234. IN A +SECTION ANSWER +tag1234. IN A 10.20.30.40 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +RANGE_BEGIN 0 1000 + ADDRESS 10.0.0.10 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +tag5678. IN A +SECTION ANSWER +tag5678. IN A 10.20.30.40 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +RANGE_BEGIN 0 1000 + ADDRESS 10.10.0.1 +ENTRY_BEGIN +MATCH opcode qtype qname +ADJUST copy_id +REPLY QR NOERROR +SECTION QUESTION +notag. IN A +SECTION ANSWER +notag. IN A 10.20.30.40 +SECTION ADDITIONAL +ENTRY_END +RANGE_END + +STEP 10 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +tag1234. IN A +ENTRY_END + +STEP 20 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode ednsdata +SECTION QUESTION +tag1234. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + 00 10 ; Opcode 16 + 00 02 ; Length 2 + 04 d2 ; 1234 + HEX_EDNSDATA_END +ENTRY_END + +STEP 30 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +tag1234. IN A +SECTION ANSWER +tag1234. IN A 10.20.30.40 +ENTRY_END + +STEP 110 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +tag5678. IN A +ENTRY_END + +STEP 120 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode ednsdata +SECTION QUESTION +tag5678. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + 00 10 ; Opcode 16 + 00 02 ; Length 2 + 16 2e ; 5678 + HEX_EDNSDATA_END +ENTRY_END + +STEP 130 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +tag5678. IN A +SECTION ANSWER +tag5678. IN A 10.20.30.40 +ENTRY_END + +STEP 210 QUERY +ENTRY_BEGIN +REPLY RD +SECTION QUESTION +notag. IN A +ENTRY_END + +STEP 220 CHECK_OUT_QUERY +ENTRY_BEGIN +MATCH qname qtype opcode ednsdata +SECTION QUESTION +notag. IN A +SECTION ADDITIONAL + HEX_EDNSDATA_BEGIN + HEX_EDNSDATA_END +ENTRY_END + +STEP 230 CHECK_ANSWER +ENTRY_BEGIN +MATCH all +REPLY QR RD RA NOERROR +SECTION QUESTION +notag. IN A +SECTION ANSWER +notag. IN A 10.20.30.40 +ENTRY_END + +SCENARIO_END From e855d5779a6e0bd07681bb2db5a189b14039ae90 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Fri, 31 Jul 2020 09:10:40 +0200 Subject: [PATCH 44/81] - Fix doxygen comment for no ssl for tls session ticket key callback routine. --- doc/Changelog | 4 ++++ util/net_help.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 3ee202c62..8f768952b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +31 July 2020: Wouter + - Fix doxygen comment for no ssl for tls session ticket key callback + routine. + 27 July 2020: George - Merge PR #268, draft-ietf-dnsop-serve-stale-10 has become RFC 8767 on March 2020, by and0x000. diff --git a/util/net_help.c b/util/net_help.c index f59a4d653..7d81d47be 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -82,6 +82,7 @@ static struct tls_session_ticket_key { unsigned char *hmac_key; } *ticket_keys; +#ifdef HAVE_SSL /** * callback TLS session ticket encrypt and decrypt * For use with SSL_CTX_set_tlsext_ticket_key_cb or @@ -97,7 +98,6 @@ static struct tls_session_ticket_key { * @return 0 on no ticket, 1 for okay, and 2 for okay but renew the ticket * (the ticket is decrypt only). and <0 for failures. */ -#ifdef HAVE_SSL int tls_session_ticket_key_cb(SSL *s, unsigned char* key_name, unsigned char* iv, EVP_CIPHER_CTX *evp_ctx, #ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB From 61100b646305a5a87ea83311f786ad444bec0e9e Mon Sep 17 00:00:00 2001 From: Vitezslav Cizek Date: Fri, 31 Jul 2020 14:44:05 +0200 Subject: [PATCH 45/81] net_help: Rename EVP_MAC_set_ctx_params to EVP_MAC_CTX_set_params This fixes build with OpenSSL 3.0.0 Alpha 5. EVP_MAC_set_ctx_params got renamed back to EVP_MAC_CTX_set_params in https://github.com/openssl/openssl/pull/12186 --- util/net_help.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/util/net_help.c b/util/net_help.c index 7d81d47be..ce1bc0c15 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -1478,7 +1478,7 @@ int tls_session_ticket_key_cb(SSL *ATTR_UNUSED(sslctx), unsigned char* key_name, params[1] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, "sha256", 0); params[2] = OSSL_PARAM_construct_end(); - EVP_MAC_set_ctx_params(hmac_ctx, params); + EVP_MAC_CTX_set_params(hmac_ctx, params); #elif !defined(HMAC_INIT_EX_RETURNS_VOID) if (HMAC_Init_ex(hmac_ctx, ticket_keys->hmac_key, 32, digest, NULL) != 1) { verbose(VERB_CLIENT, "HMAC_Init_ex failed"); @@ -1509,7 +1509,7 @@ int tls_session_ticket_key_cb(SSL *ATTR_UNUSED(sslctx), unsigned char* key_name, params[1] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, "sha256", 0); params[2] = OSSL_PARAM_construct_end(); - EVP_MAC_set_ctx_params(hmac_ctx, params); + EVP_MAC_CTX_set_params(hmac_ctx, params); #elif !defined(HMAC_INIT_EX_RETURNS_VOID) if (HMAC_Init_ex(hmac_ctx, key->hmac_key, 32, digest, NULL) != 1) { verbose(VERB_CLIENT, "HMAC_Init_ex failed"); From 9bc30967d29dd13441eca2a003048ee7975181f7 Mon Sep 17 00:00:00 2001 From: Felipe Gasper Date: Mon, 3 Aug 2020 14:37:00 -0400 Subject: [PATCH 46/81] Make tvOS & watchOS checks verify truthiness as well as definedness. --- daemon/unbound.c | 2 +- libunbound/libworker.c | 2 +- smallapp/unbound-control.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/daemon/unbound.c b/daemon/unbound.c index 3f96603c4..cd0fd69f2 100644 --- a/daemon/unbound.c +++ b/daemon/unbound.c @@ -92,7 +92,7 @@ #include #endif -#if defined(TARGET_OS_TV) || defined(TARGET_OS_WATCH) +#if (defined(TARGET_OS_TV) && TARGET_OS_TV) || (defined(TARGET_OS_WATCH) && TARGET_OS_WATCH) #undef HAVE_FORK #endif diff --git a/libunbound/libworker.c b/libunbound/libworker.c index 44b8d7905..bd42462e1 100644 --- a/libunbound/libworker.c +++ b/libunbound/libworker.c @@ -78,7 +78,7 @@ #include #endif -#if defined(TARGET_OS_TV) || defined(TARGET_OS_WATCH) +#if (defined(TARGET_OS_TV) && TARGET_OS_TV) || (defined(TARGET_OS_WATCH) && TARGET_OS_WATCH) #undef HAVE_FORK #endif diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index c2b42e951..4662c7cb6 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -886,7 +886,7 @@ int main(int argc, char* argv[]) if(argc == 0) usage(); if(argc >= 1 && strcmp(argv[0], "start")==0) { -#if defined(TARGET_OS_TV) || defined(TARGET_OS_WATCH) +#if (defined(TARGET_OS_TV) && TARGET_OS_TV) || (defined(TARGET_OS_WATCH) && TARGET_OS_WATCH) fatal_exit("could not exec unbound: %s", strerror(ENOSYS)); #else From fc55345dcbbb653083489b17a91d81338bc487ef Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 4 Aug 2020 08:14:25 +0200 Subject: [PATCH 47/81] - Fix mini_event.h on OpenBSD cannot find fd_set. --- config.h.in | 3 +++ configure | 2 +- configure.ac | 2 +- doc/Changelog | 3 +++ util/mini_event.h | 4 ++++ 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/config.h.in b/config.h.in index f7a4095ed..6b106d8de 100644 --- a/config.h.in +++ b/config.h.in @@ -573,6 +573,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_SYS_RESOURCE_H +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_SELECT_H + /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SHA2_H diff --git a/configure b/configure index a976189e5..2510b2bfc 100755 --- a/configure +++ b/configure @@ -14726,7 +14726,7 @@ $as_echo "no" >&6; } fi # Checks for header files. -for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h +for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default diff --git a/configure.ac b/configure.ac index 22319b5a9..59a075086 100644 --- a/configure.ac +++ b/configure.ac @@ -399,7 +399,7 @@ ACX_LIBTOOL_C_ONLY PKG_PROG_PKG_CONFIG # Checks for header files. -AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h],,, [AC_INCLUDES_DEFAULT]) # Check for Apple header. This uncovers TARGET_OS_IPHONE, TARGET_OS_TV or TARGET_OS_WATCH AC_CHECK_HEADERS([TargetConditionals.h]) diff --git a/doc/Changelog b/doc/Changelog index 8f768952b..9638d242f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +4 August 2020: Wouter + - Fix mini_event.h on OpenBSD cannot find fd_set. + 31 July 2020: Wouter - Fix doxygen comment for no ssl for tls session ticket key callback routine. diff --git a/util/mini_event.h b/util/mini_event.h index 1734ca574..fa71ca3d1 100644 --- a/util/mini_event.h +++ b/util/mini_event.h @@ -54,6 +54,10 @@ #if defined(USE_MINI_EVENT) && !defined(USE_WINSOCK) +#ifdef HAVE_SYS_SELECT_H +/* for fd_set on OpenBSD */ +#include +#endif #include #ifndef HAVE_EVENT_BASE_FREE From c0c722cd9755541dd087dfef133a9b7c35281f71 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 4 Aug 2020 09:05:09 +0200 Subject: [PATCH 48/81] DLV removal --- doc/example.conf.in | 5 - doc/unbound.conf.5.in | 15 - pythonmod/doc/modules/config.rst | 8 - services/cache/dns.c | 5 +- smallapp/unbound-checkconf.c | 2 - util/config_file.c | 8 - util/config_file.h | 4 - util/configparser.c | 1922 ++++++++++++++---------------- util/configparser.h | 2 +- util/configparser.y | 6 +- validator/val_anchor.c | 33 - validator/val_anchor.h | 2 - validator/val_neg.c | 102 -- validator/val_neg.h | 20 - validator/val_nsec.c | 83 -- validator/val_nsec.h | 13 - validator/validator.h | 23 - 17 files changed, 920 insertions(+), 1333 deletions(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index 3af4420c6..03d22d381 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -509,11 +509,6 @@ server: # Root key trust anchor sentinel (draft-ietf-dnsop-kskroll-sentinel) # root-key-sentinel: yes - # File with DLV trusted keys. Same format as trust-anchor-file. - # There can be only one DLV configured, it is trusted from root down. - # DLV is going to be decommissioned. Please do not use it any more. - # dlv-anchor-file: "dlv.isc.org.key" - # File with trusted keys for validation. Specify more than one file # with several entries, one file per entry. # Zone file format, with DS and DNSKEY entries. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 4920a0b2d..23895d808 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1010,21 +1010,6 @@ Send RFC8145 key tag query after trust anchor priming. Default is yes. .B root\-key\-sentinel: \fI Root key trust anchor sentinel. Default is yes. .TP -.B dlv\-anchor\-file: \fI -This option was used during early days DNSSEC deployment when no parent-side -DS record registrations were easily available. Nowadays, it is best to have -DS records registered with the parent zone (many top level zones are signed). -File with trusted keys for DLV (DNSSEC Lookaside Validation). Both DS and -DNSKEY entries can be used in the file, in the same format as for -\fItrust\-anchor\-file:\fR statements. Only one DLV can be configured, more -would be slow. The DLV configured is used as a root trusted DLV, this -means that it is a lookaside for the root. Default is "", or no dlv anchor -file. DLV is going to be decommissioned. Please do not use it any more. -.TP -.B dlv\-anchor: \fI<"Resource Record"> -Much like trust\-anchor, this is a DLV anchor with the DS or DNSKEY inline. -DLV is going to be decommissioned. Please do not use it any more. -.TP .B domain\-insecure: \fI Sets domain name to be insecure, DNSSEC chain of trust is ignored towards the domain name. So a trust anchor above the domain name can not make the diff --git a/pythonmod/doc/modules/config.rst b/pythonmod/doc/modules/config.rst index 43333bdae..89afbef8a 100644 --- a/pythonmod/doc/modules/config.rst +++ b/pythonmod/doc/modules/config.rst @@ -256,14 +256,6 @@ config_file Files with trusted DNSKEYs in named.conf format, list. - .. attribute:: dlv_anchor_file - - DLV anchor file. - - .. attribute:: dlv_anchor_list - - DLV anchor inline. - .. attribute:: max_ttl The number of seconds maximal TTL used for RRsets and messages. diff --git a/services/cache/dns.c b/services/cache/dns.c index 7b6e142c9..f3149b614 100644 --- a/services/cache/dns.c +++ b/services/cache/dns.c @@ -890,9 +890,8 @@ dns_cache_lookup(struct module_env* env, lock_rw_unlock(&rrset->entry.lock); } - /* construct DS, DNSKEY, DLV messages from rrset cache. */ - if((qtype == LDNS_RR_TYPE_DS || qtype == LDNS_RR_TYPE_DNSKEY || - qtype == LDNS_RR_TYPE_DLV) && + /* construct DS, DNSKEY messages from rrset cache. */ + if((qtype == LDNS_RR_TYPE_DS || qtype == LDNS_RR_TYPE_DNSKEY) && (rrset=rrset_cache_lookup(env->rrset_cache, qname, qnamelen, qtype, qclass, 0, now, 0))) { /* if the rrset is from the additional section, and the diff --git a/smallapp/unbound-checkconf.c b/smallapp/unbound-checkconf.c index 0cf348add..b1b7ae7ef 100644 --- a/smallapp/unbound-checkconf.c +++ b/smallapp/unbound-checkconf.c @@ -624,8 +624,6 @@ morechecks(struct config_file* cfg) cfg->auto_trust_anchor_file_list, cfg->chrootdir, cfg); check_chroot_filelist_wild("trusted-keys-file", cfg->trusted_keys_file_list, cfg->chrootdir, cfg); - check_chroot_string("dlv-anchor-file", &cfg->dlv_anchor_file, - cfg->chrootdir, cfg); #ifdef USE_IPSECMOD if(cfg->ipsecmod_enabled && strstr(cfg->module_conf, "ipsecmod")) { /* only check hook if enabled */ diff --git a/util/config_file.c b/util/config_file.c index 0e9ee471b..0460c28b0 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -233,8 +233,6 @@ config_create(void) cfg->trusted_keys_file_list = NULL; cfg->trust_anchor_signaling = 1; cfg->root_key_sentinel = 1; - cfg->dlv_anchor_file = NULL; - cfg->dlv_anchor_list = NULL; cfg->domain_insecure = NULL; cfg->val_date_override = 0; cfg->val_sig_skew_min = 3600; /* at least daylight savings trouble */ @@ -581,8 +579,6 @@ int config_set_option(struct config_file* cfg, const char* opt, else S_STRLIST("trusted-keys-file:", trusted_keys_file_list) else S_YNO("trust-anchor-signaling:", trust_anchor_signaling) else S_YNO("root-key-sentinel:", root_key_sentinel) - else S_STR("dlv-anchor-file:", dlv_anchor_file) - else S_STRLIST("dlv-anchor:", dlv_anchor_list) else S_STRLIST("domain-insecure:", domain_insecure) else S_NUMBER_OR_ZERO("val-bogus-ttl:", bogus_ttl) else S_YNO("val-clean-additional:", val_clean_additional) @@ -998,7 +994,6 @@ config_get_option(struct config_file* cfg, const char* opt, else O_DEC(opt, "unwanted-reply-threshold", unwanted_threshold) else O_YNO(opt, "do-not-query-localhost", donotquery_localhost) else O_STR(opt, "module-config", module_conf) - else O_STR(opt, "dlv-anchor-file", dlv_anchor_file) else O_DEC(opt, "val-bogus-ttl", bogus_ttl) else O_YNO(opt, "val-clean-additional", val_clean_additional) else O_DEC(opt, "val-log-level", val_log_level) @@ -1036,7 +1031,6 @@ config_get_option(struct config_file* cfg, const char* opt, else O_LST(opt, "trusted-keys-file", trusted_keys_file_list) else O_YNO(opt, "trust-anchor-signaling", trust_anchor_signaling) else O_YNO(opt, "root-key-sentinel", root_key_sentinel) - else O_LST(opt, "dlv-anchor", dlv_anchor_list) else O_LST(opt, "control-interface", control_ifs.first) else O_LST(opt, "domain-insecure", domain_insecure) else O_UNS(opt, "val-override-date", val_date_override) @@ -1462,8 +1456,6 @@ config_delete(struct config_file* cfg) config_delstrlist(cfg->trusted_keys_file_list); config_delstrlist(cfg->trust_anchor_list); config_delstrlist(cfg->domain_insecure); - free(cfg->dlv_anchor_file); - config_delstrlist(cfg->dlv_anchor_list); config_deldblstrlist(cfg->acls); config_deldblstrlist(cfg->tcp_connection_limits); free(cfg->val_nsec3_key_iterations); diff --git a/util/config_file.h b/util/config_file.h index 66e5025d0..db80abc7e 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -331,10 +331,6 @@ struct config_file { struct config_strlist* auto_trust_anchor_file_list; /** files with trusted DNSKEYs in named.conf format, list */ struct config_strlist* trusted_keys_file_list; - /** DLV anchor file */ - char* dlv_anchor_file; - /** DLV anchor inline */ - struct config_strlist* dlv_anchor_list; /** insecure domain list */ struct config_strlist* domain_insecure; /** send key tag query */ diff --git a/util/configparser.c b/util/configparser.c index 2c9af619a..5f8c70bd0 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.5. */ +/* A Bison parser, made by GNU Bison 3.4.1. */ /* Bison implementation for Yacc-like parsers in C @@ -48,7 +48,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.5" +#define YYBISON_VERSION "3.4.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -97,15 +97,6 @@ extern struct config_parser_state* cfg_parser; #line 99 "util/configparser.c" -# ifndef YY_CAST -# ifdef __cplusplus -# define YY_CAST(Type, Val) static_cast (Val) -# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast (Val) -# else -# define YY_CAST(Type, Val) ((Type) (Val)) -# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val)) -# endif -# endif # ifndef YY_NULLPTR # if defined __cplusplus # if 201103L <= __cplusplus @@ -733,7 +724,7 @@ union YYSTYPE char* str; -#line 737 "util/configparser.c" +#line 728 "util/configparser.c" }; typedef union YYSTYPE YYSTYPE; @@ -754,83 +745,36 @@ int yyparse (void); # undef short #endif -/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure - and (if available) are included - so that the code can choose integer types of a good width. */ - -#ifndef __PTRDIFF_MAX__ -# include /* INFRINGES ON USER NAME SPACE */ -# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ -# include /* INFRINGES ON USER NAME SPACE */ -# define YY_STDINT_H -# endif +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; #endif -/* Narrow types that promote to a signed type and that can represent a - signed or unsigned integer of at least N bits. In tables they can - save space and decrease cache pressure. Promoting to a signed type - helps avoid bugs in integer arithmetic. */ - -#ifdef __INT_LEAST8_MAX__ -typedef __INT_LEAST8_TYPE__ yytype_int8; -#elif defined YY_STDINT_H -typedef int_least8_t yytype_int8; +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; #else typedef signed char yytype_int8; #endif -#ifdef __INT_LEAST16_MAX__ -typedef __INT_LEAST16_TYPE__ yytype_int16; -#elif defined YY_STDINT_H -typedef int_least16_t yytype_int16; +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; #else typedef short yytype_int16; #endif -#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST8_TYPE__ yytype_uint8; -#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST8_MAX <= INT_MAX) -typedef uint_least8_t yytype_uint8; -#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX -typedef unsigned char yytype_uint8; -#else -typedef short yytype_uint8; -#endif - -#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__ -typedef __UINT_LEAST16_TYPE__ yytype_uint16; -#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \ - && UINT_LEAST16_MAX <= INT_MAX) -typedef uint_least16_t yytype_uint16; -#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX -typedef unsigned short yytype_uint16; -#else -typedef int yytype_uint16; -#endif - -#ifndef YYPTRDIFF_T -# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__ -# define YYPTRDIFF_T __PTRDIFF_TYPE__ -# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__ -# elif defined PTRDIFF_MAX -# ifndef ptrdiff_t -# include /* INFRINGES ON USER NAME SPACE */ -# endif -# define YYPTRDIFF_T ptrdiff_t -# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX -# else -# define YYPTRDIFF_T long -# define YYPTRDIFF_MAXIMUM LONG_MAX -# endif -#endif - #ifndef YYSIZE_T # ifdef __SIZE_TYPE__ # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__ +# elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -838,19 +782,7 @@ typedef int yytype_uint16; # endif #endif -#define YYSIZE_MAXIMUM \ - YY_CAST (YYPTRDIFF_T, \ - (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \ - ? YYPTRDIFF_MAXIMUM \ - : YY_CAST (YYSIZE_T, -1))) - -#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X)) - -/* Stored state numbers (used for stacks). */ -typedef yytype_int16 yy_state_t; - -/* State numbers in computations. */ -typedef int yy_state_fast_t; +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) #ifndef YY_ # if defined YYENABLE_NLS && YYENABLE_NLS @@ -864,20 +796,22 @@ typedef int yy_state_fast_t; # endif #endif -#ifndef YY_ATTRIBUTE_PURE -# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__)) +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) # else -# define YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE(Spec) /* empty */ # endif #endif +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + #ifndef YY_ATTRIBUTE_UNUSED -# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__) -# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__)) -# else -# define YY_ATTRIBUTE_UNUSED -# endif +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) #endif /* Suppress unused-variable warnings by "using" E. */ @@ -889,11 +823,11 @@ typedef int yy_state_fast_t; #if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else # define YY_INITIAL_VALUE(Value) Value @@ -906,18 +840,6 @@ typedef int yy_state_fast_t; # define YY_INITIAL_VALUE(Value) /* Nothing. */ #endif -#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__ -# define YY_IGNORE_USELESS_CAST_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"") -# define YY_IGNORE_USELESS_CAST_END \ - _Pragma ("GCC diagnostic pop") -#endif -#ifndef YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_BEGIN -# define YY_IGNORE_USELESS_CAST_END -#endif - #define YY_ASSERT(E) ((void) (0 && (E))) @@ -996,17 +918,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yy_state_t yyss_alloc; + yytype_int16 yyss_alloc; YYSTYPE yyvs_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ -# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1) +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) /* The size of an array large to enough to hold all stacks, each with N elements. */ # define YYSTACK_BYTES(N) \ - ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + YYSTACK_GAP_MAXIMUM) # define YYCOPY_NEEDED 1 @@ -1019,11 +941,11 @@ union yyalloc # define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ - YYPTRDIFF_T yynewbytes; \ + YYSIZE_T yynewbytes; \ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / YYSIZEOF (*yyptr); \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ } \ while (0) @@ -1035,12 +957,12 @@ union yyalloc # ifndef YYCOPY # if defined __GNUC__ && 1 < __GNUC__ # define YYCOPY(Dst, Src, Count) \ - __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src))) + __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src))) # else # define YYCOPY(Dst, Src, Count) \ do \ { \ - YYPTRDIFF_T yyi; \ + YYSIZE_T yyi; \ for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ @@ -1066,15 +988,14 @@ union yyalloc #define YYUNDEFTOK 2 #define YYMAXUTOK 546 - /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM as returned by yylex, with out-of-bounds checking. */ #define YYTRANSLATE(YYX) \ - (0 <= (YYX) && (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM as returned by yylex. */ -static const yytype_int16 yytranslate[] = +static const yytype_uint16 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -1135,7 +1056,7 @@ static const yytype_int16 yytranslate[] = #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ -static const yytype_int16 yyrline[] = +static const yytype_uint16 yyrline[] = { 0, 181, 181, 181, 182, 182, 183, 183, 184, 184, 184, 185, 185, 186, 186, 187, 187, 188, 190, 196, @@ -1171,34 +1092,34 @@ static const yytype_int16 yyrline[] = 854, 867, 876, 885, 894, 901, 908, 917, 924, 933, 941, 948, 955, 963, 972, 981, 990, 1004, 1013, 1022, 1031, 1040, 1049, 1058, 1065, 1072, 1098, 1106, 1113, 1120, - 1127, 1134, 1142, 1150, 1158, 1165, 1176, 1187, 1194, 1203, - 1212, 1221, 1228, 1235, 1243, 1251, 1261, 1271, 1281, 1295, - 1303, 1316, 1327, 1335, 1348, 1357, 1366, 1375, 1385, 1395, - 1403, 1416, 1425, 1433, 1442, 1450, 1463, 1472, 1479, 1489, - 1499, 1509, 1519, 1529, 1539, 1549, 1559, 1566, 1573, 1580, - 1589, 1598, 1607, 1616, 1623, 1633, 1653, 1660, 1678, 1691, - 1704, 1713, 1722, 1731, 1740, 1750, 1760, 1771, 1780, 1789, - 1798, 1807, 1816, 1825, 1838, 1851, 1860, 1867, 1876, 1885, - 1894, 1903, 1911, 1924, 1932, 1973, 1980, 1995, 2005, 2015, - 2022, 2029, 2036, 2045, 2053, 2067, 2088, 2109, 2121, 2133, - 2145, 2154, 2175, 2185, 2194, 2202, 2210, 2223, 2236, 2251, - 2266, 2275, 2284, 2290, 2299, 2308, 2318, 2328, 2341, 2354, - 2366, 2380, 2392, 2406, 2416, 2423, 2430, 2439, 2448, 2458, - 2468, 2478, 2485, 2492, 2501, 2510, 2520, 2530, 2537, 2544, - 2551, 2559, 2569, 2579, 2589, 2599, 2638, 2648, 2656, 2664, - 2679, 2688, 2693, 2694, 2695, 2695, 2695, 2696, 2696, 2696, - 2697, 2697, 2699, 2709, 2718, 2725, 2732, 2739, 2746, 2753, - 2760, 2765, 2766, 2767, 2767, 2767, 2768, 2768, 2768, 2769, - 2770, 2770, 2771, 2771, 2772, 2772, 2773, 2774, 2775, 2776, - 2777, 2778, 2780, 2789, 2799, 2806, 2813, 2822, 2829, 2836, - 2843, 2850, 2859, 2868, 2875, 2882, 2892, 2902, 2912, 2922, - 2932, 2942, 2947, 2948, 2949, 2951, 2957, 2962, 2963, 2964, - 2966, 2972, 2982, 2989, 2998, 3006, 3011, 3012, 3014, 3014, - 3014, 3015, 3015, 3016, 3017, 3018, 3019, 3020, 3022, 3032, - 3041, 3048, 3057, 3064, 3073, 3081, 3094, 3102, 3115, 3120, - 3121, 3122, 3122, 3123, 3123, 3123, 3124, 3126, 3138, 3150, - 3162, 3177, 3190, 3203, 3214, 3219, 3220, 3221, 3221, 3223, - 3238 + 1126, 1132, 1140, 1148, 1156, 1163, 1174, 1185, 1192, 1201, + 1210, 1219, 1226, 1233, 1241, 1249, 1259, 1269, 1279, 1293, + 1301, 1314, 1325, 1333, 1346, 1355, 1364, 1373, 1383, 1393, + 1401, 1414, 1423, 1431, 1440, 1448, 1461, 1470, 1477, 1487, + 1497, 1507, 1517, 1527, 1537, 1547, 1557, 1564, 1571, 1578, + 1587, 1596, 1605, 1614, 1621, 1631, 1651, 1658, 1676, 1689, + 1702, 1711, 1720, 1729, 1738, 1748, 1758, 1769, 1778, 1787, + 1796, 1805, 1814, 1823, 1836, 1849, 1858, 1865, 1874, 1883, + 1892, 1901, 1909, 1922, 1930, 1971, 1978, 1993, 2003, 2013, + 2020, 2027, 2034, 2043, 2051, 2065, 2086, 2107, 2119, 2131, + 2143, 2152, 2173, 2183, 2192, 2200, 2208, 2221, 2234, 2249, + 2264, 2273, 2282, 2288, 2297, 2306, 2316, 2326, 2339, 2352, + 2364, 2378, 2390, 2404, 2414, 2421, 2428, 2437, 2446, 2456, + 2466, 2476, 2483, 2490, 2499, 2508, 2518, 2528, 2535, 2542, + 2549, 2557, 2567, 2577, 2587, 2597, 2636, 2646, 2654, 2662, + 2677, 2686, 2691, 2692, 2693, 2693, 2693, 2694, 2694, 2694, + 2695, 2695, 2697, 2707, 2716, 2723, 2730, 2737, 2744, 2751, + 2758, 2763, 2764, 2765, 2765, 2765, 2766, 2766, 2766, 2767, + 2768, 2768, 2769, 2769, 2770, 2770, 2771, 2772, 2773, 2774, + 2775, 2776, 2778, 2787, 2797, 2804, 2811, 2820, 2827, 2834, + 2841, 2848, 2857, 2866, 2873, 2880, 2890, 2900, 2910, 2920, + 2930, 2940, 2945, 2946, 2947, 2949, 2955, 2960, 2961, 2962, + 2964, 2970, 2980, 2987, 2996, 3004, 3009, 3010, 3012, 3012, + 3012, 3013, 3013, 3014, 3015, 3016, 3017, 3018, 3020, 3030, + 3039, 3046, 3055, 3062, 3071, 3079, 3092, 3100, 3113, 3118, + 3119, 3120, 3120, 3121, 3121, 3121, 3122, 3124, 3136, 3148, + 3160, 3175, 3188, 3201, 3212, 3217, 3218, 3219, 3219, 3221, + 3236 }; #endif @@ -1446,7 +1367,7 @@ static const char *const yytname[] = # ifdef YYPRINT /* YYTOKNUM[NUM] -- (External) token number corresponding to the (internal) symbol number NUM (which must be that of a token). */ -static const yytype_int16 yytoknum[] = +static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, @@ -1481,14 +1402,14 @@ static const yytype_int16 yytoknum[] = }; # endif -#define YYPACT_NINF (-285) +#define YYPACT_NINF -285 -#define yypact_value_is_default(Yyn) \ - ((Yyn) == YYPACT_NINF) +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-285))) -#define YYTABLE_NINF (-1) +#define YYTABLE_NINF -1 -#define yytable_value_is_error(Yyn) \ +#define yytable_value_is_error(Yytable_value) \ 0 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing @@ -1591,7 +1512,7 @@ static const yytype_int16 yypact[] = /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. Performed when YYTABLE does not specify something else to do. Zero means the default is an error. */ -static const yytype_int16 yydefact[] = +static const yytype_uint16 yydefact[] = { 2, 0, 1, 18, 19, 216, 226, 491, 551, 510, 235, 565, 588, 245, 604, 261, 556, 3, 17, 21, @@ -1763,7 +1684,7 @@ static const yytype_int16 yydefgoto[] = /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule whose number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int16 yytable[] = +static const yytype_uint16 yytable[] = { 2, 477, 462, 434, 566, 435, 436, 569, 449, 606, 607, 3, 4, 611, 612, 613, 450, 451, 593, 594, @@ -1899,7 +1820,7 @@ static const yytype_int16 yycheck[] = /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_int16 yystos[] = +static const yytype_uint16 yystos[] = { 0, 293, 0, 11, 12, 46, 52, 96, 112, 153, 212, 230, 247, 256, 280, 284, 290, 294, 295, 296, @@ -1995,7 +1916,7 @@ static const yytype_int16 yystos[] = }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_int16 yyr1[] = +static const yytype_uint16 yyr1[] = { 0, 292, 293, 293, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 294, 295, 296, @@ -2062,7 +1983,7 @@ static const yytype_int16 yyr1[] = }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ -static const yytype_int8 yyr2[] = +static const yytype_uint8 yyr2[] = { 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, @@ -2211,9 +2132,7 @@ yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) if (yytype < YYNTOKENS) YYPRINT (yyo, yytoknum[yytype], *yyvaluep); # endif - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -2237,7 +2156,7 @@ yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep) `------------------------------------------------------------------*/ static void -yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop) +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -2260,12 +2179,12 @@ do { \ `------------------------------------------------*/ static void -yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, int yyrule) +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule) { - int yylno = yyrline[yyrule]; + unsigned long yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n", + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) @@ -2317,13 +2236,13 @@ int yydebug; # ifndef yystrlen # if defined __GLIBC__ && defined _STRING_H -# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S))) +# define yystrlen strlen # else /* Return the length of YYSTR. */ -static YYPTRDIFF_T +static YYSIZE_T yystrlen (const char *yystr) { - YYPTRDIFF_T yylen; + YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) continue; return yylen; @@ -2359,12 +2278,12 @@ yystpcpy (char *yydest, const char *yysrc) backslash-backslash). YYSTR is taken from yytname. If YYRES is null, do not copy; instead, return the length of what the result would have been. */ -static YYPTRDIFF_T +static YYSIZE_T yytnamerr (char *yyres, const char *yystr) { if (*yystr == '"') { - YYPTRDIFF_T yyn = 0; + YYSIZE_T yyn = 0; char const *yyp = yystr; for (;;) @@ -2395,10 +2314,10 @@ yytnamerr (char *yyres, const char *yystr) do_not_strip_quotes: ; } - if (yyres) - return yystpcpy (yyres, yystr) - yyres; - else + if (! yyres) return yystrlen (yystr); + + return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres); } # endif @@ -2411,19 +2330,19 @@ yytnamerr (char *yyres, const char *yystr) *YYMSG_ALLOC to the required number of bytes. Return 2 if the required number of bytes is too large to store. */ static int -yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, - yy_state_t *yyssp, int yytoken) +yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, + yytype_int16 *yyssp, int yytoken) { + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ const char *yyformat = YY_NULLPTR; - /* Arguments of yyformat: reported tokens (one for the "unexpected", - one per "expected"). */ + /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; - /* Actual size of YYARG. */ + /* Number of reported tokens (one for the "unexpected", one per + "expected"). */ int yycount = 0; - /* Cumulated lengths of YYARG. */ - YYPTRDIFF_T yysize = 0; /* There are many possibilities here to consider: - If this state is a consistent state with a default action, then @@ -2451,8 +2370,6 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, if (yytoken != YYEMPTY) { int yyn = yypact[*yyssp]; - YYPTRDIFF_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); - yysize = yysize0; yyarg[yycount++] = yytname[yytoken]; if (!yypact_value_is_default (yyn)) { @@ -2477,8 +2394,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYPTRDIFF_T yysize1 - = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -2505,9 +2421,7 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, } { - /* Don't count the "%s"s in the final size, but reserve room for - the terminator. */ - YYPTRDIFF_T yysize1 = yysize + (yystrlen (yyformat) - 2 * yycount) + 1; + YYSIZE_T yysize1 = yysize + yystrlen (yyformat); if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM) yysize = yysize1; else @@ -2537,8 +2451,8 @@ yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg, } else { - ++yyp; - ++yyformat; + yyp++; + yyformat++; } } return 0; @@ -2581,7 +2495,7 @@ int yynerrs; int yyparse (void) { - yy_state_fast_t yystate; + int yystate; /* Number of tokens to shift before error messages enabled. */ int yyerrstatus; @@ -2593,16 +2507,16 @@ yyparse (void) to reallocate them elsewhere. */ /* The state stack. */ - yy_state_t yyssa[YYINITDEPTH]; - yy_state_t *yyss; - yy_state_t *yyssp; + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; /* The semantic value stack. */ YYSTYPE yyvsa[YYINITDEPTH]; YYSTYPE *yyvs; YYSTYPE *yyvsp; - YYPTRDIFF_T yystacksize; + YYSIZE_T yystacksize; int yyn; int yyresult; @@ -2616,7 +2530,7 @@ yyparse (void) /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; char *yymsg = yymsgbuf; - YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) @@ -2648,14 +2562,12 @@ yynewstate: /*--------------------------------------------------------------------. -| yysetstate -- set current state (the top of the stack) to yystate. | +| yynewstate -- set current state (the top of the stack) to yystate. | `--------------------------------------------------------------------*/ yysetstate: YYDPRINTF ((stderr, "Entering state %d\n", yystate)); YY_ASSERT (0 <= yystate && yystate < YYNSTATES); - YY_IGNORE_USELESS_CAST_BEGIN - *yyssp = YY_CAST (yy_state_t, yystate); - YY_IGNORE_USELESS_CAST_END + *yyssp = (yytype_int16) yystate; if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE @@ -2663,23 +2575,23 @@ yysetstate: #else { /* Get the current used size of the three stacks, in elements. */ - YYPTRDIFF_T yysize = yyssp - yyss + 1; + YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1); # if defined yyoverflow { /* Give user a chance to reallocate the stack. Use copies of these so that the &'s don't force the real ones into memory. */ - yy_state_t *yyss1 = yyss; YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; /* Each stack pointer address is followed by the size of the data in use in that stack, in bytes. This used to be a conditional around just the two extra args, but that might be undefined if yyoverflow is a macro. */ yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * YYSIZEOF (*yyssp), - &yyvs1, yysize * YYSIZEOF (*yyvsp), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), &yystacksize); yyss = yyss1; yyvs = yyvs1; @@ -2693,10 +2605,9 @@ yysetstate: yystacksize = YYMAXDEPTH; { - yy_state_t *yyss1 = yyss; + yytype_int16 *yyss1 = yyss; union yyalloc *yyptr = - YY_CAST (union yyalloc *, - YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; YYSTACK_RELOCATE (yyss_alloc, yyss); @@ -2710,10 +2621,8 @@ yysetstate: yyssp = yyss + yysize - 1; yyvsp = yyvs + yysize - 1; - YY_IGNORE_USELESS_CAST_BEGIN - YYDPRINTF ((stderr, "Stack size increased to %ld\n", - YY_CAST (long, yystacksize))); - YY_IGNORE_USELESS_CAST_END + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) YYABORT; @@ -2779,13 +2688,14 @@ yybackup: /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token. */ + yychar = YYEMPTY; + yystate = yyn; YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN *++yyvsp = yylval; YY_IGNORE_MAYBE_UNINITIALIZED_END - - /* Discard the shifted token. */ - yychar = YYEMPTY; goto yynewstate; @@ -2822,23 +2732,23 @@ yyreduce: { case 18: #line 191 "./util/configparser.y" - { + { OUTYY(("\nP(force-toplevel)\n")); } -#line 2829 "util/configparser.c" +#line 2739 "util/configparser.c" break; case 19: #line 197 "./util/configparser.y" - { + { OUTYY(("\nP(server:)\n")); } -#line 2837 "util/configparser.c" +#line 2747 "util/configparser.c" break; case 216: #line 291 "./util/configparser.y" - { + { struct config_stub* s; OUTYY(("\nP(stub_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2848,12 +2758,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2852 "util/configparser.c" +#line 2762 "util/configparser.c" break; case 226: #line 308 "./util/configparser.y" - { + { struct config_stub* s; OUTYY(("\nP(forward_zone:)\n")); s = (struct config_stub*)calloc(1, sizeof(struct config_stub)); @@ -2863,12 +2773,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2867 "util/configparser.c" +#line 2777 "util/configparser.c" break; case 235: #line 325 "./util/configparser.y" - { + { struct config_view* s; OUTYY(("\nP(view:)\n")); s = (struct config_view*)calloc(1, sizeof(struct config_view)); @@ -2880,12 +2790,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2884 "util/configparser.c" +#line 2794 "util/configparser.c" break; case 245: #line 344 "./util/configparser.y" - { + { struct config_auth* s; OUTYY(("\nP(auth_zone:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -2900,12 +2810,12 @@ yyreduce: } else yyerror("out of memory"); } -#line 2904 "util/configparser.c" +#line 2814 "util/configparser.c" break; case 256: #line 368 "./util/configparser.y" - { + { uint8_t* bitlist; size_t len = 0; OUTYY(("P(server_local_zone_tag:%s)\n", (yyvsp[0].str))); @@ -2921,12 +2831,12 @@ yyreduce: } } -#line 2925 "util/configparser.c" +#line 2835 "util/configparser.c" break; case 257: #line 387 "./util/configparser.y" - { + { OUTYY(("P(rpz_action_override:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "nxdomain")!=0 && strcmp((yyvsp[0].str), "nodata")!=0 && strcmp((yyvsp[0].str), "passthru")!=0 && strcmp((yyvsp[0].str), "drop")!=0 && @@ -2940,44 +2850,44 @@ yyreduce: cfg_parser->cfg->auths->rpz_action_override = (yyvsp[0].str); } } -#line 2944 "util/configparser.c" +#line 2854 "util/configparser.c" break; case 258: #line 404 "./util/configparser.y" - { + { OUTYY(("P(rpz_cname_override:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_cname); cfg_parser->cfg->auths->rpz_cname = (yyvsp[0].str); } -#line 2954 "util/configparser.c" +#line 2864 "util/configparser.c" break; case 259: #line 412 "./util/configparser.y" - { + { OUTYY(("P(rpz_log:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->auths->rpz_log = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 2966 "util/configparser.c" +#line 2876 "util/configparser.c" break; case 260: #line 422 "./util/configparser.y" - { + { OUTYY(("P(rpz_log_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->rpz_log_name); cfg_parser->cfg->auths->rpz_log_name = (yyvsp[0].str); } -#line 2976 "util/configparser.c" +#line 2886 "util/configparser.c" break; case 261: #line 430 "./util/configparser.y" - { + { struct config_auth* s; OUTYY(("\nP(rpz:)\n")); s = (struct config_auth*)calloc(1, sizeof(struct config_auth)); @@ -2992,36 +2902,36 @@ yyreduce: } else yyerror("out of memory"); } -#line 2996 "util/configparser.c" +#line 2906 "util/configparser.c" break; case 274: #line 453 "./util/configparser.y" - { + { OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3008 "util/configparser.c" +#line 2918 "util/configparser.c" break; case 275: #line 462 "./util/configparser.y" - { + { OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3020 "util/configparser.c" +#line 2930 "util/configparser.c" break; case 276: #line 471 "./util/configparser.y" - { + { OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) cfg_parser->cfg->stat_interval = 0; @@ -3030,48 +2940,48 @@ yyreduce: else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3034 "util/configparser.c" +#line 2944 "util/configparser.c" break; case 277: #line 482 "./util/configparser.y" - { + { OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3046 "util/configparser.c" +#line 2956 "util/configparser.c" break; case 278: #line 491 "./util/configparser.y" - { + { OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3058 "util/configparser.c" +#line 2968 "util/configparser.c" break; case 279: #line 500 "./util/configparser.y" - { + { OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3070 "util/configparser.c" +#line 2980 "util/configparser.c" break; case 280: #line 509 "./util/configparser.y" - { + { OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0) cfg_parser->cfg->shm_key = 0; @@ -3080,24 +2990,24 @@ yyreduce: else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3084 "util/configparser.c" +#line 2994 "util/configparser.c" break; case 281: #line 520 "./util/configparser.y" - { + { OUTYY(("P(server_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3096 "util/configparser.c" +#line 3006 "util/configparser.c" break; case 282: #line 529 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_send_client_subnet:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet, (yyvsp[0].str))) @@ -3107,12 +3017,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3111 "util/configparser.c" +#line 3021 "util/configparser.c" break; case 283: #line 541 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_zone:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->client_subnet_zone, @@ -3123,12 +3033,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 3127 "util/configparser.c" +#line 3037 "util/configparser.c" break; case 284: #line 555 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(server_client_subnet_always_forward:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3141,12 +3051,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3145 "util/configparser.c" +#line 3055 "util/configparser.c" break; case 285: #line 570 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(client_subnet_opcode:%s)\n", (yyvsp[0].str))); OUTYY(("P(Deprecated option, ignoring)\n")); @@ -3155,12 +3065,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3159 "util/configparser.c" +#line 3069 "util/configparser.c" break; case 286: #line 581 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3175,12 +3085,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3179 "util/configparser.c" +#line 3089 "util/configparser.c" break; case 287: #line 598 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3195,12 +3105,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3199 "util/configparser.c" +#line 3109 "util/configparser.c" break; case 288: #line 615 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3215,12 +3125,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3219 "util/configparser.c" +#line 3129 "util/configparser.c" break; case 289: #line 632 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(min_client_subnet_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3235,12 +3145,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3239 "util/configparser.c" +#line 3149 "util/configparser.c" break; case 290: #line 649 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv4:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3253,12 +3163,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3257 "util/configparser.c" +#line 3167 "util/configparser.c" break; case 291: #line 664 "./util/configparser.y" - { + { #ifdef CLIENT_SUBNET OUTYY(("P(max_ecs_tree_size_ipv6:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3271,12 +3181,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3275 "util/configparser.c" +#line 3185 "util/configparser.c" break; case 292: #line 679 "./util/configparser.y" - { + { OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_ifs == 0) cfg_parser->cfg->ifs = calloc(1, sizeof(char*)); @@ -3287,12 +3197,12 @@ yyreduce: else cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str); } -#line 3291 "util/configparser.c" +#line 3201 "util/configparser.c" break; case 293: #line 692 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->num_out_ifs == 0) cfg_parser->cfg->out_ifs = calloc(1, sizeof(char*)); @@ -3305,180 +3215,180 @@ yyreduce: cfg_parser->cfg->out_ifs[ cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str); } -#line 3309 "util/configparser.c" +#line 3219 "util/configparser.c" break; case 294: #line 707 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3321 "util/configparser.c" +#line 3231 "util/configparser.c" break; case 295: #line 716 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 1, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3333 "util/configparser.c" +#line 3243 "util/configparser.c" break; case 296: #line 725 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str))); if(!cfg_mark_ports((yyvsp[0].str), 0, cfg_parser->cfg->outgoing_avail_ports, 65536)) yyerror("port number or range (\"low-high\") expected"); free((yyvsp[0].str)); } -#line 3345 "util/configparser.c" +#line 3255 "util/configparser.c" break; case 297: #line 734 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3357 "util/configparser.c" +#line 3267 "util/configparser.c" break; case 298: #line 743 "./util/configparser.y" - { + { OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3369 "util/configparser.c" +#line 3279 "util/configparser.c" break; case 299: #line 752 "./util/configparser.y" - { + { OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3381 "util/configparser.c" +#line 3291 "util/configparser.c" break; case 300: #line 761 "./util/configparser.y" - { + { OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3393 "util/configparser.c" +#line 3303 "util/configparser.c" break; case 301: #line 770 "./util/configparser.y" - { + { OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3405 "util/configparser.c" +#line 3315 "util/configparser.c" break; case 302: #line 779 "./util/configparser.y" - { + { OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3417 "util/configparser.c" +#line 3327 "util/configparser.c" break; case 303: #line 788 "./util/configparser.y" - { + { OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3429 "util/configparser.c" +#line 3339 "util/configparser.c" break; case 304: #line 797 "./util/configparser.y" - { + { OUTYY(("P(server_prefer_ip4:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip4 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3441 "util/configparser.c" +#line 3351 "util/configparser.c" break; case 305: #line 806 "./util/configparser.y" - { + { OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3453 "util/configparser.c" +#line 3363 "util/configparser.c" break; case 306: #line 815 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3465 "util/configparser.c" +#line 3375 "util/configparser.c" break; case 307: #line 824 "./util/configparser.y" - { + { OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3477 "util/configparser.c" +#line 3387 "util/configparser.c" break; case 308: #line 833 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_idle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -3489,24 +3399,24 @@ yyreduce: else cfg_parser->cfg->tcp_idle_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3493 "util/configparser.c" +#line 3403 "util/configparser.c" break; case 309: #line 846 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_keepalive:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_tcp_keepalive = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3505 "util/configparser.c" +#line 3415 "util/configparser.c" break; case 310: #line 855 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_keepalive_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -3517,180 +3427,180 @@ yyreduce: else cfg_parser->cfg->tcp_keepalive_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3521 "util/configparser.c" +#line 3431 "util/configparser.c" break; case 311: #line 868 "./util/configparser.y" - { + { OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3533 "util/configparser.c" +#line 3443 "util/configparser.c" break; case 312: #line 877 "./util/configparser.y" - { + { OUTYY(("P(server_udp_upstream_without_downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->udp_upstream_without_downstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3545 "util/configparser.c" +#line 3455 "util/configparser.c" break; case 313: #line 886 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3557 "util/configparser.c" +#line 3467 "util/configparser.c" break; case 314: #line 895 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_key); cfg_parser->cfg->ssl_service_key = (yyvsp[0].str); } -#line 3567 "util/configparser.c" +#line 3477 "util/configparser.c" break; case 315: #line 902 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ssl_service_pem); cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str); } -#line 3577 "util/configparser.c" +#line 3487 "util/configparser.c" break; case 316: #line 909 "./util/configparser.y" - { + { OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 3589 "util/configparser.c" +#line 3499 "util/configparser.c" break; case 317: #line 918 "./util/configparser.y" - { + { OUTYY(("P(server_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_cert_bundle); cfg_parser->cfg->tls_cert_bundle = (yyvsp[0].str); } -#line 3599 "util/configparser.c" +#line 3509 "util/configparser.c" break; case 318: #line 925 "./util/configparser.y" - { + { OUTYY(("P(server_tls_win_cert:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tls_win_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3611 "util/configparser.c" +#line 3521 "util/configparser.c" break; case 319: #line 934 "./util/configparser.y" - { + { OUTYY(("P(server_tls_additional_port:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->tls_additional_port, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3622 "util/configparser.c" +#line 3532 "util/configparser.c" break; case 320: #line 942 "./util/configparser.y" - { + { OUTYY(("P(server_tls_ciphers:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphers); cfg_parser->cfg->tls_ciphers = (yyvsp[0].str); } -#line 3632 "util/configparser.c" +#line 3542 "util/configparser.c" break; case 321: #line 949 "./util/configparser.y" - { + { OUTYY(("P(server_tls_ciphersuites:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->tls_ciphersuites); cfg_parser->cfg->tls_ciphersuites = (yyvsp[0].str); } -#line 3642 "util/configparser.c" +#line 3552 "util/configparser.c" break; case 322: #line 956 "./util/configparser.y" - { + { OUTYY(("P(server_tls_session_ticket_keys:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->tls_session_ticket_keys, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3653 "util/configparser.c" +#line 3563 "util/configparser.c" break; case 323: #line 964 "./util/configparser.y" - { + { OUTYY(("P(server_tls_use_sni:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->tls_use_sni = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3665 "util/configparser.c" +#line 3575 "util/configparser.c" break; case 324: #line 973 "./util/configparser.y" - { + { OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3677 "util/configparser.c" +#line 3587 "util/configparser.c" break; case 325: #line 982 "./util/configparser.y" - { + { OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3689 "util/configparser.c" +#line 3599 "util/configparser.c" break; case 326: #line 991 "./util/configparser.y" - { + { OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -3702,104 +3612,104 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 3706 "util/configparser.c" +#line 3616 "util/configparser.c" break; case 327: #line 1005 "./util/configparser.y" - { + { OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3718 "util/configparser.c" +#line 3628 "util/configparser.c" break; case 328: #line 1014 "./util/configparser.y" - { + { OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3730 "util/configparser.c" +#line 3640 "util/configparser.c" break; case 329: #line 1023 "./util/configparser.y" - { + { OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3742 "util/configparser.c" +#line 3652 "util/configparser.c" break; case 330: #line 1032 "./util/configparser.y" - { + { OUTYY(("P(server_log_tag_queryreply:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_tag_queryreply = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3754 "util/configparser.c" +#line 3664 "util/configparser.c" break; case 331: #line 1041 "./util/configparser.y" - { + { OUTYY(("P(server_log_servfail:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_servfail = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3766 "util/configparser.c" +#line 3676 "util/configparser.c" break; case 332: #line 1050 "./util/configparser.y" - { + { OUTYY(("P(server_log_local_actions:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->log_local_actions = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3778 "util/configparser.c" +#line 3688 "util/configparser.c" break; case 333: #line 1059 "./util/configparser.y" - { + { OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->chrootdir); cfg_parser->cfg->chrootdir = (yyvsp[0].str); } -#line 3788 "util/configparser.c" +#line 3698 "util/configparser.c" break; case 334: #line 1066 "./util/configparser.y" - { + { OUTYY(("P(server_username:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->username); cfg_parser->cfg->username = (yyvsp[0].str); } -#line 3798 "util/configparser.c" +#line 3708 "util/configparser.c" break; case 335: #line 1073 "./util/configparser.y" - { + { OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->directory); cfg_parser->cfg->directory = (yyvsp[0].str); @@ -3823,106 +3733,104 @@ yyreduce: } } } -#line 3827 "util/configparser.c" +#line 3737 "util/configparser.c" break; case 336: #line 1099 "./util/configparser.y" - { + { OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->logfile); cfg_parser->cfg->logfile = (yyvsp[0].str); cfg_parser->cfg->use_syslog = 0; } -#line 3838 "util/configparser.c" +#line 3748 "util/configparser.c" break; case 337: #line 1107 "./util/configparser.y" - { + { OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->pidfile); cfg_parser->cfg->pidfile = (yyvsp[0].str); } -#line 3848 "util/configparser.c" +#line 3758 "util/configparser.c" break; case 338: #line 1114 "./util/configparser.y" - { + { OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3858 "util/configparser.c" +#line 3768 "util/configparser.c" break; case 339: #line 1121 "./util/configparser.y" - { + { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); - free(cfg_parser->cfg->dlv_anchor_file); - cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str); + log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); } -#line 3868 "util/configparser.c" +#line 3777 "util/configparser.c" break; case 340: -#line 1128 "./util/configparser.y" - { +#line 1127 "./util/configparser.y" + { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); - if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str))) - yyerror("out of memory"); + log_warn("option dlv-anchor ignored: DLV is decommissioned"); } -#line 3878 "util/configparser.c" +#line 3786 "util/configparser.c" break; case 341: -#line 1135 "./util/configparser.y" - { +#line 1133 "./util/configparser.y" + { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3889 "util/configparser.c" +#line 3797 "util/configparser.c" break; case 342: -#line 1143 "./util/configparser.y" - { +#line 1141 "./util/configparser.y" + { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3900 "util/configparser.c" +#line 3808 "util/configparser.c" break; case 343: -#line 1151 "./util/configparser.y" - { +#line 1149 "./util/configparser.y" + { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3911 "util/configparser.c" +#line 3819 "util/configparser.c" break; case 344: -#line 1159 "./util/configparser.y" - { +#line 1157 "./util/configparser.y" + { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3921 "util/configparser.c" +#line 3829 "util/configparser.c" break; case 345: -#line 1166 "./util/configparser.y" - { +#line 1164 "./util/configparser.y" + { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -3931,12 +3839,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3935 "util/configparser.c" +#line 3843 "util/configparser.c" break; case 346: -#line 1177 "./util/configparser.y" - { +#line 1175 "./util/configparser.y" + { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -3945,99 +3853,99 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3949 "util/configparser.c" +#line 3857 "util/configparser.c" break; case 347: -#line 1188 "./util/configparser.y" - { +#line 1186 "./util/configparser.y" + { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3959 "util/configparser.c" +#line 3867 "util/configparser.c" break; case 348: -#line 1195 "./util/configparser.y" - { +#line 1193 "./util/configparser.y" + { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3971 "util/configparser.c" +#line 3879 "util/configparser.c" break; case 349: -#line 1204 "./util/configparser.y" - { +#line 1202 "./util/configparser.y" + { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3983 "util/configparser.c" +#line 3891 "util/configparser.c" break; case 350: -#line 1213 "./util/configparser.y" - { +#line 1211 "./util/configparser.y" + { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3995 "util/configparser.c" +#line 3903 "util/configparser.c" break; case 351: -#line 1222 "./util/configparser.y" - { +#line 1220 "./util/configparser.y" + { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 4005 "util/configparser.c" +#line 3913 "util/configparser.c" break; case 352: -#line 1229 "./util/configparser.y" - { +#line 1227 "./util/configparser.y" + { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 4015 "util/configparser.c" +#line 3923 "util/configparser.c" break; case 353: -#line 1236 "./util/configparser.y" - { +#line 1234 "./util/configparser.y" + { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4026 "util/configparser.c" +#line 3934 "util/configparser.c" break; case 354: -#line 1244 "./util/configparser.y" - { +#line 1242 "./util/configparser.y" + { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 4037 "util/configparser.c" +#line 3945 "util/configparser.c" break; case 355: -#line 1252 "./util/configparser.y" +#line 1250 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4046,11 +3954,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4050 "util/configparser.c" +#line 3958 "util/configparser.c" break; case 356: -#line 1262 "./util/configparser.y" +#line 1260 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4059,11 +3967,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4063 "util/configparser.c" +#line 3971 "util/configparser.c" break; case 357: -#line 1272 "./util/configparser.y" +#line 1270 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4072,12 +3980,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4076 "util/configparser.c" +#line 3984 "util/configparser.c" break; case 358: -#line 1282 "./util/configparser.y" - { +#line 1280 "./util/configparser.y" + { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); @@ -4089,23 +3997,23 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4093 "util/configparser.c" +#line 4001 "util/configparser.c" break; case 359: -#line 1296 "./util/configparser.y" - { +#line 1294 "./util/configparser.y" + { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4104 "util/configparser.c" +#line 4012 "util/configparser.c" break; case 360: -#line 1304 "./util/configparser.y" - { +#line 1302 "./util/configparser.y" + { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4116,12 +4024,12 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4120 "util/configparser.c" +#line 4028 "util/configparser.c" break; case 361: -#line 1317 "./util/configparser.y" - { +#line 1315 "./util/configparser.y" + { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4130,23 +4038,23 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4134 "util/configparser.c" +#line 4042 "util/configparser.c" break; case 362: -#line 1328 "./util/configparser.y" - { +#line 1326 "./util/configparser.y" + { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4145 "util/configparser.c" +#line 4053 "util/configparser.c" break; case 363: -#line 1336 "./util/configparser.y" - { +#line 1334 "./util/configparser.y" + { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4157,48 +4065,48 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4161 "util/configparser.c" +#line 4069 "util/configparser.c" break; case 364: -#line 1349 "./util/configparser.y" - { +#line 1347 "./util/configparser.y" + { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4173 "util/configparser.c" +#line 4081 "util/configparser.c" break; case 365: -#line 1358 "./util/configparser.y" - { +#line 1356 "./util/configparser.y" + { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4185 "util/configparser.c" +#line 4093 "util/configparser.c" break; case 366: -#line 1367 "./util/configparser.y" - { +#line 1365 "./util/configparser.y" + { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4197 "util/configparser.c" +#line 4105 "util/configparser.c" break; case 367: -#line 1376 "./util/configparser.y" - { +#line 1374 "./util/configparser.y" + { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4206,12 +4114,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4210 "util/configparser.c" +#line 4118 "util/configparser.c" break; case 368: -#line 1386 "./util/configparser.y" - { +#line 1384 "./util/configparser.y" + { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4219,23 +4127,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4223 "util/configparser.c" +#line 4131 "util/configparser.c" break; case 369: -#line 1396 "./util/configparser.y" - { +#line 1394 "./util/configparser.y" + { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4234 "util/configparser.c" +#line 4142 "util/configparser.c" break; case 370: -#line 1404 "./util/configparser.y" - { +#line 1402 "./util/configparser.y" + { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4246,58 +4154,58 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4250 "util/configparser.c" +#line 4158 "util/configparser.c" break; case 371: -#line 1417 "./util/configparser.y" - { +#line 1415 "./util/configparser.y" + { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4262 "util/configparser.c" +#line 4170 "util/configparser.c" break; case 372: -#line 1426 "./util/configparser.y" - { +#line 1424 "./util/configparser.y" + { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4273 "util/configparser.c" +#line 4181 "util/configparser.c" break; case 373: -#line 1434 "./util/configparser.y" - { +#line 1432 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4285 "util/configparser.c" +#line 4193 "util/configparser.c" break; case 374: -#line 1443 "./util/configparser.y" - { +#line 1441 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4296 "util/configparser.c" +#line 4204 "util/configparser.c" break; case 375: -#line 1451 "./util/configparser.y" - { +#line 1449 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4308,34 +4216,34 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4312 "util/configparser.c" +#line 4220 "util/configparser.c" break; case 376: -#line 1464 "./util/configparser.y" - { +#line 1462 "./util/configparser.y" + { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4324 "util/configparser.c" +#line 4232 "util/configparser.c" break; case 377: -#line 1473 "./util/configparser.y" - { +#line 1471 "./util/configparser.y" + { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4334 "util/configparser.c" +#line 4242 "util/configparser.c" break; case 378: -#line 1480 "./util/configparser.y" - { +#line 1478 "./util/configparser.y" + { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4343,12 +4251,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4347 "util/configparser.c" +#line 4255 "util/configparser.c" break; case 379: -#line 1490 "./util/configparser.y" - { +#line 1488 "./util/configparser.y" + { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4356,12 +4264,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4360 "util/configparser.c" +#line 4268 "util/configparser.c" break; case 380: -#line 1500 "./util/configparser.y" - { +#line 1498 "./util/configparser.y" + { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4369,12 +4277,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4373 "util/configparser.c" +#line 4281 "util/configparser.c" break; case 381: -#line 1510 "./util/configparser.y" - { +#line 1508 "./util/configparser.y" + { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4382,12 +4290,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4386 "util/configparser.c" +#line 4294 "util/configparser.c" break; case 382: -#line 1520 "./util/configparser.y" - { +#line 1518 "./util/configparser.y" + { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4395,12 +4303,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4399 "util/configparser.c" +#line 4307 "util/configparser.c" break; case 383: -#line 1530 "./util/configparser.y" - { +#line 1528 "./util/configparser.y" + { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4408,12 +4316,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4412 "util/configparser.c" +#line 4320 "util/configparser.c" break; case 384: -#line 1540 "./util/configparser.y" - { +#line 1538 "./util/configparser.y" + { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4421,12 +4329,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4425 "util/configparser.c" +#line 4333 "util/configparser.c" break; case 385: -#line 1550 "./util/configparser.y" - { +#line 1548 "./util/configparser.y" + { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4434,100 +4342,100 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4438 "util/configparser.c" +#line 4346 "util/configparser.c" break; case 386: -#line 1560 "./util/configparser.y" - { +#line 1558 "./util/configparser.y" + { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4448 "util/configparser.c" +#line 4356 "util/configparser.c" break; case 387: -#line 1567 "./util/configparser.y" - { +#line 1565 "./util/configparser.y" + { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4458 "util/configparser.c" +#line 4366 "util/configparser.c" break; case 388: -#line 1574 "./util/configparser.y" - { +#line 1572 "./util/configparser.y" + { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4468 "util/configparser.c" +#line 4376 "util/configparser.c" break; case 389: -#line 1581 "./util/configparser.y" - { +#line 1579 "./util/configparser.y" + { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4480 "util/configparser.c" +#line 4388 "util/configparser.c" break; case 390: -#line 1590 "./util/configparser.y" - { +#line 1588 "./util/configparser.y" + { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4492 "util/configparser.c" +#line 4400 "util/configparser.c" break; case 391: -#line 1599 "./util/configparser.y" - { +#line 1597 "./util/configparser.y" + { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4504 "util/configparser.c" +#line 4412 "util/configparser.c" break; case 392: -#line 1608 "./util/configparser.y" - { +#line 1606 "./util/configparser.y" + { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4516 "util/configparser.c" +#line 4424 "util/configparser.c" break; case 393: -#line 1617 "./util/configparser.y" - { +#line 1615 "./util/configparser.y" + { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4526 "util/configparser.c" +#line 4434 "util/configparser.c" break; case 394: -#line 1624 "./util/configparser.y" - { +#line 1622 "./util/configparser.y" + { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4535,12 +4443,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4539 "util/configparser.c" +#line 4447 "util/configparser.c" break; case 395: -#line 1634 "./util/configparser.y" - { +#line 1632 "./util/configparser.y" + { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "deny_non_local")!=0 && @@ -4558,22 +4466,22 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4562 "util/configparser.c" +#line 4470 "util/configparser.c" break; case 396: -#line 1654 "./util/configparser.y" - { +#line 1652 "./util/configparser.y" + { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4572 "util/configparser.c" +#line 4480 "util/configparser.c" break; case 397: -#line 1661 "./util/configparser.y" - { +#line 1659 "./util/configparser.y" + { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_date_override = 0; @@ -4589,12 +4497,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4593 "util/configparser.c" +#line 4501 "util/configparser.c" break; case 398: -#line 1679 "./util/configparser.y" - { +#line 1677 "./util/configparser.y" + { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_sig_skew_min = 0; @@ -4605,12 +4513,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4609 "util/configparser.c" +#line 4517 "util/configparser.c" break; case 399: -#line 1692 "./util/configparser.y" - { +#line 1690 "./util/configparser.y" + { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { cfg_parser->cfg->val_sig_skew_max = 0; @@ -4621,60 +4529,60 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4625 "util/configparser.c" +#line 4533 "util/configparser.c" break; case 400: -#line 1705 "./util/configparser.y" - { +#line 1703 "./util/configparser.y" + { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4637 "util/configparser.c" +#line 4545 "util/configparser.c" break; case 401: -#line 1714 "./util/configparser.y" - { +#line 1712 "./util/configparser.y" + { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4649 "util/configparser.c" +#line 4557 "util/configparser.c" break; case 402: -#line 1723 "./util/configparser.y" - { +#line 1721 "./util/configparser.y" + { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4661 "util/configparser.c" +#line 4569 "util/configparser.c" break; case 403: -#line 1732 "./util/configparser.y" - { +#line 1730 "./util/configparser.y" + { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4673 "util/configparser.c" +#line 4581 "util/configparser.c" break; case 404: -#line 1741 "./util/configparser.y" - { +#line 1739 "./util/configparser.y" + { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4682,12 +4590,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4686 "util/configparser.c" +#line 4594 "util/configparser.c" break; case 405: -#line 1751 "./util/configparser.y" - { +#line 1749 "./util/configparser.y" + { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4695,12 +4603,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4699 "util/configparser.c" +#line 4607 "util/configparser.c" break; case 406: -#line 1761 "./util/configparser.y" - { +#line 1759 "./util/configparser.y" + { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4709,84 +4617,84 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4713 "util/configparser.c" +#line 4621 "util/configparser.c" break; case 407: -#line 1772 "./util/configparser.y" - { +#line 1770 "./util/configparser.y" + { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4725 "util/configparser.c" +#line 4633 "util/configparser.c" break; case 408: -#line 1781 "./util/configparser.y" - { +#line 1779 "./util/configparser.y" + { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4737 "util/configparser.c" +#line 4645 "util/configparser.c" break; case 409: -#line 1790 "./util/configparser.y" - { +#line 1788 "./util/configparser.y" + { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4749 "util/configparser.c" +#line 4657 "util/configparser.c" break; case 410: -#line 1799 "./util/configparser.y" - { +#line 1797 "./util/configparser.y" + { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4761 "util/configparser.c" +#line 4669 "util/configparser.c" break; case 411: -#line 1808 "./util/configparser.y" - { +#line 1806 "./util/configparser.y" + { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4773 "util/configparser.c" +#line 4681 "util/configparser.c" break; case 412: -#line 1817 "./util/configparser.y" - { +#line 1815 "./util/configparser.y" + { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4785 "util/configparser.c" +#line 4693 "util/configparser.c" break; case 413: -#line 1826 "./util/configparser.y" - { +#line 1824 "./util/configparser.y" + { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4797,12 +4705,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4801 "util/configparser.c" +#line 4709 "util/configparser.c" break; case 414: -#line 1839 "./util/configparser.y" - { +#line 1837 "./util/configparser.y" + { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4813,70 +4721,70 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4817 "util/configparser.c" +#line 4725 "util/configparser.c" break; case 415: -#line 1852 "./util/configparser.y" - { +#line 1850 "./util/configparser.y" + { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4829 "util/configparser.c" +#line 4737 "util/configparser.c" break; case 416: -#line 1861 "./util/configparser.y" - { +#line 1859 "./util/configparser.y" + { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 4839 "util/configparser.c" +#line 4747 "util/configparser.c" break; case 417: -#line 1868 "./util/configparser.y" - { +#line 1866 "./util/configparser.y" + { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4851 "util/configparser.c" +#line 4759 "util/configparser.c" break; case 418: -#line 1877 "./util/configparser.y" - { +#line 1875 "./util/configparser.y" + { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4863 "util/configparser.c" +#line 4771 "util/configparser.c" break; case 419: -#line 1886 "./util/configparser.y" - { +#line 1884 "./util/configparser.y" + { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4875 "util/configparser.c" +#line 4783 "util/configparser.c" break; case 420: -#line 1895 "./util/configparser.y" - { +#line 1893 "./util/configparser.y" + { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -4884,23 +4792,23 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4888 "util/configparser.c" +#line 4796 "util/configparser.c" break; case 421: -#line 1904 "./util/configparser.y" - { +#line 1902 "./util/configparser.y" + { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4899 "util/configparser.c" +#line 4807 "util/configparser.c" break; case 422: -#line 1912 "./util/configparser.y" - { +#line 1910 "./util/configparser.y" + { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -4911,23 +4819,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4915 "util/configparser.c" +#line 4823 "util/configparser.c" break; case 423: -#line 1925 "./util/configparser.y" - { +#line 1923 "./util/configparser.y" + { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4926 "util/configparser.c" +#line 4834 "util/configparser.c" break; case 424: -#line 1933 "./util/configparser.y" - { +#line 1931 "./util/configparser.y" + { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -4966,22 +4874,22 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4970 "util/configparser.c" +#line 4878 "util/configparser.c" break; case 425: -#line 1974 "./util/configparser.y" - { +#line 1972 "./util/configparser.y" + { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 4980 "util/configparser.c" +#line 4888 "util/configparser.c" break; case 426: -#line 1981 "./util/configparser.y" - { +#line 1979 "./util/configparser.y" + { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -4994,12 +4902,12 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4998 "util/configparser.c" +#line 4906 "util/configparser.c" break; case 427: -#line 1996 "./util/configparser.y" - { +#line 1994 "./util/configparser.y" + { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5007,12 +4915,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5011 "util/configparser.c" +#line 4919 "util/configparser.c" break; case 428: -#line 2006 "./util/configparser.y" - { +#line 2004 "./util/configparser.y" + { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5020,65 +4928,65 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5024 "util/configparser.c" +#line 4932 "util/configparser.c" break; case 429: -#line 2016 "./util/configparser.y" - { +#line 2014 "./util/configparser.y" + { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5034 "util/configparser.c" +#line 4942 "util/configparser.c" break; case 430: -#line 2023 "./util/configparser.y" - { +#line 2021 "./util/configparser.y" + { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5044 "util/configparser.c" +#line 4952 "util/configparser.c" break; case 431: -#line 2030 "./util/configparser.y" - { +#line 2028 "./util/configparser.y" + { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 5054 "util/configparser.c" +#line 4962 "util/configparser.c" break; case 432: -#line 2037 "./util/configparser.y" - { +#line 2035 "./util/configparser.y" + { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5066 "util/configparser.c" +#line 4974 "util/configparser.c" break; case 433: -#line 2046 "./util/configparser.y" - { +#line 2044 "./util/configparser.y" + { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 5077 "util/configparser.c" +#line 4985 "util/configparser.c" break; case 434: -#line 2054 "./util/configparser.y" - { +#line 2052 "./util/configparser.y" + { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); while((p=strsep(&s, " \t\n")) != NULL) { @@ -5090,12 +4998,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5094 "util/configparser.c" +#line 5002 "util/configparser.c" break; case 435: -#line 2068 "./util/configparser.y" - { +#line 2066 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5114,12 +5022,12 @@ yyreduce: } } } -#line 5118 "util/configparser.c" +#line 5026 "util/configparser.c" break; case 436: -#line 2089 "./util/configparser.y" - { +#line 2087 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5138,12 +5046,12 @@ yyreduce: } } } -#line 5142 "util/configparser.c" +#line 5050 "util/configparser.c" break; case 437: -#line 2110 "./util/configparser.y" - { +#line 2108 "./util/configparser.y" + { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5153,12 +5061,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5157 "util/configparser.c" +#line 5065 "util/configparser.c" break; case 438: -#line 2122 "./util/configparser.y" - { +#line 2120 "./util/configparser.y" + { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5168,12 +5076,12 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5172 "util/configparser.c" +#line 5080 "util/configparser.c" break; case 439: -#line 2134 "./util/configparser.y" - { +#line 2132 "./util/configparser.y" + { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))) { @@ -5183,24 +5091,24 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5187 "util/configparser.c" +#line 5095 "util/configparser.c" break; case 440: -#line 2146 "./util/configparser.y" - { +#line 2144 "./util/configparser.y" + { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, (yyvsp[-1].str), (yyvsp[0].str))) { yyerror("out of memory"); } } -#line 5199 "util/configparser.c" +#line 5107 "util/configparser.c" break; case 441: -#line 2155 "./util/configparser.y" - { +#line 2153 "./util/configparser.y" + { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), &len); @@ -5219,58 +5127,58 @@ yyreduce: } } } -#line 5223 "util/configparser.c" +#line 5131 "util/configparser.c" break; case 442: -#line 2176 "./util/configparser.y" - { +#line 2174 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5235 "util/configparser.c" +#line 5143 "util/configparser.c" break; case 443: -#line 2186 "./util/configparser.y" - { +#line 2184 "./util/configparser.y" + { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5247 "util/configparser.c" +#line 5155 "util/configparser.c" break; case 444: -#line 2195 "./util/configparser.y" - { +#line 2193 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5258 "util/configparser.c" +#line 5166 "util/configparser.c" break; case 445: -#line 2203 "./util/configparser.y" - { +#line 2201 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5269 "util/configparser.c" +#line 5177 "util/configparser.c" break; case 446: -#line 2211 "./util/configparser.y" - { +#line 2209 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5281,12 +5189,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5285 "util/configparser.c" +#line 5193 "util/configparser.c" break; case 447: -#line 2224 "./util/configparser.y" - { +#line 2222 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -5297,12 +5205,12 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5301 "util/configparser.c" +#line 5209 "util/configparser.c" break; case 448: -#line 2237 "./util/configparser.y" - { +#line 2235 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { yyerror("number expected"); @@ -5315,12 +5223,12 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5319 "util/configparser.c" +#line 5227 "util/configparser.c" break; case 449: -#line 2252 "./util/configparser.y" - { +#line 2250 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { yyerror("number expected"); @@ -5333,69 +5241,69 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5337 "util/configparser.c" +#line 5245 "util/configparser.c" break; case 450: -#line 2267 "./util/configparser.y" - { +#line 2265 "./util/configparser.y" + { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5349 "util/configparser.c" +#line 5257 "util/configparser.c" break; case 451: -#line 2276 "./util/configparser.y" - { +#line 2274 "./util/configparser.y" + { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5361 "util/configparser.c" +#line 5269 "util/configparser.c" break; case 452: -#line 2285 "./util/configparser.y" - { +#line 2283 "./util/configparser.y" + { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5370 "util/configparser.c" +#line 5278 "util/configparser.c" break; case 453: -#line 2291 "./util/configparser.y" - { +#line 2289 "./util/configparser.y" + { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) yyerror("number expected"); else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5382 "util/configparser.c" +#line 5290 "util/configparser.c" break; case 454: -#line 2300 "./util/configparser.y" - { +#line 2298 "./util/configparser.y" + { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) yyerror("number expected"); else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5394 "util/configparser.c" +#line 5302 "util/configparser.c" break; case 455: -#line 2309 "./util/configparser.y" - { +#line 2307 "./util/configparser.y" + { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5403,12 +5311,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5407 "util/configparser.c" +#line 5315 "util/configparser.c" break; case 456: -#line 2319 "./util/configparser.y" - { +#line 2317 "./util/configparser.y" + { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5416,12 +5324,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5420 "util/configparser.c" +#line 5328 "util/configparser.c" break; case 457: -#line 2329 "./util/configparser.y" - { +#line 2327 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5432,12 +5340,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5436 "util/configparser.c" +#line 5344 "util/configparser.c" break; case 458: -#line 2342 "./util/configparser.y" - { +#line 2340 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5448,12 +5356,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5452 "util/configparser.c" +#line 5360 "util/configparser.c" break; case 459: -#line 2355 "./util/configparser.y" - { +#line 2353 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->ipsecmod_hook); @@ -5463,12 +5371,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5467 "util/configparser.c" +#line 5375 "util/configparser.c" break; case 460: -#line 2367 "./util/configparser.y" - { +#line 2365 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5480,12 +5388,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5484 "util/configparser.c" +#line 5392 "util/configparser.c" break; case 461: -#line 2381 "./util/configparser.y" - { +#line 2379 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->ipsecmod_whitelist, (yyvsp[0].str))) @@ -5495,12 +5403,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5499 "util/configparser.c" +#line 5407 "util/configparser.c" break; case 462: -#line 2393 "./util/configparser.y" - { +#line 2391 "./util/configparser.y" + { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5512,12 +5420,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5516 "util/configparser.c" +#line 5424 "util/configparser.c" break; case 463: -#line 2407 "./util/configparser.y" - { +#line 2405 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) yyerror("stub name override, there must be one name " @@ -5525,56 +5433,56 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5529 "util/configparser.c" +#line 5437 "util/configparser.c" break; case 464: -#line 2417 "./util/configparser.y" - { +#line 2415 "./util/configparser.y" + { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5539 "util/configparser.c" +#line 5447 "util/configparser.c" break; case 465: -#line 2424 "./util/configparser.y" - { +#line 2422 "./util/configparser.y" + { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5549 "util/configparser.c" +#line 5457 "util/configparser.c" break; case 466: -#line 2431 "./util/configparser.y" - { +#line 2429 "./util/configparser.y" + { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5561 "util/configparser.c" +#line 5469 "util/configparser.c" break; case 467: -#line 2440 "./util/configparser.y" - { +#line 2438 "./util/configparser.y" + { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5573 "util/configparser.c" +#line 5481 "util/configparser.c" break; case 468: -#line 2449 "./util/configparser.y" - { +#line 2447 "./util/configparser.y" + { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5582,12 +5490,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5586 "util/configparser.c" +#line 5494 "util/configparser.c" break; case 469: -#line 2459 "./util/configparser.y" - { +#line 2457 "./util/configparser.y" + { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5595,12 +5503,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5599 "util/configparser.c" +#line 5507 "util/configparser.c" break; case 470: -#line 2469 "./util/configparser.y" - { +#line 2467 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) yyerror("forward name override, there must be one " @@ -5608,56 +5516,56 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5612 "util/configparser.c" +#line 5520 "util/configparser.c" break; case 471: -#line 2479 "./util/configparser.y" - { +#line 2477 "./util/configparser.y" + { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5622 "util/configparser.c" +#line 5530 "util/configparser.c" break; case 472: -#line 2486 "./util/configparser.y" - { +#line 2484 "./util/configparser.y" + { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5632 "util/configparser.c" +#line 5540 "util/configparser.c" break; case 473: -#line 2493 "./util/configparser.y" - { +#line 2491 "./util/configparser.y" + { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5644 "util/configparser.c" +#line 5552 "util/configparser.c" break; case 474: -#line 2502 "./util/configparser.y" - { +#line 2500 "./util/configparser.y" + { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5656 "util/configparser.c" +#line 5564 "util/configparser.c" break; case 475: -#line 2511 "./util/configparser.y" - { +#line 2509 "./util/configparser.y" + { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5665,12 +5573,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5669 "util/configparser.c" +#line 5577 "util/configparser.c" break; case 476: -#line 2521 "./util/configparser.y" - { +#line 2519 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) yyerror("auth name override, there must be one name " @@ -5678,53 +5586,53 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5682 "util/configparser.c" +#line 5590 "util/configparser.c" break; case 477: -#line 2531 "./util/configparser.y" - { +#line 2529 "./util/configparser.y" + { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5692 "util/configparser.c" +#line 5600 "util/configparser.c" break; case 478: -#line 2538 "./util/configparser.y" - { +#line 2536 "./util/configparser.y" + { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5702 "util/configparser.c" +#line 5610 "util/configparser.c" break; case 479: -#line 2545 "./util/configparser.y" - { +#line 2543 "./util/configparser.y" + { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5712 "util/configparser.c" +#line 5620 "util/configparser.c" break; case 480: -#line 2552 "./util/configparser.y" - { +#line 2550 "./util/configparser.y" + { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5723 "util/configparser.c" +#line 5631 "util/configparser.c" break; case 481: -#line 2560 "./util/configparser.y" - { +#line 2558 "./util/configparser.y" + { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5732,12 +5640,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5736 "util/configparser.c" +#line 5644 "util/configparser.c" break; case 482: -#line 2570 "./util/configparser.y" - { +#line 2568 "./util/configparser.y" + { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5745,12 +5653,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5749 "util/configparser.c" +#line 5657 "util/configparser.c" break; case 483: -#line 2580 "./util/configparser.y" - { +#line 2578 "./util/configparser.y" + { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5758,12 +5666,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5762 "util/configparser.c" +#line 5670 "util/configparser.c" break; case 484: -#line 2590 "./util/configparser.y" - { +#line 2588 "./util/configparser.y" + { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) yyerror("view name override, there must be one " @@ -5771,12 +5679,12 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5775 "util/configparser.c" +#line 5683 "util/configparser.c" break; case 485: -#line 2600 "./util/configparser.y" - { +#line 2598 "./util/configparser.y" + { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && strcmp((yyvsp[0].str), "redirect")!=0 && @@ -5813,12 +5721,12 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5817 "util/configparser.c" +#line 5725 "util/configparser.c" break; case 486: -#line 2639 "./util/configparser.y" - { +#line 2637 "./util/configparser.y" + { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert( @@ -5826,34 +5734,34 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5830 "util/configparser.c" +#line 5738 "util/configparser.c" break; case 487: -#line 2649 "./util/configparser.y" - { +#line 2647 "./util/configparser.y" + { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5841 "util/configparser.c" +#line 5749 "util/configparser.c" break; case 488: -#line 2657 "./util/configparser.y" - { +#line 2655 "./util/configparser.y" + { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 5852 "util/configparser.c" +#line 5760 "util/configparser.c" break; case 489: -#line 2665 "./util/configparser.y" - { +#line 2663 "./util/configparser.y" + { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); ptr = cfg_ptr_reverse((yyvsp[0].str)); @@ -5866,32 +5774,32 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5870 "util/configparser.c" +#line 5778 "util/configparser.c" break; case 490: -#line 2680 "./util/configparser.y" - { +#line 2678 "./util/configparser.y" + { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5882 "util/configparser.c" +#line 5790 "util/configparser.c" break; case 491: -#line 2689 "./util/configparser.y" - { +#line 2687 "./util/configparser.y" + { OUTYY(("\nP(remote-control:)\n")); } -#line 5890 "util/configparser.c" +#line 5798 "util/configparser.c" break; case 502: -#line 2700 "./util/configparser.y" - { +#line 2698 "./util/configparser.y" + { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -5899,104 +5807,104 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5903 "util/configparser.c" +#line 5811 "util/configparser.c" break; case 503: -#line 2710 "./util/configparser.y" - { +#line 2708 "./util/configparser.y" + { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("control port number expected"); else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5915 "util/configparser.c" +#line 5823 "util/configparser.c" break; case 504: -#line 2719 "./util/configparser.y" - { +#line 2717 "./util/configparser.y" + { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5925 "util/configparser.c" +#line 5833 "util/configparser.c" break; case 505: -#line 2726 "./util/configparser.y" - { +#line 2724 "./util/configparser.y" + { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5935 "util/configparser.c" +#line 5843 "util/configparser.c" break; case 506: -#line 2733 "./util/configparser.y" - { +#line 2731 "./util/configparser.y" + { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 5945 "util/configparser.c" +#line 5853 "util/configparser.c" break; case 507: -#line 2740 "./util/configparser.y" - { +#line 2738 "./util/configparser.y" + { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 5955 "util/configparser.c" +#line 5863 "util/configparser.c" break; case 508: -#line 2747 "./util/configparser.y" - { +#line 2745 "./util/configparser.y" + { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 5965 "util/configparser.c" +#line 5873 "util/configparser.c" break; case 509: -#line 2754 "./util/configparser.y" - { +#line 2752 "./util/configparser.y" + { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 5975 "util/configparser.c" +#line 5883 "util/configparser.c" break; case 510: -#line 2761 "./util/configparser.y" - { +#line 2759 "./util/configparser.y" + { OUTYY(("\nP(dnstap:)\n")); } -#line 5983 "util/configparser.c" +#line 5891 "util/configparser.c" break; case 532: -#line 2781 "./util/configparser.y" - { +#line 2779 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5995 "util/configparser.c" +#line 5903 "util/configparser.c" break; case 533: -#line 2790 "./util/configparser.y" - { +#line 2788 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6004,128 +5912,128 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6008 "util/configparser.c" +#line 5916 "util/configparser.c" break; case 534: -#line 2800 "./util/configparser.y" - { +#line 2798 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 6018 "util/configparser.c" +#line 5926 "util/configparser.c" break; case 535: -#line 2807 "./util/configparser.y" - { +#line 2805 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 6028 "util/configparser.c" +#line 5936 "util/configparser.c" break; case 536: -#line 2814 "./util/configparser.y" - { +#line 2812 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6040 "util/configparser.c" +#line 5948 "util/configparser.c" break; case 537: -#line 2823 "./util/configparser.y" - { +#line 2821 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 6050 "util/configparser.c" +#line 5958 "util/configparser.c" break; case 538: -#line 2830 "./util/configparser.y" - { +#line 2828 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 6060 "util/configparser.c" +#line 5968 "util/configparser.c" break; case 539: -#line 2837 "./util/configparser.y" - { +#line 2835 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 6070 "util/configparser.c" +#line 5978 "util/configparser.c" break; case 540: -#line 2844 "./util/configparser.y" - { +#line 2842 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 6080 "util/configparser.c" +#line 5988 "util/configparser.c" break; case 541: -#line 2851 "./util/configparser.y" - { +#line 2849 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6092 "util/configparser.c" +#line 6000 "util/configparser.c" break; case 542: -#line 2860 "./util/configparser.y" - { +#line 2858 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6104 "util/configparser.c" +#line 6012 "util/configparser.c" break; case 543: -#line 2869 "./util/configparser.y" - { +#line 2867 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 6114 "util/configparser.c" +#line 6022 "util/configparser.c" break; case 544: -#line 2876 "./util/configparser.y" - { +#line 2874 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6124 "util/configparser.c" +#line 6032 "util/configparser.c" break; case 545: -#line 2883 "./util/configparser.y" - { +#line 2881 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6133,12 +6041,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6137 "util/configparser.c" +#line 6045 "util/configparser.c" break; case 546: -#line 2893 "./util/configparser.y" - { +#line 2891 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6146,12 +6054,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6150 "util/configparser.c" +#line 6058 "util/configparser.c" break; case 547: -#line 2903 "./util/configparser.y" - { +#line 2901 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6159,12 +6067,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6163 "util/configparser.c" +#line 6071 "util/configparser.c" break; case 548: -#line 2913 "./util/configparser.y" - { +#line 2911 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6172,12 +6080,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6176 "util/configparser.c" +#line 6084 "util/configparser.c" break; case 549: -#line 2923 "./util/configparser.y" - { +#line 2921 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6185,12 +6093,12 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6189 "util/configparser.c" +#line 6097 "util/configparser.c" break; case 550: -#line 2933 "./util/configparser.y" - { +#line 2931 "./util/configparser.y" + { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6198,48 +6106,48 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6202 "util/configparser.c" +#line 6110 "util/configparser.c" break; case 551: -#line 2943 "./util/configparser.y" - { +#line 2941 "./util/configparser.y" + { OUTYY(("\nP(python:)\n")); } -#line 6210 "util/configparser.c" +#line 6118 "util/configparser.c" break; case 555: -#line 2952 "./util/configparser.y" - { +#line 2950 "./util/configparser.y" + { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6220 "util/configparser.c" +#line 6128 "util/configparser.c" break; case 556: -#line 2958 "./util/configparser.y" - { +#line 2956 "./util/configparser.y" + { OUTYY(("\nP(dynlib:)\n")); } -#line 6228 "util/configparser.c" +#line 6136 "util/configparser.c" break; case 560: -#line 2967 "./util/configparser.y" - { +#line 2965 "./util/configparser.y" + { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6238 "util/configparser.c" +#line 6146 "util/configparser.c" break; case 561: -#line 2973 "./util/configparser.y" - { +#line 2971 "./util/configparser.y" + { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); @@ -6247,132 +6155,132 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6251 "util/configparser.c" +#line 6159 "util/configparser.c" break; case 562: -#line 2983 "./util/configparser.y" - { +#line 2981 "./util/configparser.y" + { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6261 "util/configparser.c" +#line 6169 "util/configparser.c" break; case 563: -#line 2990 "./util/configparser.y" - { +#line 2988 "./util/configparser.y" + { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_actions, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6273 "util/configparser.c" +#line 6181 "util/configparser.c" break; case 564: -#line 2999 "./util/configparser.y" - { +#line 2997 "./util/configparser.y" + { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6284 "util/configparser.c" +#line 6192 "util/configparser.c" break; case 565: -#line 3007 "./util/configparser.y" - { +#line 3005 "./util/configparser.y" + { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6292 "util/configparser.c" +#line 6200 "util/configparser.c" break; case 578: -#line 3023 "./util/configparser.y" - { +#line 3021 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) yyerror("expected yes or no."); else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6304 "util/configparser.c" +#line 6212 "util/configparser.c" break; case 579: -#line 3033 "./util/configparser.y" - { +#line 3031 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("port number expected"); else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6316 "util/configparser.c" +#line 6224 "util/configparser.c" break; case 580: -#line 3042 "./util/configparser.y" - { +#line 3040 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6326 "util/configparser.c" +#line 6234 "util/configparser.c" break; case 581: -#line 3049 "./util/configparser.y" - { +#line 3047 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) log_warn("dnscrypt-provider-cert %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6338 "util/configparser.c" +#line 6246 "util/configparser.c" break; case 582: -#line 3058 "./util/configparser.y" - { +#line 3056 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6348 "util/configparser.c" +#line 6256 "util/configparser.c" break; case 583: -#line 3065 "./util/configparser.y" - { +#line 3063 "./util/configparser.y" + { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) log_warn("dnscrypt-secret-key: %s is a duplicate", (yyvsp[0].str)); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6360 "util/configparser.c" +#line 6268 "util/configparser.c" break; case 584: -#line 3074 "./util/configparser.y" - { +#line 3072 "./util/configparser.y" + { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6371 "util/configparser.c" +#line 6279 "util/configparser.c" break; case 585: -#line 3082 "./util/configparser.y" - { +#line 3080 "./util/configparser.y" + { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6383,23 +6291,23 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6387 "util/configparser.c" +#line 6295 "util/configparser.c" break; case 586: -#line 3095 "./util/configparser.y" - { +#line 3093 "./util/configparser.y" + { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6398 "util/configparser.c" +#line 6306 "util/configparser.c" break; case 587: -#line 3103 "./util/configparser.y" - { +#line 3101 "./util/configparser.y" + { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) yyerror("number expected"); @@ -6410,20 +6318,20 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6414 "util/configparser.c" +#line 6322 "util/configparser.c" break; case 588: -#line 3116 "./util/configparser.y" - { +#line 3114 "./util/configparser.y" + { OUTYY(("\nP(cachedb:)\n")); } -#line 6422 "util/configparser.c" +#line 6330 "util/configparser.c" break; case 597: -#line 3127 "./util/configparser.y" - { +#line 3125 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_backend); @@ -6433,12 +6341,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6437 "util/configparser.c" +#line 6345 "util/configparser.c" break; case 598: -#line 3139 "./util/configparser.y" - { +#line 3137 "./util/configparser.y" + { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->cachedb_secret); @@ -6448,12 +6356,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6452 "util/configparser.c" +#line 6360 "util/configparser.c" break; case 599: -#line 3151 "./util/configparser.y" - { +#line 3149 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->redis_server_host); @@ -6463,12 +6371,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6467 "util/configparser.c" +#line 6375 "util/configparser.c" break; case 600: -#line 3163 "./util/configparser.y" - { +#line 3161 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; OUTYY(("P(redis_server_port:%s)\n", (yyvsp[0].str))); @@ -6481,12 +6389,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6485 "util/configparser.c" +#line 6393 "util/configparser.c" break; case 601: -#line 3178 "./util/configparser.y" - { +#line 3176 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6497,12 +6405,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6501 "util/configparser.c" +#line 6409 "util/configparser.c" break; case 602: -#line 3191 "./util/configparser.y" - { +#line 3189 "./util/configparser.y" + { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6513,12 +6421,12 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6517 "util/configparser.c" +#line 6425 "util/configparser.c" break; case 603: -#line 3204 "./util/configparser.y" - { +#line 3202 "./util/configparser.y" + { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) yyerror("positive number expected"); @@ -6527,20 +6435,20 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6531 "util/configparser.c" +#line 6439 "util/configparser.c" break; case 604: -#line 3215 "./util/configparser.y" - { +#line 3213 "./util/configparser.y" + { OUTYY(("\nP(ipset:)\n")); } -#line 6539 "util/configparser.c" +#line 6447 "util/configparser.c" break; case 609: -#line 3224 "./util/configparser.y" - { +#line 3222 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v4) @@ -6553,12 +6461,12 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6557 "util/configparser.c" +#line 6465 "util/configparser.c" break; case 610: -#line 3239 "./util/configparser.y" - { +#line 3237 "./util/configparser.y" + { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->ipset_name_v6) @@ -6571,11 +6479,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6575 "util/configparser.c" +#line 6483 "util/configparser.c" break; -#line 6579 "util/configparser.c" +#line 6487 "util/configparser.c" default: break; } @@ -6639,7 +6547,7 @@ yyerrlab: { if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); - yymsg = YY_CAST (char *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc))); + yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc); if (!yymsg) { yymsg = yymsgbuf; @@ -6807,7 +6715,7 @@ yyreturn: #endif return yyresult; } -#line 3253 "./util/configparser.y" +#line 3251 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.h b/util/configparser.h index 2a86ce512..4d3381fa3 100644 --- a/util/configparser.h +++ b/util/configparser.h @@ -1,4 +1,4 @@ -/* A Bison parser, made by GNU Bison 3.5. */ +/* A Bison parser, made by GNU Bison 3.4.1. */ /* Bison interface for Yacc-like parsers in C diff --git a/util/configparser.y b/util/configparser.y index fe600a999..52ec8251c 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -1120,15 +1120,13 @@ server_root_hints: VAR_ROOT_HINTS STRING_ARG server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG { OUTYY(("P(server_dlv_anchor_file:%s)\n", $2)); - free(cfg_parser->cfg->dlv_anchor_file); - cfg_parser->cfg->dlv_anchor_file = $2; + log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); } ; server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG { OUTYY(("P(server_dlv_anchor:%s)\n", $2)); - if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, $2)) - yyerror("out of memory"); + log_warn("option dlv-anchor ignored: DLV is decommissioned"); } ; server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG diff --git a/validator/val_anchor.c b/validator/val_anchor.c index 7224f00a2..9b6574c5d 100644 --- a/validator/val_anchor.c +++ b/validator/val_anchor.c @@ -1030,8 +1030,6 @@ anchors_assemble_rrsets(struct val_anchors* anchors) ")", b); (void)rbtree_delete(anchors->tree, &ta->node); lock_basic_unlock(&ta->lock); - if(anchors->dlv_anchor == ta) - anchors->dlv_anchor = NULL; anchors_delfunc(&ta->node, NULL); ta = next; continue; @@ -1103,37 +1101,6 @@ anchors_apply_cfg(struct val_anchors* anchors, struct config_file* cfg) return 0; } } - if(cfg->dlv_anchor_file && cfg->dlv_anchor_file[0] != 0) { - struct trust_anchor* dlva; - nm = cfg->dlv_anchor_file; - if(cfg->chrootdir && cfg->chrootdir[0] && strncmp(nm, - cfg->chrootdir, strlen(cfg->chrootdir)) == 0) - nm += strlen(cfg->chrootdir); - if(!(dlva = anchor_read_file(anchors, parsebuf, - nm, 1))) { - log_err("error reading dlv-anchor-file: %s", - cfg->dlv_anchor_file); - sldns_buffer_free(parsebuf); - return 0; - } - lock_basic_lock(&anchors->lock); - anchors->dlv_anchor = dlva; - lock_basic_unlock(&anchors->lock); - } - for(f = cfg->dlv_anchor_list; f; f = f->next) { - struct trust_anchor* dlva; - if(!f->str || f->str[0] == 0) /* empty "" */ - continue; - if(!(dlva = anchor_store_str( - anchors, parsebuf, f->str))) { - log_err("error in dlv-anchor: \"%s\"", f->str); - sldns_buffer_free(parsebuf); - return 0; - } - lock_basic_lock(&anchors->lock); - anchors->dlv_anchor = dlva; - lock_basic_unlock(&anchors->lock); - } /* do autr last, so that it sees what anchors are filled by other * means can can print errors about double config for the name */ for(f = cfg->auto_trust_anchor_file_list; f; f = f->next) { diff --git a/validator/val_anchor.h b/validator/val_anchor.h index a2a795d09..1597a7d62 100644 --- a/validator/val_anchor.h +++ b/validator/val_anchor.h @@ -67,8 +67,6 @@ struct val_anchors { * contents of type trust_anchor. */ rbtree_type* tree; - /** The DLV trust anchor (if one is configured, else NULL) */ - struct trust_anchor* dlv_anchor; /** Autotrust global data, anchors sorted by next probe time */ struct autr_global_data* autr; }; diff --git a/validator/val_neg.c b/validator/val_neg.c index 4c08e6bbc..67699b1f7 100644 --- a/validator/val_neg.c +++ b/validator/val_neg.c @@ -965,108 +965,6 @@ static int neg_closest_data(struct val_neg_zone* zone, } } -int val_neg_dlvlookup(struct val_neg_cache* neg, uint8_t* qname, size_t len, - uint16_t qclass, struct rrset_cache* rrset_cache, time_t now) -{ - /* lookup closest zone */ - struct val_neg_zone* zone; - struct val_neg_data* data; - int labs; - struct ub_packed_rrset_key* nsec; - struct packed_rrset_data* d; - uint32_t flags; - uint8_t* wc; - struct query_info qinfo; - if(!neg) return 0; - - log_nametypeclass(VERB_ALGO, "negcache dlvlookup", qname, - LDNS_RR_TYPE_DLV, qclass); - - labs = dname_count_labels(qname); - lock_basic_lock(&neg->lock); - zone = neg_closest_zone_parent(neg, qname, len, labs, qclass); - while(zone && !zone->in_use) - zone = zone->parent; - if(!zone) { - lock_basic_unlock(&neg->lock); - return 0; - } - log_nametypeclass(VERB_ALGO, "negcache zone", zone->name, 0, - zone->dclass); - - /* DLV is defined to use NSEC only */ - if(zone->nsec3_hash) { - lock_basic_unlock(&neg->lock); - return 0; - } - - /* lookup closest data record */ - (void)neg_closest_data(zone, qname, len, labs, &data); - while(data && !data->in_use) - data = data->parent; - if(!data) { - lock_basic_unlock(&neg->lock); - return 0; - } - log_nametypeclass(VERB_ALGO, "negcache rr", data->name, - LDNS_RR_TYPE_NSEC, zone->dclass); - - /* lookup rrset in rrset cache */ - flags = 0; - if(query_dname_compare(data->name, zone->name) == 0) - flags = PACKED_RRSET_NSEC_AT_APEX; - nsec = rrset_cache_lookup(rrset_cache, data->name, data->len, - LDNS_RR_TYPE_NSEC, zone->dclass, flags, now, 0); - - /* check if secure and TTL ok */ - if(!nsec) { - lock_basic_unlock(&neg->lock); - return 0; - } - d = (struct packed_rrset_data*)nsec->entry.data; - if(!d || now > d->ttl) { - lock_rw_unlock(&nsec->entry.lock); - /* delete data record if expired */ - neg_delete_data(neg, data); - lock_basic_unlock(&neg->lock); - return 0; - } - if(d->security != sec_status_secure) { - lock_rw_unlock(&nsec->entry.lock); - neg_delete_data(neg, data); - lock_basic_unlock(&neg->lock); - return 0; - } - verbose(VERB_ALGO, "negcache got secure rrset"); - - /* check NSEC security */ - /* check if NSEC proves no DLV type exists */ - /* check if NSEC proves NXDOMAIN for qname */ - qinfo.qname = qname; - qinfo.qtype = LDNS_RR_TYPE_DLV; - qinfo.qclass = qclass; - qinfo.local_alias = NULL; - if(!nsec_proves_nodata(nsec, &qinfo, &wc) && - !val_nsec_proves_name_error(nsec, qname)) { - /* the NSEC is not a denial for the DLV */ - lock_rw_unlock(&nsec->entry.lock); - lock_basic_unlock(&neg->lock); - verbose(VERB_ALGO, "negcache not proven"); - return 0; - } - /* so the NSEC was a NODATA proof, or NXDOMAIN proof. */ - - /* no need to check for wildcard NSEC; no wildcards in DLV repos */ - /* no need to lookup SOA record for client; no response message */ - - lock_rw_unlock(&nsec->entry.lock); - /* if OK touch the LRU for neg_data element */ - neg_lru_touch(neg, data); - lock_basic_unlock(&neg->lock); - verbose(VERB_ALGO, "negcache DLV denial proven"); - return 1; -} - void val_neg_addreferral(struct val_neg_cache* neg, struct reply_info* rep, uint8_t* zone_name) { diff --git a/validator/val_neg.h b/validator/val_neg.h index 877f5c944..5643ca331 100644 --- a/validator/val_neg.h +++ b/validator/val_neg.h @@ -218,26 +218,6 @@ void val_neg_addreply(struct val_neg_cache* neg, struct reply_info* rep); void val_neg_addreferral(struct val_neg_cache* neg, struct reply_info* rep, uint8_t* zone); -/** - * Perform a DLV style lookup - * During the lookup, we could find out that data has expired. In that - * case the neg_cache entries are removed, and lookup fails. - * - * @param neg: negative cache. - * @param qname: name to look for - * @param len: length of qname. - * @param qclass: class to look in. - * @param rrset_cache: the rrset cache, for NSEC lookups. - * @param now: current time for ttl checks. - * @return - * 0 on error - * 0 if no proof of negative - * 1 if indeed negative was proven - * thus, qname DLV qclass does not exist. - */ -int val_neg_dlvlookup(struct val_neg_cache* neg, uint8_t* qname, size_t len, - uint16_t qclass, struct rrset_cache* rrset_cache, time_t now); - /** * For the given query, try to get a reply out of the negative cache. * The reply still needs to be validated. diff --git a/validator/val_nsec.c b/validator/val_nsec.c index a795e7733..032d2ae03 100644 --- a/validator/val_nsec.c +++ b/validator/val_nsec.c @@ -541,86 +541,3 @@ val_nsec_proves_no_wc(struct ub_packed_rrset_key* nsec, uint8_t* qname, } return 0; } - -/** - * Find shared topdomain that exists - */ -static void -dlv_topdomain(struct ub_packed_rrset_key* nsec, uint8_t* qname, - uint8_t** nm, size_t* nm_len) -{ - /* make sure reply is part of nm */ - /* take shared topdomain with left of NSEC. */ - - /* because, if empty nonterminal, then right is subdomain of qname. - * and any shared topdomain would be empty nonterminals. - * - * If nxdomain, then the right is bigger, and could have an - * interesting shared topdomain, but if it does have one, it is - * an empty nonterminal. An empty nonterminal shared with the left - * one. */ - int n; - uint8_t* common = dname_get_shared_topdomain(qname, nsec->rk.dname); - n = dname_count_labels(*nm) - dname_count_labels(common); - dname_remove_labels(nm, nm_len, n); -} - -int val_nsec_check_dlv(struct query_info* qinfo, - struct reply_info* rep, uint8_t** nm, size_t* nm_len) -{ - uint8_t* next; - size_t i, nlen; - int c; - /* we should now have a NOERROR/NODATA or NXDOMAIN message */ - if(rep->an_numrrsets != 0) { - return 0; - } - /* is this NOERROR ? */ - if(FLAGS_GET_RCODE(rep->flags) == LDNS_RCODE_NOERROR) { - /* it can be a plain NSEC match - go up one more level. */ - /* or its an empty nonterminal - go up to nonempty level */ - for(i=0; ins_numrrsets; i++) { - if(htons(rep->rrsets[i]->rk.type)!=LDNS_RR_TYPE_NSEC || - !nsec_get_next(rep->rrsets[i], &next, &nlen)) - continue; - c = dname_canonical_compare( - rep->rrsets[i]->rk.dname, qinfo->qname); - if(c == 0) { - /* plain match */ - if(nsec_has_type(rep->rrsets[i], - LDNS_RR_TYPE_DLV)) - return 0; - dname_remove_label(nm, nm_len); - return 1; - } else if(c < 0 && - dname_strict_subdomain_c(next, qinfo->qname)) { - /* ENT */ - dlv_topdomain(rep->rrsets[i], qinfo->qname, - nm, nm_len); - return 1; - } - } - return 0; - } - - /* is this NXDOMAIN ? */ - if(FLAGS_GET_RCODE(rep->flags) == LDNS_RCODE_NXDOMAIN) { - /* find the qname denial NSEC record. It can tell us - * a closest encloser name; or that we not need bother */ - for(i=0; ins_numrrsets; i++) { - if(htons(rep->rrsets[i]->rk.type) != LDNS_RR_TYPE_NSEC) - continue; - if(val_nsec_proves_name_error(rep->rrsets[i], - qinfo->qname)) { - log_nametypeclass(VERB_ALGO, "topdomain on", - rep->rrsets[i]->rk.dname, - ntohs(rep->rrsets[i]->rk.type), 0); - dlv_topdomain(rep->rrsets[i], qinfo->qname, - nm, nm_len); - return 1; - } - } - return 0; - } - return 0; -} diff --git a/validator/val_nsec.h b/validator/val_nsec.h index 4e71257bc..7117809d6 100644 --- a/validator/val_nsec.h +++ b/validator/val_nsec.h @@ -158,19 +158,6 @@ uint8_t* nsec_closest_encloser(uint8_t* qname, int val_nsec_proves_no_wc(struct ub_packed_rrset_key* nsec, uint8_t* qname, size_t qnamelen); -/** - * Determine the DLV result, what to do with NSEC DLV reply. - * @param qinfo: what was queried for. - * @param rep: the nonpositive reply. - * @param nm: dlv lookup name, to adjust for new lookup name (if needed). - * @param nm_len: length of lookup name. - * @return 0 on error, 1 if a higher point is found. - * If the higher point is above the dlv repo anchor, the qname does - * not exist. - */ -int val_nsec_check_dlv(struct query_info* qinfo, - struct reply_info* rep, uint8_t** nm, size_t* nm_len); - /** * Determine if an nsec proves an insecure delegation towards the qname. * @param nsec: nsec rrset. diff --git a/validator/validator.h b/validator/validator.h index 9e4c8a941..35da1920a 100644 --- a/validator/validator.h +++ b/validator/validator.h @@ -137,8 +137,6 @@ enum val_state { VAL_VALIDATE_STATE, /** finish up */ VAL_FINISHED_STATE, - /** DLV lookup state, processing DLV queries */ - VAL_DLVLOOKUP_STATE }; /** @@ -217,27 +215,6 @@ struct val_qstate { /** true if this state is waiting to prime a trust anchor */ int wait_prime_ta; - - /** have we already checked the DLV? */ - int dlv_checked; - /** The name for which the DLV is looked up. For the current message - * or for the current RRset (for CNAME, REFERRAL types). - * If there is signer name, that may be it, else a domain name */ - uint8_t* dlv_lookup_name; - /** length of dlv lookup name */ - size_t dlv_lookup_name_len; - /** Name at which chain of trust stopped with insecure, starting DLV - * DLV must result in chain going further down */ - uint8_t* dlv_insecure_at; - /** length of dlv insecure point name */ - size_t dlv_insecure_at_len; - /** status of DLV lookup. Indication to VAL_DLV_STATE what to do */ - enum dlv_status { - dlv_error, /* server failure */ - dlv_success, /* got a DLV */ - dlv_ask_higher, /* ask again */ - dlv_there_is_no_dlv /* got no DLV, sure of it */ - } dlv_status; }; /** From f78f6a3b2909e1368946bc93db328b95cb86e163 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 4 Aug 2020 09:15:45 +0200 Subject: [PATCH 49/81] dlv removal, remove from tests and validator state machine --- testdata/dlv_anchor.rpl | 279 ------------------ testdata/dlv_ask_higher.rpl | 354 ----------------------- testdata/dlv_below_ta.rpl | 355 ----------------------- testdata/dlv_delegation.rpl | 335 ---------------------- testdata/dlv_ds_lookup.rpl | 281 ------------------ testdata/dlv_insecure.rpl | 254 ----------------- testdata/dlv_insecure_negcache.rpl | 311 -------------------- testdata/dlv_keyretry.rpl | 287 ------------------- testdata/dlv_negnx.rpl | 405 -------------------------- testdata/dlv_optout.rpl | 440 ----------------------------- testdata/dlv_remove.rpl | 198 ------------- testdata/dlv_remove_empty.rpl | 272 ------------------ testdata/dlv_remove_nodel.rpl | 276 ------------------ testdata/dlv_remove_pos.rpl | 167 ----------- testdata/dlv_unused.rpl | 277 ------------------ testdata/domain_insec_dlv.rpl | 277 ------------------ testdata/fwddlv_parse.rpl | 134 --------- testdata/val_unalgo_dlv.rpl | 284 ------------------- validator/validator.c | 369 ------------------------ 19 files changed, 5555 deletions(-) delete mode 100644 testdata/dlv_anchor.rpl delete mode 100644 testdata/dlv_ask_higher.rpl delete mode 100644 testdata/dlv_below_ta.rpl delete mode 100644 testdata/dlv_delegation.rpl delete mode 100644 testdata/dlv_ds_lookup.rpl delete mode 100644 testdata/dlv_insecure.rpl delete mode 100644 testdata/dlv_insecure_negcache.rpl delete mode 100644 testdata/dlv_keyretry.rpl delete mode 100644 testdata/dlv_negnx.rpl delete mode 100644 testdata/dlv_optout.rpl delete mode 100644 testdata/dlv_remove.rpl delete mode 100644 testdata/dlv_remove_empty.rpl delete mode 100644 testdata/dlv_remove_nodel.rpl delete mode 100644 testdata/dlv_remove_pos.rpl delete mode 100644 testdata/dlv_unused.rpl delete mode 100644 testdata/domain_insec_dlv.rpl delete mode 100644 testdata/fwddlv_parse.rpl delete mode 100644 testdata/val_unalgo_dlv.rpl diff --git a/testdata/dlv_anchor.rpl b/testdata/dlv_anchor.rpl deleted file mode 100644 index 81547454e..000000000 --- a/testdata/dlv_anchor.rpl +++ /dev/null @@ -1,279 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV anchor -; positive response for DLV. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_ask_higher.rpl b/testdata/dlv_ask_higher.rpl deleted file mode 100644 index fad8355c8..000000000 --- a/testdata/dlv_ask_higher.rpl +++ /dev/null @@ -1,354 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV where it needs to ask higher up in dlv. -; at first negative DLV response, it needs to ask higher. -; the SOA record in that negative response has a big span (if interpreted as NSEC) -; then a positive response for DLV. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; failed DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NXDOMAIN -SECTION QUESTION -sub.example.net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.net.example.com IN NSEC not.example.com. RRSIG NSEC DLV -example.net.example.com. 3600 IN RRSIG NSEC 3 4 3600 20070926134150 20070829134150 2854 example.com. AKz/e6KOw8gCx6wnpIatBwKb0WOPBTWmNNMg91XR/wlJQ9Z2+qICPmA= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -SECTION ADDITIONAL -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.sub.example.net query -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -sub.example.net. IN A -SECTION ANSWER -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN DS 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox -sub.example.net. 3600 IN RRSIG DS 5 3 3600 20070926134150 20070829134150 30899 example.net. nM5HAlRsrLurc5mUNKwCye5X6LSH53pLgSeyni4wb6Jd2J48ZRWwrVvy7IpyvI75+Wlu3aGOjv/kEyVaizChRQ== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ENTRY_END - -RANGE_END - -; ns.sub.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.6 -; DS -; sub.example.net. 3600 IN DS 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -sub.example.net. IN DNSKEY -SECTION ANSWER -sub.example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -sub.example.net. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. PATh0K1jz9QeN02C79noX9gwK+Nr5VznWPQwygm/pYDsOb0z3EsaiOrzyoreegDKgoNn3kN0CywS+usCWM6hrw== ;{id = 30899} -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -sub.example.net. IN NS -SECTION ANSWER -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -; www.sub.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.sub.example.net. IN A -SECTION ANSWER -www.sub.example.net. 3600 IN A 10.20.30.40 -www.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. Q+88AIM3K8q6S0bHeFVT742EepZFxOxgtaL1V68DEkP4NePKzL4zttWQD3uI/5ALw/fIrC7G43Eo+epWn2ZGCA== ;{id = 30899} -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.sub.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.sub.example.net. IN A -SECTION ANSWER -www.sub.example.net. 3600 IN A 10.20.30.40 -www.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. Q+88AIM3K8q6S0bHeFVT742EepZFxOxgtaL1V68DEkP4NePKzL4zttWQD3uI/5ALw/fIrC7G43Eo+epWn2ZGCA== ;{id = 30899} -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_below_ta.rpl b/testdata/dlv_below_ta.rpl deleted file mode 100644 index f5d630dfb..000000000 --- a/testdata/dlv_below_ta.rpl +++ /dev/null @@ -1,355 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - trust-anchor: "example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator, use DLV for nonDSed zone below trustanchor. -; DLV example.com. -; trust anchor at example.net but no secure delegation to -; sub.example.net signed with DLV but not by parent. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -sub.example.net.example.com. IN DLV -SECTION ANSWER -sub.example.net.example.com. 3600 IN DLV 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox -sub.example.net.example.com. 3600 IN RRSIG DLV 3 5 3600 20070926135752 20070829135752 2854 example.com. AAdhy87nuDEaxmc+k9pJHYnhKiEYL++OLPxzOdwEQOtsHi7jeD3lRDU= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC sub.example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. ALITtZY03PDWnuAeEL/5VwMIXY3iC2y7Qkeq5DgAHmPbNyWiOmJNEKg= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC sub.example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. ALITtZY03PDWnuAeEL/5VwMIXY3iC2y7Qkeq5DgAHmPbNyWiOmJNEKg= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; no DS to sub.example.net, securely insecure. -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -sub.example.net. IN DS -SECTION ANSWER -SECTION AUTHORITY -example.net. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.net. 3600 IN RRSIG SOA 5 2 3600 20070926134150 20070829134150 30899 example.net. ELVULZHTRc0Qk06rSBRnB/T6sm1+AbAtdEJHN6PCsz2Z3s3E5A8NH7Krz0VzRaYIEUStnbAtuE3oP8XHWHBnyQ== ;{id = 30899} -sub.example.net. IN NSEC tut.example.net. NS NSEC -sub.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. eNJ2OPjMhGKvg70aYT9l9Uo1lJsqmDqVRMlHibv6t+CNjljytI9Vwbao17oV0cjIksmESAewReb73x9fmVIgEQ== ;{id = 30899} -SECTION ADDITIONAL -ENTRY_END - -; delegation to sub.example.net, securely insecure. -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -sub.example.net. IN NS -SECTION ANSWER -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. IN NSEC tut.example.net. NS NSEC -sub.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. eNJ2OPjMhGKvg70aYT9l9Uo1lJsqmDqVRMlHibv6t+CNjljytI9Vwbao17oV0cjIksmESAewReb73x9fmVIgEQ== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ENTRY_END - - -RANGE_END - -; ns.sub.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.6 -; DS is -; sub.example.net. 3600 IN DS 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox -; DNSKEY query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -sub.example.net. IN DNSKEY -SECTION ANSWER -sub.example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -sub.example.net. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. PATh0K1jz9QeN02C79noX9gwK+Nr5VznWPQwygm/pYDsOb0z3EsaiOrzyoreegDKgoNn3kN0CywS+usCWM6hrw== ;{id = 30899} -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -sub.example.net. IN NS -SECTION ANSWER -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -; www.sub.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -www.sub.example.net. IN A -SECTION ANSWER -www.sub.example.net. IN A 10.20.30.40 -www.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. Q+88AIM3K8q6S0bHeFVT742EepZFxOxgtaL1V68DEkP4NePKzL4zttWQD3uI/5ALw/fIrC7G43Eo+epWn2ZGCA== ;{id = 30899} -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.sub.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.sub.example.net. IN A -SECTION ANSWER -www.sub.example.net. IN A 10.20.30.40 -www.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. Q+88AIM3K8q6S0bHeFVT742EepZFxOxgtaL1V68DEkP4NePKzL4zttWQD3uI/5ALw/fIrC7G43Eo+epWn2ZGCA== ;{id = 30899} -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_delegation.rpl b/testdata/dlv_delegation.rpl deleted file mode 100644 index 53074c8e2..000000000 --- a/testdata/dlv_delegation.rpl +++ /dev/null @@ -1,335 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with delegation in DLV repository -; positive response for DLV. -; but the DLV repository has a (secure) delegation inside it. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; referral to the net.example.com DLV server -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -net.example.com. NS ns.net.example.com. -net.example.com. 3600 IN DS 2854 3 1 24d80cd822bc4083cf491b7f055890345a77dd9b ; xenat-myfat-memir-sabym-fefig-nakol-zucyh-megef-gakel-lolyn-ruxox -net.example.com. 3600 IN RRSIG DS 3 3 3600 20070926134150 20070829134150 2854 example.com. AA0APyTN12wzj1XmDEZe+wrPE1hkLAINKT8cT9zGup7zX3O8R4Ki2N8= ;{id = 2854} -SECTION ADDITIONAL -ns.net.example.com. A 1.2.3.6 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AJEvfI+tX6Y1OF0h1CNHERJjXaaTsmLWTMLgXk4UYJl8JjAikCpsf9Q= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.net.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.6 -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN NS -SECTION ANSWER -net.example.com. NS ns.net.example.com. -net.example.com. 3600 IN RRSIG NS 3 3 3600 20070926134150 20070829134150 2854 net.example.com. AHjTvB20SzZVV9P3LXJ6lVzFWCoDk7T71VHllOwmom3a/EutlUpsgNM= ;{id = 2854} -SECTION ADDITIONAL -ns.net.example.com. A 1.2.3.6 -ns.net.example.com. 3600 IN RRSIG A 3 4 3600 20070926134150 20070829134150 2854 net.example.com. AE2wjNCJayCBi6e8QAGwgujdMC2LbVWQVbQCuQx+grjoQJXQxxpFB5I= ;{id = 2854} -ENTRY_END - -; DNSKEY query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DNSKEY -SECTION ANSWER -net.example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJIIs70j+sDS/UT2QRp61SE7S3EEXopNXoFE73JLRmvpi/UrOO/Vz4Se6wXv/CYCKjGw06U4WRgRYXcpEhJROyNapmdIKSxhOzfLVE1gqA0PweZR8dtY3aNQSRn3sPpwJr6Mi/PqQKAMMrZ9ckJpf1+bQMOOvxgzz2U1GS18b3yZKcgTMEaJzd/GZYzi/BN2DzQ0MsrSwYXfsNLFOBbs8PJMW4LYIxeeOe6rUgkWOF7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -net.example.com. 3600 IN RRSIG DNSKEY 3 3 3600 20070926134150 20070829134150 2854 net.example.com. ADgKDV1Yi2iFOXFUN1XkvBU7KW/rdtGcOEdc9VMIxfIKDo5h24E5fqs= ;{id = 2854} -SECTION AUTHORITY -net.example.com. NS ns.net.example.com. -net.example.com. 3600 IN RRSIG NS 3 3 3600 20070926134150 20070829134150 2854 net.example.com. AHjTvB20SzZVV9P3LXJ6lVzFWCoDk7T71VHllOwmom3a/EutlUpsgNM= ;{id = 2854} -SECTION ADDITIONAL -ns.net.example.com. A 1.2.3.6 -ns.net.example.com. 3600 IN RRSIG A 3 4 3600 20070926134150 20070829134150 2854 net.example.com. AE2wjNCJayCBi6e8QAGwgujdMC2LbVWQVbQCuQx+grjoQJXQxxpFB5I= ;{id = 2854} -ENTRY_END - -; DLV apex -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -net.example.com. SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -net.example.com. 3600 IN RRSIG SOA 3 3 3600 20070926134150 20070829134150 2854 net.example.com. AKAjedAeGWRHaqhDhNhbTvVUQMgCspiD4GNC7dMVbEZSd87AFcqwg1Y= ;{id = 2854} -net.example.com. NSEC example.net.example.com. SOA NS DNSKEY RRSIG NSEC -net.example.com. 3600 IN RRSIG NSEC 3 3 3600 20070926134150 20070829134150 2854 net.example.com. AAHqj3xDqng7ZuNFn89sTjTo2qfuXTv0yR6v8mZ1+L5mCsOwjpGXrJw= ;{id = 2854} -SECTION ADDITIONAL -ENTRY_END - -; DLV of interest -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 net.example.com. AIZmoTbAlXYwLknm84i7sbglbHr1Iq7t0yyTENO/MsPj7K/mvEQAI/g= ;{id = 2854} -SECTION AUTHORITY -net.example.com. NS ns.net.example.com. -net.example.com. 3600 IN RRSIG NS 3 3 3600 20070926134150 20070829134150 2854 net.example.com. AHjTvB20SzZVV9P3LXJ6lVzFWCoDk7T71VHllOwmom3a/EutlUpsgNM= ;{id = 2854} -SECTION ADDITIONAL -ns.net.example.com. A 1.2.3.6 -ns.net.example.com. 3600 IN RRSIG A 3 4 3600 20070926134150 20070829134150 2854 net.example.com. AE2wjNCJayCBi6e8QAGwgujdMC2LbVWQVbQCuQx+grjoQJXQxxpFB5I= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_ds_lookup.rpl b/testdata/dlv_ds_lookup.rpl deleted file mode 100644 index 663cd9c36..000000000 --- a/testdata/dlv_ds_lookup.rpl +++ /dev/null @@ -1,281 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV anchor for a DS lookup. -; positive response for DLV. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DS -SECTION AUTHORITY -net. 900 IN SOA a.gtld-servers.net. nstld.verisign-grs.com. 1251367385 1800 900 604800 86400 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -example.net. IN DS -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -example.net. IN DS -SECTION AUTHORITY -net. 900 IN SOA a.gtld-servers.net. nstld.verisign-grs.com. 1251367385 1800 900 604800 86400 -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_insecure.rpl b/testdata/dlv_insecure.rpl deleted file mode 100644 index e6515a9fb..000000000 --- a/testdata/dlv_insecure.rpl +++ /dev/null @@ -1,254 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - harden-referral-path: no - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with insecure zone with no DLV - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -; could be picked out of the negative cache due to NS queries in between. -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -www.example.net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_insecure_negcache.rpl b/testdata/dlv_insecure_negcache.rpl deleted file mode 100644 index 8408870b9..000000000 --- a/testdata/dlv_insecure_negcache.rpl +++ /dev/null @@ -1,311 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - harden-referral-path: no - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with insecure zone, no DLV from negative cache - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 300 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -; could be picked out of the negative cache due to NS queries in between. -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -www.example.net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -zoink.name.example.com IN NSEC zazz.net.example.com. RRSIG NSEC DLV -zoink.name.example.com. 3600 IN RRSIG NSEC 3 4 3600 20070926134150 20070829134150 2854 example.com. AHipxvshRHglCEN4nZCT4m/4RIj8TrCOE2AsqEoH9e+6OYSo+yuNzzo= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -zoink.name.example.com IN NSEC zazz.net.example.com. RRSIG NSEC DLV -zoink.name.example.com. 3600 IN RRSIG NSEC 3 4 3600 20070926134150 20070829134150 2854 example.com. AHipxvshRHglCEN4nZCT4m/4RIj8TrCOE2AsqEoH9e+6OYSo+yuNzzo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC frump.aqua.example.com. SOA NS RRSIG NSEC DNSKEY -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AAscY9DfNm3Uy8f8Q4WX6AzR0flHYNSr3fKfgQ0Xc20fzj1lGP9ebfk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 300 - ADDRESS 1.2.3.5 -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 10 IN A 10.20.30.40 -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 10 IN A 10.20.30.40 -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END - -STEP 150 TIME_PASSES ELAPSE 30 - -; no more DLV authority reachable -STEP 200 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -STEP 210 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 10 IN A 10.20.30.40 -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END - -STEP 220 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -net. IN NS -ENTRY_END - -STEP 230 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_keyretry.rpl b/testdata/dlv_keyretry.rpl deleted file mode 100644 index 8d477b5a5..000000000 --- a/testdata/dlv_keyretry.rpl +++ /dev/null @@ -1,287 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV anchor and subsequently key retries -; positive response for DLV. But the DNSKEY for the target fails validation. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -; expired signature -example.net. 3600 IN RRSIG DNSKEY 5 2 3600 20050926134150 20050829134150 30899 example.net. ydM0/eWMqFn4RxMTbscdSLU7bJNoPuzjCa0eI7HSV/r/54slSGvkl0fmwqrROl1tpc0YMV6kAzgB1T5lJbvdsA== ;{id = 30899} -; good signature: -;example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; AAAA for nameserver (for dnssec retry) query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -ns.example.net. IN AAAA -SECTION AUTHORITY -example.net. IN SOA . . 2007091300 28800 7200 604800 3600 -example.net. 3600 IN RRSIG SOA 5 2 3600 20070926134150 20070829134150 30899 example.net. MrpP4svNpbN/YKhuYRlNbvNg0yVxn4ywW1tyEFA9v6F7BR6k1pP8iPfN5XV+XWPAmbss9h3fwKq8zNs4F/SPkg== ;{id = 30899} -ns.example.net. IN NSEC ppp.example.net. A RRSIG NSEC -ns.example.net. 3600 IN RRSIG NSEC 5 3 3600 20070926134150 20070829134150 30899 example.net. freWP6rXWsU5iyRE2gIM9rICuBxCYlQSW01GkLPez5czqtEL0hHN8vtjTlfoNxjJjiZj3vAavZDIQGgOOOMIsA== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO SERVFAIL -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_negnx.rpl b/testdata/dlv_negnx.rpl deleted file mode 100644 index 03edf1a47..000000000 --- a/testdata/dlv_negnx.rpl +++ /dev/null @@ -1,405 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV anchor for negcache nxdomain proof -; put a DLV in the negcache. -; then test ask-higher with that in the cache. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; under example.net in DLV -ENTRY_BEGIN -MATCH opcode qtype subdomain -ADJUST copy_id copy_query -REPLY QR NXDOMAIN -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.net.example.com. 3600 IN NSEC fru.net.example.com. RRSIG NSEC DLV -example.net.example.com. 3600 IN RRSIG NSEC 3 4 3600 20070926134150 20070829134150 2854 example.com. AI6NNKt4dGcAdCrW73GYwyoqelsdj1dd8mBNPpHRQIL0yp7yYFZ7kXU= ;{id = 2854} -example.com. IN SOA . . 1 2 3 4 5 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AIkRPbv+kZaiG61pH/wQy8fX2UqQS5YRwHaxe4yjEUXk59fgO71Db3s= ;{id = 2854} -SECTION ADDITIONAL -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -; have it flushed out of the cache quickly. -example.net. 0 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 0 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; subzone -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -sub1.example.net. IN A -SECTION ANSWER -SECTION AUTHORITY -sub1.example.net. 3600 IN DS 30899 5 1 8916603e54c6f7edcfd885602e3b7b8dc475ba5c ; xodec-komif-vehis-kotav-tefot-mecyk-biryf-rivym-ticol-huvyh-saxox -sub1.example.net. 3600 IN RRSIG DS 5 3 3600 20070926134150 20070829134150 30899 example.net. A3vVrEY3+oIUqdbAa3tkKaU3o47eBD01hVXfAEAue1M+Uci2PA5YyiulLzStyiP75XUXkvubLQ2+ltKMTtfdag== ;{id = 30899} -sub1.example.net. IN NS ns.sub1.example.net. -SECTION ADDITIONAL -ns.sub1.example.net. IN A 1.2.3.10 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -sub2.example.net. IN A -SECTION ANSWER -SECTION AUTHORITY -sub2.example.net. 3600 IN DS 30899 5 1 627f7a51f1545133fec3ecbd19b85b92b15679c9 ; ximil-zovah-casuh-gygef-fyzas-farir-tikir-mukon-disih-kavus-nyxex -sub2.example.net. 3600 IN RRSIG DS 5 3 3600 20070926134150 20070829134150 30899 example.net. azMXKt4VPHj2hk5MDU6h8E/HOtNnHnIVS6Le3BV43wtJcHG5wlCxOksOZBOpXMkpbWLvbCJOOMPOnh31nlbjgg== ;{id = 30899} -sub2.example.net. IN NS ns.sub2.example.net. -SECTION ADDITIONAL -ns.sub2.example.net. IN A 1.2.3.12 -ENTRY_END -RANGE_END - -; sub1.example.net. -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.10 -; DNSKEY query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -sub1.example.net. IN DNSKEY -SECTION ANSWER -sub1.example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -sub1.example.net. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub1.example.net. E200eTdRnkL7/fk54i1nXEE9a/rC2GxZfVkWMU044tpwV6d4XRxVhlFBzY4FytbRFFBUDhz7L3B0qC6BXJM8rg== ;{id = 30899} -ENTRY_END - -; www query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.sub1.example.net. IN A -SECTION ANSWER -www.sub1.example.net. IN A 192.168.1.1 -www.sub1.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub1.example.net. JKxcjPjc/TsQmUmCYHLQa3cBk1c+SbDPtVml69nDWC167NNWG8OLjLrLtUBVCfbTzCmqOWXq2qhrGPxjO65GCQ== ;{id = 30899} -ENTRY_END - -RANGE_END - -; sub2.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.12 -; DNSKEY query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -sub2.example.net. IN DNSKEY -SECTION ANSWER -sub2.example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -sub2.example.net. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub2.example.net. VcNaPuz9Mmjj5ofZqOa4FsixBomFJTjd/9wxhZOVdxf1LsNR5L++8k09gQvnjtCvqSPfNer/uv0xl+9sRr8Wmw== ;{id = 30899} -ENTRY_END - -; www query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.sub2.example.net. IN A -SECTION ANSWER -www.sub2.example.net. IN A 192.168.1.12 -www.sub2.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub2.example.net. PsWY6+5/0+hsTOhNak/jdSeG44hvHgX5az1Q5XY/YkIchsflH9rmvP1EruFhflNhRR+22M7POiljYOoD5ylQXQ== ;{id = 30899} -ENTRY_END - -RANGE_END - - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.sub1.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.sub1.example.net. IN A -SECTION ANSWER -www.sub1.example.net. IN A 192.168.1.1 -www.sub1.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub1.example.net. JKxcjPjc/TsQmUmCYHLQa3cBk1c+SbDPtVml69nDWC167NNWG8OLjLrLtUBVCfbTzCmqOWXq2qhrGPxjO65GCQ== ;{id = 30899} -SECTION AUTHORITY -SECTION ADDITIONAL -ENTRY_END - -; have example.net DNSKEY time out -STEP 14 TIME_PASSES ELAPSE 1.0 - -STEP 20 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.sub2.example.net. IN A -ENTRY_END - -STEP 30 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.sub2.example.net. IN A -SECTION ANSWER -www.sub2.example.net. IN A 192.168.1.12 -www.sub2.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub2.example.net. PsWY6+5/0+hsTOhNak/jdSeG44hvHgX5az1Q5XY/YkIchsflH9rmvP1EruFhflNhRR+22M7POiljYOoD5ylQXQ== ;{id = 30899} -SECTION AUTHORITY -SECTION ADDITIONAL -ENTRY_END - - -SCENARIO_END diff --git a/testdata/dlv_optout.rpl b/testdata/dlv_optout.rpl deleted file mode 100644 index e5a8fdd62..000000000 --- a/testdata/dlv_optout.rpl +++ /dev/null @@ -1,440 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - trust-anchor: "example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator, DLV to zone below optout, check negative cache. -; DLV example.com. -; trust anchor at example.net but no secure delegation to -; sub.example.net signed with DLV but not by parent. -; parent uses optout NSEC3. -; then a signed delegation to down.sub.example.net. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -sub.example.net.example.com. IN DLV -SECTION ANSWER -sub.example.net.example.com. 3600 IN DLV 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox -sub.example.net.example.com. 3600 IN RRSIG DLV 3 5 3600 20070926135752 20070829135752 2854 example.com. AAdhy87nuDEaxmc+k9pJHYnhKiEYL++OLPxzOdwEQOtsHi7jeD3lRDU= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -down.sub.example.net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -sub.example.net.example.com. IN NSEC zzz.example.net.example.com. RRSIG NSEC DLV -sub.example.net.example.com. 3600 IN RRSIG NSEC 3 5 3600 20070926134150 20070829134150 2854 example.com. AG/M+H/lex1CMTIuO+JpdmTjCzt7XBsLtRLPDfYTykhxnnECzZwkMnQ= ;{id = 2854} -SECTION ADDITIONAL -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC sub.example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. ALITtZY03PDWnuAeEL/5VwMIXY3iC2y7Qkeq5DgAHmPbNyWiOmJNEKg= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC sub.example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. ALITtZY03PDWnuAeEL/5VwMIXY3iC2y7Qkeq5DgAHmPbNyWiOmJNEKg= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; no DS to sub.example.net, optout NSEC3. -; NSEC3PARAM 1 1 31 DE15C001 -; example.net. -> hk4jq0lg6q3bt992urc88dqten1k2be8. -; sub.example.net. -> ecs17hqd0kf7dk9g1cjvevj25pginrf2. -; *.example.net. -> 1tgbedpeeuubbsejh2dqvso62f8n4dk1. -; down.sub.example.net. -> 9j1r8re9b1238vd907tilclgat1i0fre. -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -sub.example.net. IN DS -SECTION ANSWER -SECTION AUTHORITY -example.net. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.net. 3600 IN RRSIG SOA 5 2 3600 20070926134150 20070829134150 30899 example.net. ELVULZHTRc0Qk06rSBRnB/T6sm1+AbAtdEJHN6PCsz2Z3s3E5A8NH7Krz0VzRaYIEUStnbAtuE3oP8XHWHBnyQ== ;{id = 30899} -; CE is example.net -hk4jq0lg6q3bt992urc88dqten1k2be8.example.net. IN NSEC3 1 1 31 DE15C001 hl4jq0lg6q3bt992urc88dqten1k2be8 NS SOA NAPTR RRSIG DNSKEY NSEC3PARAM -hk4jq0lg6q3bt992urc88dqten1k2be8.example.net. 3600 IN RRSIG NSEC3 5 3 3600 20070926134150 20070829134150 30899 example.net. n1dQKbRoB+X4K003RAhdUp6ZUP5dCiwQi+apGfLII8wmCUmw/cKiz7/Ijhs/+88hZwq/7yhlZM0D/yqAUKUiAA== ;{id = 30899} -; NC covers sub.example.net -ebs17hqd0kf7dk9g1cjvevj25pginrf2.example.net. IN NSEC3 1 1 31 de15c001 efs17hqd0kf7dk9g1cjvevj25pginrf2 A RRSIG -ebs17hqd0kf7dk9g1cjvevj25pginrf2.example.net. 3600 IN RRSIG NSEC3 5 3 3600 20070926134150 20070829134150 30899 example.net. oSVB7Dyp7/yaOlT8AFwBJZdqwRRSQ8XFzCpu1AP51JPIuhCg5byepdvY6UC3xXc7YVO6h74tpxFCGqLpRXwDoQ== ;{id = 30899} -SECTION ADDITIONAL -ENTRY_END - -; delegation to sub.example.net, optout NSEC3. -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -sub.example.net. IN NS -SECTION ANSWER -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -hk4jq0lg6q3bt992urc88dqten1k2be8.example.net. IN NSEC3 1 1 31 DE15C001 hl4jq0lg6q3bt992urc88dqten1k2be8 NS SOA NAPTR RRSIG DNSKEY NSEC3PARAM -hk4jq0lg6q3bt992urc88dqten1k2be8.example.net. 3600 IN RRSIG NSEC3 5 3 3600 20070926134150 20070829134150 30899 example.net. n1dQKbRoB+X4K003RAhdUp6ZUP5dCiwQi+apGfLII8wmCUmw/cKiz7/Ijhs/+88hZwq/7yhlZM0D/yqAUKUiAA== ;{id = 30899} -ebs17hqd0kf7dk9g1cjvevj25pginrf2.example.net. IN NSEC3 1 1 31 de15c001 efs17hqd0kf7dk9g1cjvevj25pginrf2 A RRSIG -ebs17hqd0kf7dk9g1cjvevj25pginrf2.example.net. 3600 IN RRSIG NSEC3 5 3 3600 20070926134150 20070829134150 30899 example.net. oSVB7Dyp7/yaOlT8AFwBJZdqwRRSQ8XFzCpu1AP51JPIuhCg5byepdvY6UC3xXc7YVO6h74tpxFCGqLpRXwDoQ== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ENTRY_END - - -RANGE_END - -; ns.sub.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.6 -; DS is -; sub.example.net. 3600 IN DS 30899 5 1 36b39460f94a807cbbbf3b31cc9db955081b2b36 ; xetir-fahok-bovug-pebyl-sovur-zyvaf-cufan-tivih-hadec-rypof-kixox -; DNSKEY query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -sub.example.net. IN DNSKEY -SECTION ANSWER -sub.example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -sub.example.net. 3600 IN RRSIG DNSKEY 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. PATh0K1jz9QeN02C79noX9gwK+Nr5VznWPQwygm/pYDsOb0z3EsaiOrzyoreegDKgoNn3kN0CywS+usCWM6hrw== ;{id = 30899} -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -sub.example.net. IN NS -SECTION ANSWER -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -; www.sub.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -www.sub.example.net. IN A -SECTION ANSWER -www.sub.example.net. IN A 10.20.30.40 -www.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. Q+88AIM3K8q6S0bHeFVT742EepZFxOxgtaL1V68DEkP4NePKzL4zttWQD3uI/5ALw/fIrC7G43Eo+epWn2ZGCA== ;{id = 30899} -SECTION AUTHORITY -sub.example.net. IN NS ns.sub.example.net. -sub.example.net. 3600 IN RRSIG NS 5 3 3600 20070926134150 20070829134150 30899 sub.example.net. JZUK303aE7R428S5XXLaowpM79YSc2g7wy2rDOH+6Ts2UefZInv6X5cjJU4+qBrS8i9XhdllqG7SEnPKZ0GtAw== ;{id = 30899} -SECTION ADDITIONAL -ns.sub.example.net. IN A 1.2.3.6 -ns.sub.example.net. 3600 IN RRSIG A 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AluXPa4XdlCysQMVrt0YairoOug4GMvy8rNUeKLCfQ5xVqRMqkTisbzJXBQPgYEVA0DJR74eEpgLrcz5ztb1aA== ;{id = 30899} -ENTRY_END - -; DS for down.sub.example.net -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -down.sub.example.net. IN DS -SECTION ANSWER -down.sub.example.net. 3600 IN DS 60946 5 1 c636304ab7cdb6272215aceac95a8d312ac7a4f6 -down.sub.example.net. 3600 IN RRSIG DS 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AMc8J534UF2+0PtPSNBw6RzN4Q5gXfnBXiUfpuT/MR1YtOE/5AP/0dTgvqvKRiFZx3NjOPeZmRnaabxkw0Qzrw== ;{id = 30899} -SECTION AUTHORITY -SECTION ADDITIONAL -ENTRY_END - -; delegation to down.sub.example.net -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -down.sub.example.net. IN NS -SECTION ANSWER -SECTION AUTHORITY -down.sub.example.net. IN NS ns.down.sub.example.net. -; the DS record is not given (like it was parent and child hosted on the same -; server) -;down.sub.example.net. 3600 IN DS 60946 5 1 c636304ab7cdb6272215aceac95a8d312ac7a4f6 -;down.sub.example.net. 3600 IN RRSIG DS 5 4 3600 20070926134150 20070829134150 30899 sub.example.net. AMc8J534UF2+0PtPSNBw6RzN4Q5gXfnBXiUfpuT/MR1YtOE/5AP/0dTgvqvKRiFZx3NjOPeZmRnaabxkw0Qzrw== ;{id = 30899} -SECTION ADDITIONAL -ns.down.sub.example.net. IN A 1.2.3.7 -ENTRY_END - -RANGE_END - -; ns.down.sub.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.7 -; DNSKEY query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -down.sub.example.net. IN DNSKEY -SECTION ANSWER -down.sub.example.net. 3600 IN DNSKEY 257 3 5 AwEAAeiaUiUIpWMfYz5L0sfJTZWnuN9IyBX4em9VjsoqQTsOD1HDQpNb4buvJo7pN2aBCxNS7e0OL8e2mVB6CLZ+8ek= ;{id = 60946 (ksk), size = 512b} -down.sub.example.net. 3600 IN RRSIG DNSKEY 5 4 3600 20070926134150 20070829134150 60946 down.sub.example.net. lK5HNva/IPw0CS9BfBd16fqm5y9bgCSwGsBLBAA1d5SCcKep6AVrv6NFuXl12d1G3MdQ4ruHi6eDDO5dhtkfrw== ;{id = 60946} -SECTION AUTHORITY -SECTION ADDITIONAL -ENTRY_END - -; www.down.sub.example.net. -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR AA NOERROR -SECTION QUESTION -www.down.sub.example.net. IN A -SECTION ANSWER -www.down.sub.example.net. IN A 10.20.30.44 -www.down.sub.example.net. 3600 IN RRSIG A 5 5 3600 20070926134150 20070829134150 60946 down.sub.example.net. Hg5WF/xW8PRth2rl1mZcYK8/pgGpM73e/fD+mH/XElEKgL9zq0ou8psA0I6OvMLGBN6RQeknQHRAy3D2/5k/Wg== ;{id = 60946} -SECTION AUTHORITY -SECTION ADDITIONAL -ENTRY_END - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.down.sub.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.down.sub.example.net. IN A -SECTION ANSWER -www.down.sub.example.net. IN A 10.20.30.44 -www.down.sub.example.net. 3600 IN RRSIG A 5 5 3600 20070926134150 20070829134150 60946 down.sub.example.net. Hg5WF/xW8PRth2rl1mZcYK8/pgGpM73e/fD+mH/XElEKgL9zq0ou8psA0I6OvMLGBN6RQeknQHRAy3D2/5k/Wg== ;{id = 60946} -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_remove.rpl b/testdata/dlv_remove.rpl deleted file mode 100644 index d503148c7..000000000 --- a/testdata/dlv_remove.rpl +++ /dev/null @@ -1,198 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - fake-sha1: yes - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV anchor but DLV domain is down -; so DLV has been decommissioned. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 - -ENTRY_BEGIN -MATCH opcode -ADJUST copy_id copy_query -REPLY QR SERVFAIL -SECTION QUESTION -example.com. IN NS -ENTRY_END -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO SERVFAIL -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_remove_empty.rpl b/testdata/dlv_remove_empty.rpl deleted file mode 100644 index 11b825bc2..000000000 --- a/testdata/dlv_remove_empty.rpl +++ /dev/null @@ -1,272 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - fake-sha1: yes - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV and DLV repository is empty. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query, everything is NXDOMAIN -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR AA NXDOMAIN -SECTION QUESTION -example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. 3600 IN NSEC example.com. NS SOA RRSIG NSEC DNSKEY -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AH++lP1qhsBw6zO1g3JVPZeQIpDhL9xT8V9xdgjXvCjIGQ1BUUlfQkA= -SECTION ADDITIONAL -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_remove_nodel.rpl b/testdata/dlv_remove_nodel.rpl deleted file mode 100644 index 1abe5a32f..000000000 --- a/testdata/dlv_remove_nodel.rpl +++ /dev/null @@ -1,276 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "dlv.example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - fake-sha1: yes - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV and DLV is removed and not delegated -; so the response is that the dlv domain itself does not exist, but it's -; parent domain does exist (securely). - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query, everything is NXDOMAIN -; thus, no delegation to the dlv repository in dlv.example.com -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR AA NXDOMAIN -SECTION QUESTION -example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. 3600 IN NSEC example.com. NS SOA RRSIG NSEC DNSKEY -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AH++lP1qhsBw6zO1g3JVPZeQIpDhL9xT8V9xdgjXvCjIGQ1BUUlfQkA= -SECTION ADDITIONAL -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_remove_pos.rpl b/testdata/dlv_remove_pos.rpl deleted file mode 100644 index 892ffa3c0..000000000 --- a/testdata/dlv_remove_pos.rpl +++ /dev/null @@ -1,167 +0,0 @@ -; config options -; The island of trust is at example.com -server: - dlv-anchor: "dlv.example.net. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - trust-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with DLV removed for positive anchored response -; So the destination has a valid DNSSEC chain of trust to the root, -; but the configured dlv anchor fails. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -; this covers dlv.example.net and thus makes it servfail (unusable). -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR SERVFAIL -SECTION QUESTION -net. IN NS -ENTRY_END - -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to query of interest -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.com. IN A -SECTION ANSWER -www.example.com. IN A 10.20.30.40 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} -ENTRY_END -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.com. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.example.com. IN A -SECTION ANSWER -www.example.com. IN A 10.20.30.40 -www.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFC99iE9K5y2WNgI0gFvBWaTi9wm6AhUAoUqOpDtG5Zct+Qr9F3mSdnbc6V4= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCQMyTjn7WWwpwAR1LlVeLpRgZGuQIUCcJDEkwAuzytTDRlYK7nIMwH1CM= ;{id = 2854} -ENTRY_END - -SCENARIO_END diff --git a/testdata/dlv_unused.rpl b/testdata/dlv_unused.rpl deleted file mode 100644 index aa7d04c1e..000000000 --- a/testdata/dlv_unused.rpl +++ /dev/null @@ -1,277 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - trust-anchor: "example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator, DLV anchor unused because trustanchor works. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC zazz.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926135752 20070829135752 2854 example.com. AAi21jQpno6gXnrPrtK0NvNgX9B8E9U5RvTd47QiCWLF7KdtKxB7Xz0= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/testdata/domain_insec_dlv.rpl b/testdata/domain_insec_dlv.rpl deleted file mode 100644 index c8bd98344..000000000 --- a/testdata/domain_insec_dlv.rpl +++ /dev/null @@ -1,277 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - domain-insecure: "example.net" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with domain-insecure below a DLV -; positive response for DLV. - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/testdata/fwddlv_parse.rpl b/testdata/fwddlv_parse.rpl deleted file mode 100644 index 8b8a9613f..000000000 --- a/testdata/fwddlv_parse.rpl +++ /dev/null @@ -1,134 +0,0 @@ -; config options -; The island of trust is at example.com -server: - trust-anchor: "dlv.isc.org. 5072 IN DNSKEY 256 3 5 BEAAAAOlYGw53D+f01yCL5JsP0SB6EjYrnd0JYRBooAaGPT+Q0kpiN+7GviFh+nIazoB8e2Yv7mupgqkmIjObdcbGstYpUltdECdNpNmBvASKB9SBdtGeRvXXpORi3Qyxb9kHGG7SpzyYbc+KDVKnzYHB94pvqu3ZZpPFPBFtCibp/mkhw==" - val-override-date: "20090617133009" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test parse of packet when forwarding and dlv are in use - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -org. IN NS -SECTION AUTHORITY -org. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. (for ORG) -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -org. IN NS -SECTION ANSWER -org. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -dlv.isc.org. IN NS -SECTION AUTHORITY -dlv.isc.org. IN NS ns.org. -SECTION ADDITIONAL -ns.org. IN A 1.2.3.4 -ENTRY_END -RANGE_END - -; ns.org for dlv.isc.org -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -dlv.isc.org. IN DNSKEY -SECTION ANSWER -dlv.isc.org. 5072 IN DNSKEY 256 3 5 BEAAAAOlYGw53D+f01yCL5JsP0SB6EjYrnd0JYRBooAaGPT+Q0kpiN+7GviFh+nIazoB8e2Yv7mupgqkmIjObdcbGstYpUltdECdNpNmBvASKB9SBdtGeRvXXpORi3Qyxb9kHGG7SpzyYbc+KDVKnzYHB94pvqu3ZZpPFPBFtCibp/mkhw== ;{id = 64263 (zsk), size = 1024b} -dlv.isc.org. 5072 IN DNSKEY 257 3 5 BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URkY62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboMQKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VStTDN0YUuWrBNh ;{id = 19297 (ksk), size = 2048b} -dlv.isc.org. 5072 IN RRSIG DNSKEY 5 3 7200 20090717133009 20090617133009 19297 dlv.isc.org. iqGOzsIQKFHcPLbJHLb/kNzcm7TlHiyT4kzTknCjKsC7DCB86YCOhnZZjvZQyA+D0N0KDgNWY8v5czbyX57qR6qORciT2zmPSTGj7CIOe4zrq60n8HzsChKgvk+RSYQrzf6vRfnZhce6Y1waXQd4wh1buPAUw/l46Ovt74ALXzcWSgfMNyx6PBz7rbusuePKeSv0GZL9+M2qhXKe9LJmnzD9uCwnbV/Y5yu+xLfxLdm9q4IKp6Rn50CeHYKf3tO2jI9dkWqFR94XHSTNGfhC02i5UsfP1HRPnk49bX7OMstuuCq9zMX+qTt602MVFYdTSHTy/5+Yw5DvOA9JgOqO4w== ;{id = 19297} -dlv.isc.org. 5072 IN RRSIG DNSKEY 5 3 7200 20090717133009 20090617133009 64263 dlv.isc.org. W1KX1PagXsaWWmxkaOfnLetnw1hhSw7ym91S4rSu14QfFbYi5iN9ZkSuKa21M7Do52S9om/2hDllMF7EFfnv9l4e4/rMOc59vKGVojpHOvZyRVhIiMyh1H9NfLTYUovORRvKO0Cnp65gBXspVf1WhzoY3pC1NZ+5pscPWLeD1rw= ;{id = 64263} -ENTRY_END - -; response to query of interest -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -www.example.com.dlv.isc.org. IN DLV -SECTION ANSWER -SECTION AUTHORITY -dlv.isc.org. 2776 IN SOA ns-int.isc.org. hostmaster.isc.org. 2009061702 7200 3600 2419200 3600 -dlv.isc.org. 2776 IN RRSIG SOA 5 3 3600 20090717133009 20090617133009 64263 dlv.isc.org. S5iTFqF8k9XWoGq4Wajo1GQF6Oc1e5lI1kGFWyaKf3oM2asbzCbVk2aZLtyDCGjYA4euZWXD0q2vol7/1cPB5Ds4SteCuo5Jkpa/mw7mPAcbNu8mYexq1RaodVCbWrW8KSxEyVd8X5mZx2OBaSyK8zns/W5I3ZPNNLf4Kz6Zpo0= ;{id = 64263} -seatex.com.cn.dlv.isc.org. 2776 IN RRSIG NSEC 5 6 3600 20090717133009 20090617133009 64263 dlv.isc.org. Rxv7gVdu8rpWbJ3fJm7cY66IKV+C94I4/HYiDQke1m2P7hXo5bpDBBShKpIvME34ANN8Lb0cZQK9XT7NYpWjE5rjW7CaMiVjiR6U1LyDGQyK4X3wdkbv3aJcHLSg7sWsxyZXj5iVUxkU5JO3JBjo412oKQ3bh+RGi1BxTIIq09g= ;{id = 64263} -seatex.com.cn.dlv.isc.org. 2776 IN NSEC absolight.com.dlv.isc.org. RRSIG NSEC DLV -ericgermann.com.dlv.isc.org. 2776 IN RRSIG NSEC 5 5 3600 20090717133009 20090617133009 64263 dlv.isc.org. OEUizWAXsWFBzt4rN5+AUTaND8phZc4ezux06LA/Ua5N/B/LQQ1cb42eEqCQHwnGK8BsRhbsRiVywPNgnnPlL1Gy8n25gi+0qWOpA27fOwZJbO3n944gKvPDWZoDeCbdJr6AQG5Z9/Ka0ERRtHC6uI2Xn6KCQPjgTEihqhoayYg= ;{id = 64263} -ericgermann.com.dlv.isc.org. 2776 IN NSEC fayengineering.com.dlv.isc.org. RRSIG NSEC DLV -SECTION ADDITIONAL -ENTRY_END -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.com.dlv.isc.org. IN DLV -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA AD DO NXDOMAIN -SECTION QUESTION -www.example.com.dlv.isc.org. IN DLV -SECTION ANSWER -SECTION AUTHORITY -dlv.isc.org. 2776 IN SOA ns-int.isc.org. hostmaster.isc.org. 2009061702 7200 3600 2419200 3600 -dlv.isc.org. 2776 IN RRSIG SOA 5 3 3600 20090717133009 20090617133009 64263 dlv.isc.org. S5iTFqF8k9XWoGq4Wajo1GQF6Oc1e5lI1kGFWyaKf3oM2asbzCbVk2aZLtyDCGjYA4euZWXD0q2vol7/1cPB5Ds4SteCuo5Jkpa/mw7mPAcbNu8mYexq1RaodVCbWrW8KSxEyVd8X5mZx2OBaSyK8zns/W5I3ZPNNLf4Kz6Zpo0= ;{id = 64263} -seatex.com.cn.dlv.isc.org. 2776 IN NSEC absolight.com.dlv.isc.org. RRSIG NSEC DLV -seatex.com.cn.dlv.isc.org. 2776 IN RRSIG NSEC 5 6 3600 20090717133009 20090617133009 64263 dlv.isc.org. Rxv7gVdu8rpWbJ3fJm7cY66IKV+C94I4/HYiDQke1m2P7hXo5bpDBBShKpIvME34ANN8Lb0cZQK9XT7NYpWjE5rjW7CaMiVjiR6U1LyDGQyK4X3wdkbv3aJcHLSg7sWsxyZXj5iVUxkU5JO3JBjo412oKQ3bh+RGi1BxTIIq09g= ;{id = 64263} -ericgermann.com.dlv.isc.org. 2776 IN NSEC fayengineering.com.dlv.isc.org. RRSIG NSEC DLV -ericgermann.com.dlv.isc.org. 2776 IN RRSIG NSEC 5 5 3600 20090717133009 20090617133009 64263 dlv.isc.org. OEUizWAXsWFBzt4rN5+AUTaND8phZc4ezux06LA/Ua5N/B/LQQ1cb42eEqCQHwnGK8BsRhbsRiVywPNgnnPlL1Gy8n25gi+0qWOpA27fOwZJbO3n944gKvPDWZoDeCbdJr6AQG5Z9/Ka0ERRtHC6uI2Xn6KCQPjgTEihqhoayYg= ;{id = 64263} -ENTRY_END - -SCENARIO_END diff --git a/testdata/val_unalgo_dlv.rpl b/testdata/val_unalgo_dlv.rpl deleted file mode 100644 index 142beae8d..000000000 --- a/testdata/val_unalgo_dlv.rpl +++ /dev/null @@ -1,284 +0,0 @@ -; config options -; The island of trust is at example.com (the DLV repository) -server: - dlv-anchor: "example.com. 3600 IN DS 2854 3 1 46e4ffc6e9a4793b488954bd3f0cc6af0dfb201b" - val-override-date: "20070916134226" - target-fetch-policy: "0 0 0 0 0" - qname-minimisation: "no" - fake-sha1: yes - trust-anchor-signaling: no - minimal-responses: no - -stub-zone: - name: "." - stub-addr: 193.0.14.129 # K.ROOT-SERVERS.NET. -CONFIG_END - -SCENARIO_BEGIN Test validator with unknown algorithm DLV anchor -; positive response for DLV. -; but only has unknown algos -; have to treat zone as insecure - -; K.ROOT-SERVERS.NET. -RANGE_BEGIN 0 100 - ADDRESS 193.0.14.129 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -. IN NS -SECTION ANSWER -. IN NS K.ROOT-SERVERS.NET. -SECTION ADDITIONAL -K.ROOT-SERVERS.NET. IN A 193.0.14.129 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -com. IN A -SECTION AUTHORITY -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -net. IN A -SECTION AUTHORITY -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END -RANGE_END - -; a.gtld-servers.net. -RANGE_BEGIN 0 100 - ADDRESS 192.5.6.30 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -com. IN NS -SECTION ANSWER -com. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net. IN NS -SECTION ANSWER -net. IN NS a.gtld-servers.net. -SECTION ADDITIONAL -a.gtld-servers.net. IN A 192.5.6.30 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.com. IN A -SECTION AUTHORITY -example.com. IN NS ns.example.com. -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ENTRY_END - -ENTRY_BEGIN -MATCH opcode subdomain -ADJUST copy_id copy_query -REPLY QR NOERROR -SECTION QUESTION -example.net. IN A -SECTION AUTHORITY -example.net. IN NS ns.example.net. -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ENTRY_END -RANGE_END - -; ns.example.com. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.4 -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN NS -SECTION ANSWER -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; response to DNSKEY priming query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.com. IN DNSKEY -SECTION ANSWER -example.com. 3600 IN DNSKEY 256 3 3 ALXLUsWqUrY3JYER3T4TBJII s70j+sDS/UT2QRp61SE7S3E EXopNXoFE73JLRmvpi/UrOO/Vz4Se 6wXv/CYCKjGw06U4WRgR YXcpEhJROyNapmdIKSx hOzfLVE1gqA0PweZR8d tY3aNQSRn3sPpwJr6Mi /PqQKAMMrZ9ckJpf1+b QMOOvxgzz2U1GS18b3y ZKcgTMEaJzd/GZYzi/B N2DzQ0MsrSwYXfsNLFO Bbs8PJMW4LYIxeeOe6rUgkWOF 7CC9Dh/dduQ1QrsJhmZAEFfd6ByYV+ ;{id = 2854 (zsk), size = 1688b} -example.com. 3600 IN RRSIG DNSKEY 3 2 3600 20070926134802 20070829134802 2854 example.com. MCwCFG1yhRNtTEa3Eno2zhVVuy2EJX3wAhQeLyUp6+UXcpC5qGNu9tkrTEgPUg== ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -; DLV query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net.example.com. IN DLV -SECTION ANSWER -; algo 208 is unknown -example.net.example.com. 3600 IN DLV 30899 208 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. AFBU1dN/KstcLfQQzy7ZKvPq+2hQg7D6QynqgwI3f8envPQGj782/NA= ;{id = 2854} -;example.net.example.com. 3600 IN DLV 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -;example.net.example.com. 3600 IN RRSIG DLV 3 4 3600 20070926134150 20070829134150 2854 example.com. ACK48Q/oKwh/SM9yRiKjZYuc+AtEZ2yCPNJ15kKCN8nsVcv7xigmNTY= ;{id = 2854} -SECTION AUTHORITY -example.com. IN NS ns.example.com. -example.com. 3600 IN RRSIG NS 3 2 3600 20070926134150 20070829134150 2854 example.com. MC0CFQCN+qHdJxoI/2tNKwsb08pra/G7aAIUAWA5sDdJTbrXA1/3OaesGBAO3sI= ;{id = 2854} -SECTION ADDITIONAL -ns.example.com. IN A 1.2.3.4 -ns.example.com. 3600 IN RRSIG A 3 3 3600 20070926135752 20070829135752 2854 example.com. MC0CFQCMSWxVehgOQLoYclB9PIAbNP229AIUeH0vNNGJhjnZiqgIOKvs1EhzqAo= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -net.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NXDOMAIN -SECTION QUESTION -com.example.com. IN DLV -SECTION ANSWER -SECTION AUTHORITY -example.com. IN SOA open.nlnetlabs.nl. hostmaster.nlnetlabs.nl. 2008081300 28800 7200 604800 3600 -example.com. 3600 IN RRSIG SOA 3 2 3600 20070926134150 20070829134150 2854 example.com. AKPJnPBqfJKxE4P2iVYkSRJno9HmiXJZtjdqE8oBeq9Lk9FytcMdcig= ;{id = 2854} -example.com IN NSEC example.net.example.com. SOA NS RRSIG NSEC -example.com. 3600 IN RRSIG NSEC 3 2 3600 20070926134150 20070829134150 2854 example.com. AIoUkJ04/7/kJFDLocoqksqt9UL2RHHwlRfXAMxGdBHcNO+GSpG47Uk= ;{id = 2854} -ENTRY_END - -RANGE_END - -; ns.example.net. -RANGE_BEGIN 0 100 - ADDRESS 1.2.3.5 -; DS RR is -; example.net. 3600 IN DS 30899 5 1 14188c885f20623ad1d3bec42798f3f951793e4c ; xehac-mofum-malyd-bomaf-pegit-fuzes-ganin-misiz-nigel-nozog-soxix -; DNSKEY prime query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN DNSKEY -SECTION ANSWER -example.net. 3600 IN DNSKEY 256 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3 ;{id = 30899 (zsk), size = 512b} -example.net. 3600 IN RRSIG DNSKEY RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. hiFzlQ8VoYgCuvIsfVuxC3mfJDqsTh0yc6abs5xMx5uEcIjb0dndFQx7INOM+imlzveEN73Hqp4OLFpFhsWLlw== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; NS query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -example.net. IN NS -SECTION ANSWER -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -; www.example.net query -ENTRY_BEGIN -MATCH opcode qtype qname -ADJUST copy_id -REPLY QR NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - - -RANGE_END - -STEP 1 QUERY -ENTRY_BEGIN -REPLY RD DO -SECTION QUESTION -www.example.net. IN A -ENTRY_END - -; recursion happens here. -STEP 10 CHECK_ANSWER -ENTRY_BEGIN -MATCH all -REPLY QR RD RA DO NOERROR -SECTION QUESTION -www.example.net. IN A -SECTION ANSWER -www.example.net. 3600 IN A 10.20.30.40 -www.example.net. 3600 IN RRSIG A 5 3 3600 20070926135752 20070829135752 30899 example.net. ACvv4RQVC7TbI57ewqFImRaVoymktJ5Cxn/FaCodIENt82LVM92nivbP2WtwWCsQHWp7FkrMxTlQTJwyAeXFyg== ;{id = 30899} -SECTION AUTHORITY -example.net. IN NS ns.example.net. -example.net. 3600 IN RRSIG NS RSASHA1 2 3600 20070926134150 20070829134150 30899 example.net. E8JX0l4B+cSR5bkHQwOJy1pBmlLMTYCJ8EwfNMU/eCv0YhKwo26rHhn52FGisgv+Nwp7/NbhHqQ+kJgoZC94XA== ;{id = 30899} -SECTION ADDITIONAL -ns.example.net. IN A 1.2.3.5 -ns.example.net. 3600 IN RRSIG A RSASHA1 3 3600 20070926134150 20070829134150 30899 example.net. x+tQMC9FhzT7Fcy1pM5NrOC7E8nLd7THPI3C6ie4EwL8PrxllqlR3q/DKB0d/m0qCOPcgN6HFOYURV1s4uAcsw== ;{id = 30899} -ENTRY_END - -SCENARIO_END diff --git a/validator/validator.c b/validator/validator.c index c3ca0a27d..ab0698012 100644 --- a/validator/validator.c +++ b/validator/validator.c @@ -1603,7 +1603,6 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq, val_mark_insecure(vq->chase_reply, anchor->name, qstate->env->rrset_cache, qstate->env); lock_basic_unlock(&anchor->lock); - vq->dlv_checked=1; /* skip DLV check */ /* go to finished state to cache this result */ vq->state = VAL_FINISHED_STATE; return 1; @@ -1985,148 +1984,6 @@ processValidate(struct module_qstate* qstate, struct val_qstate* vq, return 1; } -/** - * Init DLV check. - * DLV is going to be decommissioned, but the code is still here for some time. - * - * Called when a query is determined by other trust anchors to be insecure - * (or indeterminate). Then we look if there is a key in the DLV. - * Performs aggressive negative cache check to see if there is no key. - * Otherwise, spawns a DLV query, and changes to the DLV wait state. - * - * @param qstate: query state. - * @param vq: validator query state. - * @param ve: validator shared global environment. - * @param id: module id. - * @return true if there is no DLV. - * false: processing is finished for the validator operate(). - * This function may exit in three ways: - * o no DLV (aggressive cache), so insecure. (true) - * o error - stop processing (false) - * o DLV lookup was started, stop processing (false) - */ -static int -val_dlv_init(struct module_qstate* qstate, struct val_qstate* vq, - struct val_env* ve, int id) -{ - uint8_t* nm; - size_t nm_len; - struct module_qstate* newq = NULL; - /* there must be a DLV configured */ - log_assert(qstate->env->anchors->dlv_anchor); - /* this bool is true to avoid looping in the DLV checks */ - log_assert(vq->dlv_checked); - - /* init the DLV lookup variables */ - vq->dlv_lookup_name = NULL; - vq->dlv_lookup_name_len = 0; - vq->dlv_insecure_at = NULL; - vq->dlv_insecure_at_len = 0; - - /* Determine the name for which we want to lookup DLV. - * This name is for the current message, or - * for the current RRset for CNAME, referral subtypes. - * If there is a signer, use that, otherwise the domain name */ - if(vq->signer_name) { - nm = vq->signer_name; - nm_len = vq->signer_len; - } else { - /* use qchase */ - nm = vq->qchase.qname; - nm_len = vq->qchase.qname_len; - if(vq->qchase.qtype == LDNS_RR_TYPE_DS) - dname_remove_label(&nm, &nm_len); - } - log_nametypeclass(VERB_ALGO, "DLV init look", nm, LDNS_RR_TYPE_DS, - vq->qchase.qclass); - log_assert(nm && nm_len); - /* sanity check: no DLV lookups below the DLV anchor itself. - * Like, an securely insecure delegation there makes no sense. */ - if(dname_subdomain_c(nm, qstate->env->anchors->dlv_anchor->name)) { - verbose(VERB_ALGO, "DLV lookup within DLV repository denied"); - return 1; - } - /* concat name (minus root label) + dlv name */ - vq->dlv_lookup_name_len = nm_len - 1 + - qstate->env->anchors->dlv_anchor->namelen; - vq->dlv_lookup_name = regional_alloc(qstate->region, - vq->dlv_lookup_name_len); - if(!vq->dlv_lookup_name) { - log_err("Out of memory preparing DLV lookup"); - return val_error(qstate, id); - } - memmove(vq->dlv_lookup_name, nm, nm_len-1); - memmove(vq->dlv_lookup_name+nm_len-1, - qstate->env->anchors->dlv_anchor->name, - qstate->env->anchors->dlv_anchor->namelen); - log_nametypeclass(VERB_ALGO, "DLV name", vq->dlv_lookup_name, - LDNS_RR_TYPE_DLV, vq->qchase.qclass); - - /* determine where the insecure point was determined, the DLV must - * be equal or below that to continue building the trust chain - * down. May be NULL if no trust chain was built yet */ - nm = NULL; - if(vq->key_entry && key_entry_isnull(vq->key_entry)) { - nm = vq->key_entry->name; - nm_len = vq->key_entry->namelen; - } - if(nm) { - vq->dlv_insecure_at_len = nm_len - 1 + - qstate->env->anchors->dlv_anchor->namelen; - vq->dlv_insecure_at = regional_alloc(qstate->region, - vq->dlv_insecure_at_len); - if(!vq->dlv_insecure_at) { - log_err("Out of memory preparing DLV lookup"); - return val_error(qstate, id); - } - memmove(vq->dlv_insecure_at, nm, nm_len-1); - memmove(vq->dlv_insecure_at+nm_len-1, - qstate->env->anchors->dlv_anchor->name, - qstate->env->anchors->dlv_anchor->namelen); - log_nametypeclass(VERB_ALGO, "insecure_at", - vq->dlv_insecure_at, 0, vq->qchase.qclass); - } - - /* If we can find the name in the aggressive negative cache, - * give up; insecure is the answer */ - while(val_neg_dlvlookup(ve->neg_cache, vq->dlv_lookup_name, - vq->dlv_lookup_name_len, vq->qchase.qclass, - qstate->env->rrset_cache, *qstate->env->now)) { - /* go up */ - dname_remove_label(&vq->dlv_lookup_name, - &vq->dlv_lookup_name_len); - /* too high? */ - if(!dname_subdomain_c(vq->dlv_lookup_name, - qstate->env->anchors->dlv_anchor->name)) { - verbose(VERB_ALGO, "ask above dlv repo"); - return 1; /* Above the repo is insecure */ - } - /* above chain of trust? */ - if(vq->dlv_insecure_at && !dname_subdomain_c( - vq->dlv_lookup_name, vq->dlv_insecure_at)) { - verbose(VERB_ALGO, "ask above insecure endpoint"); - return 1; - } - } - - /* perform a lookup for the DLV; with validation */ - vq->state = VAL_DLVLOOKUP_STATE; - if(!generate_request(qstate, id, vq->dlv_lookup_name, - vq->dlv_lookup_name_len, LDNS_RR_TYPE_DLV, - vq->qchase.qclass, 0, &newq, 0)) { - return val_error(qstate, id); - } - - /* Find the closest encloser DLV from the repository. - * then that is used to build another chain of trust - * This may first require a query 'too low' that has NSECs in - * the answer, from which we determine the closest encloser DLV. - * When determine the closest encloser, skip empty nonterminals, - * since we want a nonempty node in the DLV repository. */ - - return 0; -} - /** * The Finished state. The validation status (good or bad) has been determined. * @@ -2145,16 +2002,6 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, qstate->query_flags, &qstate->qinfo, &vq->qchase, vq->orig_msg->rep, vq->rrset_skip); - /* if the result is insecure or indeterminate and we have not - * checked the DLV yet, check the DLV */ - if((vq->chase_reply->security == sec_status_insecure || - vq->chase_reply->security == sec_status_indeterminate) && - qstate->env->anchors->dlv_anchor && !vq->dlv_checked) { - vq->dlv_checked = 1; - if(!val_dlv_init(qstate, vq, ve, id)) - return 0; - } - /* store overall validation result in orig_msg */ if(vq->rrset_skip == 0) vq->orig_msg->rep->security = vq->chase_reply->security; @@ -2177,7 +2024,6 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, /* and restart for this rrset */ verbose(VERB_ALGO, "validator: go to next rrset"); vq->chase_reply->security = sec_status_unchecked; - vq->dlv_checked = 0; /* can do DLV for this RR */ vq->state = VAL_INIT_STATE; return 1; } @@ -2195,7 +2041,6 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, log_query_info(VERB_ALGO, "validator: chased to", &vq->qchase); vq->chase_reply->security = sec_status_unchecked; - vq->dlv_checked = 0; /* can do DLV for this RR */ vq->state = VAL_INIT_STATE; return 1; } @@ -2321,119 +2166,6 @@ processFinished(struct module_qstate* qstate, struct val_qstate* vq, return 0; } -/** - * The DLVLookup state. Process DLV lookups. - * - * @param qstate: query state. - * @param vq: validator query state. - * @param ve: validator shared global environment. - * @param id: module id. - * @return true if the event should be processed further on return, false if - * not. - */ -static int -processDLVLookup(struct module_qstate* qstate, struct val_qstate* vq, - struct val_env* ve, int id) -{ - struct module_qstate* newq = NULL; - /* see if this we are ready to continue normal resolution */ - /* we may need more DLV lookups */ - if(vq->dlv_status==dlv_error) - verbose(VERB_ALGO, "DLV woke up with status dlv_error"); - else if(vq->dlv_status==dlv_success) - verbose(VERB_ALGO, "DLV woke up with status dlv_success"); - else if(vq->dlv_status==dlv_ask_higher) - verbose(VERB_ALGO, "DLV woke up with status dlv_ask_higher"); - else if(vq->dlv_status==dlv_there_is_no_dlv) - verbose(VERB_ALGO, "DLV woke up with status dlv_there_is_no_dlv"); - else verbose(VERB_ALGO, "DLV woke up with status unknown"); - - if(vq->dlv_status == dlv_error) { - verbose(VERB_QUERY, "failed DLV lookup"); - errinf(qstate, "failed DLV lookup"); - return val_error(qstate, id); - } else if(vq->dlv_status == dlv_success) { - uint8_t* nm; - size_t nmlen; - /* chain continues with DNSKEY, continue in FINDKEY */ - vq->state = VAL_FINDKEY_STATE; - - /* strip off the DLV suffix from the name; could result in . */ - log_assert(dname_subdomain_c(vq->ds_rrset->rk.dname, - qstate->env->anchors->dlv_anchor->name)); - nmlen = vq->ds_rrset->rk.dname_len - - qstate->env->anchors->dlv_anchor->namelen + 1; - nm = regional_alloc_init(qstate->region, - vq->ds_rrset->rk.dname, nmlen); - if(!nm) { - log_err("Out of memory in DLVLook"); - return val_error(qstate, id); - } - nm[nmlen-1] = 0; - - vq->ds_rrset->rk.dname = nm; - vq->ds_rrset->rk.dname_len = nmlen; - - /* create a nullentry for the key so the dnskey lookup - * can be retried after a validation failure for it */ - vq->key_entry = key_entry_create_null(qstate->region, - nm, nmlen, vq->qchase.qclass, 0, 0); - if(!vq->key_entry) { - log_err("Out of memory in DLVLook"); - return val_error(qstate, id); - } - - if(!generate_request(qstate, id, vq->ds_rrset->rk.dname, - vq->ds_rrset->rk.dname_len, LDNS_RR_TYPE_DNSKEY, - vq->qchase.qclass, BIT_CD, &newq, 0)) { - verbose(VERB_ALGO, "error generating DNSKEY request"); - return val_error(qstate, id); - } - return 0; - } else if(vq->dlv_status == dlv_there_is_no_dlv) { - /* continue with the insecure result we got */ - vq->state = VAL_FINISHED_STATE; - return 1; - } - log_assert(vq->dlv_status == dlv_ask_higher); - - /* ask higher, make sure we stay in DLV repo, below dlv_at */ - if(!dname_subdomain_c(vq->dlv_lookup_name, - qstate->env->anchors->dlv_anchor->name)) { - /* just like, there is no DLV */ - verbose(VERB_ALGO, "ask above dlv repo"); - vq->state = VAL_FINISHED_STATE; - return 1; - } - if(vq->dlv_insecure_at && !dname_subdomain_c(vq->dlv_lookup_name, - vq->dlv_insecure_at)) { - /* already checked a chain lower than dlv_lookup_name */ - verbose(VERB_ALGO, "ask above insecure endpoint"); - log_nametypeclass(VERB_ALGO, "enpt", vq->dlv_insecure_at, 0, 0); - vq->state = VAL_FINISHED_STATE; - return 1; - } - - /* check negative cache before making new request */ - if(val_neg_dlvlookup(ve->neg_cache, vq->dlv_lookup_name, - vq->dlv_lookup_name_len, vq->qchase.qclass, - qstate->env->rrset_cache, *qstate->env->now)) { - /* does not exist, go up one (go higher). */ - dname_remove_label(&vq->dlv_lookup_name, - &vq->dlv_lookup_name_len); - /* limit number of labels, limited number of recursion */ - return processDLVLookup(qstate, vq, ve, id); - } - - if(!generate_request(qstate, id, vq->dlv_lookup_name, - vq->dlv_lookup_name_len, LDNS_RR_TYPE_DLV, - vq->qchase.qclass, 0, &newq, 0)) { - return val_error(qstate, id); - } - - return 0; -} - /** * Handle validator state. * If a method returns true, the next state is started. If false, then @@ -2464,9 +2196,6 @@ val_handle(struct module_qstate* qstate, struct val_qstate* vq, case VAL_FINISHED_STATE: cont = processFinished(qstate, vq, ve, id); break; - case VAL_DLVLOOKUP_STATE: - cont = processDLVLookup(qstate, vq, ve, id); - break; default: log_warn("validator: invalid state %d", vq->state); @@ -3105,99 +2834,6 @@ process_prime_response(struct module_qstate* qstate, struct val_qstate* vq, /* the qstate will be reactivated after inform_super is done */ } -/** - * Process DLV response. Called from inform_supers. - * Because it is in inform_supers, the mesh itself is busy doing callbacks - * for a state that is to be deleted soon; don't touch the mesh; instead - * set a state in the super, as the super will be reactivated soon. - * Perform processing to determine what state to set in the super. - * - * @param qstate: query state that is validating and asked for a DLV. - * @param vq: validator query state - * @param id: module id. - * @param rcode: rcode result value. - * @param msg: result message (if rcode is OK). - * @param qinfo: from the sub query state, query info. - */ -static void -process_dlv_response(struct module_qstate* qstate, struct val_qstate* vq, - int id, int rcode, struct dns_msg* msg, struct query_info* qinfo) -{ - struct val_env* ve = (struct val_env*)qstate->env->modinfo[id]; - - verbose(VERB_ALGO, "process dlv response to super"); - if(rcode != LDNS_RCODE_NOERROR) { - /* lookup failed, set in vq to give up */ - vq->dlv_status = dlv_error; - verbose(VERB_ALGO, "response is error"); - return; - } - if(msg->rep->security != sec_status_secure) { - vq->dlv_status = dlv_error; - verbose(VERB_ALGO, "response is not secure, %s", - sec_status_to_string(msg->rep->security)); - return; - } - /* was the lookup a success? validated DLV? */ - if(FLAGS_GET_RCODE(msg->rep->flags) == LDNS_RCODE_NOERROR && - msg->rep->an_numrrsets == 1 && - msg->rep->security == sec_status_secure && - ntohs(msg->rep->rrsets[0]->rk.type) == LDNS_RR_TYPE_DLV && - ntohs(msg->rep->rrsets[0]->rk.rrset_class) == qinfo->qclass && - query_dname_compare(msg->rep->rrsets[0]->rk.dname, - vq->dlv_lookup_name) == 0) { - /* yay! it is just like a DS */ - vq->ds_rrset = (struct ub_packed_rrset_key*) - regional_alloc_init(qstate->region, - msg->rep->rrsets[0], sizeof(*vq->ds_rrset)); - if(!vq->ds_rrset) { - log_err("out of memory in process_dlv"); - return; - } - vq->ds_rrset->entry.key = vq->ds_rrset; - vq->ds_rrset->rk.dname = (uint8_t*)regional_alloc_init( - qstate->region, vq->ds_rrset->rk.dname, - vq->ds_rrset->rk.dname_len); - if(!vq->ds_rrset->rk.dname) { - log_err("out of memory in process_dlv"); - vq->dlv_status = dlv_error; - return; - } - vq->ds_rrset->entry.data = regional_alloc_init(qstate->region, - vq->ds_rrset->entry.data, - packed_rrset_sizeof(vq->ds_rrset->entry.data)); - if(!vq->ds_rrset->entry.data) { - log_err("out of memory in process_dlv"); - vq->dlv_status = dlv_error; - return; - } - packed_rrset_ptr_fixup(vq->ds_rrset->entry.data); - /* make vq do a DNSKEY query next up */ - vq->dlv_status = dlv_success; - return; - } - /* store NSECs into negative cache */ - val_neg_addreply(ve->neg_cache, msg->rep); - - /* was the lookup a failure? - * if we have to go up into the DLV for a higher DLV anchor - * then set this in the vq, so it can make queries when activated. - * See if the NSECs indicate that we should look for higher DLV - * or, that there is no DLV securely */ - if(!val_nsec_check_dlv(qinfo, msg->rep, &vq->dlv_lookup_name, - &vq->dlv_lookup_name_len)) { - vq->dlv_status = dlv_error; - verbose(VERB_ALGO, "nsec error"); - return; - } - if(!dname_subdomain_c(vq->dlv_lookup_name, - qstate->env->anchors->dlv_anchor->name)) { - vq->dlv_status = dlv_there_is_no_dlv; - return; - } - vq->dlv_status = dlv_ask_higher; -} - /* * inform validator super. * @@ -3233,10 +2869,6 @@ val_inform_super(struct module_qstate* qstate, int id, qstate->return_msg, &qstate->qinfo, qstate->reply_origin); return; - } else if(qstate->qinfo.qtype == LDNS_RR_TYPE_DLV) { - process_dlv_response(super, vq, id, qstate->return_rcode, - qstate->return_msg, &qstate->qinfo); - return; } log_err("internal error in validator: no inform_supers possible"); } @@ -3284,7 +2916,6 @@ val_state_to_string(enum val_state state) case VAL_FINDKEY_STATE: return "VAL_FINDKEY_STATE"; case VAL_VALIDATE_STATE: return "VAL_VALIDATE_STATE"; case VAL_FINISHED_STATE: return "VAL_FINISHED_STATE"; - case VAL_DLVLOOKUP_STATE: return "VAL_DLVLOOKUP_STATE"; } return "UNKNOWN VALIDATOR STATE"; } From 764a0dc765c96310c611bde80c14893b0814163d Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 4 Aug 2020 12:49:43 +0200 Subject: [PATCH 50/81] - Improve error log message when inserting rpz RR. --- doc/Changelog | 3 +++ services/rpz.c | 14 ++++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/doc/Changelog b/doc/Changelog index 9638d242f..f673908c3 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +4 August 2020: George + - Improve error log message when inserting rpz RR. + 4 August 2020: Wouter - Fix mini_event.h on OpenBSD cannot find fd_set. diff --git a/services/rpz.c b/services/rpz.c index 105f238d0..ba5dd186d 100644 --- a/services/rpz.c +++ b/services/rpz.c @@ -597,8 +597,18 @@ rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen, uint8_t* dname, uint8_t* policydname; if(!dname_subdomain_c(dname, azname)) { - log_err("RPZ: name of record to insert into RPZ is not a " - "subdomain of the configured name of the RPZ zone"); + char* dname_str = sldns_wire2str_dname(dname, dnamelen); + char* azname_str = sldns_wire2str_dname(azname, aznamelen); + if(dname_str && azname_str) { + log_err("RPZ: name of record (%s) to insert into RPZ is not a " + "subdomain of the configured name of the RPZ zone (%s)", + dname_str, azname_str); + } else { + log_err("RPZ: name of record to insert into RPZ is not a " + "subdomain of the configured name of the RPZ zone"); + } + free(dname_str); + free(azname_str); return 0; } From dd59521e520cf82a15c3496f607009a20540c793 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 4 Aug 2020 17:17:48 +0200 Subject: [PATCH 51/81] dlv removal, remove from comments and unused code in iterator and validator --- iterator/iterator.c | 2 +- validator/validator.c | 13 +++++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/iterator/iterator.c b/iterator/iterator.c index 23b07ea90..99d020117 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -3191,7 +3191,7 @@ processPrimeResponse(struct module_qstate* qstate, int id) /* validate the root or stub after priming (if enabled). * This is the same query as the prime query, but with validation. * Now that we are primed, the additional queries that validation - * may need can be resolved, such as DLV. */ + * may need can be resolved. */ if(qstate->env->cfg->harden_referral_path) { struct module_qstate* subq = NULL; log_nametypeclass(VERB_ALGO, "schedule prime validation", diff --git a/validator/validator.c b/validator/validator.c index ab0698012..e12180b4b 100644 --- a/validator/validator.c +++ b/validator/validator.c @@ -390,10 +390,8 @@ generate_request(struct module_qstate* qstate, int id, uint8_t* name, ask.local_alias = NULL; log_query_info(VERB_ALGO, "generate request", &ask); /* enable valrec flag to avoid recursion to the same validation - * routine, this lookup is simply a lookup. DLVs need validation */ - if(qtype == LDNS_RR_TYPE_DLV) - valrec = 0; - else valrec = 1; + * routine, this lookup is simply a lookup. */ + valrec = 1; fptr_ok(fptr_whitelist_modenv_detect_cycle(qstate->env->detect_cycle)); if((*qstate->env->detect_cycle)(qstate, &ask, @@ -1585,7 +1583,7 @@ processInit(struct module_qstate* qstate, struct val_qstate* vq, vq->key_entry = key_cache_obtain(ve->kcache, lookup_name, lookup_len, vq->qchase.qclass, qstate->region, *qstate->env->now); - /* there is no key(from DLV) and no trust anchor */ + /* there is no key and no trust anchor */ if(vq->key_entry == NULL && anchor == NULL) { /*response isn't under a trust anchor, so we cannot validate.*/ vq->chase_reply->security = sec_status_indeterminate; @@ -1678,9 +1676,8 @@ processFindKey(struct module_qstate* qstate, struct val_qstate* vq, int id) /* We know that state.key_entry is not 0 or bad key -- if it were, * then previous processing should have directed this event to * a different state. - * It could be an isnull key, which signals that a DLV was just - * done and the DNSKEY after the DLV failed with dnssec-retry state - * and the DNSKEY has to be performed again. */ + * It could be an isnull key, which signals the DNSKEY failed + * with retry and has to be looked up again. */ log_assert(vq->key_entry && !key_entry_isbad(vq->key_entry)); if(key_entry_isnull(vq->key_entry)) { if(!generate_request(qstate, id, vq->ds_rrset->rk.dname, From 8f2b9b461b53e191e625fac7497f236b59e8068a Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 5 Aug 2020 10:25:56 +0200 Subject: [PATCH 52/81] dlv removal, remove DLV references from man page and pythonmod interface. --- doc/example.conf.in | 2 +- doc/unbound.conf.5.in | 2 +- pythonmod/interface.i | 2 -- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/doc/example.conf.in b/doc/example.conf.in index 03d22d381..5ed15397e 100644 --- a/doc/example.conf.in +++ b/doc/example.conf.in @@ -622,7 +622,7 @@ server: # more slabs reduce lock contention, but fragment memory usage. # key-cache-slabs: 4 - # the amount of memory to use for the negative cache (used for DLV). + # the amount of memory to use for the negative cache. # plain value in bytes or you can append k, m or G. default is "1Mb". # neg-cache-size: 1m diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 23895d808..7acb54b06 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -1014,7 +1014,7 @@ Root key trust anchor sentinel. Default is yes. Sets domain name to be insecure, DNSSEC chain of trust is ignored towards the domain name. So a trust anchor above the domain name can not make the domain secure with a DS record, such a DS record is then ignored. -Also keys from DLV are ignored for the domain. Can be given multiple times +Can be given multiple times to specify multiple domains that are treated as if unsigned. If you set trust anchors for the domain they override this setting (and the domain is secured). diff --git a/pythonmod/interface.i b/pythonmod/interface.i index f08b575d7..71f2bf774 100644 --- a/pythonmod/interface.i +++ b/pythonmod/interface.i @@ -992,8 +992,6 @@ struct config_file { struct config_strlist* trust_anchor_file_list; struct config_strlist* trust_anchor_list; struct config_strlist* trusted_keys_file_list; - char* dlv_anchor_file; - struct config_strlist* dlv_anchor_list; int max_ttl; int32_t val_date_override; int bogus_ttl; From 70c8d09edd5f7009988160defe901158eb1cb463 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 5 Aug 2020 15:56:45 +0200 Subject: [PATCH 53/81] - Process EDNS client tag review feedback --- util/edns.h | 2 +- util/module.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/util/edns.h b/util/edns.h index ee0e3de54..c92b1ba5e 100644 --- a/util/edns.h +++ b/util/edns.h @@ -77,7 +77,7 @@ struct edns_tag_addr { */ struct edns_tags* edns_tags_create(void); -/** Delete ENDS tags structure +/** Delete EDNS tags structure * @param edns_tags: struct to delete */ void edns_tags_delete(struct edns_tags* edns_tags); diff --git a/util/module.h b/util/module.h index 1d696ed0a..1eed21300 100644 --- a/util/module.h +++ b/util/module.h @@ -520,6 +520,7 @@ struct module_env { struct edns_known_option* edns_known_options; /* Number of known edns options */ size_t edns_known_options_num; + /** EDNS client tag information */ struct edns_tags* edns_tags; /* Make every mesh state unique, do not aggregate mesh states. */ From ce0b39007de4c4cf8203b7bfcc9b48541bb22d26 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Wed, 5 Aug 2020 16:10:10 +0200 Subject: [PATCH 54/81] - Changelog entry for EDNS client tag functionality --- doc/Changelog | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 4dd1f15e6..9cd6df49f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +5 August 2020: Ralph + - Merge PR #272: Add EDNS client tag functionality. + 4 August 2020: George - Improve error log message when inserting rpz RR. - Merge PR #280, Make tvOS & watchOS checks verify truthiness as well as From 50091d49eae537f6fd328e852bc5818193633164 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 5 Aug 2020 16:33:48 +0200 Subject: [PATCH 55/81] - contrib/aaaa-filter-iterator.patch file renewed diff content to apply cleanly to the current coderepo for the current code version. --- contrib/aaaa-filter-iterator.patch | 164 ++++++++++++++--------------- doc/Changelog | 4 + 2 files changed, 86 insertions(+), 82 deletions(-) diff --git a/contrib/aaaa-filter-iterator.patch b/contrib/aaaa-filter-iterator.patch index 9881bde89..f51de2a40 100644 --- a/contrib/aaaa-filter-iterator.patch +++ b/contrib/aaaa-filter-iterator.patch @@ -1,10 +1,10 @@ -Index: trunk/doc/unbound.conf.5.in -=================================================================== ---- trunk/doc/unbound.conf.5.in (revision 4357) -+++ trunk/doc/unbound.conf.5.in (working copy) -@@ -701,6 +701,13 @@ +diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in +index f426ac5f..147fbfa9 100644 +--- a/doc/unbound.conf.5.in ++++ b/doc/unbound.conf.5.in +@@ -872,6 +872,13 @@ potentially broken nameservers. A lot of domains will not be resolvable when this option in enabled. Only use if you know what you are doing. - This option only has effect when qname-minimisation is enabled. Default is off. + This option only has effect when qname-minimisation is enabled. Default is no. .TP +.B aaaa\-filter: \fI +Activate behavior similar to BIND's AAAA-filter. @@ -16,14 +16,15 @@ Index: trunk/doc/unbound.conf.5.in .B aggressive\-nsec: \fI Aggressive NSEC uses the DNSSEC NSEC chain to synthesize NXDOMAIN and other denials, using information from previous NXDOMAINs answers. -Index: trunk/iterator/iter_scrub.c -=================================================================== ---- trunk/iterator/iter_scrub.c (revision 4357) -+++ trunk/iterator/iter_scrub.c (working copy) -@@ -617,6 +617,32 @@ +diff --git a/iterator/iter_scrub.c b/iterator/iter_scrub.c +index aae934dd..55c55de0 100644 +--- a/iterator/iter_scrub.c ++++ b/iterator/iter_scrub.c +@@ -667,6 +667,32 @@ static int sanitize_nsec_is_overreach(struct rrset_parse* rrset, + return 0; } - /** ++/** + * ASN: Lookup A records from rrset cache. + * @param qinfo: the question originally asked. + * @param env: module environment with config and cache. @@ -49,11 +50,10 @@ Index: trunk/iterator/iter_scrub.c + return 0; +} + -+/** + /** * Given a response event, remove suspect RRsets from the response. * "Suspect" rrsets are potentially poison. Note that this routine expects - * the response to be in a "normalized" state -- that is, all "irrelevant" -@@ -635,6 +661,7 @@ +@@ -686,6 +712,7 @@ scrub_sanitize(sldns_buffer* pkt, struct msg_parse* msg, struct query_info* qinfo, uint8_t* zonename, struct module_env* env, struct iter_env* ie) { @@ -61,7 +61,7 @@ Index: trunk/iterator/iter_scrub.c int del_addi = 0; /* if additional-holding rrsets are deleted, we do not trust the normalized additional-A-AAAA any more */ struct rrset_parse* rrset, *prev; -@@ -670,6 +697,13 @@ +@@ -721,6 +748,13 @@ scrub_sanitize(sldns_buffer* pkt, struct msg_parse* msg, rrset = rrset->rrset_all_next; } @@ -75,11 +75,10 @@ Index: trunk/iterator/iter_scrub.c /* At this point, we brutally remove ALL rrsets that aren't * children of the originating zone. The idea here is that, * as far as we know, the server that we contacted is ONLY -@@ -680,6 +714,24 @@ - prev = NULL; +@@ -732,6 +766,24 @@ scrub_sanitize(sldns_buffer* pkt, struct msg_parse* msg, rrset = msg->rrset_first; while(rrset) { -+ + + /* ASN: For AAAA records only... */ + if((ie->aaaa_filter) && (rrset->type == LDNS_RR_TYPE_AAAA)) { + /* ASN: If this is not a AAAA query, then remove AAAA @@ -97,14 +96,15 @@ Index: trunk/iterator/iter_scrub.c + LDNS_RR_TYPE_AAAA, qinfo->qclass); + } + /* ASN: End of added code */ - ++ /* remove private addresses */ if( (rrset->type == LDNS_RR_TYPE_A || -Index: trunk/iterator/iter_utils.c -=================================================================== ---- trunk/iterator/iter_utils.c (revision 4357) -+++ trunk/iterator/iter_utils.c (working copy) -@@ -175,6 +175,7 @@ + rrset->type == LDNS_RR_TYPE_AAAA)) { +diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c +index 7bc67da6..e10f547a 100644 +--- a/iterator/iter_utils.c ++++ b/iterator/iter_utils.c +@@ -175,6 +175,7 @@ iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg) } iter_env->supports_ipv6 = cfg->do_ip6; iter_env->supports_ipv4 = cfg->do_ip4; @@ -112,11 +112,11 @@ Index: trunk/iterator/iter_utils.c return 1; } -Index: trunk/iterator/iterator.c -=================================================================== ---- trunk/iterator/iterator.c (revision 4357) -+++ trunk/iterator/iterator.c (working copy) -@@ -1847,6 +1847,53 @@ +diff --git a/iterator/iterator.c b/iterator/iterator.c +index 23b07ea9..ca29b48c 100644 +--- a/iterator/iterator.c ++++ b/iterator/iterator.c +@@ -2127,6 +2127,53 @@ processDSNSFind(struct module_qstate* qstate, struct iter_qstate* iq, int id) return 0; } @@ -170,7 +170,7 @@ Index: trunk/iterator/iterator.c /** * This is the request event state where the request will be sent to one of -@@ -1894,6 +1941,13 @@ +@@ -2186,6 +2233,13 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq, return error_response(qstate, id, LDNS_RCODE_SERVFAIL); } @@ -184,7 +184,7 @@ Index: trunk/iterator/iterator.c /* Make sure we have a delegation point, otherwise priming failed * or another failure occurred */ if(!iq->dp) { -@@ -3095,6 +3149,61 @@ +@@ -3574,6 +3628,61 @@ processFinished(struct module_qstate* qstate, struct iter_qstate* iq, return 0; } @@ -246,7 +246,7 @@ Index: trunk/iterator/iterator.c /* * Return priming query results to interested super querystates. * -@@ -3114,6 +3223,9 @@ +@@ -3593,6 +3702,9 @@ iter_inform_super(struct module_qstate* qstate, int id, else if(super->qinfo.qtype == LDNS_RR_TYPE_DS && ((struct iter_qstate*) super->minfo[id])->state == DSNS_FIND_STATE) processDSNSResponse(qstate, id, super); @@ -256,7 +256,7 @@ Index: trunk/iterator/iterator.c else if(qstate->return_rcode != LDNS_RCODE_NOERROR) error_supers(qstate, id, super); else if(qstate->is_priming) -@@ -3151,6 +3263,9 @@ +@@ -3630,6 +3742,9 @@ iter_handle(struct module_qstate* qstate, struct iter_qstate* iq, case INIT_REQUEST_3_STATE: cont = processInitRequest3(qstate, iq, id); break; @@ -266,7 +266,7 @@ Index: trunk/iterator/iterator.c case QUERYTARGETS_STATE: cont = processQueryTargets(qstate, iq, ie, id); break; -@@ -3460,6 +3575,8 @@ +@@ -3961,6 +4076,8 @@ iter_state_to_string(enum iter_state state) return "INIT REQUEST STATE (stage 2)"; case INIT_REQUEST_3_STATE: return "INIT REQUEST STATE (stage 3)"; @@ -275,7 +275,7 @@ Index: trunk/iterator/iterator.c case QUERYTARGETS_STATE : return "QUERY TARGETS STATE"; case PRIME_RESP_STATE : -@@ -3484,6 +3601,7 @@ +@@ -3985,6 +4102,7 @@ iter_state_is_responsestate(enum iter_state s) case INIT_REQUEST_STATE : case INIT_REQUEST_2_STATE : case INIT_REQUEST_3_STATE : @@ -283,11 +283,11 @@ Index: trunk/iterator/iterator.c case QUERYTARGETS_STATE : case COLLECT_CLASS_STATE : return 0; -Index: trunk/iterator/iterator.h -=================================================================== ---- trunk/iterator/iterator.h (revision 4357) -+++ trunk/iterator/iterator.h (working copy) -@@ -130,6 +130,9 @@ +diff --git a/iterator/iterator.h b/iterator/iterator.h +index 342ac207..731948d1 100644 +--- a/iterator/iterator.h ++++ b/iterator/iterator.h +@@ -135,6 +135,9 @@ struct iter_env { */ int* target_fetch_policy; @@ -297,10 +297,11 @@ Index: trunk/iterator/iterator.h /** lock on ratelimit counter */ lock_basic_type queries_ratelimit_lock; /** number of queries that have been ratelimited */ -@@ -182,6 +185,14 @@ +@@ -186,6 +189,14 @@ enum iter_state { + */ INIT_REQUEST_3_STATE, - /** ++ /** + * This state is responsible for intercepting AAAA queries, + * and launch a A subquery on the same target, to populate the + * cache with A records, so the AAAA filter scrubbing logic can @@ -308,29 +309,28 @@ Index: trunk/iterator/iterator.h + */ + ASN_FETCH_A_FOR_AAAA_STATE, + -+ /** + /** * Each time a delegation point changes for a given query or a * query times out and/or wakes up, this state is (re)visited. - * This state is responsible for iterating through a list of -@@ -364,6 +375,13 @@ - * be used when creating the state. A higher one will be attempted. +@@ -375,6 +386,13 @@ struct iter_qstate { */ int refetch_glue; -+ + + /** + * ASN: This is a flag that, if true, means that this query is + * for fetching A records to populate cache and determine if we must + * return AAAA records or not. + */ + int fetch_a_for_aaaa; - ++ /** list of pending queries to authoritative servers. */ struct outbound_list outlist; -Index: trunk/pythonmod/interface.i -=================================================================== ---- trunk/pythonmod/interface.i (revision 4357) -+++ trunk/pythonmod/interface.i (working copy) -@@ -851,6 +851,7 @@ + +diff --git a/pythonmod/interface.i b/pythonmod/interface.i +index f08b575d..47f1bb2e 100644 +--- a/pythonmod/interface.i ++++ b/pythonmod/interface.i +@@ -975,6 +975,7 @@ struct config_file { int harden_dnssec_stripped; int harden_referral_path; int use_caps_bits_for_id; @@ -338,11 +338,11 @@ Index: trunk/pythonmod/interface.i struct config_strlist* private_address; struct config_strlist* private_domain; size_t unwanted_threshold; -Index: trunk/util/config_file.c -=================================================================== ---- trunk/util/config_file.c (revision 4357) -+++ trunk/util/config_file.c (working copy) -@@ -195,6 +195,7 @@ +diff --git a/util/config_file.c b/util/config_file.c +index 0ab8614a..729fb147 100644 +--- a/util/config_file.c ++++ b/util/config_file.c +@@ -218,6 +218,7 @@ config_create(void) cfg->harden_referral_path = 0; cfg->harden_algo_downgrade = 0; cfg->use_caps_bits_for_id = 0; @@ -350,11 +350,11 @@ Index: trunk/util/config_file.c cfg->caps_whitelist = NULL; cfg->private_address = NULL; cfg->private_domain = NULL; -Index: trunk/util/config_file.h -=================================================================== ---- trunk/util/config_file.h (revision 4357) -+++ trunk/util/config_file.h (working copy) -@@ -209,6 +209,8 @@ +diff --git a/util/config_file.h b/util/config_file.h +index e61257a3..dabaa7bb 100644 +--- a/util/config_file.h ++++ b/util/config_file.h +@@ -260,6 +260,8 @@ struct config_file { int harden_algo_downgrade; /** use 0x20 bits in query as random ID bits */ int use_caps_bits_for_id; @@ -363,11 +363,11 @@ Index: trunk/util/config_file.h /** 0x20 whitelist, domains that do not use capsforid */ struct config_strlist* caps_whitelist; /** strip away these private addrs from answers, no DNS Rebinding */ -Index: trunk/util/configlexer.lex -=================================================================== ---- trunk/util/configlexer.lex (revision 4357) -+++ trunk/util/configlexer.lex (working copy) -@@ -279,6 +279,7 @@ +diff --git a/util/configlexer.lex b/util/configlexer.lex +index 79a0edca..4eaec678 100644 +--- a/util/configlexer.lex ++++ b/util/configlexer.lex +@@ -304,6 +304,7 @@ harden-algo-downgrade{COLON} { YDVAR(1, VAR_HARDEN_ALGO_DOWNGRADE) } use-caps-for-id{COLON} { YDVAR(1, VAR_USE_CAPS_FOR_ID) } caps-whitelist{COLON} { YDVAR(1, VAR_CAPS_WHITELIST) } unwanted-reply-threshold{COLON} { YDVAR(1, VAR_UNWANTED_REPLY_THRESHOLD) } @@ -375,11 +375,11 @@ Index: trunk/util/configlexer.lex private-address{COLON} { YDVAR(1, VAR_PRIVATE_ADDRESS) } private-domain{COLON} { YDVAR(1, VAR_PRIVATE_DOMAIN) } prefetch-key{COLON} { YDVAR(1, VAR_PREFETCH_KEY) } -Index: trunk/util/configparser.y -=================================================================== ---- trunk/util/configparser.y (revision 4357) -+++ trunk/util/configparser.y (working copy) -@@ -95,6 +95,7 @@ +diff --git a/util/configparser.y b/util/configparser.y +index 1d0e8658..f284dd43 100644 +--- a/util/configparser.y ++++ b/util/configparser.y +@@ -97,6 +97,7 @@ extern struct config_parser_state* cfg_parser; %token VAR_STATISTICS_CUMULATIVE VAR_OUTGOING_PORT_PERMIT %token VAR_OUTGOING_PORT_AVOID VAR_DLV_ANCHOR_FILE VAR_DLV_ANCHOR %token VAR_NEG_CACHE_SIZE VAR_HARDEN_REFERRAL_PATH VAR_PRIVATE_ADDRESS @@ -387,7 +387,7 @@ Index: trunk/util/configparser.y %token VAR_PRIVATE_DOMAIN VAR_REMOTE_CONTROL VAR_CONTROL_ENABLE %token VAR_CONTROL_INTERFACE VAR_CONTROL_PORT VAR_SERVER_KEY_FILE %token VAR_SERVER_CERT_FILE VAR_CONTROL_KEY_FILE VAR_CONTROL_CERT_FILE -@@ -203,6 +204,7 @@ +@@ -233,6 +234,7 @@ content_server: server_num_threads | server_verbosity | server_port | server_dlv_anchor_file | server_dlv_anchor | server_neg_cache_size | server_harden_referral_path | server_private_address | server_private_domain | server_extended_statistics | @@ -395,12 +395,10 @@ Index: trunk/util/configparser.y server_local_data_ptr | server_jostle_timeout | server_unwanted_reply_threshold | server_log_time_ascii | server_domain_insecure | server_val_sig_skew_min | -@@ -1183,6 +1185,15 @@ - OUTYY(("P(server_caps_whitelist:%s)\n", $2)); - if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, $2)) +@@ -1563,6 +1565,15 @@ server_caps_whitelist: VAR_CAPS_WHITELIST STRING_ARG yyerror("out of memory"); -+ } -+ ; + } + ; +server_aaaa_filter: VAR_AAAA_FILTER STRING_ARG + { + OUTYY(("P(server_aaaa_filter:%s)\n", $2)); @@ -408,6 +406,8 @@ Index: trunk/util/configparser.y + yyerror("expected yes or no."); + else cfg_parser->cfg->aaaa_filter = (strcmp($2, "yes")==0); + free($2); - } - ; ++ } ++ ; server_private_address: VAR_PRIVATE_ADDRESS STRING_ARG + { + OUTYY(("P(server_private_address:%s)\n", $2)); diff --git a/doc/Changelog b/doc/Changelog index 9cd6df49f..763bf51a6 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +5 August 2020: Wouter + - contrib/aaaa-filter-iterator.patch file renewed diff content to + apply cleanly to the current coderepo for the current code version. + 5 August 2020: Ralph - Merge PR #272: Add EDNS client tag functionality. From 4ec55910c4ba9b40c95b80c83da8dab33cff3ecf Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 6 Aug 2020 08:14:14 +0200 Subject: [PATCH 56/81] dlv removal, free unused variable. --- util/configparser.c | 904 ++++++++++++++++++++++---------------------- util/configparser.y | 2 + 2 files changed, 455 insertions(+), 451 deletions(-) diff --git a/util/configparser.c b/util/configparser.c index 5f8c70bd0..63badad61 100644 --- a/util/configparser.c +++ b/util/configparser.c @@ -1092,34 +1092,34 @@ static const yytype_uint16 yyrline[] = 854, 867, 876, 885, 894, 901, 908, 917, 924, 933, 941, 948, 955, 963, 972, 981, 990, 1004, 1013, 1022, 1031, 1040, 1049, 1058, 1065, 1072, 1098, 1106, 1113, 1120, - 1126, 1132, 1140, 1148, 1156, 1163, 1174, 1185, 1192, 1201, - 1210, 1219, 1226, 1233, 1241, 1249, 1259, 1269, 1279, 1293, - 1301, 1314, 1325, 1333, 1346, 1355, 1364, 1373, 1383, 1393, - 1401, 1414, 1423, 1431, 1440, 1448, 1461, 1470, 1477, 1487, - 1497, 1507, 1517, 1527, 1537, 1547, 1557, 1564, 1571, 1578, - 1587, 1596, 1605, 1614, 1621, 1631, 1651, 1658, 1676, 1689, - 1702, 1711, 1720, 1729, 1738, 1748, 1758, 1769, 1778, 1787, - 1796, 1805, 1814, 1823, 1836, 1849, 1858, 1865, 1874, 1883, - 1892, 1901, 1909, 1922, 1930, 1971, 1978, 1993, 2003, 2013, - 2020, 2027, 2034, 2043, 2051, 2065, 2086, 2107, 2119, 2131, - 2143, 2152, 2173, 2183, 2192, 2200, 2208, 2221, 2234, 2249, - 2264, 2273, 2282, 2288, 2297, 2306, 2316, 2326, 2339, 2352, - 2364, 2378, 2390, 2404, 2414, 2421, 2428, 2437, 2446, 2456, - 2466, 2476, 2483, 2490, 2499, 2508, 2518, 2528, 2535, 2542, - 2549, 2557, 2567, 2577, 2587, 2597, 2636, 2646, 2654, 2662, - 2677, 2686, 2691, 2692, 2693, 2693, 2693, 2694, 2694, 2694, - 2695, 2695, 2697, 2707, 2716, 2723, 2730, 2737, 2744, 2751, - 2758, 2763, 2764, 2765, 2765, 2765, 2766, 2766, 2766, 2767, - 2768, 2768, 2769, 2769, 2770, 2770, 2771, 2772, 2773, 2774, - 2775, 2776, 2778, 2787, 2797, 2804, 2811, 2820, 2827, 2834, - 2841, 2848, 2857, 2866, 2873, 2880, 2890, 2900, 2910, 2920, - 2930, 2940, 2945, 2946, 2947, 2949, 2955, 2960, 2961, 2962, - 2964, 2970, 2980, 2987, 2996, 3004, 3009, 3010, 3012, 3012, - 3012, 3013, 3013, 3014, 3015, 3016, 3017, 3018, 3020, 3030, - 3039, 3046, 3055, 3062, 3071, 3079, 3092, 3100, 3113, 3118, - 3119, 3120, 3120, 3121, 3121, 3121, 3122, 3124, 3136, 3148, - 3160, 3175, 3188, 3201, 3212, 3217, 3218, 3219, 3219, 3221, - 3236 + 1127, 1134, 1142, 1150, 1158, 1165, 1176, 1187, 1194, 1203, + 1212, 1221, 1228, 1235, 1243, 1251, 1261, 1271, 1281, 1295, + 1303, 1316, 1327, 1335, 1348, 1357, 1366, 1375, 1385, 1395, + 1403, 1416, 1425, 1433, 1442, 1450, 1463, 1472, 1479, 1489, + 1499, 1509, 1519, 1529, 1539, 1549, 1559, 1566, 1573, 1580, + 1589, 1598, 1607, 1616, 1623, 1633, 1653, 1660, 1678, 1691, + 1704, 1713, 1722, 1731, 1740, 1750, 1760, 1771, 1780, 1789, + 1798, 1807, 1816, 1825, 1838, 1851, 1860, 1867, 1876, 1885, + 1894, 1903, 1911, 1924, 1932, 1973, 1980, 1995, 2005, 2015, + 2022, 2029, 2036, 2045, 2053, 2067, 2088, 2109, 2121, 2133, + 2145, 2154, 2175, 2185, 2194, 2202, 2210, 2223, 2236, 2251, + 2266, 2275, 2284, 2290, 2299, 2308, 2318, 2328, 2341, 2354, + 2366, 2380, 2392, 2406, 2416, 2423, 2430, 2439, 2448, 2458, + 2468, 2478, 2485, 2492, 2501, 2510, 2520, 2530, 2537, 2544, + 2551, 2559, 2569, 2579, 2589, 2599, 2638, 2648, 2656, 2664, + 2679, 2688, 2693, 2694, 2695, 2695, 2695, 2696, 2696, 2696, + 2697, 2697, 2699, 2709, 2718, 2725, 2732, 2739, 2746, 2753, + 2760, 2765, 2766, 2767, 2767, 2767, 2768, 2768, 2768, 2769, + 2770, 2770, 2771, 2771, 2772, 2772, 2773, 2774, 2775, 2776, + 2777, 2778, 2780, 2789, 2799, 2806, 2813, 2822, 2829, 2836, + 2843, 2850, 2859, 2868, 2875, 2882, 2892, 2902, 2912, 2922, + 2932, 2942, 2947, 2948, 2949, 2951, 2957, 2962, 2963, 2964, + 2966, 2972, 2982, 2989, 2998, 3006, 3011, 3012, 3014, 3014, + 3014, 3015, 3015, 3016, 3017, 3018, 3019, 3020, 3022, 3032, + 3041, 3048, 3057, 3064, 3073, 3081, 3094, 3102, 3115, 3120, + 3121, 3122, 3122, 3123, 3123, 3123, 3124, 3126, 3138, 3150, + 3162, 3177, 3190, 3203, 3214, 3219, 3220, 3221, 3221, 3223, + 3238 }; #endif @@ -3772,64 +3772,66 @@ yyreduce: { OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); + free((yyvsp[0].str)); } -#line 3777 "util/configparser.c" +#line 3778 "util/configparser.c" break; case 340: -#line 1127 "./util/configparser.y" +#line 1128 "./util/configparser.y" { OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str))); log_warn("option dlv-anchor ignored: DLV is decommissioned"); + free((yyvsp[0].str)); } -#line 3786 "util/configparser.c" +#line 3788 "util/configparser.c" break; case 341: -#line 1133 "./util/configparser.y" +#line 1135 "./util/configparser.y" { OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> auto_trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3797 "util/configparser.c" +#line 3799 "util/configparser.c" break; case 342: -#line 1141 "./util/configparser.y" +#line 1143 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trust_anchor_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3808 "util/configparser.c" +#line 3810 "util/configparser.c" break; case 343: -#line 1149 "./util/configparser.y" +#line 1151 "./util/configparser.y" { OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg-> trusted_keys_file_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3819 "util/configparser.c" +#line 3821 "util/configparser.c" break; case 344: -#line 1157 "./util/configparser.y" +#line 1159 "./util/configparser.y" { OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3829 "util/configparser.c" +#line 3831 "util/configparser.c" break; case 345: -#line 1164 "./util/configparser.y" +#line 1166 "./util/configparser.y" { OUTYY(("P(server_trust_anchor_signaling:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3839,11 +3841,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3843 "util/configparser.c" +#line 3845 "util/configparser.c" break; case 346: -#line 1175 "./util/configparser.y" +#line 1177 "./util/configparser.y" { OUTYY(("P(server_root_key_sentinel:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3853,21 +3855,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3857 "util/configparser.c" +#line 3859 "util/configparser.c" break; case 347: -#line 1186 "./util/configparser.y" +#line 1188 "./util/configparser.y" { OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str))) yyerror("out of memory"); } -#line 3867 "util/configparser.c" +#line 3869 "util/configparser.c" break; case 348: -#line 1193 "./util/configparser.y" +#line 1195 "./util/configparser.y" { OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3875,11 +3877,11 @@ yyreduce: else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3879 "util/configparser.c" +#line 3881 "util/configparser.c" break; case 349: -#line 1202 "./util/configparser.y" +#line 1204 "./util/configparser.y" { OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3887,11 +3889,11 @@ yyreduce: else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3891 "util/configparser.c" +#line 3893 "util/configparser.c" break; case 350: -#line 1211 "./util/configparser.y" +#line 1213 "./util/configparser.y" { OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3899,53 +3901,53 @@ yyreduce: else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3903 "util/configparser.c" +#line 3905 "util/configparser.c" break; case 351: -#line 1220 "./util/configparser.y" +#line 1222 "./util/configparser.y" { OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->identity); cfg_parser->cfg->identity = (yyvsp[0].str); } -#line 3913 "util/configparser.c" +#line 3915 "util/configparser.c" break; case 352: -#line 1227 "./util/configparser.y" +#line 1229 "./util/configparser.y" { OUTYY(("P(server_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->version); cfg_parser->cfg->version = (yyvsp[0].str); } -#line 3923 "util/configparser.c" +#line 3925 "util/configparser.c" break; case 353: -#line 1234 "./util/configparser.y" +#line 1236 "./util/configparser.y" { OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3934 "util/configparser.c" +#line 3936 "util/configparser.c" break; case 354: -#line 1242 "./util/configparser.y" +#line 1244 "./util/configparser.y" { OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf)) yyerror("buffer size expected"); free((yyvsp[0].str)); } -#line 3945 "util/configparser.c" +#line 3947 "util/configparser.c" break; case 355: -#line 1250 "./util/configparser.y" +#line 1252 "./util/configparser.y" { OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3954,11 +3956,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3958 "util/configparser.c" +#line 3960 "util/configparser.c" break; case 356: -#line 1260 "./util/configparser.y" +#line 1262 "./util/configparser.y" { OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3967,11 +3969,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3971 "util/configparser.c" +#line 3973 "util/configparser.c" break; case 357: -#line 1270 "./util/configparser.y" +#line 1272 "./util/configparser.y" { OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -3980,11 +3982,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 3984 "util/configparser.c" +#line 3986 "util/configparser.c" break; case 358: -#line 1280 "./util/configparser.y" +#line 1282 "./util/configparser.y" { OUTYY(("P(server_ip_dscp:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -3997,22 +3999,22 @@ yyreduce: cfg_parser->cfg->ip_dscp = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4001 "util/configparser.c" +#line 4003 "util/configparser.c" break; case 359: -#line 1294 "./util/configparser.y" +#line 1296 "./util/configparser.y" { OUTYY(("P(server_stream_wait_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->stream_wait_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4012 "util/configparser.c" +#line 4014 "util/configparser.c" break; case 360: -#line 1302 "./util/configparser.y" +#line 1304 "./util/configparser.y" { OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4024,11 +4026,11 @@ yyreduce: else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4028 "util/configparser.c" +#line 4030 "util/configparser.c" break; case 361: -#line 1315 "./util/configparser.y" +#line 1317 "./util/configparser.y" { OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4038,22 +4040,22 @@ yyreduce: else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4042 "util/configparser.c" +#line 4044 "util/configparser.c" break; case 362: -#line 1326 "./util/configparser.y" +#line 1328 "./util/configparser.y" { OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4053 "util/configparser.c" +#line 4055 "util/configparser.c" break; case 363: -#line 1334 "./util/configparser.y" +#line 1336 "./util/configparser.y" { OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4065,11 +4067,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4069 "util/configparser.c" +#line 4071 "util/configparser.c" break; case 364: -#line 1347 "./util/configparser.y" +#line 1349 "./util/configparser.y" { OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4077,11 +4079,11 @@ yyreduce: else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4081 "util/configparser.c" +#line 4083 "util/configparser.c" break; case 365: -#line 1356 "./util/configparser.y" +#line 1358 "./util/configparser.y" { OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4089,11 +4091,11 @@ yyreduce: else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4093 "util/configparser.c" +#line 4095 "util/configparser.c" break; case 366: -#line 1365 "./util/configparser.y" +#line 1367 "./util/configparser.y" { OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4101,11 +4103,11 @@ yyreduce: else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4105 "util/configparser.c" +#line 4107 "util/configparser.c" break; case 367: -#line 1374 "./util/configparser.y" +#line 1376 "./util/configparser.y" { OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4114,11 +4116,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4118 "util/configparser.c" +#line 4120 "util/configparser.c" break; case 368: -#line 1384 "./util/configparser.y" +#line 1386 "./util/configparser.y" { OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4127,22 +4129,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4131 "util/configparser.c" +#line 4133 "util/configparser.c" break; case 369: -#line 1394 "./util/configparser.y" +#line 1396 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4142 "util/configparser.c" +#line 4144 "util/configparser.c" break; case 370: -#line 1402 "./util/configparser.y" +#line 1404 "./util/configparser.y" { OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4154,11 +4156,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4158 "util/configparser.c" +#line 4160 "util/configparser.c" break; case 371: -#line 1415 "./util/configparser.y" +#line 1417 "./util/configparser.y" { OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4166,22 +4168,22 @@ yyreduce: else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4170 "util/configparser.c" +#line 4172 "util/configparser.c" break; case 372: -#line 1424 "./util/configparser.y" +#line 1426 "./util/configparser.y" { OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option " "removed, use infra-host-ttl)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4181 "util/configparser.c" +#line 4183 "util/configparser.c" break; case 373: -#line 1432 "./util/configparser.y" +#line 1434 "./util/configparser.y" { OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4189,22 +4191,22 @@ yyreduce: else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4193 "util/configparser.c" +#line 4195 "util/configparser.c" break; case 374: -#line 1441 "./util/configparser.y" +#line 1443 "./util/configparser.y" { OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str))); verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s " "(option removed, use infra-cache-numhosts)", (yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4204 "util/configparser.c" +#line 4206 "util/configparser.c" break; case 375: -#line 1449 "./util/configparser.y" +#line 1451 "./util/configparser.y" { OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4216,11 +4218,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4220 "util/configparser.c" +#line 4222 "util/configparser.c" break; case 376: -#line 1462 "./util/configparser.y" +#line 1464 "./util/configparser.y" { OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4228,21 +4230,21 @@ yyreduce: else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4232 "util/configparser.c" +#line 4234 "util/configparser.c" break; case 377: -#line 1471 "./util/configparser.y" +#line 1473 "./util/configparser.y" { OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->target_fetch_policy); cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str); } -#line 4242 "util/configparser.c" +#line 4244 "util/configparser.c" break; case 378: -#line 1478 "./util/configparser.y" +#line 1480 "./util/configparser.y" { OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4251,11 +4253,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4255 "util/configparser.c" +#line 4257 "util/configparser.c" break; case 379: -#line 1488 "./util/configparser.y" +#line 1490 "./util/configparser.y" { OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4264,11 +4266,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4268 "util/configparser.c" +#line 4270 "util/configparser.c" break; case 380: -#line 1498 "./util/configparser.y" +#line 1500 "./util/configparser.y" { OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4277,11 +4279,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4281 "util/configparser.c" +#line 4283 "util/configparser.c" break; case 381: -#line 1508 "./util/configparser.y" +#line 1510 "./util/configparser.y" { OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4290,11 +4292,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4294 "util/configparser.c" +#line 4296 "util/configparser.c" break; case 382: -#line 1518 "./util/configparser.y" +#line 1520 "./util/configparser.y" { OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4303,11 +4305,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4307 "util/configparser.c" +#line 4309 "util/configparser.c" break; case 383: -#line 1528 "./util/configparser.y" +#line 1530 "./util/configparser.y" { OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4316,11 +4318,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4320 "util/configparser.c" +#line 4322 "util/configparser.c" break; case 384: -#line 1538 "./util/configparser.y" +#line 1540 "./util/configparser.y" { OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4329,11 +4331,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4333 "util/configparser.c" +#line 4335 "util/configparser.c" break; case 385: -#line 1548 "./util/configparser.y" +#line 1550 "./util/configparser.y" { OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4342,41 +4344,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4346 "util/configparser.c" +#line 4348 "util/configparser.c" break; case 386: -#line 1558 "./util/configparser.y" +#line 1560 "./util/configparser.y" { OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4356 "util/configparser.c" +#line 4358 "util/configparser.c" break; case 387: -#line 1565 "./util/configparser.y" +#line 1567 "./util/configparser.y" { OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4366 "util/configparser.c" +#line 4368 "util/configparser.c" break; case 388: -#line 1572 "./util/configparser.y" +#line 1574 "./util/configparser.y" { OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4376 "util/configparser.c" +#line 4378 "util/configparser.c" break; case 389: -#line 1579 "./util/configparser.y" +#line 1581 "./util/configparser.y" { OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4384,11 +4386,11 @@ yyreduce: else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4388 "util/configparser.c" +#line 4390 "util/configparser.c" break; case 390: -#line 1588 "./util/configparser.y" +#line 1590 "./util/configparser.y" { OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4396,11 +4398,11 @@ yyreduce: else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4400 "util/configparser.c" +#line 4402 "util/configparser.c" break; case 391: -#line 1597 "./util/configparser.y" +#line 1599 "./util/configparser.y" { OUTYY(("P(server_deny_any:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4408,11 +4410,11 @@ yyreduce: else cfg_parser->cfg->deny_any = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4412 "util/configparser.c" +#line 4414 "util/configparser.c" break; case 392: -#line 1606 "./util/configparser.y" +#line 1608 "./util/configparser.y" { OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4420,21 +4422,21 @@ yyreduce: else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4424 "util/configparser.c" +#line 4426 "util/configparser.c" break; case 393: -#line 1615 "./util/configparser.y" +#line 1617 "./util/configparser.y" { OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 4434 "util/configparser.c" +#line 4436 "util/configparser.c" break; case 394: -#line 1622 "./util/configparser.y" +#line 1624 "./util/configparser.y" { OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4443,11 +4445,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4447 "util/configparser.c" +#line 4449 "util/configparser.c" break; case 395: -#line 1632 "./util/configparser.y" +#line 1634 "./util/configparser.y" { OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 && @@ -4466,21 +4468,21 @@ yyreduce: fatal_exit("out of memory adding acl"); } } -#line 4470 "util/configparser.c" +#line 4472 "util/configparser.c" break; case 396: -#line 1652 "./util/configparser.y" +#line 1654 "./util/configparser.y" { OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->module_conf); cfg_parser->cfg->module_conf = (yyvsp[0].str); } -#line 4480 "util/configparser.c" +#line 4482 "util/configparser.c" break; case 397: -#line 1659 "./util/configparser.y" +#line 1661 "./util/configparser.y" { OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4497,11 +4499,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4501 "util/configparser.c" +#line 4503 "util/configparser.c" break; case 398: -#line 1677 "./util/configparser.y" +#line 1679 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4513,11 +4515,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4517 "util/configparser.c" +#line 4519 "util/configparser.c" break; case 399: -#line 1690 "./util/configparser.y" +#line 1692 "./util/configparser.y" { OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str))); if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) { @@ -4529,11 +4531,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4533 "util/configparser.c" +#line 4535 "util/configparser.c" break; case 400: -#line 1703 "./util/configparser.y" +#line 1705 "./util/configparser.y" { OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4541,11 +4543,11 @@ yyreduce: else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4545 "util/configparser.c" +#line 4547 "util/configparser.c" break; case 401: -#line 1712 "./util/configparser.y" +#line 1714 "./util/configparser.y" { OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4553,11 +4555,11 @@ yyreduce: else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4557 "util/configparser.c" +#line 4559 "util/configparser.c" break; case 402: -#line 1721 "./util/configparser.y" +#line 1723 "./util/configparser.y" { OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4565,11 +4567,11 @@ yyreduce: else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4569 "util/configparser.c" +#line 4571 "util/configparser.c" break; case 403: -#line 1730 "./util/configparser.y" +#line 1732 "./util/configparser.y" { OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4577,11 +4579,11 @@ yyreduce: else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4581 "util/configparser.c" +#line 4583 "util/configparser.c" break; case 404: -#line 1739 "./util/configparser.y" +#line 1741 "./util/configparser.y" { OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4590,11 +4592,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4594 "util/configparser.c" +#line 4596 "util/configparser.c" break; case 405: -#line 1749 "./util/configparser.y" +#line 1751 "./util/configparser.y" { OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4603,11 +4605,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4607 "util/configparser.c" +#line 4609 "util/configparser.c" break; case 406: -#line 1759 "./util/configparser.y" +#line 1761 "./util/configparser.y" { OUTYY(("P(server_aggressive_nsec:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4617,11 +4619,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4621 "util/configparser.c" +#line 4623 "util/configparser.c" break; case 407: -#line 1770 "./util/configparser.y" +#line 1772 "./util/configparser.y" { OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4629,11 +4631,11 @@ yyreduce: else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4633 "util/configparser.c" +#line 4635 "util/configparser.c" break; case 408: -#line 1779 "./util/configparser.y" +#line 1781 "./util/configparser.y" { OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4641,11 +4643,11 @@ yyreduce: else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4645 "util/configparser.c" +#line 4647 "util/configparser.c" break; case 409: -#line 1788 "./util/configparser.y" +#line 1790 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4653,11 +4655,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4657 "util/configparser.c" +#line 4659 "util/configparser.c" break; case 410: -#line 1797 "./util/configparser.y" +#line 1799 "./util/configparser.y" { OUTYY(("P(server_serve_expired_ttl_reset:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4665,11 +4667,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_ttl_reset = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4669 "util/configparser.c" +#line 4671 "util/configparser.c" break; case 411: -#line 1806 "./util/configparser.y" +#line 1808 "./util/configparser.y" { OUTYY(("P(server_serve_expired_reply_ttl:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4677,11 +4679,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_reply_ttl = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4681 "util/configparser.c" +#line 4683 "util/configparser.c" break; case 412: -#line 1815 "./util/configparser.y" +#line 1817 "./util/configparser.y" { OUTYY(("P(server_serve_expired_client_timeout:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4689,11 +4691,11 @@ yyreduce: else cfg_parser->cfg->serve_expired_client_timeout = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4693 "util/configparser.c" +#line 4695 "util/configparser.c" break; case 413: -#line 1824 "./util/configparser.y" +#line 1826 "./util/configparser.y" { OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4705,11 +4707,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4709 "util/configparser.c" +#line 4711 "util/configparser.c" break; case 414: -#line 1837 "./util/configparser.y" +#line 1839 "./util/configparser.y" { OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4721,11 +4723,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 4725 "util/configparser.c" +#line 4727 "util/configparser.c" break; case 415: -#line 1850 "./util/configparser.y" +#line 1852 "./util/configparser.y" { OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4733,21 +4735,21 @@ yyreduce: else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4737 "util/configparser.c" +#line 4739 "util/configparser.c" break; case 416: -#line 1859 "./util/configparser.y" +#line 1861 "./util/configparser.y" { OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->val_nsec3_key_iterations); cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str); } -#line 4747 "util/configparser.c" +#line 4749 "util/configparser.c" break; case 417: -#line 1866 "./util/configparser.y" +#line 1868 "./util/configparser.y" { OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4755,11 +4757,11 @@ yyreduce: else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4759 "util/configparser.c" +#line 4761 "util/configparser.c" break; case 418: -#line 1875 "./util/configparser.y" +#line 1877 "./util/configparser.y" { OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4767,11 +4769,11 @@ yyreduce: else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4771 "util/configparser.c" +#line 4773 "util/configparser.c" break; case 419: -#line 1884 "./util/configparser.y" +#line 1886 "./util/configparser.y" { OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -4779,11 +4781,11 @@ yyreduce: else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4783 "util/configparser.c" +#line 4785 "util/configparser.c" break; case 420: -#line 1893 "./util/configparser.y" +#line 1895 "./util/configparser.y" { OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4792,22 +4794,22 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4796 "util/configparser.c" +#line 4798 "util/configparser.c" break; case 421: -#line 1902 "./util/configparser.y" +#line 1904 "./util/configparser.y" { OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4807 "util/configparser.c" +#line 4809 "util/configparser.c" break; case 422: -#line 1910 "./util/configparser.y" +#line 1912 "./util/configparser.y" { OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -4819,22 +4821,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 4823 "util/configparser.c" +#line 4825 "util/configparser.c" break; case 423: -#line 1923 "./util/configparser.y" +#line 1925 "./util/configparser.y" { OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 4834 "util/configparser.c" +#line 4836 "util/configparser.c" break; case 424: -#line 1931 "./util/configparser.y" +#line 1933 "./util/configparser.y" { OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -4874,21 +4876,21 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 4878 "util/configparser.c" +#line 4880 "util/configparser.c" break; case 425: -#line 1972 "./util/configparser.y" +#line 1974 "./util/configparser.y" { OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str))) fatal_exit("out of memory adding local-data"); } -#line 4888 "util/configparser.c" +#line 4890 "util/configparser.c" break; case 426: -#line 1979 "./util/configparser.y" +#line 1981 "./util/configparser.y" { char* ptr; OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -4902,11 +4904,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 4906 "util/configparser.c" +#line 4908 "util/configparser.c" break; case 427: -#line 1994 "./util/configparser.y" +#line 1996 "./util/configparser.y" { OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4915,11 +4917,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4919 "util/configparser.c" +#line 4921 "util/configparser.c" break; case 428: -#line 2004 "./util/configparser.y" +#line 2006 "./util/configparser.y" { OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4928,41 +4930,41 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4932 "util/configparser.c" +#line 4934 "util/configparser.c" break; case 429: -#line 2014 "./util/configparser.y" +#line 2016 "./util/configparser.y" { OUTYY(("P(server_unknown_server_time_limit:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->unknown_server_time_limit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4942 "util/configparser.c" +#line 4944 "util/configparser.c" break; case 430: -#line 2021 "./util/configparser.y" +#line 2023 "./util/configparser.y" { OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 4952 "util/configparser.c" +#line 4954 "util/configparser.c" break; case 431: -#line 2028 "./util/configparser.y" +#line 2030 "./util/configparser.y" { OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dns64_prefix); cfg_parser->cfg->dns64_prefix = (yyvsp[0].str); } -#line 4962 "util/configparser.c" +#line 4964 "util/configparser.c" break; case 432: -#line 2035 "./util/configparser.y" +#line 2037 "./util/configparser.y" { OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -4970,22 +4972,22 @@ yyreduce: else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 4974 "util/configparser.c" +#line 4976 "util/configparser.c" break; case 433: -#line 2044 "./util/configparser.y" +#line 2046 "./util/configparser.y" { OUTYY(("P(dns64_ignore_aaaa:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dns64_ignore_aaaa, (yyvsp[0].str))) fatal_exit("out of memory adding dns64-ignore-aaaa"); } -#line 4985 "util/configparser.c" +#line 4987 "util/configparser.c" break; case 434: -#line 2052 "./util/configparser.y" +#line 2054 "./util/configparser.y" { char* p, *s = (yyvsp[0].str); OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str))); @@ -4998,11 +5000,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5002 "util/configparser.c" +#line 5004 "util/configparser.c" break; case 435: -#line 2066 "./util/configparser.y" +#line 2068 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5022,11 +5024,11 @@ yyreduce: } } } -#line 5026 "util/configparser.c" +#line 5028 "util/configparser.c" break; case 436: -#line 2087 "./util/configparser.y" +#line 2089 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5046,11 +5048,11 @@ yyreduce: } } } -#line 5050 "util/configparser.c" +#line 5052 "util/configparser.c" break; case 437: -#line 2108 "./util/configparser.y" +#line 2110 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions, @@ -5061,11 +5063,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5065 "util/configparser.c" +#line 5067 "util/configparser.c" break; case 438: -#line 2120 "./util/configparser.y" +#line 2122 "./util/configparser.y" { OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas, @@ -5076,11 +5078,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5080 "util/configparser.c" +#line 5082 "util/configparser.c" break; case 439: -#line 2132 "./util/configparser.y" +#line 2134 "./util/configparser.y" { OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides, @@ -5091,11 +5093,11 @@ yyreduce: free((yyvsp[0].str)); } } -#line 5095 "util/configparser.c" +#line 5097 "util/configparser.c" break; case 440: -#line 2144 "./util/configparser.y" +#line 2146 "./util/configparser.y" { OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view, @@ -5103,11 +5105,11 @@ yyreduce: yyerror("out of memory"); } } -#line 5107 "util/configparser.c" +#line 5109 "util/configparser.c" break; case 441: -#line 2153 "./util/configparser.y" +#line 2155 "./util/configparser.y" { size_t len = 0; uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str), @@ -5127,11 +5129,11 @@ yyreduce: } } } -#line 5131 "util/configparser.c" +#line 5133 "util/configparser.c" break; case 442: -#line 2174 "./util/configparser.y" +#line 2176 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5139,11 +5141,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5143 "util/configparser.c" +#line 5145 "util/configparser.c" break; case 443: -#line 2184 "./util/configparser.y" +#line 2186 "./util/configparser.y" { OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5151,33 +5153,33 @@ yyreduce: else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5155 "util/configparser.c" +#line 5157 "util/configparser.c" break; case 444: -#line 2193 "./util/configparser.y" +#line 2195 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5166 "util/configparser.c" +#line 5168 "util/configparser.c" break; case 445: -#line 2201 "./util/configparser.y" +#line 2203 "./util/configparser.y" { OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 5177 "util/configparser.c" +#line 5179 "util/configparser.c" break; case 446: -#line 2209 "./util/configparser.y" +#line 2211 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5189,11 +5191,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5193 "util/configparser.c" +#line 5195 "util/configparser.c" break; case 447: -#line 2222 "./util/configparser.y" +#line 2224 "./util/configparser.y" { OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5205,11 +5207,11 @@ yyreduce: } free((yyvsp[0].str)); } -#line 5209 "util/configparser.c" +#line 5211 "util/configparser.c" break; case 448: -#line 2235 "./util/configparser.y" +#line 2237 "./util/configparser.y" { OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5223,11 +5225,11 @@ yyreduce: "ratelimit-for-domain"); } } -#line 5227 "util/configparser.c" +#line 5229 "util/configparser.c" break; case 449: -#line 2250 "./util/configparser.y" +#line 2252 "./util/configparser.y" { OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) { @@ -5241,11 +5243,11 @@ yyreduce: "ratelimit-below-domain"); } } -#line 5245 "util/configparser.c" +#line 5247 "util/configparser.c" break; case 450: -#line 2265 "./util/configparser.y" +#line 2267 "./util/configparser.y" { OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5253,11 +5255,11 @@ yyreduce: else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5257 "util/configparser.c" +#line 5259 "util/configparser.c" break; case 451: -#line 2274 "./util/configparser.y" +#line 2276 "./util/configparser.y" { OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5265,20 +5267,20 @@ yyreduce: else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5269 "util/configparser.c" +#line 5271 "util/configparser.c" break; case 452: -#line 2283 "./util/configparser.y" +#line 2285 "./util/configparser.y" { OUTYY(("P(low-rtt option is deprecated, use fast-server-num instead)\n")); free((yyvsp[0].str)); } -#line 5278 "util/configparser.c" +#line 5280 "util/configparser.c" break; case 453: -#line 2289 "./util/configparser.y" +#line 2291 "./util/configparser.y" { OUTYY(("P(server_fast_server_num:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) <= 0) @@ -5286,11 +5288,11 @@ yyreduce: else cfg_parser->cfg->fast_server_num = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5290 "util/configparser.c" +#line 5292 "util/configparser.c" break; case 454: -#line 2298 "./util/configparser.y" +#line 2300 "./util/configparser.y" { OUTYY(("P(server_fast_server_permil:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) @@ -5298,11 +5300,11 @@ yyreduce: else cfg_parser->cfg->fast_server_permil = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5302 "util/configparser.c" +#line 5304 "util/configparser.c" break; case 455: -#line 2307 "./util/configparser.y" +#line 2309 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5311,11 +5313,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5315 "util/configparser.c" +#line 5317 "util/configparser.c" break; case 456: -#line 2317 "./util/configparser.y" +#line 2319 "./util/configparser.y" { OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5324,11 +5326,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5328 "util/configparser.c" +#line 5330 "util/configparser.c" break; case 457: -#line 2327 "./util/configparser.y" +#line 2329 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_enabled:%s)\n", (yyvsp[0].str))); @@ -5340,11 +5342,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5344 "util/configparser.c" +#line 5346 "util/configparser.c" break; case 458: -#line 2340 "./util/configparser.y" +#line 2342 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_ignore_bogus:%s)\n", (yyvsp[0].str))); @@ -5356,11 +5358,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 5360 "util/configparser.c" +#line 5362 "util/configparser.c" break; case 459: -#line 2353 "./util/configparser.y" +#line 2355 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_hook:%s)\n", (yyvsp[0].str))); @@ -5371,11 +5373,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5375 "util/configparser.c" +#line 5377 "util/configparser.c" break; case 460: -#line 2365 "./util/configparser.y" +#line 2367 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_max_ttl:%s)\n", (yyvsp[0].str))); @@ -5388,11 +5390,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5392 "util/configparser.c" +#line 5394 "util/configparser.c" break; case 461: -#line 2379 "./util/configparser.y" +#line 2381 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_whitelist:%s)\n", (yyvsp[0].str))); @@ -5403,11 +5405,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5407 "util/configparser.c" +#line 5409 "util/configparser.c" break; case 462: -#line 2391 "./util/configparser.y" +#line 2393 "./util/configparser.y" { #ifdef USE_IPSECMOD OUTYY(("P(server_ipsecmod_strict:%s)\n", (yyvsp[0].str))); @@ -5420,11 +5422,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 5424 "util/configparser.c" +#line 5426 "util/configparser.c" break; case 463: -#line 2405 "./util/configparser.y" +#line 2407 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->stubs->name) @@ -5433,31 +5435,31 @@ yyreduce: free(cfg_parser->cfg->stubs->name); cfg_parser->cfg->stubs->name = (yyvsp[0].str); } -#line 5437 "util/configparser.c" +#line 5439 "util/configparser.c" break; case 464: -#line 2415 "./util/configparser.y" +#line 2417 "./util/configparser.y" { OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5447 "util/configparser.c" +#line 5449 "util/configparser.c" break; case 465: -#line 2422 "./util/configparser.y" +#line 2424 "./util/configparser.y" { OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5457 "util/configparser.c" +#line 5459 "util/configparser.c" break; case 466: -#line 2429 "./util/configparser.y" +#line 2431 "./util/configparser.y" { OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5465,11 +5467,11 @@ yyreduce: else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5469 "util/configparser.c" +#line 5471 "util/configparser.c" break; case 467: -#line 2438 "./util/configparser.y" +#line 2440 "./util/configparser.y" { OUTYY(("P(stub-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5477,11 +5479,11 @@ yyreduce: else cfg_parser->cfg->stubs->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5481 "util/configparser.c" +#line 5483 "util/configparser.c" break; case 468: -#line 2447 "./util/configparser.y" +#line 2449 "./util/configparser.y" { OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5490,11 +5492,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5494 "util/configparser.c" +#line 5496 "util/configparser.c" break; case 469: -#line 2457 "./util/configparser.y" +#line 2459 "./util/configparser.y" { OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5503,11 +5505,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5507 "util/configparser.c" +#line 5509 "util/configparser.c" break; case 470: -#line 2467 "./util/configparser.y" +#line 2469 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->forwards->name) @@ -5516,31 +5518,31 @@ yyreduce: free(cfg_parser->cfg->forwards->name); cfg_parser->cfg->forwards->name = (yyvsp[0].str); } -#line 5520 "util/configparser.c" +#line 5522 "util/configparser.c" break; case 471: -#line 2477 "./util/configparser.y" +#line 2479 "./util/configparser.y" { OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5530 "util/configparser.c" +#line 5532 "util/configparser.c" break; case 472: -#line 2484 "./util/configparser.y" +#line 2486 "./util/configparser.y" { OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5540 "util/configparser.c" +#line 5542 "util/configparser.c" break; case 473: -#line 2491 "./util/configparser.y" +#line 2493 "./util/configparser.y" { OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5548,11 +5550,11 @@ yyreduce: else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5552 "util/configparser.c" +#line 5554 "util/configparser.c" break; case 474: -#line 2500 "./util/configparser.y" +#line 2502 "./util/configparser.y" { OUTYY(("P(forward-no-cache:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5560,11 +5562,11 @@ yyreduce: else cfg_parser->cfg->forwards->no_cache=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5564 "util/configparser.c" +#line 5566 "util/configparser.c" break; case 475: -#line 2509 "./util/configparser.y" +#line 2511 "./util/configparser.y" { OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5573,11 +5575,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5577 "util/configparser.c" +#line 5579 "util/configparser.c" break; case 476: -#line 2519 "./util/configparser.y" +#line 2521 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->auths->name) @@ -5586,52 +5588,52 @@ yyreduce: free(cfg_parser->cfg->auths->name); cfg_parser->cfg->auths->name = (yyvsp[0].str); } -#line 5590 "util/configparser.c" +#line 5592 "util/configparser.c" break; case 477: -#line 2529 "./util/configparser.y" +#line 2531 "./util/configparser.y" { OUTYY(("P(zonefile:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->auths->zonefile); cfg_parser->cfg->auths->zonefile = (yyvsp[0].str); } -#line 5600 "util/configparser.c" +#line 5602 "util/configparser.c" break; case 478: -#line 2536 "./util/configparser.y" +#line 2538 "./util/configparser.y" { OUTYY(("P(master:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->masters, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5610 "util/configparser.c" +#line 5612 "util/configparser.c" break; case 479: -#line 2543 "./util/configparser.y" +#line 2545 "./util/configparser.y" { OUTYY(("P(url:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->urls, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5620 "util/configparser.c" +#line 5622 "util/configparser.c" break; case 480: -#line 2550 "./util/configparser.y" +#line 2552 "./util/configparser.y" { OUTYY(("P(allow-notify:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->auths->allow_notify, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5631 "util/configparser.c" +#line 5633 "util/configparser.c" break; case 481: -#line 2558 "./util/configparser.y" +#line 2560 "./util/configparser.y" { OUTYY(("P(for-downstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5640,11 +5642,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5644 "util/configparser.c" +#line 5646 "util/configparser.c" break; case 482: -#line 2568 "./util/configparser.y" +#line 2570 "./util/configparser.y" { OUTYY(("P(for-upstream:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5653,11 +5655,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5657 "util/configparser.c" +#line 5659 "util/configparser.c" break; case 483: -#line 2578 "./util/configparser.y" +#line 2580 "./util/configparser.y" { OUTYY(("P(fallback-enabled:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5666,11 +5668,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5670 "util/configparser.c" +#line 5672 "util/configparser.c" break; case 484: -#line 2588 "./util/configparser.y" +#line 2590 "./util/configparser.y" { OUTYY(("P(name:%s)\n", (yyvsp[0].str))); if(cfg_parser->cfg->views->name) @@ -5679,11 +5681,11 @@ yyreduce: free(cfg_parser->cfg->views->name); cfg_parser->cfg->views->name = (yyvsp[0].str); } -#line 5683 "util/configparser.c" +#line 5685 "util/configparser.c" break; case 485: -#line 2598 "./util/configparser.y" +#line 2600 "./util/configparser.y" { OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 && @@ -5721,11 +5723,11 @@ yyreduce: fatal_exit("out of memory adding local-zone"); } } -#line 5725 "util/configparser.c" +#line 5727 "util/configparser.c" break; case 486: -#line 2637 "./util/configparser.y" +#line 2639 "./util/configparser.y" { OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -5734,33 +5736,33 @@ yyreduce: fatal_exit("out of memory adding per-view " "response-ip action"); } -#line 5738 "util/configparser.c" +#line 5740 "util/configparser.c" break; case 487: -#line 2647 "./util/configparser.y" +#line 2649 "./util/configparser.y" { OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert( &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 5749 "util/configparser.c" +#line 5751 "util/configparser.c" break; case 488: -#line 2655 "./util/configparser.y" +#line 2657 "./util/configparser.y" { OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) { fatal_exit("out of memory adding local-data"); } } -#line 5760 "util/configparser.c" +#line 5762 "util/configparser.c" break; case 489: -#line 2663 "./util/configparser.y" +#line 2665 "./util/configparser.y" { char* ptr; OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str))); @@ -5774,11 +5776,11 @@ yyreduce: yyerror("local-data-ptr could not be reversed"); } } -#line 5778 "util/configparser.c" +#line 5780 "util/configparser.c" break; case 490: -#line 2678 "./util/configparser.y" +#line 2680 "./util/configparser.y" { OUTYY(("P(view-first:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5786,19 +5788,19 @@ yyreduce: else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5790 "util/configparser.c" +#line 5792 "util/configparser.c" break; case 491: -#line 2687 "./util/configparser.y" +#line 2689 "./util/configparser.y" { OUTYY(("\nP(remote-control:)\n")); } -#line 5798 "util/configparser.c" +#line 5800 "util/configparser.c" break; case 502: -#line 2698 "./util/configparser.y" +#line 2700 "./util/configparser.y" { OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5807,11 +5809,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5811 "util/configparser.c" +#line 5813 "util/configparser.c" break; case 503: -#line 2708 "./util/configparser.y" +#line 2710 "./util/configparser.y" { OUTYY(("P(control_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -5819,79 +5821,79 @@ yyreduce: else cfg_parser->cfg->control_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 5823 "util/configparser.c" +#line 5825 "util/configparser.c" break; case 504: -#line 2717 "./util/configparser.y" +#line 2719 "./util/configparser.y" { OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append(&cfg_parser->cfg->control_ifs, (yyvsp[0].str))) yyerror("out of memory"); } -#line 5833 "util/configparser.c" +#line 5835 "util/configparser.c" break; case 505: -#line 2724 "./util/configparser.y" +#line 2726 "./util/configparser.y" { OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str))); cfg_parser->cfg->control_use_cert = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5843 "util/configparser.c" +#line 5845 "util/configparser.c" break; case 506: -#line 2731 "./util/configparser.y" +#line 2733 "./util/configparser.y" { OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_key_file); cfg_parser->cfg->server_key_file = (yyvsp[0].str); } -#line 5853 "util/configparser.c" +#line 5855 "util/configparser.c" break; case 507: -#line 2738 "./util/configparser.y" +#line 2740 "./util/configparser.y" { OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->server_cert_file); cfg_parser->cfg->server_cert_file = (yyvsp[0].str); } -#line 5863 "util/configparser.c" +#line 5865 "util/configparser.c" break; case 508: -#line 2745 "./util/configparser.y" +#line 2747 "./util/configparser.y" { OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_key_file); cfg_parser->cfg->control_key_file = (yyvsp[0].str); } -#line 5873 "util/configparser.c" +#line 5875 "util/configparser.c" break; case 509: -#line 2752 "./util/configparser.y" +#line 2754 "./util/configparser.y" { OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->control_cert_file); cfg_parser->cfg->control_cert_file = (yyvsp[0].str); } -#line 5883 "util/configparser.c" +#line 5885 "util/configparser.c" break; case 510: -#line 2759 "./util/configparser.y" +#line 2761 "./util/configparser.y" { OUTYY(("\nP(dnstap:)\n")); } -#line 5891 "util/configparser.c" +#line 5893 "util/configparser.c" break; case 532: -#line 2779 "./util/configparser.y" +#line 2781 "./util/configparser.y" { OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5899,11 +5901,11 @@ yyreduce: else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5903 "util/configparser.c" +#line 5905 "util/configparser.c" break; case 533: -#line 2788 "./util/configparser.y" +#line 2790 "./util/configparser.y" { OUTYY(("P(dt_dnstap_bidirectional:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5912,31 +5914,31 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5916 "util/configparser.c" +#line 5918 "util/configparser.c" break; case 534: -#line 2798 "./util/configparser.y" +#line 2800 "./util/configparser.y" { OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_socket_path); cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str); } -#line 5926 "util/configparser.c" +#line 5928 "util/configparser.c" break; case 535: -#line 2805 "./util/configparser.y" +#line 2807 "./util/configparser.y" { OUTYY(("P(dt_dnstap_ip:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_ip); cfg_parser->cfg->dnstap_ip = (yyvsp[0].str); } -#line 5936 "util/configparser.c" +#line 5938 "util/configparser.c" break; case 536: -#line 2812 "./util/configparser.y" +#line 2814 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5944,51 +5946,51 @@ yyreduce: else cfg_parser->cfg->dnstap_tls = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 5948 "util/configparser.c" +#line 5950 "util/configparser.c" break; case 537: -#line 2821 "./util/configparser.y" +#line 2823 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_server_name:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_server_name); cfg_parser->cfg->dnstap_tls_server_name = (yyvsp[0].str); } -#line 5958 "util/configparser.c" +#line 5960 "util/configparser.c" break; case 538: -#line 2828 "./util/configparser.y" +#line 2830 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_cert_bundle:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_cert_bundle); cfg_parser->cfg->dnstap_tls_cert_bundle = (yyvsp[0].str); } -#line 5968 "util/configparser.c" +#line 5970 "util/configparser.c" break; case 539: -#line 2835 "./util/configparser.y" +#line 2837 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_key_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_key_file); cfg_parser->cfg->dnstap_tls_client_key_file = (yyvsp[0].str); } -#line 5978 "util/configparser.c" +#line 5980 "util/configparser.c" break; case 540: -#line 2842 "./util/configparser.y" +#line 2844 "./util/configparser.y" { OUTYY(("P(dt_dnstap_tls_client_cert_file:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_tls_client_cert_file); cfg_parser->cfg->dnstap_tls_client_cert_file = (yyvsp[0].str); } -#line 5988 "util/configparser.c" +#line 5990 "util/configparser.c" break; case 541: -#line 2849 "./util/configparser.y" +#line 2851 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -5996,11 +5998,11 @@ yyreduce: else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6000 "util/configparser.c" +#line 6002 "util/configparser.c" break; case 542: -#line 2858 "./util/configparser.y" +#line 2860 "./util/configparser.y" { OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6008,31 +6010,31 @@ yyreduce: else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6012 "util/configparser.c" +#line 6014 "util/configparser.c" break; case 543: -#line 2867 "./util/configparser.y" +#line 2869 "./util/configparser.y" { OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_identity); cfg_parser->cfg->dnstap_identity = (yyvsp[0].str); } -#line 6022 "util/configparser.c" +#line 6024 "util/configparser.c" break; case 544: -#line 2874 "./util/configparser.y" +#line 2876 "./util/configparser.y" { OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnstap_version); cfg_parser->cfg->dnstap_version = (yyvsp[0].str); } -#line 6032 "util/configparser.c" +#line 6034 "util/configparser.c" break; case 545: -#line 2881 "./util/configparser.y" +#line 2883 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6041,11 +6043,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6045 "util/configparser.c" +#line 6047 "util/configparser.c" break; case 546: -#line 2891 "./util/configparser.y" +#line 2893 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6054,11 +6056,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6058 "util/configparser.c" +#line 6060 "util/configparser.c" break; case 547: -#line 2901 "./util/configparser.y" +#line 2903 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6067,11 +6069,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6071 "util/configparser.c" +#line 6073 "util/configparser.c" break; case 548: -#line 2911 "./util/configparser.y" +#line 2913 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6080,11 +6082,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6084 "util/configparser.c" +#line 6086 "util/configparser.c" break; case 549: -#line 2921 "./util/configparser.y" +#line 2923 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6093,11 +6095,11 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6097 "util/configparser.c" +#line 6099 "util/configparser.c" break; case 550: -#line 2931 "./util/configparser.y" +#line 2933 "./util/configparser.y" { OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6106,47 +6108,47 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6110 "util/configparser.c" +#line 6112 "util/configparser.c" break; case 551: -#line 2941 "./util/configparser.y" +#line 2943 "./util/configparser.y" { OUTYY(("\nP(python:)\n")); } -#line 6118 "util/configparser.c" +#line 6120 "util/configparser.c" break; case 555: -#line 2950 "./util/configparser.y" +#line 2952 "./util/configparser.y" { OUTYY(("P(python-script:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->python_script, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6128 "util/configparser.c" +#line 6130 "util/configparser.c" break; case 556: -#line 2956 "./util/configparser.y" +#line 2958 "./util/configparser.y" { OUTYY(("\nP(dynlib:)\n")); } -#line 6136 "util/configparser.c" +#line 6138 "util/configparser.c" break; case 560: -#line 2965 "./util/configparser.y" +#line 2967 "./util/configparser.y" { OUTYY(("P(dynlib-file:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_append_ex(&cfg_parser->cfg->dynlib_file, (yyvsp[0].str))) yyerror("out of memory"); } -#line 6146 "util/configparser.c" +#line 6148 "util/configparser.c" break; case 561: -#line 2971 "./util/configparser.y" +#line 2973 "./util/configparser.y" { OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str))); if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6155,21 +6157,21 @@ yyreduce: (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6159 "util/configparser.c" +#line 6161 "util/configparser.c" break; case 562: -#line 2981 "./util/configparser.y" +#line 2983 "./util/configparser.y" { OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->log_identity); cfg_parser->cfg->log_identity = (yyvsp[0].str); } -#line 6169 "util/configparser.c" +#line 6171 "util/configparser.c" break; case 563: -#line 2988 "./util/configparser.y" +#line 2990 "./util/configparser.y" { OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); validate_respip_action((yyvsp[0].str)); @@ -6177,30 +6179,30 @@ yyreduce: (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip"); } -#line 6181 "util/configparser.c" +#line 6183 "util/configparser.c" break; case 564: -#line 2997 "./util/configparser.y" +#line 2999 "./util/configparser.y" { OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str))); if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data, (yyvsp[-1].str), (yyvsp[0].str))) fatal_exit("out of memory adding response-ip-data"); } -#line 6192 "util/configparser.c" +#line 6194 "util/configparser.c" break; case 565: -#line 3005 "./util/configparser.y" +#line 3007 "./util/configparser.y" { OUTYY(("\nP(dnscrypt:)\n")); } -#line 6200 "util/configparser.c" +#line 6202 "util/configparser.c" break; case 578: -#line 3021 "./util/configparser.y" +#line 3023 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str))); if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0) @@ -6208,11 +6210,11 @@ yyreduce: else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0); free((yyvsp[0].str)); } -#line 6212 "util/configparser.c" +#line 6214 "util/configparser.c" break; case 579: -#line 3031 "./util/configparser.y" +#line 3033 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6220,21 +6222,21 @@ yyreduce: else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str)); free((yyvsp[0].str)); } -#line 6224 "util/configparser.c" +#line 6226 "util/configparser.c" break; case 580: -#line 3040 "./util/configparser.y" +#line 3042 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str))); free(cfg_parser->cfg->dnscrypt_provider); cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str); } -#line 6234 "util/configparser.c" +#line 6236 "util/configparser.c" break; case 581: -#line 3047 "./util/configparser.y" +#line 3049 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) @@ -6242,21 +6244,21 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert"); } -#line 6246 "util/configparser.c" +#line 6248 "util/configparser.c" break; case 582: -#line 3056 "./util/configparser.y" +#line 3058 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_provider_cert_rotated:%s)\n", (yyvsp[0].str))); if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert_rotated, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-provider-cert-rotated"); } -#line 6256 "util/configparser.c" +#line 6258 "util/configparser.c" break; case 583: -#line 3063 "./util/configparser.y" +#line 3065 "./util/configparser.y" { OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str))); if(cfg_strlist_find(cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) @@ -6264,22 +6266,22 @@ yyreduce: if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str))) fatal_exit("out of memory adding dnscrypt-secret-key"); } -#line 6268 "util/configparser.c" +#line 6270 "util/configparser.c" break; case 584: -#line 3072 "./util/configparser.y" +#line 3074 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_shared_secret_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6279 "util/configparser.c" +#line 6281 "util/configparser.c" break; case 585: -#line 3080 "./util/configparser.y" +#line 3082 "./util/configparser.y" { OUTYY(("P(dnscrypt_shared_secret_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6291,22 +6293,22 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6295 "util/configparser.c" +#line 6297 "util/configparser.c" break; case 586: -#line 3093 "./util/configparser.y" +#line 3095 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_size:%s)\n", (yyvsp[0].str))); if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->dnscrypt_nonce_cache_size)) yyerror("memory size expected"); free((yyvsp[0].str)); } -#line 6306 "util/configparser.c" +#line 6308 "util/configparser.c" break; case 587: -#line 3101 "./util/configparser.y" +#line 3103 "./util/configparser.y" { OUTYY(("P(dnscrypt_nonce_cache_slabs:%s)\n", (yyvsp[0].str))); if(atoi((yyvsp[0].str)) == 0) @@ -6318,19 +6320,19 @@ yyreduce: } free((yyvsp[0].str)); } -#line 6322 "util/configparser.c" +#line 6324 "util/configparser.c" break; case 588: -#line 3114 "./util/configparser.y" +#line 3116 "./util/configparser.y" { OUTYY(("\nP(cachedb:)\n")); } -#line 6330 "util/configparser.c" +#line 6332 "util/configparser.c" break; case 597: -#line 3125 "./util/configparser.y" +#line 3127 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(backend:%s)\n", (yyvsp[0].str))); @@ -6341,11 +6343,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6345 "util/configparser.c" +#line 6347 "util/configparser.c" break; case 598: -#line 3137 "./util/configparser.y" +#line 3139 "./util/configparser.y" { #ifdef USE_CACHEDB OUTYY(("P(secret-seed:%s)\n", (yyvsp[0].str))); @@ -6356,11 +6358,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6360 "util/configparser.c" +#line 6362 "util/configparser.c" break; case 599: -#line 3149 "./util/configparser.y" +#line 3151 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_server_host:%s)\n", (yyvsp[0].str))); @@ -6371,11 +6373,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6375 "util/configparser.c" +#line 6377 "util/configparser.c" break; case 600: -#line 3161 "./util/configparser.y" +#line 3163 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) int port; @@ -6389,11 +6391,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6393 "util/configparser.c" +#line 6395 "util/configparser.c" break; case 601: -#line 3176 "./util/configparser.y" +#line 3178 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_timeout:%s)\n", (yyvsp[0].str))); @@ -6405,11 +6407,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6409 "util/configparser.c" +#line 6411 "util/configparser.c" break; case 602: -#line 3189 "./util/configparser.y" +#line 3191 "./util/configparser.y" { #if defined(USE_CACHEDB) && defined(USE_REDIS) OUTYY(("P(redis_expire_records:%s)\n", (yyvsp[0].str))); @@ -6421,11 +6423,11 @@ yyreduce: #endif free((yyvsp[0].str)); } -#line 6425 "util/configparser.c" +#line 6427 "util/configparser.c" break; case 603: -#line 3202 "./util/configparser.y" +#line 3204 "./util/configparser.y" { OUTYY(("P(server_tcp_connection_limit:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str))); if (atoi((yyvsp[0].str)) < 0) @@ -6435,19 +6437,19 @@ yyreduce: fatal_exit("out of memory adding tcp connection limit"); } } -#line 6439 "util/configparser.c" +#line 6441 "util/configparser.c" break; case 604: -#line 3213 "./util/configparser.y" +#line 3215 "./util/configparser.y" { OUTYY(("\nP(ipset:)\n")); } -#line 6447 "util/configparser.c" +#line 6449 "util/configparser.c" break; case 609: -#line 3222 "./util/configparser.y" +#line 3224 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v4:%s)\n", (yyvsp[0].str))); @@ -6461,11 +6463,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6465 "util/configparser.c" +#line 6467 "util/configparser.c" break; case 610: -#line 3237 "./util/configparser.y" +#line 3239 "./util/configparser.y" { #ifdef USE_IPSET OUTYY(("P(name-v6:%s)\n", (yyvsp[0].str))); @@ -6479,11 +6481,11 @@ yyreduce: free((yyvsp[0].str)); #endif } -#line 6483 "util/configparser.c" +#line 6485 "util/configparser.c" break; -#line 6487 "util/configparser.c" +#line 6489 "util/configparser.c" default: break; } @@ -6715,7 +6717,7 @@ yyreturn: #endif return yyresult; } -#line 3251 "./util/configparser.y" +#line 3253 "./util/configparser.y" /* parse helper routines could be here */ diff --git a/util/configparser.y b/util/configparser.y index 52ec8251c..e6e26a537 100644 --- a/util/configparser.y +++ b/util/configparser.y @@ -1121,12 +1121,14 @@ server_dlv_anchor_file: VAR_DLV_ANCHOR_FILE STRING_ARG { OUTYY(("P(server_dlv_anchor_file:%s)\n", $2)); log_warn("option dlv-anchor-file ignored: DLV is decommissioned"); + free($2); } ; server_dlv_anchor: VAR_DLV_ANCHOR STRING_ARG { OUTYY(("P(server_dlv_anchor:%s)\n", $2)); log_warn("option dlv-anchor ignored: DLV is decommissioned"); + free($2); } ; server_auto_trust_anchor_file: VAR_AUTO_TRUST_ANCHOR_FILE STRING_ARG From 022a716e5b5edc852e2aafcbb36fbcb5a8cac9de Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 6 Aug 2020 14:18:16 +0200 Subject: [PATCH 57/81] dlv removal, remove DLV reference from unused use in test case. --- testdata/val_stub_noroot.rpl | 2 -- 1 file changed, 2 deletions(-) diff --git a/testdata/val_stub_noroot.rpl b/testdata/val_stub_noroot.rpl index 4235bcc52..07113bef7 100644 --- a/testdata/val_stub_noroot.rpl +++ b/testdata/val_stub_noroot.rpl @@ -3,8 +3,6 @@ server: target-fetch-policy: "0 0 0 0 0" trust-anchor: "lp0.eu. IN DNSKEY 257 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3" val-override-date: "20100913111500" - ; the dlv anchor is completely ignored, but here to test that. - dlv-anchor: "dlv.isc.org. IN DNSKEY 257 3 5 AQPQ41chR9DEHt/aIzIFAqanbDlRflJoRs5yz1jFsoRIT7dWf0r+PeDuewdxkszNH6wnU4QL8pfKFRh5PIYVBLK3" fake-sha1: yes trust-anchor-signaling: no minimal-responses: no From f35293cabaa76b3bd980434028893078acede9fd Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 6 Aug 2020 14:23:33 +0200 Subject: [PATCH 58/81] Changelog note for #246 and #284 - Merge PR #284 and Fix #246: Remove DLV entirely from Unbound. The DLV has been decommisioned and in unbound 1.5.4, in 2015, there was advise to stop using it. The current code base does not contain DLV code any more. The use of dlv options displays a warning. --- doc/Changelog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 763bf51a6..bcc48de6e 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,9 @@ +6 August 2020: Wouter + - Merge PR #284 and Fix #246: Remove DLV entirely from Unbound. + The DLV has been decommisioned and in unbound 1.5.4, in 2015, there + was advise to stop using it. The current code base does not contain + DLV code any more. The use of dlv options displays a warning. + 5 August 2020: Wouter - contrib/aaaa-filter-iterator.patch file renewed diff content to apply cleanly to the current coderepo for the current code version. From a3f95d3358c75ec521bb11e73354d637b08bd0c2 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 10 Aug 2020 08:15:06 +0200 Subject: [PATCH 59/81] - Fix #287: doc typo: "Additionaly". --- doc/Changelog | 3 +++ doc/unbound.conf.5.in | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index bcc48de6e..4dd98012a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +10 August 2020: Wouter + - Fix #287: doc typo: "Additionaly". + 6 August 2020: Wouter - Merge PR #284 and Fix #246: Remove DLV entirely from Unbound. The DLV has been decommisioned and in unbound 1.5.4, in 2015, there diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 8eae10a62..951094ed1 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -2101,7 +2101,7 @@ even if some data have expired in terms of DNS TTL or the Redis server has cached too much data; if necessary the Redis server must be configured to limit the cache size, preferably with some kind of least-recently-used eviction policy. -Additionaly, the \fBredis\-expire\-records\fR option can be used in order to +Additionally, the \fBredis\-expire\-records\fR option can be used in order to set the relative DNS TTL of the message as timeout to the Redis records; keep in mind that some additional memory is used per key and that the expire information is stored as absolute Unix timestamps in Redis (computer time must From 31f81adadbc7992ff98f41b556e58835432bfbc1 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Mon, 10 Aug 2020 17:29:06 +0200 Subject: [PATCH 60/81] - Check for existence 'EVP_MAC_CTX_set_params' function (openssl >= 3.0.0-alpha5) --- config.h.in | 3 + configure | 8690 +---------------------------------------------- configure.ac | 2 +- util/net_help.c | 8 + 4 files changed, 100 insertions(+), 8603 deletions(-) diff --git a/config.h.in b/config.h.in index 6b106d8de..d0cb339ad 100644 --- a/config.h.in +++ b/config.h.in @@ -507,6 +507,9 @@ function. */ #undef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB +/* Define to 1 if you have the `EVP_MAC_CTX_set_params` function. */ +#undef HAVE_EVP_MAC_CTX_SET_PARAMS + /* Define to 1 if you have the `SSL_get0_peername' function. */ #undef HAVE_SSL_GET0_PEERNAME diff --git a/configure b/configure index 2510b2bfc..223ed24db 100755 --- a/configure +++ b/configure @@ -198,15 +198,7 @@ test -x / || exit 1" as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" +test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else @@ -565,8 +557,6 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -SHELL=${CONFIG_SHELL-/bin/sh} - test -n "$DJDIR" || exec 7<&0 &1 @@ -722,26 +712,6 @@ LIBOBJS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG -LT_SYS_LIBRARY_PATH -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -AWK -RANLIB -ac_ct_AR -DLLTOOL -OBJDUMP -LN_S -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -SED -LIBTOOL AR host_os host_vendor @@ -808,6 +778,7 @@ infodir docdir oldincludedir includedir +runstatedir localstatedir sharedstatedir sysconfdir @@ -843,14 +814,6 @@ enable_debug enable_flto enable_pie enable_relro_now -enable_shared -enable_static -with_pic -enable_fast_install -with_aix_soname -with_gnu_ld -with_sysroot -enable_libtool_lock enable_rpath enable_largefile enable_systemd @@ -909,7 +872,6 @@ CPPFLAGS CPP YACC YFLAGS -LT_SYS_LIBRARY_PATH PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR @@ -956,6 +918,7 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1208,6 +1171,15 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1345,7 +1317,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir + libdir localedir mandir runstatedir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1498,6 +1470,7 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1538,11 +1511,6 @@ Optional Features: benefit from ASLR, small performance penalty) --enable-relro-now Enable full relocation binding at load-time (RELRO NOW, to protect GOT and .dtor areas) - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) --disable-rpath disable hardcoded rpath (default=enabled) --disable-largefile omit support for large files --enable-systemd compile with systemd support @@ -1610,14 +1578,6 @@ Optional Packages: not exist if you are content with the builtin. --with-username=user set default user that unbound changes to (default user is unbound) - --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use - both] - --with-aix-soname=aix|svr4|both - shared library versioning (aka "SONAME") variant to - provide on AIX, [default=aix]. - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot[=DIR] Search for dependent libraries within DIR (or the - compiler's sysroot if not specified). --with-pthreads use pthreads library, or --without-pthreads to disable threading support. --with-solaris-threads use solaris native thread library. @@ -1664,8 +1624,6 @@ Some influential environment variables: YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. - LT_SYS_LIBRARY_PATH - User-defined run-time library search path. PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path @@ -2049,73 +2007,6 @@ fi } # ac_fn_c_try_link -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache @@ -2353,6 +2244,73 @@ rm -f conftest.val } # ac_fn_c_compute_int +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + # ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES # --------------------------------------------- # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR @@ -6959,7649 +6917,9 @@ if test $AR = false; then as_fn_error $? "Cannot find 'ar', please extend PATH to include it" "$LINENO" 5 fi -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4.6' -macro_revision='2.4.6' - - - - - - - - - - - - - -ltmain=$ac_aux_dir/ltmain.sh - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case $ECHO in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_SED" || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_FGREP" || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test yes = "$GCC"; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return, which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD=$ac_prog - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test yes = "$with_gnu_ld"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD=$ac_dir/$ac_prog - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM=$NM -else - lt_nm_to_check=${ac_tool_prefix}nm - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - tmp_nm=$ac_dir/$lt_tmp_nm - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the 'sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty - case $build_os in - mingw*) lt_bad_file=conftest.nm/nofile ;; - *) lt_bad_file=/dev/null ;; - esac - case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in - *$lt_bad_file* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break 2 - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break 2 - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS=$lt_save_ifs - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test no != "$lt_cv_path_NM"; then - NM=$lt_cv_path_NM -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols -headers" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test : != "$DUMPBIN"; then - NM=$DUMPBIN - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring=ABCD - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - os2*) - # The test takes a long time on OS/2. - lt_cv_sys_max_cmd_len=8192 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len" && \ - test undefined != "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test X`env echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test 17 != "$i" # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n "$lt_cv_sys_max_cmd_len"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test yes != "$GCC"; then - reload_cmds=false - fi - ;; - darwin*) - if test yes = "$GCC"; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# 'unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# that responds to the $file_magic_cmd with a given extended regex. -# If you have 'file' or equivalent on your system and you're not sure -# whether 'pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - if ( file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd* | bitrig*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -os2*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh; - # decide which one to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd=$ECHO - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -eq "$ac_status"; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test 0 -ne "$ac_status"; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test no = "$lt_cv_ar_at_file"; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - bitrig* | openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test ia64 = "$host_cpu"; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Gets list of data symbols to import. - lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" - # Adjust the below global symbol transforms to fixup imported variables. - lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" - lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" - lt_c_name_lib_hook="\ - -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ - -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" -else - # Disable hooks by default. - lt_cv_sys_global_symbol_to_import= - lt_cdecl_hook= - lt_c_name_hook= - lt_c_name_lib_hook= -fi - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n"\ -$lt_cdecl_hook\ -" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ -$lt_c_name_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" - -# Transform an extracted symbol line into symbol name with lib prefix and -# symbol address. -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ -$lt_c_name_lib_hook\ -" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ -" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ -" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function, - # D for any global variable and I for any imported variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ -" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ -" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ -" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ -" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE -/* DATA imports from DLLs on WIN32 can't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined __osf__ -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS=conftstm.$ac_objext - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest$ac_exeext; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test yes = "$pipe_works"; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case $with_sysroot in #( - yes) - if test yes = "$GCC"; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 -$as_echo "$with_sysroot" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 -$as_echo_n "checking for a working dd... " >&6; } -if ${ac_cv_path_lt_DD+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -: ${lt_DD:=$DD} -if test -z "$lt_DD"; then - ac_path_lt_DD_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in dd; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_lt_DD" || continue -if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: -fi - $ac_path_lt_DD_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_lt_DD"; then - : - fi -else - ac_cv_path_lt_DD=$lt_DD -fi - -rm -f conftest.i conftest2.i conftest.out -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 -$as_echo "$ac_cv_path_lt_DD" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 -$as_echo_n "checking how to truncate binary pipes... " >&6; } -if ${lt_cv_truncate_bin+:} false; then : - $as_echo_n "(cached) " >&6 -else - printf 0123456789abcdef0123456789abcdef >conftest.i -cat conftest.i conftest.i >conftest2.i -lt_cv_truncate_bin= -if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then - cmp -s conftest.i conftest.out \ - && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" -fi -rm -f conftest.i conftest2.i conftest.out -test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 -$as_echo "$lt_cv_truncate_bin" >&6; } - - - - - - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test no = "$enable_libtool_lock" || enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out what ABI is being produced by ac_compile, and set mode - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE=32 - ;; - *ELF-64*) - HPUX_IA64_MODE=64 - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test yes = "$lt_cv_prog_gnu_ld"; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -mips64*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - emul=elf - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - emul="${emul}32" - ;; - *64-bit*) - emul="${emul}64" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *MSB*) - emul="${emul}btsmip" - ;; - *LSB*) - emul="${emul}ltsmip" - ;; - esac - case `/usr/bin/file conftest.$ac_objext` in - *N32*) - emul="${emul}n32" - ;; - esac - LD="${LD-ld} -m $emul" - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. Note that the listed cases only cover the - # situations where additional linker options are needed (such as when - # doing 32-bit compilation for a host where ld defaults to 64-bit, or - # vice versa); the common cases where no linker options are needed do - # not appear in the list. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - case `/usr/bin/file conftest.o` in - *x86-64*) - LD="${LD-ld} -m elf32_x86_64" - ;; - *) - LD="${LD-ld} -m elf_i386" - ;; - esac - ;; - powerpc64le-*linux*) - LD="${LD-ld} -m elf32lppclinux" - ;; - powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - powerpcle-*linux*) - LD="${LD-ld} -m elf64lppc" - ;; - powerpc-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test yes != "$lt_cv_cc_needs_belf"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS=$SAVE_CFLAGS - fi - ;; -*-*solaris*) - # Find out what ABI is being produced by ac_compile, and set linker - # options accordingly. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) - case $host in - i?86-*-solaris*|x86_64-*-solaris*) - LD="${LD-ld} -m elf_x86_64" - ;; - sparc*-*-solaris*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - # GNU ld 2.21 introduced _sol2 emulations. Use them if available. - if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then - LD=${LD-ld}_sol2 - fi - ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks=$enable_libtool_lock - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test yes != "$lt_cv_path_mainfest_tool"; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "$LT_MULTI_MODULE"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - # If there is a non-empty error log, and "single_module" - # appears in it, assume the flag caused a linker warning - if test -s conftest.err && $GREP single_module conftest.err; then - cat conftest.err >&5 - # Otherwise, if the output was created with a 0 exit code from - # the compiler, it worked. - elif test -f libconftest.dylib && test 0 = "$_lt_result"; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -s conftest.err && $GREP force_load conftest.err; then - cat conftest.err >&5 - elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - 10.[012][,.]*) - _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test yes = "$lt_cv_apple_cc_single_mod"; then - _lt_dar_single_mod='$single_module' - fi - if test yes = "$lt_cv_ld_exported_symbols_list"; then - _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' - fi - if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - - - - -# Set options - - - - enable_dlopen=no - - - enable_win32_dll=no - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; lt_p=${PACKAGE-default} - case $withval in - yes|no) pic_mode=$withval ;; - *) - pic_mode=default - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for lt_pkg in $withval; do - IFS=$lt_save_ifs - if test "X$lt_pkg" = "X$lt_p"; then - pic_mode=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - pic_mode=default -fi - - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, - for pkg in $enableval; do - IFS=$lt_save_ifs - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS=$lt_save_ifs - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - shared_archive_member_spec= -case $host,$enable_shared in -power*-*-aix[5-9]*,yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 -$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } - -# Check whether --with-aix-soname was given. -if test "${with_aix_soname+set}" = set; then : - withval=$with_aix_soname; case $withval in - aix|svr4|both) - ;; - *) - as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 - ;; - esac - lt_cv_with_aix_soname=$with_aix_soname -else - if ${lt_cv_with_aix_soname+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_with_aix_soname=aix -fi - - with_aix_soname=$lt_cv_with_aix_soname -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 -$as_echo "$with_aix_soname" >&6; } - if test aix != "$with_aix_soname"; then - # For the AIX way of multilib, we name the shared archive member - # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', - # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. - # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, - # the AIX toolchain works better with OBJECT_MODE set (default 32). - if test 64 = "${OBJECT_MODE-32}"; then - shared_archive_member_spec=shr_64 - else - shared_archive_member_spec=shr - fi - fi - ;; -*) - with_aix_soname=aix - ;; -esac - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS=$ltmain - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a '.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld=$lt_cv_prog_gnu_ld - -old_CC=$CC -old_CFLAGS=$CFLAGS - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -func_cc_basename $compiler -cc_basename=$func_cc_basename_result - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/${ac_tool_prefix}file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD=$MAGIC_CMD - lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS=$lt_save_ifs - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/file"; then - lt_cv_path_MAGIC_CMD=$ac_dir/"file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD=$lt_cv_path_MAGIC_CMD - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS=$lt_save_ifs - MAGIC_CMD=$lt_save_MAGIC_CMD - ;; -esac -fi - -MAGIC_CMD=$lt_cv_path_MAGIC_CMD -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC=$CC -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test yes = "$GCC"; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test yes = "$GCC"; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - lt_prog_compiler_pic='-fPIC' - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the '-m68020' flag to GCC prevents building anything better, - # like '-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - if test -n "$lt_prog_compiler_pic"; then - lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" - fi - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test ia64 = "$host_cpu"; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - case $cc_basename in - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - case $host_os in - os2*) - lt_prog_compiler_static='$wl-static' - ;; - esac - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='$wl-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - case $cc_basename in - # old Intel for x86_64, which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ F* | *Sun*Fortran*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Qoption ld ' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - *Intel*\ [CF]*Compiler*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - *Portland\ Group*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms that do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_pic_works"; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test yes = "$lt_cv_prog_compiler_static_works"; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links=nottested -if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test no = "$hard_links"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ' (' and ')$', so one must not match beginning or - # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', - # as well as any symbol that contains 'd'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test yes != "$GCC"; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd* | bitrig*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test yes = "$with_gnu_ld"; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test yes = "$lt_use_gnu_ld_interface"; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='$wl' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - export_dynamic_flag_spec='$wl--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test ia64 != "$host_cpu"; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='$wl--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file, use it as - # is; otherwise, prepend EXPORTS... - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test linux-dietlibc = "$host_os"; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test no = "$tmp_diet" - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - nagfor*) # NAGFOR 5.3 - tmp_sharedflag='-Wl,-shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - tcc*) - export_dynamic_flag_spec='-rdynamic' - ;; - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test yes = "$supports_anon_versioning"; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test no = "$ld_shlibs"; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test ia64 = "$host_cpu"; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag= - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to GNU nm, but means don't demangle to AIX nm. - # Without the "-l" option, or with the "-B" option, AIX nm treats - # weak defined symbols like other global defined symbols, whereas - # GNU nm marks them as "W". - # While the 'weak' keyword is ignored in the Export File, we need - # it in the Import File for the 'aix-soname' feature, so we have - # to replace the "-B" option with "-P" for AIX nm. - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # have runtime linking enabled, and use it for executables. - # For shared libraries, we enable/disable runtime linking - # depending on the kind of the shared library created - - # when "with_aix_soname,aix_use_runtimelinking" is: - # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables - # "aix,yes" lib.so shared, rtl:yes, for executables - # lib.a static archive - # "both,no" lib.so.V(shr.o) shared, rtl:yes - # lib.a(lib.so.V) shared, rtl:no, for executables - # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a(lib.so.V) shared, rtl:no - # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables - # lib.a static archive - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then - aix_use_runtimelinking=yes - break - fi - done - if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then - # With aix-soname=svr4, we create the lib.so.V shared archives only, - # so we don't have lib.a shared libs to link our executables. - # We have to force runtime linking in this case. - aix_use_runtimelinking=yes - LDFLAGS="$LDFLAGS -Wl,-brtl" - fi - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='$wl-f,' - case $with_aix_soname,$aix_use_runtimelinking in - aix,*) ;; # traditional, no import file - svr4,* | *,yes) # use import file - # The Import File defines what to hardcode. - hardcode_direct=no - hardcode_direct_absolute=no - ;; - esac - - if test yes = "$GCC"; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`$CC -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test yes = "$aix_use_runtimelinking"; then - shared_flag="$shared_flag "'$wl-G' - fi - # Need to ensure runtime linking is disabled for the traditional - # shared library, or the linker may eventually find shared libraries - # /with/ Import File - we do not want to mix them. - shared_flag_aix='-shared' - shared_flag_svr4='-shared $wl-G' - else - # not using gcc - if test ia64 = "$host_cpu"; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test yes = "$aix_use_runtimelinking"; then - shared_flag='$wl-G' - else - shared_flag='$wl-bM:SRE' - fi - shared_flag_aix='$wl-bM:SRE' - shared_flag_svr4='$wl-G' - fi - fi - - export_dynamic_flag_spec='$wl-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag - else - if test ia64 = "$host_cpu"; then - hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test set = "${lt_cv_aix_libpath+set}"; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=/usr/lib:/lib - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' $wl-bernotok' - allow_undefined_flag=' $wl-berok' - if test yes = "$with_gnu_ld"; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' - # -brtl affects multiple linker settings, -berok does not and is overridden later - compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' - if test svr4 != "$with_aix_soname"; then - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' - fi - if test aix != "$with_aix_soname"; then - archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' - else - # used by -dlpreopen to get the symbols - archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' - fi - archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' - archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then - cp "$export_symbols" "$output_objdir/$soname.def"; - echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; - else - $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile=$lt_outputfile.exe - lt_tool_outputfile=$lt_tool_outputfile.exe - ;; - esac~ - if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=.dll - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test yes = "$lt_cv_ld_force_load"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag=$_lt_dar_allow_undefined - case $cc_basename in - ifort*|nagfor*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test yes = "$_lt_dar_can_shared"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" - archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" - module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2.*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test yes = "$GCC"; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='$wl-E' - ;; - - hpux10*) - if test yes,no = "$GCC,$with_gnu_ld"; then - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test yes,no = "$GCC,$with_gnu_ld"; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS=$save_LDFLAGS - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test yes = "$lt_cv_prog_compiler__b"; then - archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test no = "$with_gnu_ld"; then - hardcode_libdir_flag_spec='$wl+b $wl$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='$wl-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test yes = "$GCC"; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test yes = "$lt_cv_irix_exported_symbol"; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - linux*) - case $cc_basename in - tcc*) - # Fabrice Bellard et al's Tiny C Compiler - ld_shlibs=yes - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd* | bitrig*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - export_dynamic_flag_spec='$wl-E' - else - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='$wl-rpath,$libdir' - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - shrext_cmds=.dll - archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ - $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ - $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ - $ECHO EXPORTS >> $output_objdir/$libname.def~ - prefix_cmds="$SED"~ - if test EXPORTS = "`$SED 1q $export_symbols`"; then - prefix_cmds="$prefix_cmds -e 1d"; - fi~ - prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ - cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ - $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ - emximp -o $lib $output_objdir/$libname.def' - old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' - enable_shared_with_static_runtimes=yes - ;; - - osf3*) - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test yes = "$GCC"; then - allow_undefined_flag=' $wl-expect_unresolved $wl\*' - archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' - hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test yes = "$GCC"; then - wlarc='$wl' - archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='$wl' - archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands '-z linker_flag'. GCC discards it without '$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test yes = "$GCC"; then - whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test sequent = "$host_vendor"; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='$wl-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We CANNOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='$wl-z,text' - allow_undefined_flag='$wl-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='$wl-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='$wl-Bexport' - runpath_var='LD_RUN_PATH' - - if test yes = "$GCC"; then - archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test sni = "$host_vendor"; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='$wl-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test no = "$ld_shlibs" && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test yes,yes = "$GCC,$enable_shared"; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test yes = "$GCC"; then - case $host_os in - darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; - *) lt_awk_arg='/^libraries:/' ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; - *) lt_sed_strip_eq='s|=/|/|g' ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary... - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - # ...but if some path component already ends with the multilib dir we assume - # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). - case "$lt_multi_os_dir; $lt_search_path_spec " in - "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) - lt_multi_os_dir= - ;; - esac - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" - elif test -n "$lt_multi_os_dir"; then - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS = " "; FS = "/|\n";} { - lt_foo = ""; - lt_count = 0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo = "/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's|/\([A-Za-z]:\)|\1|g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=.so -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - - - -case $host_os in -aix3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='$libname$release$shared_ext$major' - ;; - -aix[4-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test ia64 = "$host_cpu"; then - # AIX 5 supports IA64 - library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line '#! .'. This would cause the generated library to - # depend on '.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # Using Import Files as archive members, it is possible to support - # filename-based versioning of shared library archives on AIX. While - # this would work for both with and without runtime linking, it will - # prevent static linking of such archives. So we do filename-based - # shared library versioning with .so extension only, which is used - # when both runtime linking and shared linking is enabled. - # Unfortunately, runtime linking may impact performance, so we do - # not want this to be the default eventually. Also, we use the - # versioned .so libs for executables only if there is the -brtl - # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. - # To allow for filename-based versioning support, we need to create - # libNAME.so.V as an archive file, containing: - # *) an Import File, referring to the versioned filename of the - # archive as well as the shared archive member, telling the - # bitwidth (32 or 64) of that shared object, and providing the - # list of exported symbols of that shared object, eventually - # decorated with the 'weak' keyword - # *) the shared object with the F_LOADONLY flag set, to really avoid - # it being seen by the linker. - # At run time we better use the real file rather than another symlink, - # but for link time we create the symlink libNAME.so -> libNAME.so.V - - case $with_aix_soname,$aix_use_runtimelinking in - # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - aix,yes) # traditional libtool - dynamic_linker='AIX unversionable lib.so' - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - aix,no) # traditional AIX only - dynamic_linker='AIX lib.a(lib.so.V)' - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - ;; - svr4,*) # full svr4 only - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,yes) # both, prefer svr4 - dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" - library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' - # unpreferred sharedlib libNAME.a needs extra handling - postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' - postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' - # We do not specify a path in Import Files, so LIBPATH fires. - shlibpath_overrides_runpath=yes - ;; - *,no) # both, prefer aix - dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" - library_names_spec='$libname$release.a $libname.a' - soname_spec='$libname$release$shared_ext$major' - # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling - postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' - postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' - ;; - esac - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='$libname$shared_ext' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' - library_names_spec='$libname.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec=$LIB - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' - soname_spec='$libname$release$major$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[23].*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2.*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -haiku*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=no - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - if test 32 = "$HPUX_IA64_MODE"; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - sys_lib_dlsearch_path_spec=/usr/lib/hpux32 - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - sys_lib_dlsearch_path_spec=/usr/lib/hpux64 - fi - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test yes = "$lt_cv_prog_gnu_ld"; then - version_type=linux # correct to gnu/linux during the next big refactor - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" - sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -linux*android*) - version_type=none # Android doesn't support versioned libraries. - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext' - soname_spec='$libname$release$shared_ext' - finish_cmds= - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - dynamic_linker='Android linker' - # Don't embed -rpath directories since the linker doesn't support them. - hardcode_libdir_flag_spec='-L$libdir' - ;; - -# This must be glibc/ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - - # Ideally, we could use ldconfig to report *all* directores which are - # searched for libraries, however this is still not possible. Aside from not - # being certain /sbin/ldconfig is available, command - # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, - # even though it is searched at run-time. Try to do the best guess by - # appending ld.so.conf contents (and includes) to the search path. - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd* | bitrig*) - version_type=sunos - sys_lib_dlsearch_path_spec=/usr/lib - need_lib_prefix=no - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then - need_version=no - else - need_version=yes - fi - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -os2*) - libname_spec='$name' - version_type=windows - shrext_cmds=.dll - need_version=no - need_lib_prefix=no - # OS/2 can only load a DLL with a base name of 8 characters or less. - soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; - v=$($ECHO $release$versuffix | tr -d .-); - n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); - $ECHO $n$v`$shared_ext' - library_names_spec='${libname}_dll.$libext' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=BEGINLIBPATH - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - postinstall_cmds='base_file=`basename \$file`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='$libname$release$shared_ext$major' - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test yes = "$with_gnu_ld"; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec; then - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' - soname_spec='$libname$shared_ext.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=sco - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test yes = "$with_gnu_ld"; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux # correct to gnu/linux during the next big refactor - need_lib_prefix=no - need_version=no - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux # correct to gnu/linux during the next big refactor - library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' - soname_spec='$libname$release$shared_ext$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test no = "$dynamic_linker" && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test yes = "$GCC"; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then - sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec -fi - -if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then - sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec -fi - -# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... -configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec - -# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code -func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" - -# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool -configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test yes = "$hardcode_automatic"; then - - # We can hardcode non-existent directories. - if test no != "$hardcode_direct" && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && - test no != "$hardcode_minus_L"; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test relink = "$hardcode_action" || - test yes = "$inherit_rpath"; then - # Fast installation is not supported - enable_fast_install=no -elif test yes = "$shlibpath_overrides_runpath" || - test no = "$enable_shared"; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test yes != "$enable_dlopen"; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen=load_add_on - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen=LoadLibrary - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - - lt_cv_dlopen=dyld - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - tpf*) - # Don't try to run any link tests for TPF. We know it's impossible - # because TPF is a cross-compiler, and we know how we open DSOs. - lt_cv_dlopen=dlopen - lt_cv_dlopen_libs= - lt_cv_dlopen_self=no - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen=shl_load -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen=dlopen -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test no = "$lt_cv_dlopen"; then - enable_dlopen=no - else - enable_dlopen=yes - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS=$CPPFLAGS - test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS=$LDFLAGS - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS=$LIBS - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test yes = "$lt_cv_dlopen_self"; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test yes = "$cross_compiling"; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisibility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS=$save_CPPFLAGS - LDFLAGS=$save_LDFLAGS - LIBS=$save_LIBS - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP"; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report what library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test no = "$can_build_shared" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test yes = "$enable_shared" && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test ia64 != "$host_cpu"; then - case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in - yes,aix,yes) ;; # shared object as lib.so file only - yes,svr4,*) ;; # shared object as lib.so archive member only - yes,*) enable_static=no ;; # shared object in lib.a archive as well - esac - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test yes = "$enable_shared" || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC=$lt_save_CC - - - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: +AC_PROG_LIBTOOL @@ -15675,7 +7993,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15721,7 +8039,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15745,7 +8063,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15790,7 +8108,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -15814,7 +8132,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -18341,7 +10659,7 @@ fi done -for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback +for ac_func in OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback EVP_MAC_CTX_set_params do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" @@ -22215,7 +14533,6 @@ gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' -AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF @@ -22319,293 +14636,6 @@ _ASBOX _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' -configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in SHELL \ -ECHO \ -PATH_SEPARATOR \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -OBJDUMP \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -DLLTOOL \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_import \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -lt_cv_nm_interface \ -nm_file_list_spec \ -lt_cv_truncate_bin \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -configure_time_dlsearch_path \ -configure_time_lt_sys_library_path; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' - -# See if we are running on zsh, and set the options that allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - RM='$RM' - ofile='$ofile' - - - - _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 @@ -22614,7 +14644,6 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 for ac_config_target in $ac_config_targets do case $ac_config_target in - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "disable-rpath") CONFIG_COMMANDS="$CONFIG_COMMANDS disable-rpath" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/example.conf") CONFIG_FILES="$CONFIG_FILES doc/example.conf" ;; @@ -23183,549 +15212,6 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} case $ac_file$ac_mode in - "libtool":C) - - # See if we are running on zsh, and set the options that allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}"; then - setopt NO_GLOB_SUBST - fi - - cfgfile=${ofile}T - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL -# Generated automatically by $as_me ($PACKAGE) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. - -# Provide generalized library-building support services. -# Written by Gordon Matzigkeit, 1996 - -# Copyright (C) 2014 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program or library that is built -# using GNU Libtool, you may include this file under the same -# distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# The names of the tagged configurations supported by this script. -available_tags='' - -# Configured defaults for sys_lib_dlsearch_path munging. -: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} - -# ### BEGIN LIBTOOL CONFIG - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shared archive member basename,for filename based shared library versioning on AIX. -shared_archive_member_spec=$shared_archive_member_spec - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The PATH separator for the build system. -PATH_SEPARATOR=$lt_PATH_SEPARATOR - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# An object symbol dumper. -OBJDUMP=$lt_OBJDUMP - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm into a list of symbols to manually relocate. -global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# The name lister interface. -nm_interface=$lt_lt_cv_nm_interface - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and where our libraries should be installed. -lt_sysroot=$lt_sysroot - -# Command to truncate a binary pipe. -lt_truncate_bin=$lt_lt_cv_truncate_bin - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Detected run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path - -# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. -configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \$shlibpath_var if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# ### END LIBTOOL CONFIG - -_LT_EOF - - cat <<'_LT_EOF' >> "$cfgfile" - -# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE - -# func_munge_path_list VARIABLE PATH -# ----------------------------------- -# VARIABLE is name of variable containing _space_ separated list of -# directories to be munged by the contents of PATH, which is string -# having a format: -# "DIR[:DIR]:" -# string "DIR[ DIR]" will be prepended to VARIABLE -# ":DIR[:DIR]" -# string "DIR[ DIR]" will be appended to VARIABLE -# "DIRP[:DIRP]::[DIRA:]DIRA" -# string "DIRP[ DIRP]" will be prepended to VARIABLE and string -# "DIRA[ DIRA]" will be appended to VARIABLE -# "DIR[:DIR]" -# VARIABLE will be replaced by "DIR[ DIR]" -func_munge_path_list () -{ - case x$2 in - x) - ;; - *:) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" - ;; - x:*) - eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" - ;; - *::*) - eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" - eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" - ;; - *) - eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" - ;; - esac -} - - -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -func_cc_basename () -{ - for cc_temp in $*""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac - done - func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -} - - -# ### END FUNCTIONS SHARED WITH CONFIGURE - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test set != "${COLLECT_NAMES+set}"; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain=$ac_aux_dir/ltmain.sh - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - ;; "disable-rpath":C) sed < libtool > libtool-2 \ 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_RPATH_SED__ "/' diff --git a/configure.ac b/configure.ac index 59a075086..e488ae488 100644 --- a/configure.ac +++ b/configure.ac @@ -852,7 +852,7 @@ else AC_MSG_RESULT([no]) fi AC_CHECK_HEADERS([openssl/conf.h openssl/engine.h openssl/bn.h openssl/dh.h openssl/dsa.h openssl/rsa.h openssl/core_names.h],,, [AC_INCLUDES_DEFAULT]) -AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback]) +AC_CHECK_FUNCS([OPENSSL_config EVP_sha1 EVP_sha256 EVP_sha512 FIPS_mode EVP_MD_CTX_new OpenSSL_add_all_digests OPENSSL_init_crypto EVP_cleanup ENGINE_cleanup ERR_load_crypto_strings CRYPTO_cleanup_all_ex_data ERR_free_strings RAND_cleanup DSA_SIG_set0 EVP_dss1 EVP_DigestVerify EVP_aes_256_cbc EVP_EncryptInit_ex HMAC_Init_ex CRYPTO_THREADID_set_callback EVP_MAC_CTX_set_params]) # these check_funcs need -lssl BAKLIBS="$LIBS" diff --git a/util/net_help.c b/util/net_help.c index ce1bc0c15..4d985b66d 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -1478,7 +1478,11 @@ int tls_session_ticket_key_cb(SSL *ATTR_UNUSED(sslctx), unsigned char* key_name, params[1] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, "sha256", 0); params[2] = OSSL_PARAM_construct_end(); +#ifdef HAVE_EVP_MAC_CTX_SET_PARAMS EVP_MAC_CTX_set_params(hmac_ctx, params); +#else + EVP_MAC_set_ctx_params(hmac_ctx, params); +#endif #elif !defined(HMAC_INIT_EX_RETURNS_VOID) if (HMAC_Init_ex(hmac_ctx, ticket_keys->hmac_key, 32, digest, NULL) != 1) { verbose(VERB_CLIENT, "HMAC_Init_ex failed"); @@ -1509,7 +1513,11 @@ int tls_session_ticket_key_cb(SSL *ATTR_UNUSED(sslctx), unsigned char* key_name, params[1] = OSSL_PARAM_construct_utf8_string(OSSL_MAC_PARAM_DIGEST, "sha256", 0); params[2] = OSSL_PARAM_construct_end(); +#ifdef HAVE_EVP_MAC_CTX_SET_PARAMS EVP_MAC_CTX_set_params(hmac_ctx, params); +#else + EVP_MAC_set_ctx_params(hmac_ctx, params); +#endif #elif !defined(HMAC_INIT_EX_RETURNS_VOID) if (HMAC_Init_ex(hmac_ctx, key->hmac_key, 32, digest, NULL) != 1) { verbose(VERB_CLIENT, "HMAC_Init_ex failed"); From 59a66601f0aa7915ceaab4fd36b92a6ea943980c Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Mon, 10 Aug 2020 17:35:18 +0200 Subject: [PATCH 61/81] Add changlog entry for PR #277. --- doc/Changelog | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 4dd98012a..346555b00 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +10 August 2020: Ralph + - Merge (modified) PR #277, use EVP_MAC_CTX_set_params if available, + by Vítězslav Čížek. + 10 August 2020: Wouter - Fix #287: doc typo: "Additionaly". From 3e86d30a508be7d368d20f790621255eedc94ad6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 10 Aug 2020 17:42:41 +0200 Subject: [PATCH 62/81] Rerun autoconf and autoheader on configure.ac, with libtool --- config.h.in | 6 +- configure | 8688 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 8604 insertions(+), 90 deletions(-) diff --git a/config.h.in b/config.h.in index d0cb339ad..2ed8a461c 100644 --- a/config.h.in +++ b/config.h.in @@ -221,6 +221,9 @@ /* Define to 1 if you have the `EVP_EncryptInit_ex' function. */ #undef HAVE_EVP_ENCRYPTINIT_EX +/* Define to 1 if you have the `EVP_MAC_CTX_set_params' function. */ +#undef HAVE_EVP_MAC_CTX_SET_PARAMS + /* Define to 1 if you have the `EVP_MD_CTX_new' function. */ #undef HAVE_EVP_MD_CTX_NEW @@ -507,9 +510,6 @@ function. */ #undef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB -/* Define to 1 if you have the `EVP_MAC_CTX_set_params` function. */ -#undef HAVE_EVP_MAC_CTX_SET_PARAMS - /* Define to 1 if you have the `SSL_get0_peername' function. */ #undef HAVE_SSL_GET0_PEERNAME diff --git a/configure b/configure index 223ed24db..245b44380 100755 --- a/configure +++ b/configure @@ -198,7 +198,15 @@ test -x / || exit 1" as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" +test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else @@ -557,6 +565,8 @@ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +SHELL=${CONFIG_SHELL-/bin/sh} + test -n "$DJDIR" || exec 7<&0 &1 @@ -712,6 +722,26 @@ LIBOBJS PKG_CONFIG_LIBDIR PKG_CONFIG_PATH PKG_CONFIG +LT_SYS_LIBRARY_PATH +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +AWK +RANLIB +ac_ct_AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +SED +LIBTOOL AR host_os host_vendor @@ -778,7 +808,6 @@ infodir docdir oldincludedir includedir -runstatedir localstatedir sharedstatedir sysconfdir @@ -814,6 +843,14 @@ enable_debug enable_flto enable_pie enable_relro_now +enable_shared +enable_static +with_pic +enable_fast_install +with_aix_soname +with_gnu_ld +with_sysroot +enable_libtool_lock enable_rpath enable_largefile enable_systemd @@ -872,6 +909,7 @@ CPPFLAGS CPP YACC YFLAGS +LT_SYS_LIBRARY_PATH PKG_CONFIG PKG_CONFIG_PATH PKG_CONFIG_LIBDIR @@ -918,7 +956,6 @@ datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' @@ -1171,15 +1208,6 @@ do | -silent | --silent | --silen | --sile | --sil) silent=yes ;; - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ @@ -1317,7 +1345,7 @@ fi for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir + libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. @@ -1470,7 +1498,6 @@ Fine tuning of the installation directories: --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] @@ -1511,6 +1538,11 @@ Optional Features: benefit from ASLR, small performance penalty) --enable-relro-now Enable full relocation binding at load-time (RELRO NOW, to protect GOT and .dtor areas) + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) --disable-rpath disable hardcoded rpath (default=enabled) --disable-largefile omit support for large files --enable-systemd compile with systemd support @@ -1578,6 +1610,14 @@ Optional Packages: not exist if you are content with the builtin. --with-username=user set default user that unbound changes to (default user is unbound) + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX, [default=aix]. + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot[=DIR] Search for dependent libraries within DIR (or the + compiler's sysroot if not specified). --with-pthreads use pthreads library, or --without-pthreads to disable threading support. --with-solaris-threads use solaris native thread library. @@ -1624,6 +1664,8 @@ Some influential environment variables: YFLAGS The list of arguments that will be passed by default to $YACC. This script will default YFLAGS to the empty string to avoid a default value of `-d' given by some make applications. + LT_SYS_LIBRARY_PATH + User-defined run-time library search path. PKG_CONFIG path to pkg-config utility PKG_CONFIG_PATH directories to add to pkg-config's search path @@ -2007,6 +2049,73 @@ fi } # ac_fn_c_try_link +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache @@ -2244,73 +2353,6 @@ rm -f conftest.val } # ac_fn_c_compute_int -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - # ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES # --------------------------------------------- # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR @@ -6917,9 +6959,7649 @@ if test $AR = false; then as_fn_error $? "Cannot find 'ar', please extend PATH to include it" "$LINENO" 5 fi +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.6' +macro_revision='2.4.6' + + + + + + + + + + + + + +ltmain=$ac_aux_dir/ltmain.sh + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case $ECHO in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test yes = "$GCC"; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return, which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD=$ac_prog + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test yes = "$with_gnu_ld"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD=$ac_dir/$ac_prog + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM=$NM +else + lt_nm_to_check=${ac_tool_prefix}nm + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/$lt_tmp_nm + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the 'sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty + case $build_os in + mingw*) lt_bad_file=conftest.nm/nofile ;; + *) lt_bad_file=/dev/null ;; + esac + case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in + *$lt_bad_file* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break 2 + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break 2 + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS=$lt_save_ifs + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test no != "$lt_cv_path_NM"; then + NM=$lt_cv_path_NM +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols -headers" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test : != "$DUMPBIN"; then + NM=$DUMPBIN + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring=ABCD + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len" && \ + test undefined != "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test X`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test 17 != "$i" # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n "$lt_cv_sys_max_cmd_len"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test yes != "$GCC"; then + reload_cmds=false + fi + ;; + darwin*) + if test yes = "$GCC"; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# 'unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# that responds to the $file_magic_cmd with a given extended regex. +# If you have 'file' or equivalent on your system and you're not sure +# whether 'pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd* | bitrig*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +os2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh; + # decide which one to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd=$ECHO + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -eq "$ac_status"; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test 0 -ne "$ac_status"; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test no = "$lt_cv_ar_at_file"; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + bitrig* | openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test ia64 = "$host_cpu"; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Gets list of data symbols to import. + lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" + # Adjust the below global symbol transforms to fixup imported variables. + lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" + lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" + lt_c_name_lib_hook="\ + -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ + -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" +else + # Disable hooks by default. + lt_cv_sys_global_symbol_to_import= + lt_cdecl_hook= + lt_c_name_hook= + lt_c_name_lib_hook= +fi + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n"\ +$lt_cdecl_hook\ +" -e 's/^T .* \(.*\)$/extern int \1();/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ +$lt_c_name_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" + +# Transform an extracted symbol line into symbol name with lib prefix and +# symbol address. +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ +$lt_c_name_lib_hook\ +" -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ +" -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ +" -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function, + # D for any global variable and I for any imported variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ +" /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ +" /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ +" {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ +" s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE +/* DATA imports from DLLs on WIN32 can't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined __osf__ +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS=conftstm.$ac_objext + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest$ac_exeext; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test yes = "$pipe_works"; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case $with_sysroot in #( + yes) + if test yes = "$GCC"; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 +$as_echo "$with_sysroot" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 +$as_echo_n "checking for a working dd... " >&6; } +if ${ac_cv_path_lt_DD+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +: ${lt_DD:=$DD} +if test -z "$lt_DD"; then + ac_path_lt_DD_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in dd; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_lt_DD" || continue +if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: +fi + $ac_path_lt_DD_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_lt_DD"; then + : + fi +else + ac_cv_path_lt_DD=$lt_DD +fi + +rm -f conftest.i conftest2.i conftest.out +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 +$as_echo "$ac_cv_path_lt_DD" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 +$as_echo_n "checking how to truncate binary pipes... " >&6; } +if ${lt_cv_truncate_bin+:} false; then : + $as_echo_n "(cached) " >&6 +else + printf 0123456789abcdef0123456789abcdef >conftest.i +cat conftest.i conftest.i >conftest2.i +lt_cv_truncate_bin= +if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then + cmp -s conftest.i conftest.out \ + && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" +fi +rm -f conftest.i conftest2.i conftest.out +test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 +$as_echo "$lt_cv_truncate_bin" >&6; } + + + + + + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test no = "$enable_libtool_lock" || enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out what ABI is being produced by ac_compile, and set mode + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE=32 + ;; + *ELF-64*) + HPUX_IA64_MODE=64 + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test yes = "$lt_cv_prog_gnu_ld"; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +mips64*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + emul=elf + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + emul="${emul}32" + ;; + *64-bit*) + emul="${emul}64" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *MSB*) + emul="${emul}btsmip" + ;; + *LSB*) + emul="${emul}ltsmip" + ;; + esac + case `/usr/bin/file conftest.$ac_objext` in + *N32*) + emul="${emul}n32" + ;; + esac + LD="${LD-ld} -m $emul" + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. Note that the listed cases only cover the + # situations where additional linker options are needed (such as when + # doing 32-bit compilation for a host where ld defaults to 64-bit, or + # vice versa); the common cases where no linker options are needed do + # not appear in the list. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + case `/usr/bin/file conftest.o` in + *x86-64*) + LD="${LD-ld} -m elf32_x86_64" + ;; + *) + LD="${LD-ld} -m elf_i386" + ;; + esac + ;; + powerpc64le-*linux*) + LD="${LD-ld} -m elf32lppclinux" + ;; + powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + powerpcle-*linux*) + LD="${LD-ld} -m elf64lppc" + ;; + powerpc-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test yes != "$lt_cv_cc_needs_belf"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS=$SAVE_CFLAGS + fi + ;; +*-*solaris*) + # Find out what ABI is being produced by ac_compile, and set linker + # options accordingly. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*|x86_64-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD=${LD-ld}_sol2 + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks=$enable_libtool_lock + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test yes != "$lt_cv_path_mainfest_tool"; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "$LT_MULTI_MODULE"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test 0 = "$_lt_result"; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + 10.[012][,.]*) + _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test yes = "$lt_cv_apple_cc_single_mod"; then + _lt_dar_single_mod='$single_module' + fi + if test yes = "$lt_cv_ld_exported_symbols_list"; then + _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' + fi + if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for lt_pkg in $withval; do + IFS=$lt_save_ifs + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + pic_mode=default +fi + + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, + for pkg in $enableval; do + IFS=$lt_save_ifs + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS=$lt_save_ifs + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + shared_archive_member_spec= +case $host,$enable_shared in +power*-*-aix[5-9]*,yes) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 +$as_echo_n "checking which variant of shared library versioning to provide... " >&6; } + +# Check whether --with-aix-soname was given. +if test "${with_aix_soname+set}" = set; then : + withval=$with_aix_soname; case $withval in + aix|svr4|both) + ;; + *) + as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 + ;; + esac + lt_cv_with_aix_soname=$with_aix_soname +else + if ${lt_cv_with_aix_soname+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_with_aix_soname=aix +fi + + with_aix_soname=$lt_cv_with_aix_soname +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 +$as_echo "$with_aix_soname" >&6; } + if test aix != "$with_aix_soname"; then + # For the AIX way of multilib, we name the shared archive member + # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', + # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. + # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, + # the AIX toolchain works better with OBJECT_MODE set (default 32). + if test 64 = "${OBJECT_MODE-32}"; then + shared_archive_member_spec=shr_64 + else + shared_archive_member_spec=shr + fi + fi + ;; +*) + with_aix_soname=aix + ;; +esac + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS=$ltmain + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a '.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld=$lt_cv_prog_gnu_ld + +old_CC=$CC +old_CFLAGS=$CFLAGS + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +func_cc_basename $compiler +cc_basename=$func_cc_basename_result + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/${ac_tool_prefix}file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD=$MAGIC_CMD + lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS=$lt_save_ifs + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/file"; then + lt_cv_path_MAGIC_CMD=$ac_dir/"file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD=$lt_cv_path_MAGIC_CMD + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS=$lt_save_ifs + MAGIC_CMD=$lt_save_MAGIC_CMD + ;; +esac +fi + +MAGIC_CMD=$lt_cv_path_MAGIC_CMD +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC=$CC +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test yes = "$GCC"; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test yes = "$GCC"; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + lt_prog_compiler_pic='-fPIC' + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the '-m68020' flag to GCC prevents building anything better, + # like '-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test ia64 = "$host_cpu"; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + case $cc_basename in + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + case $host_os in + os2*) + lt_prog_compiler_static='$wl-static' + ;; + esac + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='$wl-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + case $cc_basename in + # old Intel for x86_64, which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms that do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_pic_works"; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test yes = "$lt_cv_prog_compiler_static_works"; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links=nottested +if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test no = "$hard_links"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ' (' and ')$', so one must not match beginning or + # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', + # as well as any symbol that contains 'd'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test yes != "$GCC"; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd* | bitrig*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test yes = "$with_gnu_ld"; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test yes = "$lt_use_gnu_ld_interface"; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='$wl' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + export_dynamic_flag_spec='$wl--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test ia64 != "$host_cpu"; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='$wl--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file, use it as + # is; otherwise, prepend EXPORTS... + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test linux-dietlibc = "$host_os"; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test no = "$tmp_diet" + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + nagfor*) # NAGFOR 5.3 + tmp_sharedflag='-Wl,-shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + tcc*) + export_dynamic_flag_spec='-rdynamic' + ;; + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test yes = "$supports_anon_versioning"; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test no = "$ld_shlibs"; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test ia64 = "$host_cpu"; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag= + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to GNU nm, but means don't demangle to AIX nm. + # Without the "-l" option, or with the "-B" option, AIX nm treats + # weak defined symbols like other global defined symbols, whereas + # GNU nm marks them as "W". + # While the 'weak' keyword is ignored in the Export File, we need + # it in the Import File for the 'aix-soname' feature, so we have + # to replace the "-B" option with "-P" for AIX nm. + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # have runtime linking enabled, and use it for executables. + # For shared libraries, we enable/disable runtime linking + # depending on the kind of the shared library created - + # when "with_aix_soname,aix_use_runtimelinking" is: + # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables + # "aix,yes" lib.so shared, rtl:yes, for executables + # lib.a static archive + # "both,no" lib.so.V(shr.o) shared, rtl:yes + # lib.a(lib.so.V) shared, rtl:no, for executables + # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a(lib.so.V) shared, rtl:no + # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables + # lib.a static archive + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then + aix_use_runtimelinking=yes + break + fi + done + if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then + # With aix-soname=svr4, we create the lib.so.V shared archives only, + # so we don't have lib.a shared libs to link our executables. + # We have to force runtime linking in this case. + aix_use_runtimelinking=yes + LDFLAGS="$LDFLAGS -Wl,-brtl" + fi + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='$wl-f,' + case $with_aix_soname,$aix_use_runtimelinking in + aix,*) ;; # traditional, no import file + svr4,* | *,yes) # use import file + # The Import File defines what to hardcode. + hardcode_direct=no + hardcode_direct_absolute=no + ;; + esac + + if test yes = "$GCC"; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`$CC -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test yes = "$aix_use_runtimelinking"; then + shared_flag="$shared_flag "'$wl-G' + fi + # Need to ensure runtime linking is disabled for the traditional + # shared library, or the linker may eventually find shared libraries + # /with/ Import File - we do not want to mix them. + shared_flag_aix='-shared' + shared_flag_svr4='-shared $wl-G' + else + # not using gcc + if test ia64 = "$host_cpu"; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test yes = "$aix_use_runtimelinking"; then + shared_flag='$wl-G' + else + shared_flag='$wl-bM:SRE' + fi + shared_flag_aix='$wl-bM:SRE' + shared_flag_svr4='$wl-G' + fi + fi + + export_dynamic_flag_spec='$wl-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag + else + if test ia64 = "$host_cpu"; then + hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test set = "${lt_cv_aix_libpath+set}"; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=/usr/lib:/lib + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' $wl-bernotok' + allow_undefined_flag=' $wl-berok' + if test yes = "$with_gnu_ld"; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' + # -brtl affects multiple linker settings, -berok does not and is overridden later + compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' + if test svr4 != "$with_aix_soname"; then + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' + fi + if test aix != "$with_aix_soname"; then + archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' + else + # used by -dlpreopen to get the symbols + archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' + fi + archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' + archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then + cp "$export_symbols" "$output_objdir/$soname.def"; + echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; + else + $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile=$lt_outputfile.exe + lt_tool_outputfile=$lt_tool_outputfile.exe + ;; + esac~ + if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=.dll + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test yes = "$lt_cv_ld_force_load"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag=$_lt_dar_allow_undefined + case $cc_basename in + ifort*|nagfor*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test yes = "$_lt_dar_can_shared"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" + archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" + module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test yes = "$GCC"; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='$wl-E' + ;; + + hpux10*) + if test yes,no = "$GCC,$with_gnu_ld"; then + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test yes,no = "$GCC,$with_gnu_ld"; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS=$save_LDFLAGS + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test yes = "$lt_cv_prog_compiler__b"; then + archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test no = "$with_gnu_ld"; then + hardcode_libdir_flag_spec='$wl+b $wl$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='$wl-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test yes = "$GCC"; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test yes = "$lt_cv_irix_exported_symbol"; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + linux*) + case $cc_basename in + tcc*) + # Fabrice Bellard et al's Tiny C Compiler + ld_shlibs=yes + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd* | bitrig*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + export_dynamic_flag_spec='$wl-E' + else + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='$wl-rpath,$libdir' + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + shrext_cmds=.dll + archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ + $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ + $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ + $ECHO EXPORTS >> $output_objdir/$libname.def~ + prefix_cmds="$SED"~ + if test EXPORTS = "`$SED 1q $export_symbols`"; then + prefix_cmds="$prefix_cmds -e 1d"; + fi~ + prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ + cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ + $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ + emximp -o $lib $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' + enable_shared_with_static_runtimes=yes + ;; + + osf3*) + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test yes = "$GCC"; then + allow_undefined_flag=' $wl-expect_unresolved $wl\*' + archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' + hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test yes = "$GCC"; then + wlarc='$wl' + archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='$wl' + archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands '-z linker_flag'. GCC discards it without '$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test yes = "$GCC"; then + whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test sequent = "$host_vendor"; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='$wl-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We CANNOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='$wl-z,text' + allow_undefined_flag='$wl-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='$wl-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='$wl-Bexport' + runpath_var='LD_RUN_PATH' + + if test yes = "$GCC"; then + archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test sni = "$host_vendor"; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='$wl-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test no = "$ld_shlibs" && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test yes,yes = "$GCC,$enable_shared"; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test yes = "$GCC"; then + case $host_os in + darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; + *) lt_awk_arg='/^libraries:/' ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; + *) lt_sed_strip_eq='s|=/|/|g' ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary... + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + # ...but if some path component already ends with the multilib dir we assume + # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). + case "$lt_multi_os_dir; $lt_search_path_spec " in + "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) + lt_multi_os_dir= + ;; + esac + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" + elif test -n "$lt_multi_os_dir"; then + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS = " "; FS = "/|\n";} { + lt_foo = ""; + lt_count = 0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo = "/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's|/\([A-Za-z]:\)|\1|g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=.so +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + + + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='$libname$release$shared_ext$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test ia64 = "$host_cpu"; then + # AIX 5 supports IA64 + library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line '#! .'. This would cause the generated library to + # depend on '.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # Using Import Files as archive members, it is possible to support + # filename-based versioning of shared library archives on AIX. While + # this would work for both with and without runtime linking, it will + # prevent static linking of such archives. So we do filename-based + # shared library versioning with .so extension only, which is used + # when both runtime linking and shared linking is enabled. + # Unfortunately, runtime linking may impact performance, so we do + # not want this to be the default eventually. Also, we use the + # versioned .so libs for executables only if there is the -brtl + # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. + # To allow for filename-based versioning support, we need to create + # libNAME.so.V as an archive file, containing: + # *) an Import File, referring to the versioned filename of the + # archive as well as the shared archive member, telling the + # bitwidth (32 or 64) of that shared object, and providing the + # list of exported symbols of that shared object, eventually + # decorated with the 'weak' keyword + # *) the shared object with the F_LOADONLY flag set, to really avoid + # it being seen by the linker. + # At run time we better use the real file rather than another symlink, + # but for link time we create the symlink libNAME.so -> libNAME.so.V + + case $with_aix_soname,$aix_use_runtimelinking in + # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + aix,yes) # traditional libtool + dynamic_linker='AIX unversionable lib.so' + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + aix,no) # traditional AIX only + dynamic_linker='AIX lib.a(lib.so.V)' + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + ;; + svr4,*) # full svr4 only + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,yes) # both, prefer svr4 + dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" + library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' + # unpreferred sharedlib libNAME.a needs extra handling + postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' + postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' + # We do not specify a path in Import Files, so LIBPATH fires. + shlibpath_overrides_runpath=yes + ;; + *,no) # both, prefer aix + dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" + library_names_spec='$libname$release.a $libname.a' + soname_spec='$libname$release$shared_ext$major' + # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling + postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' + postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' + ;; + esac + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='$libname$shared_ext' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' + library_names_spec='$libname.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec=$LIB + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' + soname_spec='$libname$release$major$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=no + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + if test 32 = "$HPUX_IA64_MODE"; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + sys_lib_dlsearch_path_spec=/usr/lib/hpux32 + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + sys_lib_dlsearch_path_spec=/usr/lib/hpux64 + fi + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test yes = "$lt_cv_prog_gnu_ld"; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" + sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +linux*android*) + version_type=none # Android doesn't support versioned libraries. + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext' + soname_spec='$libname$release$shared_ext' + finish_cmds= + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + dynamic_linker='Android linker' + # Don't embed -rpath directories since the linker doesn't support them. + hardcode_libdir_flag_spec='-L$libdir' + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Ideally, we could use ldconfig to report *all* directores which are + # searched for libraries, however this is still not possible. Aside from not + # being certain /sbin/ldconfig is available, command + # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, + # even though it is searched at run-time. Try to do the best guess by + # appending ld.so.conf contents (and includes) to the search path. + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd* | bitrig*) + version_type=sunos + sys_lib_dlsearch_path_spec=/usr/lib + need_lib_prefix=no + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then + need_version=no + else + need_version=yes + fi + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +os2*) + libname_spec='$name' + version_type=windows + shrext_cmds=.dll + need_version=no + need_lib_prefix=no + # OS/2 can only load a DLL with a base name of 8 characters or less. + soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; + v=$($ECHO $release$versuffix | tr -d .-); + n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); + $ECHO $n$v`$shared_ext' + library_names_spec='${libname}_dll.$libext' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=BEGINLIBPATH + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + postinstall_cmds='base_file=`basename \$file`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='$libname$release$shared_ext$major' + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test yes = "$with_gnu_ld"; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec; then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' + soname_spec='$libname$shared_ext.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=sco + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test yes = "$with_gnu_ld"; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' + soname_spec='$libname$release$shared_ext$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test no = "$dynamic_linker" && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test yes = "$GCC"; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then + sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec +fi + +if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then + sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec +fi + +# remember unaugmented sys_lib_dlsearch_path content for libtool script decls... +configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec + +# ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code +func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" + +# to be used as default LT_SYS_LIBRARY_PATH value in generated libtool +configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test yes = "$hardcode_automatic"; then + + # We can hardcode non-existent directories. + if test no != "$hardcode_direct" && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && + test no != "$hardcode_minus_L"; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test relink = "$hardcode_action" || + test yes = "$inherit_rpath"; then + # Fast installation is not supported + enable_fast_install=no +elif test yes = "$shlibpath_overrides_runpath" || + test no = "$enable_shared"; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test yes != "$enable_dlopen"; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen=load_add_on + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen=LoadLibrary + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + + lt_cv_dlopen=dyld + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + tpf*) + # Don't try to run any link tests for TPF. We know it's impossible + # because TPF is a cross-compiler, and we know how we open DSOs. + lt_cv_dlopen=dlopen + lt_cv_dlopen_libs= + lt_cv_dlopen_self=no + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen=shl_load +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen=dlopen +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test no = "$lt_cv_dlopen"; then + enable_dlopen=no + else + enable_dlopen=yes + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS=$CPPFLAGS + test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS=$LDFLAGS + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS=$LIBS + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test yes = "$lt_cv_dlopen_self"; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test yes = "$cross_compiling"; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisibility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS=$save_CPPFLAGS + LDFLAGS=$save_LDFLAGS + LIBS=$save_LIBS + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP"; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report what library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test no = "$can_build_shared" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test yes = "$enable_shared" && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test ia64 != "$host_cpu"; then + case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in + yes,aix,yes) ;; # shared object as lib.so file only + yes,svr4,*) ;; # shared object as lib.so archive member only + yes,*) enable_static=no ;; # shared object in lib.a archive as well + esac + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test yes = "$enable_shared" || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: -AC_PROG_LIBTOOL @@ -7993,7 +15675,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -8039,7 +15721,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -8063,7 +15745,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -8108,7 +15790,7 @@ else We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -8132,7 +15814,7 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext We can't simply define LARGE_OFF_T to be 9223372036854775807, since some C++ compilers masquerading as C compilers incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T ((((off_t) 1 << 31) << 31) - 1 + (((off_t) 1 << 31) << 31)) +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1]; @@ -14533,6 +22215,7 @@ gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' +AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF @@ -14636,6 +22319,293 @@ _ASBOX _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' +configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_import \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +lt_cv_nm_interface \ +nm_file_list_spec \ +lt_cv_truncate_bin \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +configure_time_dlsearch_path \ +configure_time_lt_sys_library_path; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' + +# See if we are running on zsh, and set the options that allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + RM='$RM' + ofile='$ofile' + + + + _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 @@ -14644,6 +22614,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 for ac_config_target in $ac_config_targets do case $ac_config_target in + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "disable-rpath") CONFIG_COMMANDS="$CONFIG_COMMANDS disable-rpath" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "doc/example.conf") CONFIG_FILES="$CONFIG_FILES doc/example.conf" ;; @@ -15212,6 +23183,549 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} case $ac_file$ac_mode in + "libtool":C) + + # See if we are running on zsh, and set the options that allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}"; then + setopt NO_GLOB_SUBST + fi + + cfgfile=${ofile}T + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL +# Generated automatically by $as_me ($PACKAGE) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. + +# Provide generalized library-building support services. +# Written by Gordon Matzigkeit, 1996 + +# Copyright (C) 2014 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program or library that is built +# using GNU Libtool, you may include this file under the same +# distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# The names of the tagged configurations supported by this script. +available_tags='' + +# Configured defaults for sys_lib_dlsearch_path munging. +: \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shared archive member basename,for filename based shared library versioning on AIX. +shared_archive_member_spec=$shared_archive_member_spec + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm into a list of symbols to manually relocate. +global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# The name lister interface. +nm_interface=$lt_lt_cv_nm_interface + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and where our libraries should be installed. +lt_sysroot=$lt_sysroot + +# Command to truncate a binary pipe. +lt_truncate_bin=$lt_lt_cv_truncate_bin + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Detected run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path + +# Explicit LT_SYS_LIBRARY_PATH set during ./configure time. +configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \$shlibpath_var if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# ### END LIBTOOL CONFIG + +_LT_EOF + + cat <<'_LT_EOF' >> "$cfgfile" + +# ### BEGIN FUNCTIONS SHARED WITH CONFIGURE + +# func_munge_path_list VARIABLE PATH +# ----------------------------------- +# VARIABLE is name of variable containing _space_ separated list of +# directories to be munged by the contents of PATH, which is string +# having a format: +# "DIR[:DIR]:" +# string "DIR[ DIR]" will be prepended to VARIABLE +# ":DIR[:DIR]" +# string "DIR[ DIR]" will be appended to VARIABLE +# "DIRP[:DIRP]::[DIRA:]DIRA" +# string "DIRP[ DIRP]" will be prepended to VARIABLE and string +# "DIRA[ DIRA]" will be appended to VARIABLE +# "DIR[:DIR]" +# VARIABLE will be replaced by "DIR[ DIR]" +func_munge_path_list () +{ + case x$2 in + x) + ;; + *:) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" + ;; + x:*) + eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" + ;; + *::*) + eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" + eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" + ;; + *) + eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" + ;; + esac +} + + +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +func_cc_basename () +{ + for cc_temp in $*""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac + done + func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +} + + +# ### END FUNCTIONS SHARED WITH CONFIGURE + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test set != "${COLLECT_NAMES+set}"; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain=$ac_aux_dir/ltmain.sh + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + ;; "disable-rpath":C) sed < libtool > libtool-2 \ 's/^hardcode_libdir_flag_spec.*$'/'hardcode_libdir_flag_spec=" -D__LIBTOOL_RPATH_SED__ "/' From b75ff25cfdfde8be471768029f38cfa818436eb6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 10 Aug 2020 17:43:19 +0200 Subject: [PATCH 63/81] Changelog note. - Rerun autoconf --- doc/Changelog | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/Changelog b/doc/Changelog index 346555b00..01f2ee3c2 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -4,6 +4,7 @@ 10 August 2020: Wouter - Fix #287: doc typo: "Additionaly". + - Rerun autoconf 6 August 2020: Wouter - Merge PR #284 and Fix #246: Remove DLV entirely from Unbound. From 8b05dcdf8c3fd4624e1847028fd03bf041b44508 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Thu, 13 Aug 2020 14:57:21 +0200 Subject: [PATCH 64/81] - Create and init edns tags data for libunbound. --- doc/Changelog | 3 +++ libunbound/context.c | 3 +++ libunbound/libunbound.c | 13 +++++++++++++ 3 files changed, 19 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 01f2ee3c2..8bc333e0d 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +13 August 2020: Ralph + - Create and init edns tags data for libunbound. + 10 August 2020: Ralph - Merge (modified) PR #277, use EVP_MAC_CTX_set_params if available, by Vítězslav Čížek. diff --git a/libunbound/context.c b/libunbound/context.c index 6d62e32b5..713259c71 100644 --- a/libunbound/context.c +++ b/libunbound/context.c @@ -50,6 +50,7 @@ #include "services/authzone.h" #include "util/data/msgreply.h" #include "util/storage/slabhash.h" +#include "util/edns.h" #include "sldns/sbuffer.h" int @@ -79,6 +80,8 @@ context_finalize(struct ub_ctx* ctx) return UB_INITFAIL; if(!auth_zones_apply_cfg(ctx->env->auth_zones, cfg, 1, &is_rpz)) return UB_INITFAIL; + if(!edns_tags_apply_cfg(ctx->env->edns_tags, cfg)) + return UB_INITFAIL; if(!slabhash_is_size(ctx->env->msg_cache, cfg->msg_cache_size, cfg->msg_cache_slabs)) { slabhash_delete(ctx->env->msg_cache); diff --git a/libunbound/libunbound.c b/libunbound/libunbound.c index 3b30419b3..af26e5546 100644 --- a/libunbound/libunbound.c +++ b/libunbound/libunbound.c @@ -58,6 +58,7 @@ #include "util/net_help.h" #include "util/tube.h" #include "util/ub_event.h" +#include "util/edns.h" #include "services/modstack.h" #include "services/localzone.h" #include "services/cache/infra.h" @@ -153,6 +154,18 @@ static struct ub_ctx* ub_ctx_create_nopipe(void) errno = ENOMEM; return NULL; } + ctx->env->edns_tags = edns_tags_create(); + if(!ctx->env->edns_tags) { + auth_zones_delete(ctx->env->auth_zones); + edns_known_options_delete(ctx->env); + config_delete(ctx->env->cfg); + free(ctx->env); + ub_randfree(ctx->seed_rnd); + free(ctx); + errno = ENOMEM; + return NULL; + } + ctx->env->alloc = &ctx->superalloc; ctx->env->worker = NULL; ctx->env->need_to_validate = 0; From e6ebabc0cc492bca4519111b11eb4864e602a5c6 Mon Sep 17 00:00:00 2001 From: Ralph Dolmans Date: Thu, 20 Aug 2020 17:54:28 +0200 Subject: [PATCH 65/81] - Fix stats double count issue (#289). --- daemon/worker.c | 11 +---------- doc/Changelog | 3 +++ 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/daemon/worker.c b/daemon/worker.c index 23e3244c5..680241fff 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1219,7 +1219,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, LDNS_QR_SET(sldns_buffer_begin(c->buffer)); LDNS_RCODE_SET(sldns_buffer_begin(c->buffer), LDNS_RCODE_FORMERR); - server_stats_insrcode(&worker->stats, c->buffer); goto send_reply; } if(worker->env.cfg->log_queries) { @@ -1237,7 +1236,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, LDNS_RCODE_REFUSED); if(worker->stats.extended) { worker->stats.qtype[qinfo.qtype]++; - server_stats_insrcode(&worker->stats, c->buffer); } goto send_reply; } @@ -1259,7 +1257,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, LDNS_RCODE_FORMERR); if(worker->stats.extended) { worker->stats.qtype[qinfo.qtype]++; - server_stats_insrcode(&worker->stats, c->buffer); } goto send_reply; } @@ -1275,7 +1272,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), sldns_buffer_read_u16_at(c->buffer, 2), &reply_edns); regional_free_all(worker->scratchpad); - server_stats_insrcode(&worker->stats, c->buffer); goto send_reply; } if(edns.edns_present) { @@ -1354,7 +1350,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, edns.udp_size = 65535; /* max size for TCP replies */ if(qinfo.qclass == LDNS_RR_CLASS_CH && answer_chaos(worker, &qinfo, &edns, repinfo, c->buffer)) { - server_stats_insrcode(&worker->stats, c->buffer); regional_free_all(worker->scratchpad); goto send_reply; } @@ -1375,7 +1370,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, comm_point_drop_reply(repinfo); return 0; } - server_stats_insrcode(&worker->stats, c->buffer); goto send_reply; } if(worker->env.auth_zones && @@ -1387,7 +1381,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, comm_point_drop_reply(repinfo); return 0; } - server_stats_insrcode(&worker->stats, c->buffer); goto send_reply; } if(worker->env.auth_zones && @@ -1403,7 +1396,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, if(LDNS_RD_WIRE(sldns_buffer_begin(c->buffer)) && acl != acl_deny_non_local && acl != acl_refuse_non_local) LDNS_RA_SET(sldns_buffer_begin(c->buffer)); - server_stats_insrcode(&worker->stats, c->buffer); goto send_reply; } @@ -1432,7 +1424,6 @@ worker_handle_request(struct comm_point* c, void* arg, int error, *(uint16_t*)(void *)sldns_buffer_begin(c->buffer), sldns_buffer_read_u16_at(c->buffer, 2), NULL); regional_free_all(worker->scratchpad); - server_stats_insrcode(&worker->stats, c->buffer); log_addr(VERB_ALGO, "refused nonrec (cache snoop) query from", &repinfo->addr, repinfo->addrlen); goto send_reply; @@ -1588,9 +1579,9 @@ send_reply_rc: if(is_expired_answer) { worker->stats.ans_expired++; } + server_stats_insrcode(&worker->stats, c->buffer); if(worker->stats.extended) { if(is_secure_answer) worker->stats.ans_secure++; - server_stats_insrcode(&worker->stats, repinfo->c->buffer); } #ifdef USE_DNSTAP if(worker->dtenv.log_client_response_messages) diff --git a/doc/Changelog b/doc/Changelog index 8bc333e0d..de643c8b1 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +20 August 2020: Ralph + - Fix stats double count issue (#289). + 13 August 2020: Ralph - Create and init edns tags data for libunbound. From 45712de9a21ef3c704aac889b88ee0867dba5650 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 24 Aug 2020 09:23:36 +0200 Subject: [PATCH 66/81] - Fix that dnstap reconnects do not spam the log with the repeated attempts. Attempts on the timer are only logged on high verbosity, if they produce a connection failure error. --- dnstap/dtstream.c | 10 ++++++++++ doc/Changelog | 5 +++++ 2 files changed, 15 insertions(+) diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index dda3ef1ff..7c8a08604 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -1873,6 +1873,11 @@ static int dtio_open_output_local(struct dt_io_thread* dtio) if(connect(dtio->fd, (struct sockaddr*)&s, (socklen_t)sizeof(s)) == -1) { char* to = dtio->socket_path; + if(dtio->reconnect_timeout > DTIO_RECONNECT_TIMEOUT_MIN && + verbosity < 4) { + dtio_close_fd(dtio); + return 0; /* no log retries on low verbosity */ + } #ifndef USE_WINSOCK log_err("dnstap io: failed to connect to \"%s\": %s", to, strerror(errno)); @@ -1916,6 +1921,11 @@ static int dtio_open_output_tcp(struct dt_io_thread* dtio) if(connect(dtio->fd, (struct sockaddr*)&addr, addrlen) == -1) { if(errno == EINPROGRESS) return 1; /* wait until connect done*/ + if(dtio->reconnect_timeout > DTIO_RECONNECT_TIMEOUT_MIN && + verbosity < 4) { + dtio_close_fd(dtio); + return 0; /* no log retries on low verbosity */ + } #ifndef USE_WINSOCK if(tcp_connect_errno_needs_log( (struct sockaddr *)&addr, addrlen)) { diff --git a/doc/Changelog b/doc/Changelog index de643c8b1..1923c17ad 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +24 August 2020: Wouter + - Fix that dnstap reconnects do not spam the log with the repeated + attempts. Attempts on the timer are only logged on high verbosity, + if they produce a connection failure error. + 20 August 2020: Ralph - Fix stats double count issue (#289). From 45d4cbaa420d2e1ce2ea2a21a9ed3d9666655bc6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 24 Aug 2020 14:55:16 +0200 Subject: [PATCH 67/81] - Fix to apply chroot to dnstap-socket-path, if chroot is enabled. --- dnstap/dnstap.c | 10 ++++++++-- dnstap/dtstream.c | 3 ++- doc/Changelog | 1 + 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/dnstap/dnstap.c b/dnstap/dnstap.c index cc5449dff..bda837876 100644 --- a/dnstap/dnstap.c +++ b/dnstap/dnstap.c @@ -134,9 +134,15 @@ dt_create(struct config_file* cfg) if(cfg->dnstap && cfg->dnstap_socket_path && cfg->dnstap_socket_path[0] && (cfg->dnstap_ip==NULL || cfg->dnstap_ip[0]==0)) { + char* p = fname_after_chroot(cfg->dnstap_socket_path, cfg, 1); + if(!p) { + log_err("malloc failure"); + return NULL; + } verbose(VERB_OPS, "attempting to connect to dnstap socket %s", - cfg->dnstap_socket_path); - check_socket_file(cfg->dnstap_socket_path); + p); + check_socket_file(p); + free(p); } env = (struct dt_env *) calloc(1, sizeof(struct dt_env)); diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 7c8a08604..63d517cb8 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -279,7 +279,8 @@ int dt_io_thread_apply_cfg(struct dt_io_thread* dtio, struct config_file *cfg) return 0; } free(dtio->socket_path); - dtio->socket_path = strdup(cfg->dnstap_socket_path); + dtio->socket_path = fname_after_chroot(cfg->dnstap_socket_path, + cfg, 1); if(!dtio->socket_path) { log_err("dnstap setup: malloc failure"); return 0; diff --git a/doc/Changelog b/doc/Changelog index 1923c17ad..37931d395 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Fix that dnstap reconnects do not spam the log with the repeated attempts. Attempts on the timer are only logged on high verbosity, if they produce a connection failure error. + - Fix to apply chroot to dnstap-socket-path, if chroot is enabled. 20 August 2020: Ralph - Fix stats double count issue (#289). From aa602fdd0c9447df95cd1f18c27a33ff964d2be1 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 24 Aug 2020 16:13:42 +0200 Subject: [PATCH 68/81] - Change configure to use EVP_sha256 instead of HMAC_Update for openssl-3.0.0. --- acx_nlnetlabs.m4 | 37 +++++++++++++++++++------------------ config.h.in | 3 --- configure | 32 ++++++++++++++++---------------- configure.ac | 2 +- doc/Changelog | 2 ++ 5 files changed, 38 insertions(+), 38 deletions(-) diff --git a/acx_nlnetlabs.m4 b/acx_nlnetlabs.m4 index 8eccc15b0..31e43d67e 100644 --- a/acx_nlnetlabs.m4 +++ b/acx_nlnetlabs.m4 @@ -2,7 +2,8 @@ # Copyright 2009, Wouter Wijngaards, NLnet Labs. # BSD licensed. # -# Version 34 +# Version 35 +# 2020-08-24 Use EVP_sha256 instead of HMAC_Update (for openssl-3.0.0). # 2016-03-21 Check -ldl -pthread for libcrypto for ldns and openssl 1.1.0. # 2016-03-21 Use HMAC_Update instead of HMAC_CTX_Init (for openssl-1.1.0). # 2016-01-04 -D_DEFAULT_SOURCE defined with -D_BSD_SOURCE for Linux glibc 2.20 @@ -673,16 +674,16 @@ AC_DEFUN([ACX_SSL_CHECKS], [ ACX_RUNTIME_PATH_ADD([$ssldir/lib]) fi - AC_MSG_CHECKING([for HMAC_Update in -lcrypto]) + AC_MSG_CHECKING([for EVP_sha256 in -lcrypto]) LIBS="$LIBS -lcrypto" LIBSSL_LIBS="$LIBSSL_LIBS -lcrypto" AC_TRY_LINK(, [ - int HMAC_Update(void); - (void)HMAC_Update(); + int EVP_sha256(void); + (void)EVP_sha256(); ], [ AC_MSG_RESULT(yes) - AC_DEFINE([HAVE_HMAC_UPDATE], 1, - [If you have HMAC_Update]) + AC_DEFINE([HAVE_EVP_SHA256], 1, + [If you have EVP_sha256]) ], [ AC_MSG_RESULT(no) # check if -lwsock32 or -lgdi32 are needed. @@ -692,11 +693,11 @@ AC_DEFUN([ACX_SSL_CHECKS], [ LIBSSL_LIBS="$LIBSSL_LIBS -lgdi32 -lws2_32" AC_MSG_CHECKING([if -lcrypto needs -lgdi32]) AC_TRY_LINK([], [ - int HMAC_Update(void); - (void)HMAC_Update(); + int EVP_sha256(void); + (void)EVP_sha256(); ],[ - AC_DEFINE([HAVE_HMAC_UPDATE], 1, - [If you have HMAC_Update]) + AC_DEFINE([HAVE_EVP_SHA256], 1, + [If you have EVP_sha256]) AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) @@ -706,11 +707,11 @@ AC_DEFUN([ACX_SSL_CHECKS], [ LIBSSL_LIBS="$LIBSSL_LIBS -ldl" AC_MSG_CHECKING([if -lcrypto needs -ldl]) AC_TRY_LINK([], [ - int HMAC_Update(void); - (void)HMAC_Update(); + int EVP_sha256(void); + (void)EVP_sha256(); ],[ - AC_DEFINE([HAVE_HMAC_UPDATE], 1, - [If you have HMAC_Update]) + AC_DEFINE([HAVE_EVP_SHA256], 1, + [If you have EVP_sha256]) AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) @@ -720,11 +721,11 @@ AC_DEFUN([ACX_SSL_CHECKS], [ LIBSSL_LIBS="$LIBSSL_LIBS -ldl -pthread" AC_MSG_CHECKING([if -lcrypto needs -ldl -pthread]) AC_TRY_LINK([], [ - int HMAC_Update(void); - (void)HMAC_Update(); + int EVP_sha256(void); + (void)EVP_sha256(); ],[ - AC_DEFINE([HAVE_HMAC_UPDATE], 1, - [If you have HMAC_Update]) + AC_DEFINE([HAVE_EVP_SHA256], 1, + [If you have EVP_sha256]) AC_MSG_RESULT(yes) ],[ AC_MSG_RESULT(no) diff --git a/config.h.in b/config.h.in index 2ed8a461c..65c258517 100644 --- a/config.h.in +++ b/config.h.in @@ -299,9 +299,6 @@ /* Define to 1 if you have the `HMAC_Init_ex' function. */ #undef HAVE_HMAC_INIT_EX -/* If you have HMAC_Update */ -#undef HAVE_HMAC_UPDATE - /* If we have htobe64 */ #undef HAVE_HTOBE64 diff --git a/configure b/configure index 245b44380..4df378a8a 100755 --- a/configure +++ b/configure @@ -17943,8 +17943,8 @@ $as_echo "found in $ssldir" >&6; } fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for HMAC_Update in -lcrypto" >&5 -$as_echo_n "checking for HMAC_Update in -lcrypto... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_sha256 in -lcrypto" >&5 +$as_echo_n "checking for EVP_sha256 in -lcrypto... " >&6; } LIBS="$LIBS -lcrypto" LIBSSL_LIBS="$LIBSSL_LIBS -lcrypto" cat confdefs.h - <<_ACEOF >conftest.$ac_ext @@ -17954,8 +17954,8 @@ int main () { - int HMAC_Update(void); - (void)HMAC_Update(); + int EVP_sha256(void); + (void)EVP_sha256(); ; return 0; @@ -17966,7 +17966,7 @@ if ac_fn_c_try_link "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } -$as_echo "#define HAVE_HMAC_UPDATE 1" >>confdefs.h +$as_echo "#define HAVE_EVP_SHA256 1" >>confdefs.h else @@ -17987,8 +17987,8 @@ int main () { - int HMAC_Update(void); - (void)HMAC_Update(); + int EVP_sha256(void); + (void)EVP_sha256(); ; return 0; @@ -17997,7 +17997,7 @@ _ACEOF if ac_fn_c_try_link "$LINENO"; then : -$as_echo "#define HAVE_HMAC_UPDATE 1" >>confdefs.h +$as_echo "#define HAVE_EVP_SHA256 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -18019,8 +18019,8 @@ int main () { - int HMAC_Update(void); - (void)HMAC_Update(); + int EVP_sha256(void); + (void)EVP_sha256(); ; return 0; @@ -18029,7 +18029,7 @@ _ACEOF if ac_fn_c_try_link "$LINENO"; then : -$as_echo "#define HAVE_HMAC_UPDATE 1" >>confdefs.h +$as_echo "#define HAVE_EVP_SHA256 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -18051,8 +18051,8 @@ int main () { - int HMAC_Update(void); - (void)HMAC_Update(); + int EVP_sha256(void); + (void)EVP_sha256(); ; return 0; @@ -18061,7 +18061,7 @@ _ACEOF if ac_fn_c_try_link "$LINENO"; then : -$as_echo "#define HAVE_HMAC_UPDATE 1" >>confdefs.h +$as_echo "#define HAVE_EVP_SHA256 1" >>confdefs.h { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } @@ -18246,11 +18246,11 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext #ifdef __cplusplus extern "C" #endif -char HMAC_Update (); +char EVP_sha256 (); int main () { -return HMAC_Update (); +return EVP_sha256 (); ; return 0; } diff --git a/configure.ac b/configure.ac index e488ae488..aa38a56d2 100644 --- a/configure.ac +++ b/configure.ac @@ -832,7 +832,7 @@ AC_SUBST(PC_CRYPTO_DEPENDENCY) BAKLIBS="$LIBS" LIBS="-lssl $LIBS" AC_MSG_CHECKING([if libssl needs -lcrypt32]) -AC_TRY_LINK_FUNC([HMAC_Update], [ +AC_TRY_LINK_FUNC([EVP_sha256], [ AC_MSG_RESULT([no]) LIBS="$BAKLIBS" ], [ diff --git a/doc/Changelog b/doc/Changelog index 37931d395..946aa67fe 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -3,6 +3,8 @@ attempts. Attempts on the timer are only logged on high verbosity, if they produce a connection failure error. - Fix to apply chroot to dnstap-socket-path, if chroot is enabled. + - Change configure to use EVP_sha256 instead of HMAC_Update for + openssl-3.0.0. 20 August 2020: Ralph - Fix stats double count issue (#289). From a912786ca9e72dc1ccde98d5af7d23595640043b Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Wed, 26 Aug 2020 11:59:09 +0200 Subject: [PATCH 69/81] - Update documentation in python example code. --- doc/Changelog | 3 +++ pythonmod/examples/avahi-resolver.py | 2 ++ 2 files changed, 5 insertions(+) diff --git a/doc/Changelog b/doc/Changelog index 946aa67fe..0351df5bc 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +26 August 2020: George + - Update documentation in python example code. + 24 August 2020: Wouter - Fix that dnstap reconnects do not spam the log with the repeated attempts. Attempts on the timer are only logged on high verbosity, diff --git a/pythonmod/examples/avahi-resolver.py b/pythonmod/examples/avahi-resolver.py index b1d4e36fc..497e1e74f 100644 --- a/pythonmod/examples/avahi-resolver.py +++ b/pythonmod/examples/avahi-resolver.py @@ -59,6 +59,8 @@ # | num-threads: 32 # | cache-max-negative-ttl: 60 # | cache-max-ttl: 60 +# | python: +# | python-script: path/to/this/file # # # The plugin can also be run interactively. Provide the name and From f6a527c25ad2e60e2dc129fff3605e6ec48c30f2 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 27 Aug 2020 14:53:33 +0200 Subject: [PATCH 70/81] - Similar to NSD PR#113, implement that interface names can be used, eg. something like interface: eth0 is resolved at server start and uses the IP addresses for that named interface. --- config.h.in | 9 ++ configure | 4 +- configure.ac | 4 +- daemon/daemon.c | 11 ++- doc/Changelog | 5 ++ doc/unbound.conf.5.in | 3 +- services/listen_dnsport.c | 176 ++++++++++++++++++++++++++++++++++++-- services/listen_dnsport.h | 15 +++- testcode/fake_event.c | 7 ++ util/config_file.c | 4 +- util/config_file.h | 3 + 11 files changed, 225 insertions(+), 16 deletions(-) diff --git a/config.h.in b/config.h.in index 65c258517..1054ba176 100644 --- a/config.h.in +++ b/config.h.in @@ -272,6 +272,9 @@ /* Define to 1 if you have the `getentropy' function. */ #undef HAVE_GETENTROPY +/* Define to 1 if you have the `getifaddrs' function. */ +#undef HAVE_GETIFADDRS + /* Define to 1 if you have the header file. */ #undef HAVE_GETOPT_H @@ -302,6 +305,9 @@ /* If we have htobe64 */ #undef HAVE_HTOBE64 +/* Define to 1 if you have the header file. */ +#undef HAVE_IFADDRS_H + /* Define to 1 if you have the `inet_aton' function. */ #undef HAVE_INET_ATON @@ -371,6 +377,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_NETTLE_EDDSA_H +/* Define to 1 if you have the header file. */ +#undef HAVE_NET_IF_H + /* Use libnss for crypto */ #undef HAVE_NSS diff --git a/configure b/configure index 4df378a8a..e46d7f59e 100755 --- a/configure +++ b/configure @@ -14726,7 +14726,7 @@ $as_echo "no" >&6; } fi # Checks for header files. -for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h +for ac_header in stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h ifaddrs.h net/if.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default @@ -20224,7 +20224,7 @@ if test "$ac_res" != no; then : fi -for ac_func in tzset sigprocmask fcntl getpwnam endpwent getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync shmget accept4 +for ac_func in tzset sigprocmask fcntl getpwnam endpwent getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync shmget accept4 getifaddrs do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" diff --git a/configure.ac b/configure.ac index aa38a56d2..4bb4e9463 100644 --- a/configure.ac +++ b/configure.ac @@ -399,7 +399,7 @@ ACX_LIBTOOL_C_ONLY PKG_PROG_PKG_CONFIG # Checks for header files. -AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h],,, [AC_INCLUDES_DEFAULT]) +AC_CHECK_HEADERS([stdarg.h stdbool.h netinet/in.h netinet/tcp.h sys/param.h sys/select.h sys/socket.h sys/un.h sys/uio.h sys/resource.h arpa/inet.h syslog.h netdb.h sys/wait.h pwd.h glob.h grp.h login_cap.h winsock2.h ws2tcpip.h endian.h sys/endian.h libkern/OSByteOrder.h sys/ipc.h sys/shm.h ifaddrs.h net/if.h],,, [AC_INCLUDES_DEFAULT]) # Check for Apple header. This uncovers TARGET_OS_IPHONE, TARGET_OS_TV or TARGET_OS_WATCH AC_CHECK_HEADERS([TargetConditionals.h]) @@ -1552,7 +1552,7 @@ AC_LINK_IFELSE([AC_LANG_PROGRAM([ AC_MSG_RESULT(no)) AC_SEARCH_LIBS([setusercontext], [util]) -AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam endpwent getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync shmget accept4]) +AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam endpwent getrlimit setrlimit setsid chroot kill chown sleep usleep random srandom recvmsg sendmsg writev socketpair glob initgroups strftime localtime_r setusercontext _beginthreadex endservent endprotoent fsync shmget accept4 getifaddrs]) AC_CHECK_FUNCS([setresuid],,[AC_CHECK_FUNCS([setreuid])]) AC_CHECK_FUNCS([setresgid],,[AC_CHECK_FUNCS([setregid])]) diff --git a/daemon/daemon.c b/daemon/daemon.c index 34f7bfda1..f480c94e6 100644 --- a/daemon/daemon.c +++ b/daemon/daemon.c @@ -308,6 +308,8 @@ daemon_open_shared_ports(struct daemon* daemon) { log_assert(daemon); if(daemon->cfg->port != daemon->listening_port) { + char** resif = NULL; + int num_resif = 0; size_t i; struct listen_port* p0; daemon->reuseport = 0; @@ -318,15 +320,18 @@ daemon_open_shared_ports(struct daemon* daemon) free(daemon->ports); daemon->ports = NULL; } + if(!resolve_interface_names(daemon->cfg, &resif, &num_resif)) + return 0; /* see if we want to reuseport */ #ifdef SO_REUSEPORT if(daemon->cfg->so_reuseport && daemon->cfg->num_threads > 0) daemon->reuseport = 1; #endif /* try to use reuseport */ - p0 = listening_ports_open(daemon->cfg, &daemon->reuseport); + p0 = listening_ports_open(daemon->cfg, resif, num_resif, &daemon->reuseport); if(!p0) { listening_ports_free(p0); + config_del_strarray(resif, num_resif); return 0; } if(daemon->reuseport) { @@ -340,6 +345,7 @@ daemon_open_shared_ports(struct daemon* daemon) if(!(daemon->ports = (struct listen_port**)calloc( daemon->num_ports, sizeof(*daemon->ports)))) { listening_ports_free(p0); + config_del_strarray(resif, num_resif); return 0; } daemon->ports[0] = p0; @@ -348,16 +354,19 @@ daemon_open_shared_ports(struct daemon* daemon) for(i=1; inum_ports; i++) { if(!(daemon->ports[i]= listening_ports_open(daemon->cfg, + resif, num_resif, &daemon->reuseport)) || !daemon->reuseport ) { for(i=0; inum_ports; i++) listening_ports_free(daemon->ports[i]); free(daemon->ports); daemon->ports = NULL; + config_del_strarray(resif, num_resif); return 0; } } } + config_del_strarray(resif, num_resif); daemon->listening_port = daemon->cfg->port; } if(!daemon->cfg->remote_control_enable && daemon->rc_port) { diff --git a/doc/Changelog b/doc/Changelog index 0351df5bc..11e81088f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,8 @@ +27 August 2020: Wouter + - Similar to NSD PR#113, implement that interface names can be used, + eg. something like interface: eth0 is resolved at server start and + uses the IP addresses for that named interface. + 26 August 2020: George - Update documentation in python example code. diff --git a/doc/unbound.conf.5.in b/doc/unbound.conf.5.in index 951094ed1..fa4850aad 100644 --- a/doc/unbound.conf.5.in +++ b/doc/unbound.conf.5.in @@ -122,7 +122,8 @@ The port number, default 53, on which the server responds to queries. Interface to use to connect to the network. This interface is listened to for queries from clients, and answers to clients are given from it. Can be given multiple times to work on several interfaces. If none are -given the default is to listen to localhost. +given the default is to listen to localhost. If an interface name is used +instead of an ip address, the list of ip addresses on that interface are used. The interfaces are not changed on a reload (kill \-HUP) but only on restart. A port number can be specified with @port (without spaces between interface and port number), if not specified the default port (from diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index cc56d3fd3..63d9f0398 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -70,6 +70,13 @@ #include #endif +#ifdef HAVE_IFADDRS_H +#include +#endif +#ifdef HAVE_NET_IF_H +#include +#endif + /** number of queued TCP connections for listen() */ #define TCP_BACKLOG 256 @@ -1439,8 +1446,163 @@ listen_delete(struct listen_dnsport* front) } } +#ifdef HAVE_GETIFADDRS +static int +resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa, char ***ip_addresses, int *ip_addresses_size) +{ + struct ifaddrs *ifa; + int last_ip_addresses_size = *ip_addresses_size; + + for(ifa = ifas; ifa != NULL; ifa = ifa->ifa_next) { + sa_family_t family; + const char* atsign; +#ifdef INET6 /* | address ip | % | ifa name | @ | port | nul */ + char addr_buf[INET6_ADDRSTRLEN + 1 + IF_NAMESIZE + 1 + 16 + 1]; +#else + char addr_buf[INET_ADDRSTRLEN + 1 + 16 + 1]; +#endif + + if((atsign=strrchr(search_ifa, '@')) != NULL) { + if(strlen(ifa->ifa_name) != (size_t)(atsign-search_ifa) + || strncmp(ifa->ifa_name, search_ifa, + atsign-search_ifa) != 0) + continue; + } else { + if(strcmp(ifa->ifa_name, search_ifa) != 0) + continue; + atsign = ""; + } + + if(ifa->ifa_addr == NULL) + continue; + + family = ifa->ifa_addr->sa_family; + if(family == AF_INET) { + char a4[INET_ADDRSTRLEN + 1]; + struct sockaddr_in *in4 = (struct sockaddr_in *) + ifa->ifa_addr; + if(!inet_ntop(family, &in4->sin_addr, a4, sizeof(a4))) { + log_err("inet_ntop failed"); + return 0; + } + snprintf(addr_buf, sizeof(addr_buf), "%s%s", + a4, atsign); + } +#ifdef INET6 + else if(family == AF_INET6) { + struct sockaddr_in6 *in6 = (struct sockaddr_in6 *) + ifa->ifa_addr; + char a6[INET6_ADDRSTRLEN + 1]; + char if_index_name[IF_NAMESIZE + 1]; + if_index_name[0] = 0; + if(!inet_ntop(family, &in6->sin6_addr, a6, sizeof(a6))) { + log_err("inet_ntop failed"); + return 0; + } + if_indextoname(in6->sin6_scope_id, + (char *)if_index_name); + if (strlen(if_index_name) != 0) { + snprintf(addr_buf, sizeof(addr_buf), + "%s%%%s%s", a6, if_index_name, atsign); + } else { + snprintf(addr_buf, sizeof(addr_buf), "%s%s", + a6, atsign); + } + } +#endif + else { + continue; + } + verbose(4, "interface %s has address %s", search_ifa, addr_buf); + + *ip_addresses = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1)); + if(!*ip_addresses) { + log_err("realloc failed: out of memory"); + return 0; + } + (*ip_addresses)[*ip_addresses_size] = strdup(addr_buf); + if(!(*ip_addresses)[*ip_addresses_size]) { + log_err("strdup failed: out of memory"); + return 0; + } + (*ip_addresses_size)++; + } + + if (*ip_addresses_size == last_ip_addresses_size) { + *ip_addresses = realloc(*ip_addresses, sizeof(char *) * (*ip_addresses_size + 1)); + if(!*ip_addresses) { + log_err("realloc failed: out of memory"); + return 0; + } + (*ip_addresses)[*ip_addresses_size] = strdup(search_ifa); + if(!(*ip_addresses)[*ip_addresses_size]) { + log_err("strdup failed: out of memory"); + return 0; + } + (*ip_addresses_size)++; + } + return 1; +} +#endif /* HAVE_GETIFADDRS */ + +int resolve_interface_names(struct config_file* cfg, char*** resif, + int* num_resif) +{ +#ifdef HAVE_GETIFADDRS + int i; + struct ifaddrs *addrs; + if(cfg->num_ifs == 0) { + *resif = NULL; + *num_resif = 0; + return 1; + } + if(getifaddrs(&addrs) == -1) { + log_err("failed to list interfaces: getifaddrs: %s", + strerror(errno)); + freeifaddrs(addrs); + return 0; + } + for(i=0; inum_ifs; i++) { + if(!resolve_ifa_name(addrs, cfg->ifs[i], resif, num_resif)) { + freeifaddrs(addrs); + config_del_strarray(*resif, *num_resif); + *resif = NULL; + *num_resif = 0; + return 0; + } + } + freeifaddrs(addrs); + return 1; +#else + int i; + if(cfg->num_ifs == 0) { + *resif = NULL; + *num_resif = 0; + return 1; + } + *num_resif = cfg->num_ifs; + *resif = calloc(*num_resif, sizeof(**resif)); + if(!*resif) { + log_err("out of memory"); + return 0; + } + for(i=0; i<*num_resif; i++) { + (*resif)[i] = strdup(cfg->ifs[i]); + if(!((*resif)[i])) { + log_err("out of memory"); + config_del_strarray(*resif, *num_resif); + *resif = NULL; + *num_resif = 0; + return 0; + } + } + return 1; +#endif /* HAVE_GETIFADDRS */ +} + struct listen_port* -listening_ports_open(struct config_file* cfg, int* reuseport) +listening_ports_open(struct config_file* cfg, char** ifs, int num_ifs, + int* reuseport) { struct listen_port* list = NULL; struct addrinfo hints; @@ -1459,7 +1621,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport) memset(&hints, 0, sizeof(hints)); hints.ai_flags = AI_PASSIVE; /* no name lookups on our listening ports */ - if(cfg->num_ifs > 0) + if(num_ifs > 0) hints.ai_flags |= AI_NUMERICHOST; hints.ai_family = AF_UNSPEC; #ifndef INET6 @@ -1469,7 +1631,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport) return NULL; } /* create ip4 and ip6 ports so that return addresses are nice. */ - if(do_auto || cfg->num_ifs == 0) { + if(do_auto || num_ifs == 0) { if(do_ip6) { hints.ai_family = AF_INET6; if(!ports_create_if(do_auto?"::0":"::1", @@ -1498,12 +1660,12 @@ listening_ports_open(struct config_file* cfg, int* reuseport) return NULL; } } - } else for(i = 0; inum_ifs; i++) { - if(str_is_ip6(cfg->ifs[i])) { + } else for(i = 0; iifs[i], 0, cfg->do_udp, + if(!ports_create_if(ifs[i], 0, cfg->do_udp, do_tcp, &hints, portbuf, &list, cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, cfg->tls_additional_port, @@ -1517,7 +1679,7 @@ listening_ports_open(struct config_file* cfg, int* reuseport) if(!do_ip4) continue; hints.ai_family = AF_INET; - if(!ports_create_if(cfg->ifs[i], 0, cfg->do_udp, + if(!ports_create_if(ifs[i], 0, cfg->do_udp, do_tcp, &hints, portbuf, &list, cfg->so_rcvbuf, cfg->so_sndbuf, cfg->ssl_port, cfg->tls_additional_port, diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index ddd1b63a4..680ec84bb 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -117,19 +117,32 @@ struct listen_port { * interfaces for IP4 and/or IP6, for UDP and/or TCP. * On the given port number. It creates the sockets. * @param cfg: settings on what ports to open. + * @param ifs: interfaces to open, array of IP addresses, ip[@port]. + * @param num_ifs: length of ifs. * @param reuseport: set to true if you want reuseport, or NULL to not have it, * set to false on exit if reuseport failed to apply (because of no * kernel support). * @return: linked list of ports or NULL on error. */ struct listen_port* listening_ports_open(struct config_file* cfg, - int* reuseport); + char** ifs, int num_ifs, int* reuseport); /** * Close and delete the (list of) listening ports. */ void listening_ports_free(struct listen_port* list); +/** + * Resolve interface names in config and store result IP addresses + * @param cfg: config + * @param resif: string array (malloced array of malloced strings) with + * result. NULL if cfg has none. + * @param num_resif: length of resif. Zero if cfg has zero num_ifs. + * @return 0 on failure. + */ +int resolve_interface_names(struct config_file* cfg, char*** resif, + int* num_resif); + /** * Create commpoints with for this thread for the shared ports. * @param base: the comm_base that provides event functionality. diff --git a/testcode/fake_event.c b/testcode/fake_event.c index 59df27f57..2ffb46c3a 100644 --- a/testcode/fake_event.c +++ b/testcode/fake_event.c @@ -1300,7 +1300,14 @@ void outnet_serviced_query_stop(struct serviced_query* sq, void* cb_arg) log_info("double delete of pending serviced query"); } +int resolve_interface_names(struct config_file* ATTR_UNUSED(cfg), + char*** ATTR_UNUSED(resif), int* ATTR_UNUSED(num_resif)) +{ + return 1; +} + struct listen_port* listening_ports_open(struct config_file* ATTR_UNUSED(cfg), + char** ATTR_UNUSED(ifs), int ATTR_UNUSED(num_ifs), int* ATTR_UNUSED(reuseport)) { return calloc(1, 1); diff --git a/util/config_file.c b/util/config_file.c index e1c372b0e..5f79baa7e 100644 --- a/util/config_file.c +++ b/util/config_file.c @@ -1387,8 +1387,8 @@ config_delviews(struct config_view* p) p = np; } } -/** delete string array */ -static void + +void config_del_strarray(char** array, int num) { int i; diff --git a/util/config_file.h b/util/config_file.h index cdae04c23..948bd1d0d 100644 --- a/util/config_file.h +++ b/util/config_file.h @@ -969,6 +969,9 @@ void config_deldblstrlist(struct config_str2list* list); */ void config_deltrplstrlist(struct config_str3list* list); +/** delete string array */ +void config_del_strarray(char** array, int num); + /** delete stringbytelist */ void config_del_strbytelist(struct config_strbytelist* list); From b5a237424b8d4f510672f1b5010dc7391fdd86ee Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 27 Aug 2020 15:12:46 +0200 Subject: [PATCH 71/81] Please doxygen, quote the characters to stop it from parsing a doxygen command. --- services/listen_dnsport.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index 680ec84bb..83bdf48e8 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -117,7 +117,7 @@ struct listen_port { * interfaces for IP4 and/or IP6, for UDP and/or TCP. * On the given port number. It creates the sockets. * @param cfg: settings on what ports to open. - * @param ifs: interfaces to open, array of IP addresses, ip[@port]. + * @param ifs: interfaces to open, array of IP addresses, "ip[@port]". * @param num_ifs: length of ifs. * @param reuseport: set to true if you want reuseport, or NULL to not have it, * set to false on exit if reuseport failed to apply (because of no From 12c0cf7cee6a5d57cd768dd1f8e8e041ada286fe Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Thu, 27 Aug 2020 15:27:05 +0200 Subject: [PATCH 72/81] - Review fix, doxygen and assign null in case of error free. --- doc/Changelog | 1 + services/listen_dnsport.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 11e81088f..10ab6efae 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ - Similar to NSD PR#113, implement that interface names can be used, eg. something like interface: eth0 is resolved at server start and uses the IP addresses for that named interface. + - Review fix, doxygen and assign null in case of error free. 26 August 2020: George - Update documentation in python example code. diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 63d9f0398..51fe39e0f 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -1550,7 +1550,7 @@ int resolve_interface_names(struct config_file* cfg, char*** resif, { #ifdef HAVE_GETIFADDRS int i; - struct ifaddrs *addrs; + struct ifaddrs *addrs = NULL; if(cfg->num_ifs == 0) { *resif = NULL; *num_resif = 0; From 2460737490941695cc824436824c12aa47edf14c Mon Sep 17 00:00:00 2001 From: Florian Obser Date: Fri, 28 Aug 2020 17:31:14 +0200 Subject: [PATCH 73/81] Add missing prototype. --- services/listen_dnsport.h | 1 + 1 file changed, 1 insertion(+) diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index 83bdf48e8..d33a5395f 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -384,5 +384,6 @@ size_t tcp_req_info_get_stream_buffer_size(void); char* set_ip_dscp(int socket, int addrfamily, int ds); char* sock_strerror(int errn); +void sock_close(int socket); #endif /* LISTEN_DNSPORT_H */ From a6dc0743b47b909f75c7e434a6b44e6872e6c3b6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 31 Aug 2020 08:41:34 +0200 Subject: [PATCH 74/81] - Merge PR #293: Add missing prototype. Also refactor to use the new shorthand function to clean up the code. --- daemon/remote.c | 12 +-- dnstap/dtstream.c | 6 +- dnstap/unbound-dnstap-socket.c | 15 +--- doc/Changelog | 4 + services/listen_dnsport.c | 131 ++++++--------------------------- services/listen_dnsport.h | 2 - services/outside_network.c | 9 +-- smallapp/unbound-control.c | 6 +- testcode/delayer.c | 37 ++-------- testcode/perf.c | 6 +- testcode/streamtcp.c | 6 +- util/net_help.c | 28 +++++++ util/net_help.h | 6 ++ util/netevent.c | 12 +-- 14 files changed, 83 insertions(+), 197 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index aa263d074..94bc2c57e 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -348,11 +348,7 @@ add_open(const char* ip, int nr, struct listen_port** list, int noproto_is_err, /* alloc */ n = (struct listen_port*)calloc(1, sizeof(*n)); if(!n) { -#ifndef USE_WINSOCK - close(fd); -#else - closesocket(fd); -#endif + sock_close(fd); log_err("out of memory"); return 0; } @@ -461,11 +457,7 @@ int remote_accept_callback(struct comm_point* c, void* arg, int err, if(rc->active >= rc->max_active) { log_warn("drop incoming remote control: too many connections"); close_exit: -#ifndef USE_WINSOCK - close(newfd); -#else - closesocket(newfd); -#endif + sock_close(newfd); return 0; } diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 63d517cb8..26eac063a 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -588,11 +588,7 @@ static void dtio_del_output_event(struct dt_io_thread* dtio) /** close dtio socket and set it to -1 */ static void dtio_close_fd(struct dt_io_thread* dtio) { -#ifndef USE_WINSOCK - close(dtio->fd); -#else - closesocket(dtio->fd); -#endif + sock_close(dtio->fd); dtio->fd = -1; } diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 44a0eda95..80a117617 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -292,12 +292,11 @@ static int make_tcp_accept(char* ip) #ifndef USE_WINSOCK log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", strerror(errno)); - close(s); #else log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); #endif + sock_close(s); return -1; } #endif /* SO_REUSEADDR */ @@ -305,30 +304,24 @@ static int make_tcp_accept(char* ip) #ifndef USE_WINSOCK log_err_addr("can't bind socket", strerror(errno), &addr, len); - close(s); #else log_err_addr("can't bind socket", wsa_strerror(WSAGetLastError()), &addr, len); - closesocket(s); #endif + sock_close(s); return -1; } if(!fd_set_nonblock(s)) { -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return -1; } if(listen(s, LISTEN_BACKLOG) == -1) { #ifndef USE_WINSOCK log_err("can't listen: %s", strerror(errno)); - close(s); #else log_err("can't listen: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); #endif + sock_close(s); return -1; } return s; diff --git a/doc/Changelog b/doc/Changelog index 10ab6efae..a7a95464a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,7 @@ +31 August 2020: Wouter + - Merge PR #293: Add missing prototype. Also refactor to use the new + shorthand function to clean up the code. + 27 August 2020: Wouter - Similar to NSD PR#113, implement that interface names can be used, eg. something like interface: eth0 is resolved at server start and diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index 51fe39e0f..e749147e5 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -356,13 +356,12 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # ifndef USE_WINSOCK log_err("setsockopt(..., SO_RCVBUFFORCE, " "...) failed: %s", strerror(errno)); - close(s); # else log_err("setsockopt(..., SO_RCVBUFFORCE, " "...) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); # endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -373,13 +372,12 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # ifndef USE_WINSOCK log_err("setsockopt(..., SO_RCVBUF, " "...) failed: %s", strerror(errno)); - close(s); # else log_err("setsockopt(..., SO_RCVBUF, " "...) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); # endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -415,13 +413,12 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # ifndef USE_WINSOCK log_err("setsockopt(..., SO_SNDBUFFORCE, " "...) failed: %s", strerror(errno)); - close(s); # else log_err("setsockopt(..., SO_SNDBUFFORCE, " "...) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); # endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -432,13 +429,12 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # ifndef USE_WINSOCK log_err("setsockopt(..., SO_SNDBUF, " "...) failed: %s", strerror(errno)); - close(s); # else log_err("setsockopt(..., SO_SNDBUF, " "...) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); # endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -471,13 +467,12 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, #ifndef USE_WINSOCK log_err("setsockopt(..., IPV6_V6ONLY" ", ...) failed: %s", strerror(errno)); - close(s); #else log_err("setsockopt(..., IPV6_V6ONLY" ", ...) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); #endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -498,13 +493,12 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # ifndef USE_WINSOCK log_err("setsockopt(..., IPV6_USE_MIN_MTU, " "...) failed: %s", strerror(errno)); - close(s); # else log_err("setsockopt(..., IPV6_USE_MIN_MTU, " "...) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); # endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -520,12 +514,11 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # ifndef USE_WINSOCK log_err("setsockopt(..., IPV6_MTU, ...) failed: %s", strerror(errno)); - close(s); # else log_err("setsockopt(..., IPV6_MTU, ...) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); # endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -549,12 +542,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, if (errno != EINVAL) { log_err("setsockopt(..., IP_MTU_DISCOVER, IP_PMTUDISC_OMIT...) failed: %s", strerror(errno)); - -# ifndef USE_WINSOCK - close(s); -# else - closesocket(s); -# endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -571,11 +559,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, &action, (socklen_t)sizeof(action)) < 0) { log_err("setsockopt(..., IP_MTU_DISCOVER, IP_PMTUDISC_DONT...) failed: %s", strerror(errno)); -# ifndef USE_WINSOCK - close(s); -# else - closesocket(s); -# endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -587,11 +571,7 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, &off, (socklen_t)sizeof(off)) < 0) { log_err("setsockopt(..., IP_DONTFRAG, ...) failed: %s", strerror(errno)); -# ifndef USE_WINSOCK - close(s); -# else - closesocket(s); -# endif + sock_close(s); *noproto = 0; *inuse = 0; return -1; @@ -621,7 +601,6 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, (struct sockaddr_storage*)addr, addrlen); } #endif /* EADDRINUSE */ - close(s); #else /* USE_WINSOCK */ if(WSAGetLastError() != WSAEADDRINUSE && WSAGetLastError() != WSAEADDRNOTAVAIL && @@ -630,18 +609,14 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, wsa_strerror(WSAGetLastError()), (struct sockaddr_storage*)addr, addrlen); } - closesocket(s); #endif /* USE_WINSOCK */ + sock_close(s); return -1; } if(!fd_set_nonblock(s)) { *noproto = 0; *inuse = 0; -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return -1; } return s; @@ -727,12 +702,11 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, #ifndef USE_WINSOCK log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", strerror(errno)); - close(s); #else log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); #endif + sock_close(s); return -1; } #endif /* SO_REUSEADDR */ @@ -770,12 +744,11 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, #ifndef USE_WINSOCK log_err("setsockopt(..., IPV6_V6ONLY, ...) failed: %s", strerror(errno)); - close(s); #else log_err("setsockopt(..., IPV6_V6ONLY, ...) failed: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); #endif + sock_close(s); return -1; } } @@ -822,32 +795,26 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, (struct sockaddr_storage*)addr->ai_addr, addr->ai_addrlen); } - close(s); #else log_err_addr("can't bind socket", wsa_strerror(WSAGetLastError()), (struct sockaddr_storage*)addr->ai_addr, addr->ai_addrlen); - closesocket(s); #endif + sock_close(s); return -1; } if(!fd_set_nonblock(s)) { -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return -1; } if(listen(s, TCP_BACKLOG) == -1) { #ifndef USE_WINSOCK log_err("can't listen: %s", strerror(errno)); - close(s); #else log_err("can't listen: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); #endif + sock_close(s); return -1; } #ifdef USE_TCP_FASTOPEN @@ -902,34 +869,6 @@ set_ip_dscp(int socket, int addrfamily, int dscp) return NULL; } -# ifndef USE_WINSOCK -char* -sock_strerror(int errn) -{ - return strerror(errn); -} - -void -sock_close(int socket) -{ - close(socket); -} - -# else -char* -sock_strerror(int ATTR_UNUSED(errn)) -{ - return wsa_strerror(WSAGetLastError()); -} - -void -sock_close(int socket) -{ - closesocket(socket); -} - -# endif /* USE_WINSOCK */ - int create_local_accept_sock(const char *path, int* noproto, int use_systemd) { @@ -990,11 +929,7 @@ create_local_accept_sock(const char *path, int* noproto, int use_systemd) return s; err: -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return -1; #ifdef HAVE_SYSTEMD @@ -1245,20 +1180,12 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, } /* getting source addr packet info is highly non-portable */ if(!set_recvpktinfo(s, hints->ai_family)) { -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return 0; } if(!port_insert(list, s, is_dnscrypt?listen_type_udpancil_dnscrypt:listen_type_udpancil)) { -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return 0; } } else if(do_udp) { @@ -1274,11 +1201,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, } if(!port_insert(list, s, is_dnscrypt?listen_type_udp_dnscrypt:listen_type_udp)) { -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return 0; } } @@ -1298,11 +1221,7 @@ ports_create_if(const char* ifname, int do_auto, int do_udp, int do_tcp, verbose(VERB_ALGO, "setup TCP for SSL service"); if(!port_insert(list, s, is_ssl?listen_type_ssl: (is_dnscrypt?listen_type_tcp_dnscrypt:listen_type_tcp))) { -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return 0; } } @@ -1700,11 +1619,7 @@ void listening_ports_free(struct listen_port* list) while(list) { nx = list->next; if(list->fd != -1) { -#ifndef USE_WINSOCK - close(list->fd); -#else - closesocket(list->fd); -#endif + sock_close(list->fd); } free(list); list = nx; diff --git a/services/listen_dnsport.h b/services/listen_dnsport.h index d33a5395f..c7daa9e75 100644 --- a/services/listen_dnsport.h +++ b/services/listen_dnsport.h @@ -383,7 +383,5 @@ int tcp_req_info_handle_read_close(struct tcp_req_info* req); size_t tcp_req_info_get_stream_buffer_size(void); char* set_ip_dscp(int socket, int addrfamily, int ds); -char* sock_strerror(int errn); -void sock_close(int socket); #endif /* LISTEN_DNSPORT_H */ diff --git a/services/outside_network.c b/services/outside_network.c index 67eca05ed..ba07444df 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -166,11 +166,7 @@ pick_outgoing_tcp(struct waiting_tcp* w, int s) if(num == 0) { log_err("no TCP outgoing interfaces of family"); log_addr(VERB_OPS, "for addr", &w->addr, w->addrlen); -#ifndef USE_WINSOCK - close(s); -#else - closesocket(s); -#endif + sock_close(s); return 0; } #ifdef INET6 @@ -191,12 +187,11 @@ pick_outgoing_tcp(struct waiting_tcp* w, int s) if(bind(s, (struct sockaddr*)&pi->addr, pi->addrlen) != 0) { #ifndef USE_WINSOCK log_err("outgoing tcp: bind: %s", strerror(errno)); - close(s); #else log_err("outgoing tcp: bind: %s", wsa_strerror(WSAGetLastError())); - closesocket(s); #endif + sock_close(s); return 0; } log_addr(VERB_ALGO, "tcp bound to src", &pi->addr, pi->addrlen); diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 4662c7cb6..5936679e6 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -824,11 +824,7 @@ go(const char* cfgfile, char* svr, int quiet, int argc, char* argv[]) ret = go_cmd(ssl, fd, quiet, argc, argv); if(ssl) SSL_free(ssl); -#ifndef USE_WINSOCK - close(fd); -#else - closesocket(fd); -#endif + sock_close(fd); if(ctx) SSL_CTX_free(ctx); config_delete(cfg); return ret; diff --git a/testcode/delayer.c b/testcode/delayer.c index ebf883926..6562f80e6 100644 --- a/testcode/delayer.c +++ b/testcode/delayer.c @@ -550,15 +550,9 @@ tcp_proxy_delete(struct tcp_proxy* p) free(s); s = sn; } -#ifndef USE_WINSOCK - close(p->client_s); + sock_close(p->client_s); if(p->server_s != -1) - close(p->server_s); -#else - closesocket(p->client_s); - if(p->server_s != -1) - closesocket(p->server_s); -#endif + sock_close(p->server_s); free(p); } @@ -607,16 +601,14 @@ service_tcp_listen(int s, fd_set* rorig, int* max, struct tcp_proxy** proxies, #ifndef USE_WINSOCK if(errno != EINPROGRESS) { log_err("tcp connect: %s", strerror(errno)); - close(p->server_s); - close(p->client_s); #else if(WSAGetLastError() != WSAEWOULDBLOCK && WSAGetLastError() != WSAEINPROGRESS) { log_err("tcp connect: %s", wsa_strerror(WSAGetLastError())); - closesocket(p->server_s); - closesocket(p->client_s); #endif + sock_close(p->server_s); + sock_close(p->client_s); free(p); return; } @@ -769,11 +761,7 @@ service_tcp_relay(struct tcp_proxy** tcp_proxies, struct timeval* now, log_addr(1, "read tcp answer", &p->addr, p->addr_len); if(!tcp_relay_read(p->server_s, &p->answerlist, &p->answerlast, now, delay, pkt)) { -#ifndef USE_WINSOCK - close(p->server_s); -#else - closesocket(p->server_s); -#endif + sock_close(p->server_s); FD_CLR(FD_SET_T p->server_s, worig); FD_CLR(FD_SET_T p->server_s, rorig); p->server_s = -1; @@ -901,11 +889,7 @@ proxy_list_clear(struct proxy* p) "%u returned\n", i++, from, port, (int)p->numreuse+1, (unsigned)p->numwait, (unsigned)p->numsent, (unsigned)p->numreturn); -#ifndef USE_WINSOCK - close(p->s); -#else - closesocket(p->s); -#endif + sock_close(p->s); free(p); p = np; } @@ -1109,13 +1093,8 @@ service(const char* bind_str, int bindport, const char* serv_str, /* cleanup */ verbose(1, "cleanup"); -#ifndef USE_WINSOCK - close(s); - close(listen_s); -#else - closesocket(s); - closesocket(listen_s); -#endif + sock_close(s); + sock_close(listen_s); sldns_buffer_free(pkt); ring_delete(ring); } diff --git a/testcode/perf.c b/testcode/perf.c index 5b170ca57..aef69045f 100644 --- a/testcode/perf.c +++ b/testcode/perf.c @@ -260,11 +260,7 @@ perffree(struct perfinfo* info) if(!info) return; if(info->io) { for(i=0; iio_num; i++) { -#ifndef USE_WINSOCK - close(info->io[i].fd); -#else - closesocket(info->io[i].fd); -#endif + sock_close(info->io[i].fd); } free(info->io); } diff --git a/testcode/streamtcp.c b/testcode/streamtcp.c index c49159d33..ffdddbe9d 100644 --- a/testcode/streamtcp.c +++ b/testcode/streamtcp.c @@ -388,11 +388,7 @@ send_em(const char* svr, int udp, int usessl, int noanswer, int onarrival, SSL_free(ssl); SSL_CTX_free(ctx); } -#ifndef USE_WINSOCK - close(fd); -#else - closesocket(fd); -#endif + sock_close(fd); sldns_buffer_free(buf); printf("orderly exit\n"); } diff --git a/util/net_help.c b/util/net_help.c index 4d985b66d..b51e0372e 100644 --- a/util/net_help.c +++ b/util/net_help.c @@ -1562,3 +1562,31 @@ listen_sslctx_delete_ticket_keys(void) free(ticket_keys); ticket_keys = NULL; } + +# ifndef USE_WINSOCK +char* +sock_strerror(int errn) +{ + return strerror(errn); +} + +void +sock_close(int socket) +{ + close(socket); +} + +# else +char* +sock_strerror(int ATTR_UNUSED(errn)) +{ + return wsa_strerror(WSAGetLastError()); +} + +void +sock_close(int socket) +{ + closesocket(socket); +} + +# endif /* USE_WINSOCK */ diff --git a/util/net_help.h b/util/net_help.h index 29943ada0..45b607a43 100644 --- a/util/net_help.h +++ b/util/net_help.h @@ -496,4 +496,10 @@ void listen_sslctx_delete_ticket_keys(void); */ int netblockdnametoaddr(uint8_t* dname, size_t dnamelen, struct sockaddr_storage* addr, socklen_t* addrlen, int* net, int* af); + +/** Return strerror or wsastrerror for socket error printout */ +char* sock_strerror(int errn); +/** close the socket with close, or wsa closesocket */ +void sock_close(int socket); + #endif /* NET_HELP_H */ diff --git a/util/netevent.c b/util/netevent.c index 3e7a433e5..6172adb1f 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -3087,11 +3087,7 @@ comm_point_close(struct comm_point* c) ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); } verbose(VERB_ALGO, "close fd %d", c->fd); -#ifndef USE_WINSOCK - close(c->fd); -#else - closesocket(c->fd); -#endif + sock_close(c->fd); } c->fd = -1; } @@ -3232,11 +3228,7 @@ comm_point_start_listening(struct comm_point* c, int newfd, int msec) } if(newfd != -1) { if(c->fd != -1) { -#ifndef USE_WINSOCK - close(c->fd); -#else - closesocket(c->fd); -#endif + sock_close(c->fd); } c->fd = newfd; ub_event_set_fd(c->ev->ev, c->fd); From 47a5dc8cae9733e636da09ee84b9f108f20328c0 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 31 Aug 2020 09:12:01 +0200 Subject: [PATCH 75/81] - Refactor to use sock_strerr shorthand function. --- daemon/remote.c | 20 ++----- dnstap/dtstream.c | 50 ++++-------------- dnstap/unbound-dnstap-socket.c | 49 ++++------------- doc/Changelog | 1 + services/listen_dnsport.c | 96 ++++++---------------------------- services/outside_network.c | 14 +---- smallapp/unbound-control.c | 18 ++----- testcode/delayer.c | 78 ++++++--------------------- testcode/perf.c | 19 ++----- util/netevent.c | 45 +++++----------- 10 files changed, 77 insertions(+), 313 deletions(-) diff --git a/daemon/remote.c b/daemon/remote.c index 94bc2c57e..bd1039d06 100644 --- a/daemon/remote.c +++ b/daemon/remote.c @@ -566,11 +566,8 @@ ssl_print_text(RES* res, const char* text) if(r == -1) { if(errno == EAGAIN || errno == EINTR) continue; -#ifndef USE_WINSOCK - log_err("could not send: %s", strerror(errno)); -#else - log_err("could not send: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("could not send: %s", + sock_strerror(errno)); return 0; } at += r; @@ -627,11 +624,8 @@ ssl_read_line(RES* res, char* buf, size_t max) } if(errno == EINTR || errno == EAGAIN) continue; -#ifndef USE_WINSOCK - log_err("could not recv: %s", strerror(errno)); -#else - log_err("could not recv: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("could not recv: %s", + sock_strerror(errno)); return 0; } break; @@ -3108,11 +3102,7 @@ handle_req(struct daemon_remote* rc, struct rc_state* s, RES* res) if(rr == 0) return; if(errno == EINTR || errno == EAGAIN) continue; -#ifndef USE_WINSOCK - log_err("could not recv: %s", strerror(errno)); -#else - log_err("could not recv: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("could not recv: %s", sock_strerror(errno)); return; } r = (int)rr; diff --git a/dnstap/dtstream.c b/dnstap/dtstream.c index 26eac063a..a778bb64b 100644 --- a/dnstap/dtstream.c +++ b/dnstap/dtstream.c @@ -149,15 +149,14 @@ static void dtio_wakeup(struct dt_io_thread* dtio) #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) continue; - log_err("dnstap io wakeup: write: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEINPROGRESS) continue; if(WSAGetLastError() == WSAEWOULDBLOCK) continue; - log_err("dnstap io stop: write: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("dnstap io wakeup: write: %s", + sock_strerror(errno)); break; } break; @@ -656,13 +655,8 @@ static int dtio_check_nb_connect(struct dt_io_thread* dtio) char* to = dtio->socket_path; if(!to) to = dtio->ip_str; if(!to) to = ""; -#ifndef USE_WINSOCK log_err("dnstap io: failed to connect to \"%s\": %s", - to, strerror(error)); -#else - log_err("dnstap io: failed to connect to \"%s\": %s", - to, wsa_strerror(error)); -#endif + to, sock_strerror(error)); return -1; /* error, close it */ } @@ -739,7 +733,6 @@ static int dtio_write_buf(struct dt_io_thread* dtio, uint8_t* buf, #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return 0; - log_err("dnstap io: failed send: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEINPROGRESS) return 0; @@ -749,9 +742,8 @@ static int dtio_write_buf(struct dt_io_thread* dtio, uint8_t* buf, UB_EV_WRITE); return 0; } - log_err("dnstap io: failed send: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("dnstap io: failed send: %s", sock_strerror(errno)); return -1; } return ret; @@ -775,7 +767,6 @@ static int dtio_write_with_writev(struct dt_io_thread* dtio) #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return 0; - log_err("dnstap io: failed writev: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEINPROGRESS) return 0; @@ -785,9 +776,8 @@ static int dtio_write_with_writev(struct dt_io_thread* dtio) UB_EV_WRITE); return 0; } - log_err("dnstap io: failed writev: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("dnstap io: failed writev: %s", sock_strerror(errno)); /* close the channel */ dtio_del_output_event(dtio); dtio_close_output(dtio); @@ -1479,15 +1469,13 @@ void dtio_cmd_cb(int fd, short ATTR_UNUSED(bits), void* arg) #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return; /* ignore this */ - log_err("dnstap io: failed to read: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEINPROGRESS) return; if(WSAGetLastError() == WSAEWOULDBLOCK) return; - log_err("dnstap io: failed to read: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("dnstap io: failed to read: %s", sock_strerror(errno)); /* and then fall through to quit the thread */ } else if(r == 0) { verbose(VERB_ALGO, "dnstap io: cmd channel closed"); @@ -1849,13 +1837,8 @@ static int dtio_open_output_local(struct dt_io_thread* dtio) struct sockaddr_un s; dtio->fd = socket(AF_LOCAL, SOCK_STREAM, 0); if(dtio->fd == -1) { -#ifndef USE_WINSOCK log_err("dnstap io: failed to create socket: %s", - strerror(errno)); -#else - log_err("dnstap io: failed to create socket: %s", - wsa_strerror(WSAGetLastError())); -#endif + sock_strerror(errno)); return 0; } memset(&s, 0, sizeof(s)); @@ -1875,13 +1858,8 @@ static int dtio_open_output_local(struct dt_io_thread* dtio) dtio_close_fd(dtio); return 0; /* no log retries on low verbosity */ } -#ifndef USE_WINSOCK log_err("dnstap io: failed to connect to \"%s\": %s", - to, strerror(errno)); -#else - log_err("dnstap io: failed to connect to \"%s\": %s", - to, wsa_strerror(WSAGetLastError())); -#endif + to, sock_strerror(errno)); dtio_close_fd(dtio); return 0; } @@ -1906,12 +1884,7 @@ static int dtio_open_output_tcp(struct dt_io_thread* dtio) } dtio->fd = socket(addr.ss_family, SOCK_STREAM, 0); if(dtio->fd == -1) { -#ifndef USE_WINSOCK - log_err("can't create socket: %s", strerror(errno)); -#else - log_err("can't create socket: %s", - wsa_strerror(WSAGetLastError())); -#endif + log_err("can't create socket: %s", sock_strerror(errno)); return 0; } fd_set_nonblock(dtio->fd); @@ -2104,15 +2077,14 @@ void dt_io_thread_stop(struct dt_io_thread* dtio) #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) continue; - log_err("dnstap io stop: write: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEINPROGRESS) continue; if(WSAGetLastError() == WSAEWOULDBLOCK) continue; - log_err("dnstap io stop: write: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("dnstap io stop: write: %s", + sock_strerror(errno)); break; } break; diff --git a/dnstap/unbound-dnstap-socket.c b/dnstap/unbound-dnstap-socket.c index 80a117617..ca950c8bf 100644 --- a/dnstap/unbound-dnstap-socket.c +++ b/dnstap/unbound-dnstap-socket.c @@ -278,36 +278,21 @@ static int make_tcp_accept(char* ip) } if((s = socket(addr.ss_family, SOCK_STREAM, 0)) == -1) { -#ifndef USE_WINSOCK - log_err("can't create socket: %s", strerror(errno)); -#else - log_err("can't create socket: %s", - wsa_strerror(WSAGetLastError())); -#endif + log_err("can't create socket: %s", sock_strerror(errno)); return -1; } #ifdef SO_REUSEADDR if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, (socklen_t)sizeof(on)) < 0) { -#ifndef USE_WINSOCK log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", - strerror(errno)); -#else - log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", - wsa_strerror(WSAGetLastError())); -#endif + sock_strerror(errno)); sock_close(s); return -1; } #endif /* SO_REUSEADDR */ if(bind(s, (struct sockaddr*)&addr, len) != 0) { -#ifndef USE_WINSOCK - log_err_addr("can't bind socket", strerror(errno), + log_err_addr("can't bind socket", sock_strerror(errno), &addr, len); -#else - log_err_addr("can't bind socket", - wsa_strerror(WSAGetLastError()), &addr, len); -#endif sock_close(s); return -1; } @@ -316,11 +301,7 @@ static int make_tcp_accept(char* ip) return -1; } if(listen(s, LISTEN_BACKLOG) == -1) { -#ifndef USE_WINSOCK - log_err("can't listen: %s", strerror(errno)); -#else - log_err("can't listen: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("can't listen: %s", sock_strerror(errno)); sock_close(s); return -1; } @@ -647,7 +628,6 @@ static ssize_t receive_bytes(struct tap_data* data, int fd, void* buf, #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return -1; - log_err("could not recv: %s", strerror(errno)); #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAEINPROGRESS) return -1; @@ -655,9 +635,8 @@ static ssize_t receive_bytes(struct tap_data* data, int fd, void* buf, ub_winsock_tcp_wouldblock(data->ev, UB_EV_READ); return -1; } - log_err("could not recv: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("could not recv: %s", sock_strerror(errno)); if(verbosity) log_info("dnstap client stream closed from %s", (data->id?data->id:"")); return 0; @@ -789,12 +768,7 @@ static int reply_with_accept(struct tap_data* data) } } else { if(send(data->fd, acceptframe, len, 0) == -1) { -#ifndef USE_WINSOCK - log_err("send failed: %s", strerror(errno)); -#else - log_err("send failed: %s", - wsa_strerror(WSAGetLastError())); -#endif + log_err("send failed: %s", sock_strerror(errno)); fd_set_nonblock(data->fd); free(acceptframe); return 0; @@ -827,11 +801,7 @@ static int reply_with_finish(int fd) fd_set_block(fd); if(send(fd, finishframe, len, 0) == -1) { -#ifndef USE_WINSOCK - log_err("send failed: %s", strerror(errno)); -#else - log_err("send failed: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("send failed: %s", sock_strerror(errno)); fd_set_nonblock(fd); free(finishframe); return 0; @@ -1087,7 +1057,6 @@ void dtio_mainfdcallback(int fd, short ATTR_UNUSED(bits), void* arg) #endif /* EPROTO */ ) return; - log_err_addr("accept failed", strerror(errno), &addr, addrlen); #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAEINPROGRESS || WSAGetLastError() == WSAECONNRESET) @@ -1096,9 +1065,9 @@ void dtio_mainfdcallback(int fd, short ATTR_UNUSED(bits), void* arg) ub_winsock_tcp_wouldblock(maindata->ev, UB_EV_READ); return; } - log_err_addr("accept failed", wsa_strerror(WSAGetLastError()), - &addr, addrlen); #endif + log_err_addr("accept failed", sock_strerror(errno), &addr, + addrlen); return; } fd_set_nonblock(s); diff --git a/doc/Changelog b/doc/Changelog index a7a95464a..5a327a23f 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,7 @@ 31 August 2020: Wouter - Merge PR #293: Add missing prototype. Also refactor to use the new shorthand function to clean up the code. + - Refactor to use sock_strerr shorthand function. 27 August 2020: Wouter - Similar to NSD PR#113, implement that interface names can be used, diff --git a/services/listen_dnsport.c b/services/listen_dnsport.c index e749147e5..5a7370bf6 100644 --- a/services/listen_dnsport.c +++ b/services/listen_dnsport.c @@ -228,16 +228,14 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, *noproto = 1; return -1; } - log_err("can't create socket: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEAFNOSUPPORT || WSAGetLastError() == WSAEPROTONOSUPPORT) { *noproto = 1; return -1; } - log_err("can't create socket: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("can't create socket: %s", sock_strerror(errno)); *noproto = 0; return -1; } @@ -250,9 +248,9 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, #ifdef SO_REUSEADDR if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, (socklen_t)sizeof(on)) < 0) { -#ifndef USE_WINSOCK log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", - strerror(errno)); + sock_strerror(errno)); +#ifndef USE_WINSOCK if(errno != ENOSYS) { close(s); *noproto = 0; @@ -260,8 +258,6 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, return -1; } #else - log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", - wsa_strerror(WSAGetLastError())); closesocket(s); *noproto = 0; *inuse = 0; @@ -353,14 +349,8 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, if(setsockopt(s, SOL_SOCKET, SO_RCVBUFFORCE, (void*)&rcv, (socklen_t)sizeof(rcv)) < 0) { if(errno != EPERM) { -# ifndef USE_WINSOCK log_err("setsockopt(..., SO_RCVBUFFORCE, " - "...) failed: %s", strerror(errno)); -# else - log_err("setsockopt(..., SO_RCVBUFFORCE, " - "...) failed: %s", - wsa_strerror(WSAGetLastError())); -# endif + "...) failed: %s", sock_strerror(errno)); sock_close(s); *noproto = 0; *inuse = 0; @@ -369,14 +359,8 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # endif /* SO_RCVBUFFORCE */ if(setsockopt(s, SOL_SOCKET, SO_RCVBUF, (void*)&rcv, (socklen_t)sizeof(rcv)) < 0) { -# ifndef USE_WINSOCK log_err("setsockopt(..., SO_RCVBUF, " - "...) failed: %s", strerror(errno)); -# else - log_err("setsockopt(..., SO_RCVBUF, " - "...) failed: %s", - wsa_strerror(WSAGetLastError())); -# endif + "...) failed: %s", sock_strerror(errno)); sock_close(s); *noproto = 0; *inuse = 0; @@ -410,14 +394,8 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, if(setsockopt(s, SOL_SOCKET, SO_SNDBUFFORCE, (void*)&snd, (socklen_t)sizeof(snd)) < 0) { if(errno != EPERM) { -# ifndef USE_WINSOCK log_err("setsockopt(..., SO_SNDBUFFORCE, " - "...) failed: %s", strerror(errno)); -# else - log_err("setsockopt(..., SO_SNDBUFFORCE, " - "...) failed: %s", - wsa_strerror(WSAGetLastError())); -# endif + "...) failed: %s", sock_strerror(errno)); sock_close(s); *noproto = 0; *inuse = 0; @@ -426,14 +404,8 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, # endif /* SO_SNDBUFFORCE */ if(setsockopt(s, SOL_SOCKET, SO_SNDBUF, (void*)&snd, (socklen_t)sizeof(snd)) < 0) { -# ifndef USE_WINSOCK log_err("setsockopt(..., SO_SNDBUF, " - "...) failed: %s", strerror(errno)); -# else - log_err("setsockopt(..., SO_SNDBUF, " - "...) failed: %s", - wsa_strerror(WSAGetLastError())); -# endif + "...) failed: %s", sock_strerror(errno)); sock_close(s); *noproto = 0; *inuse = 0; @@ -464,14 +436,8 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, int val=(v6only==2)?0:1; if (setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, (void*)&val, (socklen_t)sizeof(val)) < 0) { -#ifndef USE_WINSOCK log_err("setsockopt(..., IPV6_V6ONLY" - ", ...) failed: %s", strerror(errno)); -#else - log_err("setsockopt(..., IPV6_V6ONLY" - ", ...) failed: %s", - wsa_strerror(WSAGetLastError())); -#endif + ", ...) failed: %s", sock_strerror(errno)); sock_close(s); *noproto = 0; *inuse = 0; @@ -490,14 +456,8 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, */ if (setsockopt(s, IPPROTO_IPV6, IPV6_USE_MIN_MTU, (void*)&on, (socklen_t)sizeof(on)) < 0) { -# ifndef USE_WINSOCK log_err("setsockopt(..., IPV6_USE_MIN_MTU, " - "...) failed: %s", strerror(errno)); -# else - log_err("setsockopt(..., IPV6_USE_MIN_MTU, " - "...) failed: %s", - wsa_strerror(WSAGetLastError())); -# endif + "...) failed: %s", sock_strerror(errno)); sock_close(s); *noproto = 0; *inuse = 0; @@ -511,13 +471,8 @@ create_udp_sock(int family, int socktype, struct sockaddr* addr, */ if (setsockopt(s, IPPROTO_IPV6, IPV6_MTU, (void*)&mtu, (socklen_t)sizeof(mtu)) < 0) { -# ifndef USE_WINSOCK log_err("setsockopt(..., IPV6_MTU, ...) failed: %s", - strerror(errno)); -# else - log_err("setsockopt(..., IPV6_MTU, ...) failed: %s", - wsa_strerror(WSAGetLastError())); -# endif + sock_strerror(errno)); sock_close(s); *noproto = 0; *inuse = 0; @@ -660,29 +615,22 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, *noproto = 1; return -1; } - log_err("can't create socket: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEAFNOSUPPORT || WSAGetLastError() == WSAEPROTONOSUPPORT) { *noproto = 1; return -1; } - log_err("can't create socket: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("can't create socket: %s", sock_strerror(errno)); return -1; } if (mss > 0) { #if defined(IPPROTO_TCP) && defined(TCP_MAXSEG) if(setsockopt(s, IPPROTO_TCP, TCP_MAXSEG, (void*)&mss, (socklen_t)sizeof(mss)) < 0) { - #ifndef USE_WINSOCK log_err(" setsockopt(.. TCP_MAXSEG ..) failed: %s", - strerror(errno)); - #else - log_err(" setsockopt(.. TCP_MAXSEG ..) failed: %s", - wsa_strerror(WSAGetLastError())); - #endif + sock_strerror(errno)); } else { verbose(VERB_ALGO, " tcp socket mss set to %d", mss); @@ -699,13 +647,8 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, #ifdef SO_REUSEADDR if(setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, (socklen_t)sizeof(on)) < 0) { -#ifndef USE_WINSOCK log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", - strerror(errno)); -#else - log_err("setsockopt(.. SO_REUSEADDR ..) failed: %s", - wsa_strerror(WSAGetLastError())); -#endif + sock_strerror(errno)); sock_close(s); return -1; } @@ -741,13 +684,8 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, if(addr->ai_family == AF_INET6 && v6only) { if(setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, (void*)&on, (socklen_t)sizeof(on)) < 0) { -#ifndef USE_WINSOCK log_err("setsockopt(..., IPV6_V6ONLY, ...) failed: %s", - strerror(errno)); -#else - log_err("setsockopt(..., IPV6_V6ONLY, ...) failed: %s", - wsa_strerror(WSAGetLastError())); -#endif + sock_strerror(errno)); sock_close(s); return -1; } @@ -809,11 +747,7 @@ create_tcp_accept_sock(struct addrinfo *addr, int v6only, int* noproto, return -1; } if(listen(s, TCP_BACKLOG) == -1) { -#ifndef USE_WINSOCK - log_err("can't listen: %s", strerror(errno)); -#else - log_err("can't listen: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("can't listen: %s", sock_strerror(errno)); sock_close(s); return -1; } diff --git a/services/outside_network.c b/services/outside_network.c index ba07444df..085d0e6ae 100644 --- a/services/outside_network.c +++ b/services/outside_network.c @@ -185,12 +185,7 @@ pick_outgoing_tcp(struct waiting_tcp* w, int s) ((struct sockaddr_in6*)&pi->addr)->sin6_port = 0; else ((struct sockaddr_in*)&pi->addr)->sin_port = 0; if(bind(s, (struct sockaddr*)&pi->addr, pi->addrlen) != 0) { -#ifndef USE_WINSOCK - log_err("outgoing tcp: bind: %s", strerror(errno)); -#else - log_err("outgoing tcp: bind: %s", - wsa_strerror(WSAGetLastError())); -#endif + log_err("outgoing tcp: bind: %s", sock_strerror(errno)); sock_close(s); return 0; } @@ -221,13 +216,8 @@ outnet_get_tcp_fd(struct sockaddr_storage* addr, socklen_t addrlen, int tcp_mss, s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); } if(s == -1) { -#ifndef USE_WINSOCK - log_err_addr("outgoing tcp: socket", strerror(errno), + log_err_addr("outgoing tcp: socket", sock_strerror(errno), addr, addrlen); -#else - log_err_addr("outgoing tcp: socket", - wsa_strerror(WSAGetLastError()), addr, addrlen); -#endif return -1; } diff --git a/smallapp/unbound-control.c b/smallapp/unbound-control.c index 5936679e6..9ec137635 100644 --- a/smallapp/unbound-control.c +++ b/smallapp/unbound-control.c @@ -593,11 +593,7 @@ contact_server(const char* svr, struct config_file* cfg, int statuscmd) addrfamily = addr_is_ip6(&addr, addrlen)?PF_INET6:PF_INET; fd = socket(addrfamily, SOCK_STREAM, proto); if(fd == -1) { -#ifndef USE_WINSOCK - fatal_exit("socket: %s", strerror(errno)); -#else - fatal_exit("socket: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("socket: %s", sock_strerror(errno)); } if(connect(fd, (struct sockaddr*)&addr, addrlen) < 0) { #ifndef USE_WINSOCK @@ -681,11 +677,7 @@ remote_read(SSL* ssl, int fd, char* buf, size_t len) /* EOF */ return 0; } -#ifndef USE_WINSOCK - fatal_exit("could not recv: %s", strerror(errno)); -#else - fatal_exit("could not recv: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("could not recv: %s", sock_strerror(errno)); } buf[rr] = 0; } @@ -701,11 +693,7 @@ remote_write(SSL* ssl, int fd, const char* buf, size_t len) ssl_err("could not SSL_write"); } else { if(send(fd, buf, len, 0) < (ssize_t)len) { -#ifndef USE_WINSOCK - fatal_exit("could not send: %s", strerror(errno)); -#else - fatal_exit("could not send: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("could not send: %s", sock_strerror(errno)); } } } diff --git a/testcode/delayer.c b/testcode/delayer.c index 6562f80e6..54175dbe3 100644 --- a/testcode/delayer.c +++ b/testcode/delayer.c @@ -372,11 +372,7 @@ service_send(struct ringbuf* ring, struct timeval* now, sldns_buffer* pkt, sldns_buffer_limit(pkt), 0, (struct sockaddr*)srv_addr, srv_len); if(sent == -1) { -#ifndef USE_WINSOCK - log_err("sendto: %s", strerror(errno)); -#else - log_err("sendto: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("sendto: %s", sock_strerror(errno)); } else if(sent != (ssize_t)sldns_buffer_limit(pkt)) { log_err("sendto: partial send"); } @@ -398,13 +394,12 @@ do_proxy(struct proxy* p, int retsock, sldns_buffer* pkt) #ifndef USE_WINSOCK if(errno == EAGAIN || errno == EINTR) return; - log_err("recv: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEINPROGRESS || WSAGetLastError() == WSAEWOULDBLOCK) return; - log_err("recv: %s", wsa_strerror(WSAGetLastError())); #endif + log_err("recv: %s", sock_strerror(errno)); return; } sldns_buffer_set_limit(pkt, (size_t)r); @@ -414,11 +409,7 @@ do_proxy(struct proxy* p, int retsock, sldns_buffer* pkt) r = sendto(retsock, (void*)sldns_buffer_begin(pkt), (size_t)r, 0, (struct sockaddr*)&p->addr, p->addr_len); if(r == -1) { -#ifndef USE_WINSOCK - log_err("sendto: %s", strerror(errno)); -#else - log_err("sendto: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("sendto: %s", sock_strerror(errno)); } } } @@ -469,11 +460,7 @@ find_create_proxy(struct sockaddr_storage* from, socklen_t from_len, if(!p) fatal_exit("out of memory"); p->s = socket(serv_ip6?AF_INET6:AF_INET, SOCK_DGRAM, 0); if(p->s == -1) { -#ifndef USE_WINSOCK - fatal_exit("socket: %s", strerror(errno)); -#else - fatal_exit("socket: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("socket: %s", sock_strerror(errno)); } fd_set_nonblock(p->s); memmove(&p->addr, from, from_len); @@ -507,14 +494,12 @@ service_recv(int s, struct ringbuf* ring, sldns_buffer* pkt, #ifndef USE_WINSOCK if(errno == EAGAIN || errno == EINTR) return; - fatal_exit("recvfrom: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEWOULDBLOCK || WSAGetLastError() == WSAEINPROGRESS) return; - fatal_exit("recvfrom: %s", - wsa_strerror(WSAGetLastError())); #endif + fatal_exit("recvfrom: %s", sock_strerror(errno)); } sldns_buffer_set_limit(pkt, (size_t)len); /* find its proxy element */ @@ -571,14 +556,13 @@ service_tcp_listen(int s, fd_set* rorig, int* max, struct tcp_proxy** proxies, #ifndef USE_WINSOCK if(errno == EAGAIN || errno == EINTR) return; - fatal_exit("accept: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEWOULDBLOCK || WSAGetLastError() == WSAEINPROGRESS || WSAGetLastError() == WSAECONNRESET) return; - fatal_exit("accept: %s", wsa_strerror(WSAGetLastError())); #endif + fatal_exit("accept: %s", sock_strerror(errno)); } p = (struct tcp_proxy*)calloc(1, sizeof(*p)); if(!p) fatal_exit("out of memory"); @@ -589,11 +573,7 @@ service_tcp_listen(int s, fd_set* rorig, int* max, struct tcp_proxy** proxies, p->server_s = socket(addr_is_ip6(srv_addr, srv_len)?AF_INET6:AF_INET, SOCK_STREAM, 0); if(p->server_s == -1) { -#ifndef USE_WINSOCK - fatal_exit("tcp socket: %s", strerror(errno)); -#else - fatal_exit("tcp socket: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("tcp socket: %s", sock_strerror(errno)); } fd_set_nonblock(p->client_s); fd_set_nonblock(p->server_s); @@ -642,13 +622,12 @@ tcp_relay_read(int s, struct tcp_send_list** first, #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return 1; - log_err("tcp read: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEINPROGRESS || WSAGetLastError() == WSAEWOULDBLOCK) return 1; - log_err("tcp read: %s", wsa_strerror(WSAGetLastError())); #endif + log_err("tcp read: %s", sock_strerror(errno)); return 0; } else if(r == 0) { /* connection closed */ @@ -700,14 +679,12 @@ tcp_relay_write(int s, struct tcp_send_list** first, #ifndef USE_WINSOCK if(errno == EAGAIN || errno == EINTR) return 1; - log_err("tcp write: %s", strerror(errno)); #else if(WSAGetLastError() == WSAEWOULDBLOCK || WSAGetLastError() == WSAEINPROGRESS) return 1; - log_err("tcp write: %s", - wsa_strerror(WSAGetLastError())); #endif + log_err("tcp write: %s", sock_strerror(errno)); return 0; } else if(r == 0) { /* closed */ @@ -1018,11 +995,7 @@ service(const char* bind_str, int bindport, const char* serv_str, /* bind UDP port */ if((s = socket(str_is_ip6(bind_str)?AF_INET6:AF_INET, SOCK_DGRAM, 0)) == -1) { -#ifndef USE_WINSOCK - fatal_exit("socket: %s", strerror(errno)); -#else - fatal_exit("socket: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("socket: %s", sock_strerror(errno)); } i=0; if(bindport == 0) { @@ -1035,11 +1008,7 @@ service(const char* bind_str, int bindport, const char* serv_str, exit(1); } if(bind(s, (struct sockaddr*)&bind_addr, bind_len) == -1) { -#ifndef USE_WINSOCK - log_err("bind: %s", strerror(errno)); -#else - log_err("bind: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("bind: %s", sock_strerror(errno)); if(i--==0) fatal_exit("cannot bind any port"); bindport = 1024 + ((int)arc4random())%64000; @@ -1049,39 +1018,22 @@ service(const char* bind_str, int bindport, const char* serv_str, /* and TCP port */ if((listen_s = socket(str_is_ip6(bind_str)?AF_INET6:AF_INET, SOCK_STREAM, 0)) == -1) { -#ifndef USE_WINSOCK - fatal_exit("tcp socket: %s", strerror(errno)); -#else - fatal_exit("tcp socket: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("tcp socket: %s", sock_strerror(errno)); } #ifdef SO_REUSEADDR if(1) { int on = 1; if(setsockopt(listen_s, SOL_SOCKET, SO_REUSEADDR, (void*)&on, (socklen_t)sizeof(on)) < 0) -#ifndef USE_WINSOCK fatal_exit("setsockopt(.. SO_REUSEADDR ..) failed: %s", - strerror(errno)); -#else - fatal_exit("setsockopt(.. SO_REUSEADDR ..) failed: %s", - wsa_strerror(WSAGetLastError())); -#endif + sock_strerror(errno)); } #endif if(bind(listen_s, (struct sockaddr*)&bind_addr, bind_len) == -1) { -#ifndef USE_WINSOCK - fatal_exit("tcp bind: %s", strerror(errno)); -#else - fatal_exit("tcp bind: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("tcp bind: %s", sock_strerror(errno)); } if(listen(listen_s, 5) == -1) { -#ifndef USE_WINSOCK - fatal_exit("tcp listen: %s", strerror(errno)); -#else - fatal_exit("tcp listen: %s", wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("tcp listen: %s", sock_strerror(errno)); } fd_set_nonblock(listen_s); printf("listening on port: %d\n", bindport); diff --git a/testcode/perf.c b/testcode/perf.c index aef69045f..b13eca6d3 100644 --- a/testcode/perf.c +++ b/testcode/perf.c @@ -233,12 +233,7 @@ perfsetup(struct perfinfo* info) addr_is_ip6(&info->dest, info->destlen)? AF_INET6:AF_INET, SOCK_DGRAM, 0); if(info->io[i].fd == -1) { -#ifndef USE_WINSOCK - fatal_exit("socket: %s", strerror(errno)); -#else - fatal_exit("socket: %s", - wsa_strerror(WSAGetLastError())); -#endif + fatal_exit("socket: %s", sock_strerror(errno)); } if(info->io[i].fd > info->maxfd) info->maxfd = info->io[i].fd; @@ -281,11 +276,7 @@ perfsend(struct perfinfo* info, size_t n, struct timeval* now) /*log_hex("send", info->qlist_data[info->qlist_idx], info->qlist_len[info->qlist_idx]);*/ if(r == -1) { -#ifndef USE_WINSOCK - log_err("sendto: %s", strerror(errno)); -#else - log_err("sendto: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("sendto: %s", sock_strerror(errno)); } else if(r != (ssize_t)info->qlist_len[info->qlist_idx]) { log_err("partial sendto"); } @@ -305,11 +296,7 @@ perfreply(struct perfinfo* info, size_t n, struct timeval* now) r = recv(info->io[n].fd, (void*)sldns_buffer_begin(info->buf), sldns_buffer_capacity(info->buf), 0); if(r == -1) { -#ifndef USE_WINSOCK - log_err("recv: %s", strerror(errno)); -#else - log_err("recv: %s", wsa_strerror(WSAGetLastError())); -#endif + log_err("recv: %s", sock_strerror(errno)); } else { info->by_rcode[LDNS_RCODE_WIRE(sldns_buffer_begin( info->buf))]++; diff --git a/util/netevent.c b/util/netevent.c index 6172adb1f..d6b9d87a2 100644 --- a/util/netevent.c +++ b/util/netevent.c @@ -373,12 +373,7 @@ comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet, if(sent == -1) { if(!udp_send_errno_needs_log(addr, addrlen)) return 0; -#ifndef USE_WINSOCK - verbose(VERB_OPS, "sendto failed: %s", strerror(errno)); -#else - verbose(VERB_OPS, "sendto failed: %s", - wsa_strerror(WSAGetLastError())); -#endif + verbose(VERB_OPS, "sendto failed: %s", sock_strerror(errno)); log_addr(VERB_OPS, "remote address is", (struct sockaddr_storage*)addr, addrlen); return 0; @@ -845,7 +840,6 @@ int comm_point_perform_accept(struct comm_point* c, return -1; } #endif - log_err_addr("accept failed", strerror(errno), addr, *addrlen); #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAEINPROGRESS || WSAGetLastError() == WSAECONNRESET) @@ -854,9 +848,9 @@ int comm_point_perform_accept(struct comm_point* c, ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); return -1; } - log_err_addr("accept failed", wsa_strerror(WSAGetLastError()), - addr, *addrlen); #endif + log_err_addr("accept failed", sock_strerror(errno), addr, + *addrlen); return -1; } if(c->tcp_conn_limit && c->type == comm_tcp_accept) { @@ -1435,8 +1429,6 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) if(errno == ECONNRESET && verbosity < 2) return 0; /* silence reset by peer */ #endif - log_err_addr("read (in tcp s)", strerror(errno), - &c->repinfo.addr, c->repinfo.addrlen); #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAECONNRESET) return 0; @@ -1447,10 +1439,9 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) UB_EV_READ); return 1; } - log_err_addr("read (in tcp s)", - wsa_strerror(WSAGetLastError()), - &c->repinfo.addr, c->repinfo.addrlen); #endif + log_err_addr("read (in tcp s)", sock_strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); return 0; } c->tcp_byte_count += r; @@ -1483,8 +1474,6 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return 1; - log_err_addr("read (in tcp r)", strerror(errno), - &c->repinfo.addr, c->repinfo.addrlen); #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAECONNRESET) return 0; @@ -1494,10 +1483,9 @@ comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok) ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); return 1; } - log_err_addr("read (in tcp r)", - wsa_strerror(WSAGetLastError()), - &c->repinfo.addr, c->repinfo.addrlen); #endif + log_err_addr("read (in tcp r)", sock_strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); return 0; } sldns_buffer_skip(c->buffer, r); @@ -1716,8 +1704,6 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) if(errno == ECONNRESET && verbosity < 2) return 0; /* silence reset by peer */ #endif - log_err_addr("tcp send r", strerror(errno), - &c->repinfo.addr, c->repinfo.addrlen); #else if(WSAGetLastError() == WSAEINPROGRESS) return 1; @@ -1727,9 +1713,9 @@ comm_point_tcp_handle_write(int fd, struct comm_point* c) } if(WSAGetLastError() == WSAECONNRESET && verbosity < 2) return 0; /* silence reset by peer */ - log_err_addr("tcp send r", wsa_strerror(WSAGetLastError()), - &c->repinfo.addr, c->repinfo.addrlen); #endif + log_err_addr("tcp send r", sock_strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); return 0; } sldns_buffer_skip(buffer, r); @@ -1914,8 +1900,6 @@ http_read_more(int fd, struct comm_point* c) #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return 1; - log_err_addr("read (in http r)", strerror(errno), - &c->repinfo.addr, c->repinfo.addrlen); #else /* USE_WINSOCK */ if(WSAGetLastError() == WSAECONNRESET) return 0; @@ -1925,10 +1909,9 @@ http_read_more(int fd, struct comm_point* c) ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_READ); return 1; } - log_err_addr("read (in http r)", - wsa_strerror(WSAGetLastError()), - &c->repinfo.addr, c->repinfo.addrlen); #endif + log_err_addr("read (in http r)", sock_strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); return 0; } sldns_buffer_skip(c->buffer, r); @@ -2364,8 +2347,6 @@ http_write_more(int fd, struct comm_point* c) #ifndef USE_WINSOCK if(errno == EINTR || errno == EAGAIN) return 1; - log_err_addr("http send r", strerror(errno), - &c->repinfo.addr, c->repinfo.addrlen); #else if(WSAGetLastError() == WSAEINPROGRESS) return 1; @@ -2373,9 +2354,9 @@ http_write_more(int fd, struct comm_point* c) ub_winsock_tcp_wouldblock(c->ev->ev, UB_EV_WRITE); return 1; } - log_err_addr("http send r", wsa_strerror(WSAGetLastError()), - &c->repinfo.addr, c->repinfo.addrlen); #endif + log_err_addr("http send r", sock_strerror(errno), + &c->repinfo.addr, c->repinfo.addrlen); return 0; } sldns_buffer_skip(c->buffer, r); From afbc7bb4fec5026f6a1a1487e643b94b2ba1d694 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Mon, 31 Aug 2020 11:50:11 +0200 Subject: [PATCH 76/81] - Fix #296: systemd nss-lookup.target is reached before unbound can successfully answer queries. Changed contrib/unbound.service.in. --- contrib/unbound.service.in | 6 +++--- doc/Changelog | 2 ++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/contrib/unbound.service.in b/contrib/unbound.service.in index 8ebe529c9..c95ab94b3 100644 --- a/contrib/unbound.service.in +++ b/contrib/unbound.service.in @@ -42,9 +42,9 @@ [Unit] Description=Validating, recursive, and caching DNS resolver Documentation=man:unbound(8) -After=network.target -Before=network-online.target nss-lookup.target -Wants=nss-lookup.target +After=network-online.target +Before=nss-lookup.target +Wants=network-online.target nss-lookup.target [Install] WantedBy=multi-user.target diff --git a/doc/Changelog b/doc/Changelog index 5a327a23f..110da7f2b 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,8 @@ - Merge PR #293: Add missing prototype. Also refactor to use the new shorthand function to clean up the code. - Refactor to use sock_strerr shorthand function. + - Fix #296: systemd nss-lookup.target is reached before unbound can + successfully answer queries. Changed contrib/unbound.service.in. 27 August 2020: Wouter - Similar to NSD PR#113, implement that interface names can be used, From 82f2ee63c562bb8e0c64392ac22de79f5dd1d172 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Wed, 9 Sep 2020 11:44:44 +0200 Subject: [PATCH 77/81] - Fix num.expired statistics output. --- daemon/stats.c | 1 + doc/Changelog | 3 +++ 2 files changed, 4 insertions(+) diff --git a/daemon/stats.c b/daemon/stats.c index a568ba070..cb956ddd5 100644 --- a/daemon/stats.c +++ b/daemon/stats.c @@ -271,6 +271,7 @@ server_stats_compile(struct worker* worker, struct ub_stats_info* s, int reset) s->svr.ans_secure += (long long)worker->env.mesh->ans_secure; s->svr.ans_bogus += (long long)worker->env.mesh->ans_bogus; s->svr.ans_rcode_nodata += (long long)worker->env.mesh->ans_nodata; + s->svr.ans_expired += (long long)worker->env.mesh->ans_expired; for(i=0; isvr.ans_rcode[i] += (long long)worker->env.mesh->ans_rcode[i]; for(i=0; i Date: Fri, 11 Sep 2020 14:08:10 +0200 Subject: [PATCH 78/81] - Remove x file mode on ipset/ipset.c and h files. --- doc/Changelog | 3 +++ ipset/ipset.c | 0 ipset/ipset.h | 0 3 files changed, 3 insertions(+) mode change 100755 => 100644 ipset/ipset.c mode change 100755 => 100644 ipset/ipset.h diff --git a/doc/Changelog b/doc/Changelog index 9fb230cf8..e2ea4c7d8 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +11 September 2020: Wouter + - Remove x file mode on ipset/ipset.c and h files. + 9 September 2020: Wouter - Fix num.expired statistics output. diff --git a/ipset/ipset.c b/ipset/ipset.c old mode 100755 new mode 100644 diff --git a/ipset/ipset.h b/ipset/ipset.h old mode 100755 new mode 100644 From 0ce77697194f280e699fc64fd1d27ff02b8b4294 Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 15 Sep 2020 12:45:22 +0200 Subject: [PATCH 79/81] - Introduce test for statistics. --- doc/Changelog | 3 + testdata/stat_values.tdir/stat_values.conf | 31 ++ testdata/stat_values.tdir/stat_values.dsc | 16 + testdata/stat_values.tdir/stat_values.post | 14 + testdata/stat_values.tdir/stat_values.pre | 41 ++ testdata/stat_values.tdir/stat_values.test | 411 ++++++++++++++++++ .../stat_values.testexpiredns | 13 + testdata/stat_values.tdir/stat_values.testns | 23 + testdata/stat_values.tdir/unbound_control.key | 39 ++ testdata/stat_values.tdir/unbound_control.pem | 22 + testdata/stat_values.tdir/unbound_server.key | 39 ++ testdata/stat_values.tdir/unbound_server.pem | 22 + 12 files changed, 674 insertions(+) create mode 100644 testdata/stat_values.tdir/stat_values.conf create mode 100644 testdata/stat_values.tdir/stat_values.dsc create mode 100644 testdata/stat_values.tdir/stat_values.post create mode 100644 testdata/stat_values.tdir/stat_values.pre create mode 100644 testdata/stat_values.tdir/stat_values.test create mode 100644 testdata/stat_values.tdir/stat_values.testexpiredns create mode 100644 testdata/stat_values.tdir/stat_values.testns create mode 100644 testdata/stat_values.tdir/unbound_control.key create mode 100644 testdata/stat_values.tdir/unbound_control.pem create mode 100644 testdata/stat_values.tdir/unbound_server.key create mode 100644 testdata/stat_values.tdir/unbound_server.pem diff --git a/doc/Changelog b/doc/Changelog index e2ea4c7d8..593b57971 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +15 September 2020: George + - Introduce test for statistics. + 11 September 2020: Wouter - Remove x file mode on ipset/ipset.c and h files. diff --git a/testdata/stat_values.tdir/stat_values.conf b/testdata/stat_values.tdir/stat_values.conf new file mode 100644 index 000000000..aaef81d4f --- /dev/null +++ b/testdata/stat_values.tdir/stat_values.conf @@ -0,0 +1,31 @@ +server: + verbosity: 5 + num-threads: 1 + interface: 127.0.0.1 + port: @PORT@ + use-syslog: no + directory: "" + pidfile: "unbound.pid" + chroot: "" + username: "" + do-not-query-localhost: no + extended-statistics: yes + identity: "stat_values" + + local-zone: local.zone static + local-data: "www.local.zone A 192.0.2.1" +remote-control: + control-enable: yes + control-interface: 127.0.0.1 + # control-interface: ::1 + control-port: @CONTROL_PORT@ + server-key-file: "unbound_server.key" + server-cert-file: "unbound_server.pem" + control-key-file: "unbound_control.key" + control-cert-file: "unbound_control.pem" +forward-zone: + name: "." + forward-addr: "127.0.0.1@@TOPORT@" +forward-zone: + name: "expired." + forward-addr: "127.0.0.1@@EXPIREDPORT@" diff --git a/testdata/stat_values.tdir/stat_values.dsc b/testdata/stat_values.tdir/stat_values.dsc new file mode 100644 index 000000000..5112dbcf9 --- /dev/null +++ b/testdata/stat_values.tdir/stat_values.dsc @@ -0,0 +1,16 @@ +BaseName: stat_values +Version: 1.0 +Description: Test unbound statistics +CreationDate: Mon Sep 09 14:48:03 CEST 2020 +Maintainer: +Category: +Component: +CmdDepends: +Depends: +Help: +Pre: stat_values.pre +Post: stat_values.post +Test: stat_values.test +AuxFiles: +Passed: +Failure: diff --git a/testdata/stat_values.tdir/stat_values.post b/testdata/stat_values.tdir/stat_values.post new file mode 100644 index 000000000..8656b599f --- /dev/null +++ b/testdata/stat_values.tdir/stat_values.post @@ -0,0 +1,14 @@ +# #-- stat_values.post --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# source the test var file when it's there +[ -f .tpkg.var.test ] && source .tpkg.var.test +# +# do your teardown here +. ../common.sh +kill_pid $FWD_PID +kill $FWD_EXPIRED_PID >/dev/null 2>&1 # This is killed during testing. +# it was stopped with unbound-control (if the test succeeded) +kill $UNBOUND_PID >/dev/null 2>&1 +kill $UNBOUND_PID >/dev/null 2>&1 +exit 0 diff --git a/testdata/stat_values.tdir/stat_values.pre b/testdata/stat_values.tdir/stat_values.pre new file mode 100644 index 000000000..2db4a17e0 --- /dev/null +++ b/testdata/stat_values.tdir/stat_values.pre @@ -0,0 +1,41 @@ +# #-- stat_values.pre--# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test + +. ../common.sh +get_random_port 4 +UNBOUND_PORT=$RND_PORT +FWD_PORT=$(($RND_PORT + 1)) +FWD_EXPIRED_PORT=$(($RND_PORT + 2)) +CONTROL_PORT=$(($RND_PORT + 3)) +FWD_EXPIRED_PORT=$(($RND_PORT + 4)) +echo "UNBOUND_PORT=$UNBOUND_PORT" >> .tpkg.var.test +echo "FWD_PORT=$FWD_PORT" >> .tpkg.var.test +echo "FWD_EXPIRED_PORT=$FWD_EXPIRED_PORT" >> .tpkg.var.test +echo "CONTROL_PORT=$CONTROL_PORT" >> .tpkg.var.test + +# start forwarder +get_ldns_testns +$LDNS_TESTNS -p $FWD_PORT stat_values.testns >fwd.log 2>&1 & +FWD_PID=$! +echo "FWD_PID=$FWD_PID" >> .tpkg.var.test + +# start expired forwarder +$LDNS_TESTNS -p $FWD_EXPIRED_PORT stat_values.testexpiredns >fwd_expired.log 2>&1 & +FWD_EXPIRED_PID=$! +echo "FWD_EXPIRED_PID=$FWD_EXPIRED_PID" >> .tpkg.var.test + +# make config file +sed -e 's/@PORT\@/'$UNBOUND_PORT'/' -e 's/@TOPORT\@/'$FWD_PORT'/' -e 's/@EXPIREDPORT\@/'$FWD_EXPIRED_PORT'/' -e 's/@CONTROL_PORT\@/'$CONTROL_PORT'/' < stat_values.conf > ub.conf +# start unbound in the background +PRE="../.." +$PRE/unbound -d -c ub.conf >unbound.log 2>&1 & +UNBOUND_PID=$! +echo "UNBOUND_PID=$UNBOUND_PID" >> .tpkg.var.test + +cat .tpkg.var.test +wait_ldns_testns_up fwd.log +wait_ldns_testns_up fwd_expired.log +wait_unbound_up unbound.log diff --git a/testdata/stat_values.tdir/stat_values.test b/testdata/stat_values.tdir/stat_values.test new file mode 100644 index 000000000..5c72708a6 --- /dev/null +++ b/testdata/stat_values.tdir/stat_values.test @@ -0,0 +1,411 @@ +# #-- stat_values.test --# +# source the master var file when it's there +[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master +# use .tpkg.var.test for in test variable passing +[ -f .tpkg.var.test ] && source .tpkg.var.test +# We need kill_pid for the serve-expired-client-timeour test +. ../common.sh + +PRE="../.." + +# Individual thread stats. +STATS_IGNORE_THREAD="\ +^thread" + +# Histogram stats. +STATS_IGNORE_HISTOGRAM="\ +^histogram" + +# Time dependent stats. +STATS_IGNORE_TIME_SPECIFIC="\ +^total.recursion.time.avg= +^total.recursion.time.median= +^time.now= +^time.up= +^time.elapsed=" + +# Usage dependent stats. +STATS_IGNORE_USAGE_SPECIFIC="\ +^total.requestlist.avg= +^total.requestlist.max= +^total.requestlist.overwritten= +^total.requestlist.exceeded= +^total.requestlist.current.all= +^total.requestlist.current.user= +^total.tcpusage= +^mem\." + +# Stats to ignore by default. +STATS_IGNORE_DEFAULT="\ +$STATS_IGNORE_THREAD +$STATS_IGNORE_HISTOGRAM +$STATS_IGNORE_TIME_SPECIFIC +$STATS_IGNORE_USAGE_SPECIFIC" + +# Various files to be used while testing. +STATS_FILE=stats.$$ +EXPECTED_STATS_FILE=expected_stats.$$ +IGNORE_REGEX_FILE=ignore_regex.$$ +FILTERED_STATS_FILE=filtered_stats.$$ +FOUND_STATS_FILE=found_stats.$$ +REST_STATS_FILE=rest_stats.$$ + +DEBUG=0 + +# Write stats to $STATS_FILE. +# Call this when you want to get stats from unbound. +get_stats () { + echo "> Getting stats" + echo "$PRE/unbound-control -c ub.conf stats" + $PRE/unbound-control -c ub.conf stats > $STATS_FILE + if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 + fi +} + +# Set the expected stat values by writing to $EXPECTED_STATS_FILE. +# sort is used for proper diff later. +set_expected_stats () { + echo "$1" | sort > $EXPECTED_STATS_FILE +} + +# Set the regex to ignore stats by writing to $IGNORE_REGEX_FILE. +set_ignore_regex_stats () { + echo "$1" > $IGNORE_REGEX_FILE +} + +# Filter the stats by removing any matched regex from $IGNORE_REGEX_FILE, +# sorts and writes the left over stats to $FILTERED_STATS_FILE. +filter_stats () { + grep -v -f $IGNORE_REGEX_FILE $STATS_FILE | sort > $FILTERED_STATS_FILE +} + +# Check that the stats in $FILTERED_STATS_FILE include the expected stats in +# $EXPECTED_STATS_FILE. +check_expected_stats () { + echo "> Checking expected stats" + grep -F -x -f $EXPECTED_STATS_FILE $FILTERED_STATS_FILE > $FOUND_STATS_FILE + if test $DEBUG -ne 0; then + echo "Found:" + cat $FOUND_STATS_FILE + fi + if diff $EXPECTED_STATS_FILE $FOUND_STATS_FILE; then + echo "OK" + else + echo "! bad expected stats:" + cat $FILTERED_STATS_FILE + exit 1 + fi +} + +# Check that the rest (unspecified) stats are all 0 (no surprises). +check_rest_stats () { + echo "> Checking rest stats" + grep -F -x -v -f $EXPECTED_STATS_FILE $FILTERED_STATS_FILE > $REST_STATS_FILE + if test $DEBUG -ne 0; then + echo "Rest:" + cat $REST_STATS_FILE + fi + if grep -v "=0$" $REST_STATS_FILE; then + echo "! bad rest stats" + exit 1 + else + echo "OK" + fi +} + +# Main function to check stats by: +# - Getting stats from unbound +# - Filtering out the stats we are not interested in +# - Checking that the expected stats are part of the filtered stats +# - The rest of the stats have 0 values. +check_stats () { + set_expected_stats "$1" + if test $DEBUG -ne 0; then + echo "Expected:" + cat $EXPECTED_STATS_FILE + fi + get_stats + filter_stats + if test $DEBUG -ne 0; then + echo "Filtered:" + cat $FILTERED_STATS_FILE + fi + check_expected_stats + check_rest_stats +} + +# Convenient function to set an option through unbound-control. +set_ub_option () { + name=$1 + value=$2 + echo "$PRE/unbound-control -c ub.conf set_option $name: $value" + $PRE/unbound-control -c ub.conf set_option $name: $value + if test $? -ne 0; then + echo "wrong exit value after success" + exit 1 + fi +} + +# Convenient function to exit the test. +end () { + echo "> cat logfiles" + cat fwd.log + cat unbound.log + if test $1 -eq 1; then + echo "Not OK" + else + echo "> OK" + fi + exit $1 +} + +# Ignore all run specific stats. +set_ignore_regex_stats "$STATS_IGNORE_DEFAULT" + +# Check if the server is up. +echo "> dig 1ttl.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT 1ttl.example.com. | tee outfile +echo "> check answer" +if grep "1.1.1.1" outfile; then + echo "OK" +else + end 1 +fi + +echo +echo "[ Check initial stats based on first query. ]" +check_stats "\ +total.num.queries=1 +total.num.cachemiss=1 +total.num.recursivereplies=1 +num.query.type.A=1 +num.query.class.IN=1 +num.query.opcode.QUERY=1 +num.query.flags.RD=1 +num.query.flags.AD=1 +num.query.edns.present=1 +msg.cache.count=1 +rrset.cache.count=1 +infra.cache.count=1 +num.answer.rcode.NOERROR=1" + +echo +echo "[ Check stat reset. ]" +check_stats "\ +msg.cache.count=1 +rrset.cache.count=1 +infra.cache.count=1" + + +echo +echo "[ Enable serve-expired and check. ]" +set_ub_option serve-expired yes +sleep 2 # make sure the TTL has expired. +echo "> dig 1ttl.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT 1ttl.example.com. | tee outfile +echo "> check answer" +if grep "1.1.1.1" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +total.num.queries=1 +total.num.expired=1 +total.num.cachehits=1 +total.num.prefetch=1 +num.answer.rcode.NOERROR=1 +num.query.class.IN=1 +num.query.edns.present=1 +num.query.flags.AD=1 +num.query.flags.RD=1 +num.query.opcode.QUERY=1 +num.query.type.A=1 +msg.cache.count=1 +rrset.cache.count=1 +infra.cache.count=1" + + +echo +echo "[ Enable serve-expired-client-timeout and check. ]" +set_ub_option serve-expired-client-timeout 1 +echo "> dig servfail.expired." +dig @127.0.0.1 -p $UNBOUND_PORT servfail.expired. | tee outfile +echo "> check answer" +if grep "192.0.2.1" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +total.num.queries=1 +total.num.cachemiss=1 +total.num.recursivereplies=1 +num.query.type.A=1 +num.query.class.IN=1 +num.query.opcode.QUERY=1 +num.query.flags.RD=1 +num.query.flags.AD=1 +num.query.edns.present=1 +msg.cache.count=2 +rrset.cache.count=2 +infra.cache.count=2 +num.answer.rcode.NOERROR=1" +kill_pid $FWD_EXPIRED_PID # kill the expired forwarder to force a servfail from upstream. +sleep 2 # make sure the TTL has expired. +echo "> dig servfail.expired." +dig @127.0.0.1 -p $UNBOUND_PORT servfail.expired. | tee outfile +echo "> check answer" +if grep "192.0.2.1" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +total.num.queries=1 +total.num.expired=1 +total.num.recursivereplies=1 +num.answer.rcode.NOERROR=1 +num.query.class.IN=1 +num.query.edns.present=1 +num.query.flags.AD=1 +num.query.flags.RD=1 +num.query.opcode.QUERY=1 +num.query.type.A=1 +total.num.cachemiss=1 +msg.cache.count=2 +rrset.cache.count=2 +infra.cache.count=2" + + +# Disable serve-expired +set_ub_option serve-expired no + + +echo +echo "[ Check REFUSED; try without RD flag. ]" +echo "> dig somethingelse.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT +nordflag somethingelse.example.com. | tee outfile +echo "> check answer" +if grep "REFUSED" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +num.answer.rcode.REFUSED=1 +total.num.cachehits=1 +num.query.class.IN=1 +num.query.edns.present=1 +num.query.flags.AD=1 +num.query.opcode.QUERY=1 +num.query.type.A=1 +total.num.queries=1 +msg.cache.count=2 +rrset.cache.count=2 +infra.cache.count=2" + + +echo +echo "[ Check the AD flag. ]" +echo "> dig www.example.com." +dig @127.0.0.1 -p $UNBOUND_PORT +noadflag www.example.com. | tee outfile +echo "> check answer" +if grep "10.20.30.40" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +num.query.flags.AD=0 +total.num.cachemiss=1 +num.answer.rcode.NOERROR=1 +num.query.class.IN=1 +num.query.edns.present=1 +num.query.flags.RD=1 +num.query.opcode.QUERY=1 +num.query.type.A=1 +total.num.queries=1 +total.num.recursivereplies=1 +msg.cache.count=3 +rrset.cache.count=3 +infra.cache.count=2" + +echo +echo "[ Check local zone. ]" +echo "> dig www.local.zone." +dig @127.0.0.1 -p $UNBOUND_PORT www.local.zone. | tee outfile +echo "> check answer" +if grep "192.0.2.1" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +num.answer.rcode.NOERROR=1 +total.num.cachehits=1 +num.query.class.IN=1 +num.query.edns.present=1 +num.query.flags.AD=1 +num.query.flags.RD=1 +num.query.opcode.QUERY=1 +num.query.type.A=1 +total.num.queries=1 +msg.cache.count=3 +rrset.cache.count=3 +infra.cache.count=2" + + +echo +echo "[ Check NXDOMAIN (with local data). ]" +echo "> dig mail.local.zone." +dig @127.0.0.1 -p $UNBOUND_PORT mail.local.zone. | tee outfile +echo "> check answer" +if grep "NXDOMAIN" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +num.answer.rcode.NXDOMAIN=1 +total.num.cachehits=1 +num.query.class.IN=1 +num.query.edns.present=1 +num.query.flags.AD=1 +num.query.flags.RD=1 +num.query.opcode.QUERY=1 +num.query.type.A=1 +total.num.queries=1 +msg.cache.count=3 +rrset.cache.count=3 +infra.cache.count=2" + + +echo +echo "[ Check CHAOS. ]" +echo "> dig id.server. ch txt" +dig @127.0.0.1 -p $UNBOUND_PORT id.server. ch txt | tee outfile +echo "> check answer" +if grep "stat_values" outfile; then + echo "OK" +else + end 1 +fi +check_stats "\ +num.query.class.CH=1 +total.num.cachehits=1 +num.answer.rcode.NOERROR=1 +num.query.edns.present=1 +num.query.flags.AD=1 +num.query.flags.RD=1 +num.query.opcode.QUERY=1 +num.query.type.TXT=1 +total.num.queries=1 +msg.cache.count=3 +rrset.cache.count=3 +infra.cache.count=2" + + +end 0 diff --git a/testdata/stat_values.tdir/stat_values.testexpiredns b/testdata/stat_values.tdir/stat_values.testexpiredns new file mode 100644 index 000000000..a737a4a79 --- /dev/null +++ b/testdata/stat_values.tdir/stat_values.testexpiredns @@ -0,0 +1,13 @@ +; nameserver test file +$ORIGIN expired. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +servfail IN A +SECTION ANSWER +servfail 1 IN A 192.0.2.1 +ENTRY_END diff --git a/testdata/stat_values.tdir/stat_values.testns b/testdata/stat_values.tdir/stat_values.testns new file mode 100644 index 000000000..6691b0199 --- /dev/null +++ b/testdata/stat_values.tdir/stat_values.testns @@ -0,0 +1,23 @@ +; nameserver test file +$ORIGIN example.com. +$TTL 3600 + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +www IN A +SECTION ANSWER +www IN A 10.20.30.40 +ENTRY_END + +ENTRY_BEGIN +MATCH opcode qtype qname +REPLY QR AA NOERROR +ADJUST copy_id +SECTION QUESTION +1ttl IN A +SECTION ANSWER +1ttl 1 IN A 1.1.1.1 +ENTRY_END diff --git a/testdata/stat_values.tdir/unbound_control.key b/testdata/stat_values.tdir/unbound_control.key new file mode 100644 index 000000000..753a4ef61 --- /dev/null +++ b/testdata/stat_values.tdir/unbound_control.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/testdata/stat_values.tdir/unbound_control.pem b/testdata/stat_values.tdir/unbound_control.pem new file mode 100644 index 000000000..a1edf7017 --- /dev/null +++ b/testdata/stat_values.tdir/unbound_control.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDszCCAhsCFGD5193whHQ2bVdzbaQfdf1gc4SkMA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjMwWhcNNDAwMzI1MTMzMjMw +WjAaMRgwFgYDVQQDDA91bmJvdW5kLWNvbnRyb2wwggGiMA0GCSqGSIb3DQEBAQUA +A4IBjwAwggGKAoIBgQCy0Sn4/KHxcau1nvsDgWFiO9t4Hd0xrtDasZbGhvOUD2mv +OEDVoKEC9S0I4C4z6sHo1M0HxhZ9kltAdrDIw2mYLvtyDq9ctgIZRAdnICqJ03Tj +1EkXlPuPg3xWeK/XsuJF2vRLqzDLg9G8Scg89XjcRAdmoLmNW8ewqSEh+YEX8OPl +NdHKl5rBZX+bmN5Tr/gdFgx/K0Fl07WY9e5YuHSWBtDhIJuCs5RUPeueIyTXJkht +A6a+UMdip6SMNv+85bYrFRAsbThpkwnWZZ91vAbQIpCRKMhIQNnWXvq+EzqZMzR/ +Bdsi/IVn3I88KV7WYXlpKXFLZyYa4ZVJFBrDxcX197dr0AIklOvfcd1KnJpmQpEB +TMtwqosKXfbd1oq/c3DABPTdOPiJAzjXoBIyiLJ8Vr/YZZMpBWN127wKtqvu0Zp/ +nGuWKDgMGasG91gDeePLvb9EPvWEvCaVGgIZTt1G4Ov07ooBJSbVGL3U41n+p2My ++i/XmXa+PgZX4pdHTR0CAwEAATANBgkqhkiG9w0BAQsFAAOCAYEAd++Wen6l8Ifj +4h3p/y16PhSsWJWuJ4wdNYy3/GM84S26wGjzlEEwiW76HpH6VJzPOiBAeWnFKE83 +hFyetEIxgJeIPbcs9ZP/Uoh8GZH9tRISBSN9Hgk2Slr9llo4t1H0g/XTgA5HqMQU +9YydlBh43G7Vw3FVwh09OM6poNOGQKNc/tq2/QdKeUMtyBbLWpRmjH5XcCT35fbn +ZiVOUldqSHD4kKrFO4nJYXZyipRbcXybsLiX9GP0GLemc3IgIvOXyJ2RPp06o/SJ +pzlMlkcAfLJaSuEW57xRakhuNK7m051TKKzJzIEX+NFYOVdafFHS8VwGrYsdrFvD +72tMfu+Fu55y3awdWWGc6YlaGogZiuMnJkvQphwgn+5qE/7CGEckoKEsH601rqIZ +muaIc85+nEcHJeijd/ZlBN9zeltjFoMuqTUENgmv8+tUAdVm/UMY9Vjme6b43ydP +uv6DS02+k9z8toxXworLiPr94BGaiGV1NxgwZKLZigYJt/Fi2Qte +-----END CERTIFICATE----- diff --git a/testdata/stat_values.tdir/unbound_server.key b/testdata/stat_values.tdir/unbound_server.key new file mode 100644 index 000000000..370a7bbb2 --- /dev/null +++ b/testdata/stat_values.tdir/unbound_server.key @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- diff --git a/testdata/stat_values.tdir/unbound_server.pem b/testdata/stat_values.tdir/unbound_server.pem new file mode 100644 index 000000000..986807310 --- /dev/null +++ b/testdata/stat_values.tdir/unbound_server.pem @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDqzCCAhMCFBHWXeQ6ZIa9QcQbXLFfC6tj+KA+MA0GCSqGSIb3DQEBCwUAMBIx +EDAOBgNVBAMMB3VuYm91bmQwHhcNMjAwNzA4MTMzMjI5WhcNNDAwMzI1MTMzMjI5 +WjASMRAwDgYDVQQDDAd1bmJvdW5kMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIB +igKCAYEAvjSVSN2QMXudpzukdLCqgg/IOhCX8KYkD0FFFfWcQjgKq5wI0x41iG32 +a6wbGanre4IX7VxaSPu9kkHfnGgynCk5nwDRedE/FLFhAU78PoT0+NqqGRS7XVQ2 +4vLmIz9Hqc2Ozx1um1BXBTmIT0UfN2e22I0LWQ6a3seZlEDRj45gnk7Zuh9MDgot +aBdm+v1JAbupSf6Zis4VEH3JNdvVGE3O1DHEIeuuz/3BDhpf6WBDH+8KWaBe1ca4 +TZHr9ThL2gEMEfAQl0wXDwRWRoi3NjNMH+mw0L1rjwThI5GXqNIee7o5FzUReSXZ +uTdFMyGe3Owcx+XoYnwi6cplSNoGsDBu4B9bKKglR9YleJVw4L4Xi8xPq6O9UPj4 ++nypHk/DOoC7DIM3ufN0yxPBsFo5TVowxfhdjZXJbbftd2TZv7AH8+XLA5UoZgRz +XgzECelXSCTBFlMTnT48LfA9pMLydyjAz2UdPHs5Iv+TK5nnI+aJoeaP7kFZSngx +dy1+A/bNAgMBAAEwDQYJKoZIhvcNAQELBQADggGBABunf93MKaCUHiZgnoOTinsW +84/EgInrgtKzAyH+BhnKkJOhhR0kkIAx5d9BpDlaSiRTACFon9moWCgDIIsK/Ar7 +JE0Kln9cV//wiiNoFU0O4mnzyGUIMvlaEX6QHMJJQYvL05+w/3AAcf5XmMJtR5ca +fJ8FqvGC34b2WxX9lTQoyT52sRt+1KnQikiMEnEyAdKktMG+MwKsFDdOwDXyZhZg +XZhRrfX3/NVJolqB6EahjWIGXDeKuSSKZVtCyib6LskyeMzN5lcRfvubKDdlqFVF +qlD7rHBsKhQUWK/IO64mGf7y/de+CgHtED5vDvr/p2uj/9sABATfbrOQR3W/Of25 +sLBj4OEfrJ7lX8hQgFaxkMI3x6VFT3W8dTCp7xnQgb6bgROWB5fNEZ9jk/gjSRmD +yIU+r0UbKe5kBk/CmZVFXL2TyJ92V5NYEQh8V4DGy19qZ6u/XKYyNJL4ocs35GGe +CA8SBuyrmdhx38h1RHErR2Skzadi1S7MwGf1y431fQ== +-----END CERTIFICATE----- From 1a568a1b8c2b49c257ae3b20afd6b520b9b683de Mon Sep 17 00:00:00 2001 From: George Thessalonikefs Date: Tue, 15 Sep 2020 12:48:01 +0200 Subject: [PATCH 80/81] - Reduce unbound verbosity on test; higher during development. --- testdata/stat_values.tdir/stat_values.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testdata/stat_values.tdir/stat_values.conf b/testdata/stat_values.tdir/stat_values.conf index aaef81d4f..5cec691f5 100644 --- a/testdata/stat_values.tdir/stat_values.conf +++ b/testdata/stat_values.tdir/stat_values.conf @@ -1,5 +1,5 @@ server: - verbosity: 5 + verbosity: 2 num-threads: 1 interface: 127.0.0.1 port: @PORT@ From 4cc559d7eb29438b193355f7d2661cd9ca70a9f6 Mon Sep 17 00:00:00 2001 From: "W.C.A. Wijngaards" Date: Tue, 15 Sep 2020 13:32:30 +0200 Subject: [PATCH 81/81] - Spelling fix. --- doc/Changelog | 3 +++ testdata/stat_values.tdir/stat_values.test | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/doc/Changelog b/doc/Changelog index 593b57971..db4b27a2c 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,6 +1,9 @@ 15 September 2020: George - Introduce test for statistics. +15 September 2020: Wouter + - Spelling fix. + 11 September 2020: Wouter - Remove x file mode on ipset/ipset.c and h files. diff --git a/testdata/stat_values.tdir/stat_values.test b/testdata/stat_values.tdir/stat_values.test index 5c72708a6..1cd19fa2b 100644 --- a/testdata/stat_values.tdir/stat_values.test +++ b/testdata/stat_values.tdir/stat_values.test @@ -3,7 +3,7 @@ [ -f ../.tpkg.var.master ] && source ../.tpkg.var.master # use .tpkg.var.test for in test variable passing [ -f .tpkg.var.test ] && source .tpkg.var.test -# We need kill_pid for the serve-expired-client-timeour test +# We need kill_pid for the serve-expired-client-timeout test . ../common.sh PRE="../.."