]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
log-time-ascii option
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 6 Feb 2009 12:51:45 +0000 (12:51 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 6 Feb 2009 12:51:45 +0000 (12:51 +0000)
git-svn-id: file:///svn/unbound/trunk@1465 be551aaa-1e26-0410-a405-d3ace91eadb9

15 files changed:
config.h.in
configure
configure.ac
doc/Changelog
doc/example.conf.in
doc/unbound.conf.5.in
util/config_file.c
util/config_file.h
util/configlexer.c
util/configlexer.lex
util/configparser.c
util/configparser.h
util/configparser.y
util/log.c
util/log.h

index c396b2f400c291fba4439cee63730ea9dcca3fd3..1e2b8ffd0ce7926ea53bfcbe39140e7f2f24e7fc 100644 (file)
 /* Define to 1 if you have the `ldns' library (-lldns). */
 #undef HAVE_LIBLDNS
 
+/* Define to 1 if you have the `localtime_r' function. */
+#undef HAVE_LOCALTIME_R
+
 /* Define to 1 if your system has a GNU libc compatible `malloc' function, and
    to 0 otherwise. */
 #undef HAVE_MALLOC
 /* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H
 
+/* Define to 1 if you have the `strftime' function. */
+#undef HAVE_STRFTIME
+
 /* Define to 1 if you have the <strings.h> header file. */
 #undef HAVE_STRINGS_H
 
index 6efbac7ce95668762ad732bdd580ae9566a8376a..170b070f7a86a244b0e5c9b4ceaad6d3658bec79 100755 (executable)
--- a/configure
+++ b/configure
@@ -25284,7 +25284,9 @@ fi
 
 
 
-for ac_func in tzset sigprocmask fcntl getpwnam getrlimit setsid sbrk chroot kill sleep usleep random srandom recvmsg sendmsg writev setresuid setreuid setresgid setregid glob initgroups daemon
+
+
+for ac_func in tzset sigprocmask fcntl getpwnam getrlimit setsid sbrk chroot kill sleep usleep random srandom recvmsg sendmsg writev setresuid setreuid setresgid setregid glob initgroups daemon strftime localtime_r
 do
 as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
 { echo "$as_me:$LINENO: checking for $ac_func" >&5
index 5cd331b2bd10d707a0e00ac510b7986283fe6df3..7c651a67108375c0b9926e94632ff370c4125fd8 100644 (file)
@@ -854,7 +854,7 @@ AC_CHECK_GETADDRINFO_WITH_INCLUDES
 if test $ac_cv_func_getaddrinfo = no; then
 AC_LIBOBJ([fake-rfc2553])
 fi
-AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam getrlimit setsid sbrk chroot kill sleep usleep random srandom recvmsg sendmsg writev setresuid setreuid setresgid setregid glob initgroups daemon])
+AC_CHECK_FUNCS([tzset sigprocmask fcntl getpwnam getrlimit setsid sbrk chroot kill sleep usleep random srandom recvmsg sendmsg writev setresuid setreuid setresgid setregid glob initgroups daemon strftime localtime_r])
 
 # check if setreuid en setregid fail, on MacOSX10.4(darwin8).
 if echo $build_os | grep darwin8 > /dev/null; then
index 4193c6db3385ca05134d9936b18158e0534d68a9..1e69677a65241a0bcc2757dbeaccd8119c65a654 100644 (file)
@@ -8,6 +8,8 @@
          Does not allow literal newlines inside quoted strings anymore.
        - verbosity level 5 logs customer IP for new requestlist entries.
        - test fix, lexer and cancel test.
+       - new option log-time-ascii: yes  if you enable it prints timestamps
+         in the log file as Feb 06 13:45:26 (just like syslog does).
 
 5 February 2009: Wouter
        - ldns 1.5.0 rc as tarball included.
index d801bb620b0c710a4f398e22a27d374adf772da8..a1d7add2af6c3302e1c6116bec4738ba1924f4b4 100644 (file)
@@ -192,6 +192,9 @@ server:
        # log to, with identity "unbound". If yes, it overrides the logfile.
        # use-syslog: yes 
 
+       # print UTC timestamp in ascii to logfile, default is secs since 1970.
+       # log-time-ascii: no
+
        # the pid file. Can be an absolute path outside of chroot/work dir.
        # pidfile: "@UNBOUND_PIDFILE@"
        
index 3d9897aa9371ad3ec20fa4fcd98cafc5283d32af..007b247fb037977174bbb11bc317926c0a6acc88 100644 (file)
@@ -337,6 +337,11 @@ The log facility LOG_DAEMON is used, with identity "unbound".
 The logfile setting is overridden when use\-syslog is turned on.
 The default is to log to syslog.
 .TP
+.B log\-time\-ascii: \fI<yes or no>
+Sets logfile lines to use a timestamp in UTC ascii. Default is no, which
+prints the seconds since 1970 in brackets. No effect if using syslog, in
+that case syslog formats the timestamp printed into the log files.
+.TP
 .B pidfile: \fI<filename>
 The process id is written to the file. Default is "@UNBOUND_PIDFILE@". 
 So,
index 8024c6256bf6f5b266fa219d9f8f3b05cf75c8f4..98f02110d20ebeb4f15f8de16e9f87f69b7b5e03 100644 (file)
@@ -83,6 +83,7 @@ config_create()
        cfg->do_udp = 1;
        cfg->do_tcp = 1;
        cfg->use_syslog = 1;
+       cfg->log_time_ascii = 0;
 #ifndef USE_WINSOCK
        cfg->outgoing_num_ports = 256;
 #else
@@ -805,6 +806,7 @@ void
 config_apply(struct config_file* config)
 {
        MAX_TTL = (uint32_t)config->max_ttl;
+       log_set_time_asc(config->log_time_ascii);
 }
 
 /** 
index 04746c0f9e83f570b77ee7332d20e8c7d6e236af..73259f38131edd9ac044cc9b9e3869d61813a631 100644 (file)
@@ -171,6 +171,8 @@ struct config_file {
 
        /** should log messages be sent to syslogd */
        int use_syslog;
+       /** log timestamp in ascii UTC */
+       int log_time_ascii;
 
        /** do not report identity (id.server, hostname.bind) */
        int hide_identity;
index 6643f38b713c4fda920b6b3272e98fec8c339744..98f14dc70e914c5db84e2d839c4e69b5c707811f 100644 (file)
@@ -361,8 +361,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 113
-#define YY_END_OF_BUFFER 114
+#define YY_NUM_RULES 114
+#define YY_END_OF_BUFFER 115
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -370,123 +370,124 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[1046] =
+static yyconst flex_int16_t yy_accept[1058] =
     {   0,
-        1,    1,   95,   95,   99,   99,  103,  103,  107,  107,
-        1,    1,  114,  111,    1,   93,   93,  112,  111,  112,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,   95,
-       96,   97,  113,   99,  100,  101,  113,  106,  103,  104,
-      105,  113,  113,  107,  108,  109,  113,  110,    1,   94,
-      110,   98,  113,  110,  111,    0,    1,    0,  111,    0,
-        2,    0,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-
-      111,  111,  111,  111,  111,  111,  111,  111,   95,    0,
-       99,    0,  106,    0,  103,  107,    0,  110,    0,  110,
-        0,  110,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  110,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      110,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,   50,  111,
-      111,  111,  111,  111,    6,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  110,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  110,  111,  111,   20,  111,  111,
-      111,  111,   12,   13,  111,   15,   14,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,    3,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  110,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-
-      111,  111,  111,  111,  111,  102,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,   23,  111,  111,  111,  111,
-      111,  111,  111,   24,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,   63,  102,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,   62,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-
-      111,  111,  111,  111,  111,  111,  111,   21,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,   22,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,   17,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,   51,   52,  111,   49,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,    5,
-      111,  111,  111,  111,  111,  111,  111,  111,   65,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-       80,   79,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,   25,  111,  111,  111,  111,
-       53,  111,  111,  111,  111,  111,   78,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,   42,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,    4,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-
-      111,  111,  111,  111,  111,  111,  111,   88,  111,   16,
-      111,  111,   55,   56,   54,  111,  111,  111,  111,  111,
-       61,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,   69,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,   31,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,   60,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,   64,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,   71,  111,  111,  111,  111,   59,  111,   86,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,   32,   33,  111,   38,   74,  111,   81,
-      111,   27,  111,   76,  111,  111,  111,  111,  111,    7,
-      111,   48,   85,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,   66,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,  111,  111,   75,   26,   28,  111,  111,  111,
-      111,  111,   47,  111,  111,  111,   89,  111,  111,  111,
-
-      111,  111,  111,   45,  111,  111,  111,  111,  111,  111,
-       91,  111,  111,  111,  111,  111,  111,  111,   11,  111,
-      111,  111,  111,  111,  111,   10,  111,  111,   29,  111,
-       90,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,   92,   87,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,   34,  111,  111,  111,  111,  111,   30,  111,
-      111,  111,   67,   68,  111,  111,  111,   70,  111,  111,
-      111,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-       18,  111,  111,  111,  111,  111,  111,  111,  111,  111,
-      111,  111,   84,  111,  111,  111,  111,  111,  111,   19,
-
-      111,    9,  111,  111,   82,   39,  111,  111,  111,   73,
-       57,  111,  111,   41,   44,   40,  111,   35,  111,    8,
-      111,  111,   72,  111,  111,  111,   36,  111,   83,  111,
-      111,   58,   43,   37,  111,  111,  111,  111,   46,  111,
-      111,  111,  111,   77,    0
+        1,    1,   96,   96,  100,  100,  104,  104,  108,  108,
+        1,    1,  115,  112,    1,   94,   94,  113,  112,  113,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,   96,
+       97,   98,  114,  100,  101,  102,  114,  107,  104,  105,
+      106,  114,  114,  108,  109,  110,  114,  111,    1,   95,
+      111,   99,  114,  111,  112,    0,    1,    0,  112,    0,
+        2,    0,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+
+      112,  112,  112,  112,  112,  112,  112,  112,   96,    0,
+      100,    0,  107,    0,  104,  108,    0,  111,    0,  111,
+        0,  111,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  111,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  111,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+       50,  112,  112,  112,  112,  112,    6,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  111,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  111,  112,  112,
+       20,  112,  112,  112,  112,   12,   13,  112,   15,   14,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,    3,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  111,  112,  112,  112,  112,  112,  112,  112,  112,
+
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  103,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+       23,  112,  112,  112,  112,  112,  112,  112,   24,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,   63,  103,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,   62,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,   21,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,   22,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,   17,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,   51,   52,  112,   49,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,    5,  112,  112,  112,
+      112,  112,  112,  112,  112,   65,  112,  112,  112,  112,
+
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,   81,   80,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,   25,  112,  112,  112,  112,   53,  112,
+      112,  112,  112,  112,   78,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,   42,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,    4,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,   89,  112,   16,  112,
+      112,   55,   56,   54,  112,  112,  112,  112,  112,   61,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,   69,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,   31,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,   60,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,   64,  112,
+
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,   71,  112,  112,  112,  112,   59,  112,   87,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,   32,   33,  112,   38,   74,  112,
+       82,   79,  112,   27,  112,   76,  112,  112,  112,  112,
+      112,    7,  112,   48,   86,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,   66,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,  112,  112,   75,   26,   28,  112,
+
+      112,  112,  112,  112,   47,  112,  112,  112,   90,  112,
+      112,  112,  112,  112,  112,   45,  112,  112,  112,  112,
+      112,  112,   92,  112,  112,  112,  112,  112,  112,  112,
+       11,  112,  112,  112,  112,  112,  112,   10,  112,  112,
+       29,  112,   91,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,  112,   93,   88,  112,  112,  112,  112,  112,
+      112,  112,  112,  112,   34,  112,  112,  112,  112,  112,
+       30,  112,  112,  112,   67,   68,  112,  112,  112,   70,
+      112,  112,  112,  112,  112,  112,  112,  112,  112,  112,
+      112,  112,   18,  112,  112,  112,  112,  112,  112,  112,
+
+      112,  112,  112,  112,   85,  112,  112,  112,  112,  112,
+      112,   19,  112,    9,  112,  112,   83,   39,  112,  112,
+      112,   73,   57,  112,  112,   41,   44,   40,  112,   35,
+      112,    8,  112,  112,   72,  112,  112,  112,   36,  112,
+       84,  112,  112,   58,   43,   37,  112,  112,  112,  112,
+       46,  112,  112,  112,  112,   77,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -529,247 +530,251 @@ static yyconst flex_int32_t yy_meta[40] =
         1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[1060] =
+static yyconst flex_int16_t yy_base[1072] =
     {   0,
         0,    0,   37,   40,   44,   51,   63,   75,   56,   68,
-       87,  108, 2026, 2012,   50, 2115, 2115, 2115,  129,   94,
+       87,  108, 2050, 2035,   50, 2135, 2135, 2135,  129,   94,
        33,  124,   94,   49,   74,   61,   91,   92,  110,  111,
-      112,  133,   50,  135,  137,  136,  145,  143,  159, 2010,
-     2115, 2115,  122, 2009, 2115, 2115,  157, 2008, 2018, 2115,
-     2115, 2115,  176, 1873, 2115, 2115,  180, 1729,  180, 2115,
-      185, 2115,  189,   90, 1646,  195,  199, 1586,  206, 1428,
-     2115, 1276,  158,  190,  122,  116,  191,  182,  207,  199,
+      112,  133,   50,  135,  137,  136,  145,  143,  159, 2032,
+     2135, 2135,  122, 2031, 2135, 2135,  157, 2030, 2040, 2135,
+     2135, 2135,  176, 2028, 2135, 2135,  180, 2027,  180, 2135,
+      185, 2135,  189,   90, 1749,  195,  199, 1280,  206, 1128,
+     2135, 1024,  158,  190,  122,  116,  191,  182,  207,  199,
       203,  208,  210,  211,  212,  147,  213,  217,  223,  222,
       228,  230,  231,  225,  235,  233,  234,  236,  240,  242,
 
-      246,  247,  252,  250,  253,  254,   72,  256, 1212,  266,
-     1161,  269,  764,  286,  752,  374,  274,  307,  290,  296,
+      246,  247,  252,  250,  253,  254,   72,  256,  854,  266,
+      752,  269,  617,  286,  530,  481,  274,  426,  290,  296,
       211,  269,  262,  283,  289,  273,  292,  299,  305,  295,
       298,  302,  303,  301,  312,  310,  311,  313,  322,  329,
-      331,  318,  340,  336,  343,  347,  344,  346,  334,  323,
-      348,  349,  350,  353,  356,  357,  358,  360,  361,  371,
-      372,  368,  320,  364,  373,  377,  380,  381,  385,  390,
-      388,  382,  393,  395,  394,  400,  402,  410,  403,  406,
-      409,  411,  413,  414,  415,  416,  420,  421,  432,  425,
-      436,  430,  437,  440,  442,  443,  438,  451,  445,  448,
-
-      454,  460,  456,  457,  459,  464,  462,  484,  466,  469,
-      468,  471,  475,  472,  479,  482,  474,  480,  506,  491,
-      493,  496,  497,  495,  505,  507,  508,  510,  515,  523,
-      520,  522,  530,  533,  525,  534,  521,  535, 2115,  540,
-      532,  538,  543,  544, 2115,  545,  549,  547,  562,  548,
-      550,  559,  551,  563,  561,  572,  564,  576,  578,  570,
-      579,  574,  583,  580,  586,  587,  595,  584,  603,  592,
-      594,  605,  600,  607,  611,  617,  615,  619,  616,  620,
-      627,  625,  623,  626,  630,  631,  636,  632,  642,  638,
-      643,  649,  655,  634,  653,  657,  658,  652,  651,  659,
-
-      661,  667,  668,  671,  680,  672,  678,  673,  676,  681,
-      689,  685,  683,  690,  691,  693,  697,  698,  699,  701,
-      703,  700,  702,  709,  714,  713,  720, 2115,  722,  715,
-      724,  725, 2115, 2115,  726, 2115, 2115,  727,  734,  744,
-      730,  728,  736,  738,  742,  752,  739,  757,  747,  745,
-      759,  768,  755,  772,  773,  760,  774,  775,  777,  779,
-      778,  781,  791,  787,  788,  792,  794, 2115,  789,  796,
-      799,  801,  803,  806,  807,  809,  811,  808,  813,  814,
-      816,  822,  826,  820,  828,  824,  831,  833,  834,  835,
-      860,  836,  839,  842,  843,  845,  847,  852,  846,  850,
-
-      857,  867,  868,  853,  878, 2115,  879,  880,  870,  881,
-      885,  884,  886,  887,  888, 2115,  895,  892,  896,  898,
-      899,  904,  911, 2115,  912,  900,  909,  914,  918,  919,
-      922,  920,  921,  926,  927,  928,  931,  935,  942,  945,
-      936,  944,  930,  947,  952,  950,  953,  954, 2115,  149,
-      955,  963,  959,  956,  957,  960,  966,  973,  967,  974,
-      975,  976,  978,  977,  984,  986,  987,  988,  990,  989,
-      991,  993, 2115,  998, 1001,  994, 1010, 1018, 1003, 1024,
-     1020, 1022, 1023, 1007, 1031, 1033, 1029, 1032, 1030, 1038,
-     1035, 1040, 1041, 1043, 1045, 1047, 1049, 1053, 1056, 1057,
-
-     1059, 1061, 1065, 1064, 1066, 1070, 1067, 2115, 1080, 1082,
-     1083, 1079, 1071, 1086, 1087, 1089, 1092, 1093, 1091, 1095,
-     1096, 2115, 1102, 1098, 1099, 1103, 1100, 1106, 1105, 1108,
-     1113, 1115, 1116, 1112, 1126, 1128, 1129, 1131, 1137, 1138,
-     1139, 2115, 1141, 1134, 1149, 1152, 1154, 1147, 1145, 1155,
-     1156, 1157, 1158, 1159, 1162, 1165, 1163, 1168, 1169, 1171,
-     1173, 1179, 1187, 1188, 2115, 2115, 1185, 2115,  997, 1186,
-     1190, 1191, 1192, 1194, 1197, 1202, 1195, 1200, 1205, 2115,
-     1198, 1208, 1209,  417, 1213, 1219, 1210, 1220, 2115, 1222,
-     1211, 1231, 1221, 1223, 1233, 1235, 1242, 1244, 1234, 1225,
-
-     1237, 1246, 1248, 1255, 1247, 1251, 1253, 1254, 1256, 1259,
-     2115, 2115, 1263, 1258, 1264, 1270, 1283, 1281, 1262, 1284,
-     1285, 1286, 1287, 1288, 1290, 2115, 1296, 1298, 1295, 1304,
-     2115, 1294, 1292, 1299, 1306, 1309, 2115, 1311, 1312, 1314,
-     1315, 1317, 1321, 1323, 1329, 1325, 1328, 1332, 1334, 1330,
-     1341, 1347, 1343, 1345, 1349, 1351, 1352, 2115, 1358, 1354,
-     1361, 1357, 1360, 1367, 1364, 1365, 1366, 1368, 1369, 1370,
-     1373, 1371, 1377, 1380, 1375, 1392, 1379, 1381, 2115, 1394,
-     1400, 1387, 1402, 1398, 1404, 1406, 1408, 1410, 1411, 1412,
-     1414, 1422, 1424, 1430, 1426, 1434, 1431, 1432, 1415, 1442,
-
-     1435, 1439, 1445, 1441, 1448, 1446, 1449, 2115, 1450, 2115,
-     1454, 1456, 2115, 2115, 2115, 1464, 1460, 1467, 1461, 1470,
-     2115, 1471, 1472, 1474, 1475, 1476, 1478, 1479, 1480, 1481,
-     1482, 1483, 1493, 1485, 1497, 1496, 1499, 1503, 1489, 1505,
-     1514, 1510, 1512, 1506, 1516, 1517, 1513, 1518, 1519, 1521,
-     1523, 1527, 2115, 1534, 1524, 1535, 1537, 1538, 1542, 1546,
-     1543, 1552, 2115, 1545, 1556, 1557, 1553, 1559, 1562, 1560,
-     1563, 1567, 1568, 1569, 1570, 2115, 1571, 1572, 1577, 1578,
-     1584, 1588, 1580, 1595, 1597, 1573, 1599, 2115, 1600, 1602,
-     1603, 1607, 1608, 1604, 1609, 1613, 1616, 1611, 1618, 1620,
-
-     1621, 1623, 1625, 1627, 1628, 1631, 1633, 1634, 1635, 1645,
-     1638, 2115, 1639, 1641, 1651, 1658, 2115, 1654, 2115, 1657,
-     1656, 1663, 1664, 1667, 1655, 1665, 1669, 1676, 1672, 1673,
-     1677, 1679, 1681, 2115, 2115, 1690, 2115, 2115, 1693, 2115,
-     1695, 2115, 1697, 2115, 1703, 1699, 1686, 1684, 1704, 2115,
-     1708, 2115, 2115, 1705, 1711, 1712, 1715, 1716, 1701, 1718,
-     1720, 1721, 1722, 1724, 1725, 1726, 1727, 1731, 1735, 1736,
-     1738, 2115, 1739, 1745, 1749, 1743, 1748, 1751, 1750, 1754,
-     1760, 1756, 1759, 1762, 2115, 2115, 2115, 1763, 1765, 1773,
-     1764, 1770, 2115, 1775, 1776, 1781, 2115, 1784, 1777, 1787,
-
-     1786, 1789, 1680, 2115, 1790, 1792, 1793, 1800, 1802, 1804,
-     2115, 1806, 1807, 1809, 1808, 1813, 1820, 1814, 2115, 1810,
-     1816, 1825, 1818, 1826, 1828, 2115, 1830, 1831, 2115, 1837,
-     2115, 1832, 1840, 1842, 1847, 1849, 1838, 1843, 1855, 1854,
-     1858, 2115, 2115, 1851, 1859, 1860, 1861, 1863, 1864, 1865,
-     1866, 1869, 2115, 1871, 1872, 1881, 1878, 1876, 2115, 1883,
-     1886, 1887, 2115, 2115, 1888, 1894, 1896, 2115, 1897, 1899,
-     1900, 1904, 1901, 1906, 1908, 1909, 1907, 1910, 1920, 1921,
-     2115, 1923, 1911, 1913, 1928, 1937, 1924, 1930, 1932, 1939,
-     1941, 1934, 2115, 1944, 1946, 1948, 1951, 1954, 1956, 2115,
-
-     1957, 2115, 1961, 1962, 2115, 2115, 1963, 1965, 1968, 2115,
-     2115, 1966, 1970, 2115, 2115, 2115, 1976, 2115, 1977, 2115,
-     1979, 1969, 2115, 1972, 1983, 1988, 2115, 1992, 2115, 1985,
-     1993, 2115, 2115, 2115, 1995, 1980, 2002, 1989, 2115, 1996,
-     2003, 2004, 2006, 2115, 2115, 2036, 2042, 2048, 2054, 2060,
-       94, 2066, 2072, 2078, 2084, 2090, 2096, 2102, 2108
+      336,  318,  337,  335,  343,  346,  344,  347,  334,  323,
+      348,  349,  350,  352,  356,  357,  358,  360,  361,  371,
+      372,  368,  373,  364,  375,  377,  378,  381,  390,  393,
+      382,  386,  397,  395,  388,  403,  405,  411,  407,  408,
+      307,  412,  414,  409,  415,  416,  417,  422,  423,  436,
+      420,  430,  424,  425,  434,  446,  447,  442,  454,  450,
+
+      451,  452,  458,  455,  457,  459,  463,  464,  483,  465,
+      467,  468,  469,  479,  471,  472,  475,  490,  496,  505,
+      492,  484,  493,  506,  507,  494,  511,  513,  514,  515,
+      521,  517,  526,  527,  534,  530,  532,  535,  536,  537,
+     2135,  541,  543,  545,  546,  547, 2135,  548,  549,  550,
+      556,  552,  560,  561,  563,  571,  565,  572,  567,  574,
+      578,  582,  580,  581,  584,  586,  591,  596,  595,  588,
+      598,  602,  604,  607,  608,  612,  616,  618,  623,  625,
+      626,  628,  634,  633,  630,  620,  636,  638,  639,  643,
+      650,  646,  653,  648,  654,  660,  656,  663,  664,  665,
+
+      609,  658,  668,  669,  676,  675,  677,  683,  681,  685,
+      687,  686,  688,  695,  691,  693,  694,  696,  698,  700,
+      707,  705,  706,  715,  708,  709,  716,  719,  722,  727,
+     2135,  734,  721,  723,  732, 2135, 2135,  733, 2135, 2135,
+      736,  742,  751,  738,  735,  741,  745,  749,  759,  746,
+      764,  754,  748,  767,  771,  762,  773,  780,  781,  776,
+      783,  785,  774,  789,  788,  787,  801,  797,  790,  798,
+      802, 2135,  803,  806,  807,  808,  809,  814,  811,  821,
+      815,  818,  822,  824,  827,  830,  832,  828,  836,  833,
+      839,  841,  842,  843,  868,  844,  845,  847,  851,  855,
+
+      862,  852,  864,  858,  875,  874,  878,  881,  886, 2135,
+      894,  887,  883,  891,  893,  856,  896,  895,  897,  908,
+     2135,  899,  905,  907,  913,  916,  919,  922, 2135,  923,
+      906,  909,  928,  930,  932,  933,  926,  934,  938,  940,
+      941,  939,  947,  948,  955,  949,  953,  956,  957,  963,
+      960,  961,  962, 2135,  149,  965,  972,  968,  966,  969,
+      976,  974,  985,  977,  982,  988,  986,  990,  992,  996,
+      997,  998,  999, 1000, 1003, 1001, 1004, 2135, 1008, 1002,
+     1009, 1015, 1028, 1012, 1031, 1032, 1030, 1036, 1024, 1034,
+     1044, 1045, 1041, 1043, 1042, 1049, 1048, 1050, 1054, 1057,
+
+     1059, 1055, 1062, 1067, 1069, 1070, 1072, 1074, 1076, 1078,
+     1061, 1082, 1085, 2135, 1091, 1095, 1098, 1087, 1089, 1100,
+     1097, 1101, 1102, 1103, 1105, 1106, 1109, 2135, 1112, 1110,
+     1114, 1113, 1115, 1116, 1123, 1122, 1124, 1138, 1134, 1126,
+     1140, 1128, 1130, 1142, 1153, 1155, 1156, 2135, 1154, 1146,
+     1163, 1161, 1152, 1164, 1172, 1166, 1168, 1169, 1173, 1175,
+     1174, 1176, 1177, 1179, 1180, 1181, 1197, 1194, 1182, 1203,
+     1205, 2135, 2135, 1207, 2135, 1208, 1204, 1184, 1210, 1212,
+     1214, 1216, 1217, 1220, 1186, 1221, 2135, 1223, 1222, 1224,
+     1226, 1225, 1234, 1232, 1233, 2135, 1238, 1235, 1245, 1237,
+
+     1247, 1248, 1249, 1251, 1256, 1257, 1258, 1259, 1262, 1264,
+     1268, 1265, 1266, 1269, 1272, 1271, 1273, 2135, 2135, 1281,
+     1282, 1274, 1288, 1292, 1299, 1296, 1298, 1302, 1303, 1305,
+     1304, 1306, 1308, 2135, 1314, 1316, 1317, 1324, 2135, 1312,
+     1310, 1313, 1325, 1329, 2135, 1330, 1331, 1334, 1337, 1336,
+     1338, 1340, 1348, 1344, 1346, 1349, 1358, 1351, 1362, 1359,
+     1363, 1366, 1368, 1370, 1371, 2135, 1377, 1373, 1380, 1376,
+     1379, 1386, 1384, 1382, 1385, 1387, 1388, 1389, 1392, 1390,
+     1395, 1399, 1408, 1394, 1411, 1397, 1400, 2135, 1413, 1419,
+     1421, 1422, 1425, 1424, 1427, 1426, 1428, 1431, 1432, 1435,
+
+     1443, 1451, 1444, 1436, 1452, 1454, 1455, 1437, 1461, 1457,
+     1458, 1464, 1465, 1467, 1468, 1460, 2135, 1473, 2135, 1475,
+     1477, 2135, 2135, 2135, 1483, 1480, 1481, 1488, 1492, 2135,
+     1484, 1493, 1489, 1495, 1496, 1499, 1498, 1500, 1501, 1503,
+     1509, 1512, 1515, 1502, 1517, 1516, 1519, 1525, 1523, 1526,
+     1534, 1531, 1532, 1533, 1537, 1543, 1535, 1538, 1540, 1539,
+     1542, 1548, 2135, 1556, 1545, 1557, 1561, 1563, 1564, 1565,
+     1568, 1575, 2135, 1567, 1578, 1579, 1581, 1582, 1584, 1571,
+     1585, 1589, 1590, 1591, 1592, 2135, 1594, 1596, 1599, 1600,
+     1606, 1615, 1607, 1617, 1619, 1602, 1623, 1625, 2135, 1626,
+
+     1628, 1610, 1633, 1630, 1634, 1595, 1635, 1638, 1639, 1642,
+     1644, 1645, 1646, 1649, 1650, 1652, 1654, 1653, 1656, 1657,
+     1667, 1660, 2135, 1663, 1669, 1674, 1677, 2135, 1670, 2135,
+     1676, 1680, 1687, 1684, 1689, 1681, 1690, 1691, 1698, 1694,
+     1695, 1697, 1699, 1703, 2135, 2135, 1708, 2135, 2135, 1713,
+     2135, 2135, 1715, 2135, 1717, 2135, 1723, 1719, 1706, 1704,
+     1724, 2135, 1728, 2135, 2135, 1725, 1731, 1732, 1735, 1736,
+     1721, 1738, 1740, 1741, 1742, 1744, 1745, 1746, 1747, 1751,
+     1755, 1756, 1758, 2135, 1759, 1765, 1769, 1763, 1768, 1771,
+     1770, 1774, 1780, 1776, 1779, 1782, 2135, 2135, 2135, 1783,
+
+     1785, 1793, 1784, 1790, 2135, 1795, 1796, 1801, 2135, 1804,
+     1797, 1807, 1806, 1809, 1810, 2135, 1812, 1817, 1820, 1813,
+     1824, 1830, 2135, 1821, 1831, 1832, 1833, 1836, 1837, 1839,
+     2135, 1834, 1840, 1847, 1841, 1844, 1849, 2135, 1851, 1855,
+     2135, 1857, 2135, 1858, 1861, 1863, 1865, 1870, 1867, 1872,
+     1876, 1874, 1875, 2135, 2135, 1877, 1880, 1881, 1882, 1884,
+     1883, 1887, 1890, 1891, 2135, 1892, 1894, 1902, 1893, 1905,
+     2135, 1906, 1904, 1907, 2135, 2135, 1917, 1908, 1910, 2135,
+     1918, 1920, 1921, 1925, 1926, 1927, 1929, 1928, 1930, 1931,
+     1935, 1938, 2135, 1941, 1944, 1945, 1948, 1952, 1949, 1953,
+
+     1954, 1958, 1960, 1961, 2135, 1966, 1963, 1970, 1973, 1976,
+     1978, 2135, 1982, 2135, 1985, 1986, 2135, 2135, 1979, 1989,
+     1990, 2135, 2135, 1955, 1992, 2135, 2135, 2135, 1994, 2135,
+     1997, 2135, 1999, 2000, 2135, 2002, 2004, 2006, 2135, 2008,
+     2135, 2009, 2010, 2135, 2135, 2135, 2012, 2013, 2018, 2014,
+     2135, 2019, 2022, 2024, 2026, 2135, 2135, 2056, 2062, 2068,
+     2074, 2080,   94, 2086, 2092, 2098, 2104, 2110, 2116, 2122,
+     2128
     } ;
 
-static yyconst flex_int16_t yy_def[1060] =
+static yyconst flex_int16_t yy_def[1072] =
     {   0,
-     1045,    1, 1046, 1046, 1047, 1047, 1048, 1048, 1049, 1049,
-     1050, 1050, 1045, 1051, 1045, 1045, 1045, 1045, 1052, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1053,
-     1045, 1045, 1053, 1054, 1045, 1045, 1054, 1055, 1045, 1045,
-     1045, 1045, 1055, 1056, 1045, 1045, 1056, 1057, 1045, 1045,
-     1058, 1045, 1057, 1057, 1051, 1051, 1045, 1059, 1052, 1059,
-     1045, 1052, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1053, 1053,
-     1054, 1054, 1055, 1055, 1045, 1056, 1056, 1057, 1057, 1058,
-     1058, 1057, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1057, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1057, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1045, 1051,
-     1051, 1051, 1051, 1051, 1045, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1057, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1057, 1051, 1051, 1045, 1051, 1051,
-     1051, 1051, 1045, 1045, 1051, 1045, 1045, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1045, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1057, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-
-     1051, 1051, 1051, 1051, 1051, 1045, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1045, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1045, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1045, 1057,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1045, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1045, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1045, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1045, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1045, 1045, 1051, 1045, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1045,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1045, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1045, 1045, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1045, 1051, 1051, 1051, 1051,
-     1045, 1051, 1051, 1051, 1051, 1051, 1045, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1045, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1045, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1045, 1051, 1045,
-     1051, 1051, 1045, 1045, 1045, 1051, 1051, 1051, 1051, 1051,
-     1045, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1045, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1045, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1045, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1045, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1045, 1051, 1051, 1051, 1051, 1045, 1051, 1045, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1045, 1045, 1051, 1045, 1045, 1051, 1045,
-     1051, 1045, 1051, 1045, 1051, 1051, 1051, 1051, 1051, 1045,
-     1051, 1045, 1045, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1045, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1051, 1051, 1045, 1045, 1045, 1051, 1051, 1051,
-     1051, 1051, 1045, 1051, 1051, 1051, 1045, 1051, 1051, 1051,
-
-     1051, 1051, 1051, 1045, 1051, 1051, 1051, 1051, 1051, 1051,
-     1045, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1045, 1051,
-     1051, 1051, 1051, 1051, 1051, 1045, 1051, 1051, 1045, 1051,
-     1045, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1045, 1045, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1045, 1051, 1051, 1051, 1051, 1051, 1045, 1051,
-     1051, 1051, 1045, 1045, 1051, 1051, 1051, 1045, 1051, 1051,
-     1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1045, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051, 1051,
-     1051, 1051, 1045, 1051, 1051, 1051, 1051, 1051, 1051, 1045,
-
-     1051, 1045, 1051, 1051, 1045, 1045, 1051, 1051, 1051, 1045,
-     1045, 1051, 1051, 1045, 1045, 1045, 1051, 1045, 1051, 1045,
-     1051, 1051, 1045, 1051, 1051, 1051, 1045, 1051, 1045, 1051,
-     1051, 1045, 1045, 1045, 1051, 1051, 1051, 1051, 1045, 1051,
-     1051, 1051, 1051, 1045,    0, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045
+     1057,    1, 1058, 1058, 1059, 1059, 1060, 1060, 1061, 1061,
+     1062, 1062, 1057, 1063, 1057, 1057, 1057, 1057, 1064, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1065,
+     1057, 1057, 1065, 1066, 1057, 1057, 1066, 1067, 1057, 1057,
+     1057, 1057, 1067, 1068, 1057, 1057, 1068, 1069, 1057, 1057,
+     1070, 1057, 1069, 1069, 1063, 1063, 1057, 1071, 1064, 1071,
+     1057, 1064, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1065, 1065,
+     1066, 1066, 1067, 1067, 1057, 1068, 1068, 1069, 1069, 1070,
+     1070, 1069, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1069, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1069, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1057, 1063, 1063, 1063, 1063, 1063, 1057, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1069, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1069, 1063, 1063,
+     1057, 1063, 1063, 1063, 1063, 1057, 1057, 1063, 1057, 1057,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1057, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1069, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1057,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1057, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1057, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1057, 1069, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1057, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1057, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1057, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1057, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1057, 1057, 1063, 1057, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1057, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1057, 1063, 1063, 1063, 1063,
+
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1057, 1057, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1057, 1063, 1063, 1063, 1063, 1057, 1063,
+     1063, 1063, 1063, 1063, 1057, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1057, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1057, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1057, 1063, 1057, 1063,
+     1063, 1057, 1057, 1057, 1063, 1063, 1063, 1063, 1063, 1057,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1057, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1057, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1057, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1057, 1063,
+
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1057, 1063, 1063, 1063, 1063, 1057, 1063, 1057,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1057, 1057, 1063, 1057, 1057, 1063,
+     1057, 1057, 1063, 1057, 1063, 1057, 1063, 1063, 1063, 1063,
+     1063, 1057, 1063, 1057, 1057, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1057, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1063, 1063, 1057, 1057, 1057, 1063,
+
+     1063, 1063, 1063, 1063, 1057, 1063, 1063, 1063, 1057, 1063,
+     1063, 1063, 1063, 1063, 1063, 1057, 1063, 1063, 1063, 1063,
+     1063, 1063, 1057, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1057, 1063, 1063, 1063, 1063, 1063, 1063, 1057, 1063, 1063,
+     1057, 1063, 1057, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1057, 1057, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1063, 1063, 1057, 1063, 1063, 1063, 1063, 1063,
+     1057, 1063, 1063, 1063, 1057, 1057, 1063, 1063, 1063, 1057,
+     1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+     1063, 1063, 1057, 1063, 1063, 1063, 1063, 1063, 1063, 1063,
+
+     1063, 1063, 1063, 1063, 1057, 1063, 1063, 1063, 1063, 1063,
+     1063, 1057, 1063, 1057, 1063, 1063, 1057, 1057, 1063, 1063,
+     1063, 1057, 1057, 1063, 1063, 1057, 1057, 1057, 1063, 1057,
+     1063, 1057, 1063, 1063, 1057, 1063, 1063, 1063, 1057, 1063,
+     1057, 1063, 1063, 1057, 1057, 1057, 1063, 1063, 1063, 1063,
+     1057, 1063, 1063, 1063, 1063, 1057,    0, 1057, 1057, 1057,
+     1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
+     1057
     } ;
 
-static yyconst flex_int16_t yy_nxt[2155] =
+static yyconst flex_int16_t yy_nxt[2175] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   18,   20,   21,   14,   22,   23,   24,   25,   14,
@@ -805,212 +810,214 @@ static yyconst flex_int16_t yy_nxt[2155] =
       113,  118,  113,  118,  118,   66,  118,   70,   71,   70,
 
        70,   66,   70,  165,   66,  167,  169,   66,  121,  168,
-       66,   66,  175,   66,   66,   66,  166,   66,  177,  119,
+       66,   66,  175,   66,   66,   66,  166,   66,  177,   66,
       178,  170,   66,   66,   66,   66,  171,  179,  183,  185,
-       66,  172,  119,  176,   66,   66,  180,  173,  174,  181,
-      182,   66,  186,   66,  211,  184,   66,  189,   66,  187,
-      191,  188,   66,  190,  192,   66,   66,  196,   66,   66,
-       66,   66,   66,  193,  194,   66,  195,  199,   66,   66,
-       66,  202,   66,   66,  205,  197,   66,  203,  206,  208,
-       66,  198,  209,   66,   66,   66,  117,  200,  201,   66,
-      213,  204,   66,   66,   66,  212,  216,   66,  217,  210,
-
-       66,  207,   66,  218,  214,   66,   66,   66,  221,  220,
-      215,  222,   66,  224,   66,   66,  219,  226,   66,  225,
-      223,   66,   66,   66,  230,   66,   66,   66,   66,   66,
-      233,  646,   66,   66,  229,  227,  239,   66,  232,  228,
-      234,  235,   66,  231,   66,  236,  237,  238,   66,   66,
-       66,  240,   66,  245,   66,   66,  246,   66,  248,  241,
-       66,  244,  242,   66,  243,  250,   66,  252,   66,   66,
-      247,   66,   66,  253,   66,  251,   66,  249,   66,  256,
-      119,   66,  268,   66,   66,  255,   66,   66,  258,  254,
-      265,   66,   66,  264,   66,  257,   66,  273,  259,  260,
-
-      272,  266,  267,   66,  269,   66,  270,   66,   66,   66,
-      261,  262,  263,  279,  271,  274,  275,   66,   66,   66,
-       66,  277,   66,  276,  278,  280,  285,   66,  282,  284,
-      287,  281,   66,   66,   66,   66,  286,   66,  288,  289,
-      291,  283,   66,  290,   66,   66,   66,   66,  295,  292,
-       66,  293,   66,  296,  294,   66,   66,   66,  298,   66,
-       66,   66,   66,   66,  299,  297,  302,  303,  300,  304,
-      312,   66,  307,   66,   66,   66,   66,  301,  305,  308,
-      313,  306,   66,  311,   66,  315,   66,  309,   66,  317,
-       66,   66,   66,  314,  319,   66,   66,  310,   66,  119,
-
-      322,  316,  326,  325,   66,  318,   66,   66,  321,  327,
-      320,  323,   66,  324,  328,   66,  329,   66,  333,   66,
-      331,  330,  334,   66,  335,  332,  336,   66,   66,   66,
-      337,   66,   66,  338,  340,   66,  339,   66,   66,   66,
-      342,  341,   66,   66,   66,  349,   66,  344,   66,  350,
-       66,  346,  356,  351,   66,   66,  347,  345,  343,  352,
-      348,   66,  355,   66,   66,   66,  354,   66,  357,   66,
-       66,   66,  358,   66,  364,  359,  362,  361,  363,   66,
-       66,  353,  360,   66,   66,   66,  366,  367,   66,  365,
-       66,  368,   66,   66,  370,   66,  374,   66,  375,  376,
-
-      371,   66,   66,   66,  369,   66,  372,  377,  373,   66,
-       66,   66,   66,   66,   66,   66,  382,  381,  383,  378,
-      384,   66,  380,  386,  379,   66,  119,   66,  389,  391,
-      385,  388,   66,  390,   66,  387,   66,   66,   66,   66,
-       66,  397,   66,  396,  393,  392,   66,  403,   66,  406,
-       66,   66,  394,  115,   66,  395,   66,   66,  404,   66,
-      398,  407,  411,  399,   66,  408,  409,   66,  400,   66,
-      410,   66,   66,  405,  401,  402,  114,  412,  418,  413,
-       66,  414,  415,  416,   66,   66,   66,   66,  417,   66,
-       66,   66,  424,   66,  419,  420,  422,  423,  425,   66,
-
-       66,   66,  426,   66,   66,  428,   66,  421,   66,  429,
-      431,   66,  432,   66,  427,   66,  438,  430,   66,   66,
-       66,   66,  434,   66,  436,   66,   66,  439,   66,  435,
-      433,  442,   66,  437,   66,  444,   66,  441,   66,  440,
-       66,  445,  449,   66,  450,  119,   66,   66,   66,  443,
-      446,   66,  462,  447,   66,   66,  448,   66,   66,   66,
-      463,  451,   66,  468,   66,   66,  459,  464,  460,   66,
-      467,  452,   66,  458,  469,  453,  461,  454,  466,   66,
-       66,  455,   66,  456,  472,  465,  474,  470,  457,  473,
-       66,   66,   66,   66,  471,  475,   66,   66,   66,   66,
-
-       66,  476,  478,  480,   66,  479,  477,   66,   66,  484,
-       66,   66,   66,  485,  482,  486,   66,  488,  489,  481,
-      487,   66,  483,   66,   66,  490,   66,  492,  491,  494,
-       66,   66,   66,   66,   66,  495,  496,  497,   66,   66,
-       66,  493,   66,   66,  501,  502,  503,   66,   66,  505,
-      498,  500,  506,  499,   66,  508,   66,   66,  504,   66,
-      511,  509,   66,  507,   66,   66,   66,   66,   66,   66,
-      516,   66,   66,  510,  513,   66,  517,  520,   66,   66,
-      512,  515,  518,  519,  522,   66,   66,   66,   66,   66,
-       66,  514,  525,  521,  527,  524,   66,  523,   66,   66,
-
-       66,   66,   66,   66,  528,   66,   66,  526,  533,   66,
-       66,  529,  632,   66,  536,   66,  534,  530,  532,   66,
-      531,  538,   66,  535,  537,  541,  539,  540,  543,  542,
-       66,  544,   66,  545,   66,   66,   66,  548,  549,  546,
-      550,   66,   66,   66,   66,   66,  551,   66,  552,  547,
-       66,  553,   66,   66,  557,   66,  554,   66,  555,   66,
-      556,   66,  558,  561,  565,   66,  559,  566,   66,   66,
-      568,   66,  560,   66,  567,  562,   66,   66,   66,   66,
-      564,  571,   66,   66,  563,  570,  574,  575,  573,  576,
-      577,   66,   66,  569,   66,   66,  572,  580,   66,   66,
-
-      578,   66,  579,   66,   66,   66,  584,   66,   66,  588,
-       66,   66,   66,  589,   66,   66,  593,   66,   66,  581,
-       66,  582,  583,  585,   66,   66,  587,   66,   66,  591,
-      597,  595,  586,  599,  598,  592,  590,  594,   66,  596,
-       66,   66,  600,   66,  605,  606,   66,  601,  604,   66,
-       66,   66,  607,   66,  614,  602,  610,   66,  608,   66,
-      611,   66,  603,  612,   66,  609,   66,   66,   66,   66,
-       66,   66,  613,  112,   66,   66,  615,   66,  622,  623,
-       66,   66,  626,   66,  619,   66,  616,  617,  618,  621,
-      627,   66,  620,  624,  629,  630,  631,   66,   66,   66,
-
-       66,  625,   66,   66,   66,  637,   66,   66,  635,   66,
-       66,  628,   66,  633,   66,  639,  641,   66,  640,  636,
-       66,   66,   66,   66,  110,   66,  648,  634,  643,  638,
-      647,   66,   66,   66,   66,   66,  642,   66,  650,  651,
-      644,  645,  649,   66,  653,   66,   66,   66,  652,   66,
-      656,  654,  657,  658,   66,  655,   66,  661,   66,   66,
-       66,  659,  665,   66,  660,   66,   66,   66,   66,  662,
-       66,   66,  663,  664,   66,   66,   66,  670,   71,  666,
-      671,  669,   66,  667,  673,  675,  668,  672,  676,  674,
-      678,  677,  679,   66,  680,   66,   66,   66,   66,   66,
-
-       66,  685,   66,  687,   66,  688,   66,   66,   66,  681,
-       66,   66,  683,  689,  692,  682,   66,  684,   66,  690,
-      686,   66,  693,   66,   66,  691,   66,   66,  698,   66,
-      694,  699,  700,   66,  695,   66,  704,   66,  701,  696,
-       66,   66,   66,  697,   66,  708,   66,  703,  702,  705,
-      707,  709,  710,   66,  711,   66,  713,   66,  706,   66,
-      714,   66,  715,   66,   66,  717,   66,  716,  719,   66,
-       66,  721,   66,   66,  722,  712,   66,   66,   66,   66,
-       66,   66,   66,   66,  718,   66,  731,   66,  723,   66,
-      724,   66,   66,   66,  720,  725,  733,  726,  727,   66,
-
-      728,  734,  729,  732,   66,  736,   66,  740,  730,  738,
-       66,  739,   66,  735,   66,  743,   66,  737,   66,  741,
-       66,  742,   66,   66,   66,  744,   66,   66,  747,  751,
-       71,  752,  748,  745,   66,  753,   66,  754,   66,  746,
-      750,  756,   66,   66,   66,  749,   66,   66,  758,  760,
-      755,   66,  759,   66,   66,  757,  763,   66,   66,  764,
-       66,   66,   66,  762,  766,  765,   66,  769,   66,  761,
-      767,  772,   66,   66,  768,  775,   66,  771,  770,   66,
-      774,  776,   66,   66,   66,  778,   66,   66,   66,  773,
-       66,   66,   66,   66,   66,   66,  786,   66,  785,  780,
-
-      781,   66,  782,  777,  788,   66,  783,  779,   66,   66,
-      791,   66,  784,  787,  790,   66,  792,   66,   66,  794,
-      793,  796,   66,  789,   66,   66,   66,  797,   66,   66,
-       66,   66,  799,   66,  803,   66,   66,  795,  801,   66,
-      800,  802,  804,  798,  805,  808,   66,   66,  812,   66,
-       66,  807,  809,  806,   66,   66,  811,   66,   66,  813,
-      816,  810,  815,  817,   66,   66,  818,  819,   66,   66,
-      820,   66,   66,  814,   66,   66,  822,  821,  823,   66,
-       66,   66,   66,   66,   66,   66,  830,  824,   71,   66,
-       66,  833,   66,  828,  825,  834,   66,  831,  826,  835,
-
-       66,  827,  832,  829,  839,  836,  837,   66,  838,   66,
-      840,   66,   66,  842,   66,   66,   66,  841,  844,   66,
-       66,   66,  846,   66,  847,   66,  848,  850,   66,  852,
-       66,  853,   66,   66,  843,   66,  855,   66,  845,   66,
-       66,  849,  851,   66,  857,   66,   66,   66,  859,  856,
-       66,   66,  863,   66,  864,  861,  862,   66,   66,  854,
-      860,  858,  866,   66,  867,  868,   66,   66,   66,   66,
-       66,  865,  870,  871,  872,   66,   66,   66,  869,   66,
-      873,   66,  874,  878,   66,   66,  877,  875,   66,   66,
-      879,   66,   66,   66,  881,  883,   66,  876,   66,  882,
-
-      937,  880,   66,  884,  885,   66,  886,   66,  887,   66,
-      888,   66,  889,   66,  890,   66,   66,   66,  891,  893,
-       66,  892,  894,   66,   66,  895,  897,   66,   66,  896,
-       66,  899,   66,   66,   66,  904,   66,   66,   66,   66,
-      898,  119,  900,   66,  901,  902,  905,   66,   66,  911,
-       66,   66,  909,  910,  903,   66,  908,   66,  913,  907,
-       66,   66,   66,   66,  906,  919,   66,  920,   66,  912,
-      914,   66,   66,  915,   66,   66,   66,   66,  916,  917,
-      925,  918,   66,  921,  926,   66,  929,   66,   66,   66,
-      922,  927,  931,   66,  923,  924,   66,  932,   66,   66,
-
-      928,   66,   66,  935,   66,   66,  936,  930,  934,  939,
-      940,  933,   66,  942,   66,  943,   66,  938,   66,   66,
-       66,   66,   66,  944,  946,   66,   66,  941,   66,  947,
-       66,  945,   66,  949,  948,  950,  953,   66,   66,  954,
-       66,  951,   66,   66,   66,  956,  955,  952,  959,   66,
-       66,  957,   66,  961,   66,   66,  958,  962,  963,   66,
-      964,   66,  967,   66,  960,  968,   66,   66,  965,  966,
-       66,   66,   66,   66,  969,   66,   66,   66,   66,  971,
-      974,   66,  970,   66,   66,  117,  979,  977,   66,  973,
-       66,  972,  981,   66,  982,   66,  975,  983,   66,   66,
-
-       66,  978,  980,  976,  984,  987,   66,  988,   66,   66,
-      985,   66,   66,   66,  990,  993,   66,  989,   66,   66,
-       66,   66,   66,   66,  986,   66,  997,  992,  996,  994,
-      991, 1000,   66,   66, 1002,   66,   66,  995, 1001, 1005,
-       66,  999,   66, 1003,   66,  998,   66, 1004, 1006,   66,
-     1010,   66, 1011,   66, 1008, 1007,   66, 1014,   66, 1015,
-       66, 1013, 1016,   66, 1009, 1012,   66, 1018,   66,   66,
-     1019, 1017, 1020,   66,   66,   66, 1023,   66,   66, 1021,
-       66,   66,   66, 1022,   66, 1024, 1026, 1027,   66,   66,
-     1029,   66,   66, 1028, 1032,   66, 1030,   66, 1025, 1033,
-
-       66,   66, 1031, 1034,   66,   66, 1036,   66,   66, 1035,
-     1040, 1037, 1038, 1039,   66,   66,   66, 1044,   66,  115,
-      114,  112,  110, 1041,   66, 1045, 1045, 1045, 1045, 1042,
-     1045, 1045, 1045, 1045, 1045, 1043,   40,   40,   40,   40,
+       66,  172,  230,  176,   66,   66,  180,  173,  174,  181,
+      182,   66,  186,  187,  190,  184,   66,   66,   66,   66,
+      192,  189,  191,  193,  188,   66,   66,  197,   66,   66,
+       66,   66,   66,  194,   66,  195,  196,  200,   66,   66,
+       66,  203,   66,   66,  206,  198,   66,  204,  207,  209,
+       66,  199,  210,   66,   66,  119,  201,   66,  202,   66,
+       66,  205,  214,   66,   66,  213,  217,  212,   66,  211,
+
+       66,  208,   66,  218,  215,   66,  219,   66,  216,   66,
+      220,  223,  222,  221,  224,   66,  225,   66,  227,   66,
+       66,   66,  226,   66,   66,  231,   66,   66,   66,   66,
+      234,  241,   66,  233,   66,   66,   66,   66,  119,  228,
+      235,  229,   66,  237,  232,  242,   66,  238,   66,  236,
+      239,  240,  245,  243,   66,  246,  244,  247,   66,   66,
+      248,  250,   66,   66,   66,  254,   66,   66,  252,   66,
+       66,   66,  255,  253,  249,   66,   66,   66,  258,   66,
+      119,   66,  251,   66,   66,  257,  270,   66,  267,  256,
+      260,   66,  266,  117,  259,   66,   66,  261,  262,  272,
+
+      269,  268,   66,  271,   66,   66,   66,  273,   66,  263,
+      264,  265,  279,  275,  276,  277,  274,   66,   66,   66,
+      283,  280,  281,   66,  278,   66,   66,   66,  289,   66,
+      287,  115,  284,   66,  286,  290,  288,  282,   66,   66,
+      292,  293,   66,  291,   66,  285,   66,   66,   66,   66,
+      298,  294,  296,   66,  299,   66,  295,   66,   66,   66,
+       66,   66,   66,  307,   66,  301,  305,  302,   66,  297,
+      306,  303,   66,   66,  310,   66,  300,   66,  315,   66,
+      304,  311,  308,   66,   66,  318,   66,  320,  316,  312,
+       66,  309,   66,   66,   66,  314,   66,  317,   66,  313,
+
+       66,  325,  329,   66,  319,  321,  322,   66,  119,  331,
+       66,  323,  328,  330,   66,  324,   66,  326,  327,   66,
+       66,   66,  334,  336,   66,  338,  332,  337,   66,  114,
+       66,  333,   66,  335,  339,   66,  340,   66,   66,  364,
+       66,  343,   66,  341,  342,   66,   66,  345,   66,  344,
+       66,   66,  346,  347,  349,   66,  352,  353,   66,  350,
+       66,  354,   66,  351,  348,   66,   66,  359,   66,  355,
+       66,  358,   66,  357,  360,   66,   66,   66,  361,  362,
+       66,   66,  363,  368,  365,  366,  367,   66,   66,   66,
+      371,  356,  370,   66,  372,   66,  369,   66,   66,   66,
+
+       66,  374,  378,   66,  379,   66,   66,   66,   66,  380,
+       66,  381,   66,  373,  375,  377,  376,   66,   66,   66,
+       66,   66,  386,  387,  382,  384,  385,   66,   66,  383,
+      390,  119,  388,   66,   66,   66,  392,  393,  389,   66,
+      394,  395,  391,  397,   66,   66,   66,   66,   66,  401,
+       66,  396,  400,   66,   66,  407,  410,   66,   66,  398,
+       66,   66,  399,   66,  112,  408,   66,  402,  411,  415,
+      403,   66,  412,  413,   66,  404,   66,  414,  409,   66,
+      416,  405,  406,   66,  418,   66,   66,  417,   66,  419,
+      420,  421,   66,   66,  423,   66,  422,   66,  429,   66,
+
+       66,   66,   66,  424,  426,  425,  427,  428,  430,   66,
+       66,  433,  431,   66,   66,   66,  432,  434,   66,   66,
+       66,   66,  437,   66,  436,  435,   66,   66,  443,  439,
+       66,  444,  441,   66,   66,  440,   66,  442,  438,   66,
+       66,  447,   66,  449,   66,   66,  446,  450,   66,  445,
+      454,   66,  455,  119,   66,   66,   66,   66,  451,   66,
+      448,  452,  467,   66,   66,  453,  110,   66,   66,  456,
+       66,  473,  464,  465,   66,  468,   66,  484,  471,  457,
+       66,  463,  469,  458,  466,  459,   66,   66,  472,  460,
+       66,  461,  474,   66,  475,   66,  462,  478,   66,   66,
+
+      470,  479,  480,   66,  476,   66,   66,   66,   66,   66,
+      483,   66,  477,  485,  481,  488,  482,   66,   66,   66,
+       66,   66,  490,  487,  491,   66,  489,  486,   66,  495,
+      492,   66,  494,  498,   66,   66,  496,  493,   66,  497,
+       66,  499,   66,  500,   66,   66,   66,  501,  503,  502,
+       66,   66,   66,   66,  509,  511,  504,  507,  508,   66,
+       66,   66,  512,  506,  514,   66,  505,   66,   66,   66,
+      510,  517,   66,   66,   66,   66,  513,   66,   66,  522,
+       66,   66,  519,  516,   66,  523,   66,  515,   66,   66,
+      518,  521,  524,  526,   66,  525,  528,   66,   66,  520,
+
+       66,  527,   66,  530,   66,  531,  533,  529,   66,   66,
+       66,   66,   66,   66,   66,   66,   66,  532,  539,  534,
+       66,   66,  544,  535,   66,  542,   71,   66,  536,  538,
+      540,  537,  546,  541,  543,  547,   66,  549,  550,  548,
+       66,  545,   66,   66,   66,  551,   66,  552,   66,  553,
+      554,  556,  557,   66,   66,   66,   66,   66,  558,  559,
+       66,   66,   66,  560,  555,  564,   66,   66,  561,   66,
+      562,   66,  563,   66,   66,  565,  566,  568,  572,   66,
+      573,   66,   66,  575,   66,  567,   66,  574,   66,  569,
+       66,  579,  570,  571,   66,  578,  577,   66,  582,   66,
+
+      580,   66,  583,   66,  581,  584,  576,   66,  585,   66,
+       66,  587,   66,   66,   66,   66,  591,   66,   66,  595,
+      586,   66,   66,  596,   66,   66,   66,   66,   66,  588,
+       71,  600,  590,  589,   66,   66,   66,  592,   66,  594,
+       66,  604,   66,  593,  598,  599,   66,  601,  597,  602,
+       66,  606,   66,  603,   66,  609,  607,  605,   66,  611,
+      612,  608,  613,  610,   66,   66,   66,   66,   66,  614,
+      617,  615,  619,   66,  618,   66,   66,  616,   66,  622,
+       66,   66,  621,  620,   66,   66,   66,   66,   66,   66,
+      630,   66,   66,   66,   66,  631,   66,  623,   66,  624,
+
+      625,  627,  649,  629,  626,  632,   66,  628,  634,   66,
+      637,  635,  638,  633,  636,   66,   66,   66,  639,   66,
+       66,  642,   66,  640,   66,  645,   66,  643,   66,   66,
+      647,  641,   66,   66,   66,   66,   66,   66,   66,  644,
+      654,  656,  655,  648,   66,   66,   66,   66,  646,   66,
+       66,  658,  650,  651,  652,  659,  653,   66,  661,   66,
+       66,   66,  666,   66,  657,  664,  665,  662,   66,   66,
+       66,   66,  660,  667,   66,  673,   66,   66,   66,  663,
+       66,   66,   71,   66,   66,   66,   66,  668,  671,  672,
+      669,  670,  678,   66,   66,  679,  681,  674,  675,  677,
+
+       66,  680,  676,  682,   66,  683,  687,  688,   66,  684,
+       66,   66,  685,  686,   66,   66,   66,   66,   66,  694,
+       66,  696,   66,  697,   66,   66,   66,  690,   66,   66,
+      689,  692,  701,  691,  693,  698,   66,   66,  695,  699,
+      702,   66,   66,   66,  703,  700,   66,  707,   66,   66,
+       66,  708,   66,  704,  709,  713,   66,  710,   66,  705,
+       66,   66,  706,   66,  712,  711,  720,  716,  714,  717,
+       66,   66,  718,  719,   66,   66,  715,  722,   66,  723,
+       66,  724,   66,   66,  726,   66,  725,  728,   66,   66,
+      730,   66,   66,  731,   66,  721,   66,   66,   66,   66,
+
+       66,   66,   66,  727,   66,  740,   66,   66,  732,   66,
+      733,   66,   66,  729,  735,  734,  742,  736,  743,  737,
+       66,  738,  741,   66,  746,   66,  750,  739,  748,  744,
+      749,   66,  745,   66,   66,  747,   66,   66,   66,   66,
+       66,  752,  753,   66,   66,  754,  757,   66,   66,   66,
+      761,  764,  758,  751,  755,   66,   66,  756,  762,  766,
+      765,  760,  763,   66,   66,  759,   66,   66,  770,   66,
+       66,  768,   66,   66,  769,  773,   66,   66,  767,   66,
+       66,  777,  772,  774,  775,   66,  776,   66,  779,   66,
+      782,  771,   66,   66,  784,   66,   66,  778,  781,  780,
+
+       66,   66,  785,  786,   66,   66,  788,   66,   66,  783,
+       66,   66,   66,   66,   66,   66,  787,  796,  795,  790,
+      791,   66,  789,  792,   66,  793,  799,   66,   66,   66,
+      802,   66,  794,  798,  801,   66,  803,   66,   66,  797,
+      800,  807,  804,   66,   66,   66,   66,   66,  808,   66,
+       66,   66,   66,  805,   66,   66,  814,   66,  806,  810,
+       66,  811,  815,  809,  812,  816,  819,  813,   66,   66,
+      818,  817,  823,   66,  820,   66,   66,   66,  822,   66,
+       66,  826,  821,   66,  824,  827,  828,   66,  829,  830,
+       66,   66,  831,   66,   66,  825,   66,   66,  835,  833,
+
+      834,   66,   66,   66,   66,  832,   66,   66,   66,  841,
+      859,   66,   66,  844,   66,  839,  836,  845,   66,   66,
+      837,  842,   66,  838,  843,  840,  846,   66,  848,   66,
+      849,   66,  847,  850,  851,   66,  852,   66,   66,  854,
+       66,  855,   66,  853,  856,   66,   66,   66,  860,  862,
+       66,   66,  858,  864,   66,  865,   66,   66,   66,  867,
+      857,   66,   66,  861,   66,   66,   66,  869,   66,   66,
+      863,  871,   66,  868,  875,   66,  876,  873,  874,   66,
+      872,   66,   66,  866,  880,  870,   66,  879,   66,   66,
+      878,  882,   66,   66,  881,  877,   66,  883,  884,   66,
+
+      885,   66,   66,   66,  886,  890,   66,   66,  889,   66,
+       66,   66,  891,  887,  893,   66,   66,  895,   66,  894,
+       66,  896,  888,  892,  897,   66,  898,   66,  899,   66,
+      900,   66,  901,   66,  902,   66,   66,   66,  903,  905,
+       66,  904,  906,   66,   66,  907,  909,   66,   66,  908,
+       66,  911,   66,   66,   66,  916,   66,   66,   66,   66,
+      910,   66,  912,   66,  913,  914,  917,   66,   66,  923,
+       66,   66,  921,  922,  915,   66,  920,   66,  925,  919,
+       66,   66,   66,   66,  918,  931,   66,  932,   66,  924,
+      926,   66,   66,  927,   66,   66,   66,   66,  928,  929,
+
+      937,  930,   66,  933,  938,   66,  941,   66,   66,   66,
+      934,  939,  943,   66,  935,  936,   66,  944,   66,   66,
+      940,   66,   66,  947,   66,   66,  948,  942,  946,   66,
+      949,  945,   66,   66,  951,  954,   66,  952,  956,  950,
+      953,  955,   66,   66,   66,   66,   66,  958,   66,   66,
+      961,   66,   66,   66,  959,  957,   66,  960,  965,   66,
+      962,   66,  966,   66,  967,  963,  968,   66,  971,   66,
+       66,  964,  969,   66,  973,   66,  975,   66,  974,   66,
+      970,  976,   66,  979,   66,  980,   66,   66,   66,   66,
+      972,  981,   66,   66,   66,   66,   66,  977,  978,   66,
+
+      983,  986,   66,   66,   66,   66,   66,  991,  982,  994,
+      985,  989,  984,  993,   66,  987,   66,   66,   66,   66,
+       66, 1000,   66,  990,  992,  988,  995,  996,  997,   66,
+       66, 1001,   66,   66,  999, 1002, 1005,   66,   66,   66,
+       66,   66,   66,   66,  998, 1009, 1012,   66, 1004, 1008,
+       66, 1003, 1014,   66, 1006, 1013,   66,   66, 1007, 1017,
+       66,   66, 1011, 1018,   66,   66,   66,   66, 1010, 1022,
+       66, 1023,   66,   66, 1026,   66, 1015, 1020,   66, 1016,
+     1019, 1027,   66, 1025, 1028,   66, 1021, 1037,   66, 1030,
+       66,   66, 1024, 1029,   66, 1031, 1032,   66,   66, 1034,
+
+     1035,   66,   66, 1033,   66, 1039,   66, 1036, 1038,   66,
+     1041,   66,   66, 1040,   66, 1044,   66, 1045,   66, 1046,
+       66,   66,   66, 1048,   66,   66,   66, 1042, 1049, 1051,
+       66,   66, 1043, 1047,   66, 1052,   66, 1056,   66,  119,
+      117,  115,  114,  112,  110, 1050, 1053,   66, 1054, 1057,
+     1057, 1057, 1057, 1057, 1057, 1055,   40,   40,   40,   40,
        40,   40,   44,   44,   44,   44,   44,   44,   48,   48,
        48,   48,   48,   48,   54,   54,   54,   54,   54,   54,
        58,   58,   58,   58,   58,   58,   69,   69,   69,   69,
-       69,   69,  109,  109, 1045, 1045,  109,  109,  111,  111,
-     1045,  111, 1045,  111,  113, 1045, 1045, 1045, 1045,  113,
-      116,  116, 1045, 1045,  116,  116,  118, 1045, 1045, 1045,
-
-     1045,  118,  120,  120,  120,  120,  120,  120,   70,   70,
-       70,   70,   70,   70,   13, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045
+       69,   69,  109,  109, 1057, 1057,  109,  109,  111,  111,
+
+     1057,  111, 1057,  111,  113, 1057, 1057, 1057, 1057,  113,
+      116,  116, 1057, 1057,  116,  116,  118, 1057, 1057, 1057,
+     1057,  118,  120,  120,  120,  120,  120,  120,   70,   70,
+       70,   70,   70,   70,   13, 1057, 1057, 1057, 1057, 1057,
+     1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
+     1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
+     1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
+     1057, 1057, 1057, 1057
     } ;
 
-static yyconst flex_int16_t yy_chk[2155] =
+static yyconst flex_int16_t yy_chk[2175] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1021,7 +1028,7 @@ static yyconst flex_int16_t yy_chk[2155] =
         9,   24,   33,    6,    7,    7,    7,    7,    9,    7,
        10,   10,   10,   26,   26,    7,    8,    8,    8,    8,
        10,    8,   26,   33,  107,   24,   25,    8,   11,   11,
-       11,   11,   11,   11, 1051,   20,  107,   20,   20,   11,
+       11,   11,   11,   11, 1063,   20,  107,   20,   20,   11,
 
        20,   25,   64,   27,   28,   20,   23,   27,   11,   12,
        12,   12,   12,   12,   12,   23,   64,   27,   23,   28,
@@ -1029,7 +1036,7 @@ static yyconst flex_int16_t yy_chk[2155] =
        19,   19,   19,   19,   75,   19,   22,   22,   30,   31,
        19,   19,   76,   31,   22,   32,   32,   34,   36,   35,
        32,   22,   75,   36,   35,   38,   34,   37,   37,   86,
-       47,  450,   34,   47,   35,   34,   32,   35,   36,   38,
+       47,  455,   34,   47,   35,   34,   32,   35,   36,   38,
        73,   39,   39,   73,   38,   37,   39,   53,   86,   53,
        53,   59,   53,   57,   57,   59,   61,   61,   61,   61,
        63,   61,   63,   63,   78,   63,   66,   61,   66,   66,
@@ -1046,209 +1053,211 @@ static yyconst flex_int16_t yy_chk[2155] =
       114,  119,  114,  119,  119,  124,  119,  120,  120,  120,
 
       120,  125,  120,  124,  127,  126,  128,  130,  120,  127,
-      131,  128,  130,  134,  132,  133,  125,  129,  132,  118,
+      131,  128,  130,  134,  132,  133,  125,  129,  132,  181,
       133,  129,  136,  137,  135,  138,  129,  134,  137,  139,
-      142,  129,  163,  131,  139,  150,  135,  129,  129,  135,
-      136,  140,  140,  141,  163,  138,  149,  143,  144,  141,
-      145,  142,  143,  144,  146,  145,  147,  150,  148,  146,
-      151,  152,  153,  147,  148,  154,  149,  153,  155,  156,
+      142,  129,  181,  131,  139,  150,  135,  129,  129,  135,
+      136,  140,  140,  141,  143,  138,  149,  144,  141,  143,
+      145,  142,  144,  146,  141,  145,  147,  150,  146,  148,
+      151,  152,  153,  147,  154,  148,  149,  153,  155,  156,
       157,  156,  158,  159,  159,  151,  164,  157,  160,  161,
-      162,  152,  162,  160,  161,  165,  116,  154,  155,  166,
-      165,  158,  167,  168,  172,  164,  168,  169,  169,  162,
-
-      171,  160,  170,  170,  166,  173,  175,  174,  173,  172,
-      167,  174,  176,  176,  177,  179,  171,  178,  180,  177,
-      175,  181,  178,  182,  182,  183,  184,  185,  186,  584,
-      185,  584,  187,  188,  181,  179,  190,  190,  184,  180,
-      186,  187,  192,  183,  189,  188,  189,  189,  191,  193,
-      197,  191,  194,  195,  195,  196,  196,  199,  198,  192,
-      200,  194,  192,  198,  193,  200,  201,  202,  203,  204,
-      197,  205,  202,  203,  207,  201,  206,  199,  209,  206,
-      211,  210,  213,  212,  214,  205,  217,  213,  207,  204,
-      210,  215,  218,  209,  216,  206,  208,  218,  208,  208,
-
-      217,  211,  212,  220,  214,  221,  215,  224,  222,  223,
-      208,  208,  208,  223,  216,  219,  219,  225,  219,  226,
-      227,  221,  228,  220,  222,  224,  228,  229,  226,  227,
-      230,  225,  231,  237,  232,  230,  229,  235,  231,  232,
-      234,  226,  233,  233,  241,  234,  236,  238,  238,  235,
-      242,  236,  240,  240,  237,  243,  244,  246,  242,  248,
-      250,  247,  251,  253,  243,  241,  247,  248,  244,  249,
-      254,  252,  252,  255,  249,  254,  257,  246,  250,  252,
-      254,  251,  260,  253,  256,  256,  262,  252,  258,  258,
-      259,  261,  264,  255,  260,  263,  268,  252,  265,  266,
-
-      263,  257,  267,  266,  270,  259,  271,  267,  262,  268,
-      261,  264,  273,  265,  269,  269,  270,  272,  274,  274,
-      272,  271,  275,  275,  276,  273,  277,  277,  279,  276,
-      278,  278,  280,  279,  281,  283,  280,  282,  284,  281,
-      283,  282,  285,  286,  288,  288,  294,  285,  287,  289,
-      290,  287,  294,  290,  289,  291,  287,  286,  284,  291,
-      287,  292,  293,  299,  298,  295,  292,  293,  295,  296,
-      297,  300,  296,  301,  302,  297,  300,  299,  301,  302,
-      303,  291,  298,  304,  306,  308,  304,  305,  309,  303,
-      307,  305,  305,  310,  307,  313,  311,  312,  312,  313,
-
-      308,  311,  314,  315,  306,  316,  309,  314,  310,  317,
-      318,  319,  322,  320,  323,  321,  319,  318,  320,  315,
-      321,  324,  317,  323,  316,  326,  325,  330,  326,  329,
-      322,  325,  327,  327,  329,  324,  331,  332,  335,  338,
-      342,  339,  341,  338,  331,  330,  339,  341,  343,  344,
-      344,  347,  332,  115,  345,  335,  340,  350,  342,  349,
-      340,  345,  349,  340,  346,  346,  347,  353,  340,  348,
-      348,  351,  356,  343,  340,  340,  113,  350,  356,  351,
-      352,  352,  353,  354,  354,  355,  357,  358,  355,  359,
-      361,  360,  362,  362,  357,  358,  360,  361,  363,  364,
-
-      365,  369,  364,  363,  366,  366,  367,  359,  370,  367,
-      369,  371,  370,  372,  365,  373,  376,  367,  374,  375,
-      378,  376,  372,  377,  374,  379,  380,  377,  381,  373,
-      371,  380,  384,  375,  382,  382,  386,  379,  383,  378,
-      385,  383,  387,  387,  388,  388,  389,  390,  392,  381,
-      384,  393,  396,  385,  394,  395,  386,  396,  399,  397,
-      397,  389,  400,  400,  398,  404,  393,  397,  394,  401,
-      399,  390,  391,  392,  401,  391,  395,  391,  398,  402,
-      403,  391,  409,  391,  404,  397,  407,  402,  391,  405,
-      405,  407,  408,  410,  403,  408,  412,  411,  413,  414,
-
-      415,  409,  411,  413,  418,  412,  410,  417,  419,  418,
-      420,  421,  426,  419,  415,  420,  422,  422,  423,  414,
-      421,  427,  417,  423,  425,  425,  428,  426,  425,  428,
-      429,  430,  432,  433,  431,  429,  430,  431,  434,  435,
-      436,  427,  443,  437,  435,  436,  437,  438,  441,  439,
-      432,  434,  440,  433,  439,  442,  442,  440,  438,  444,
-      445,  443,  446,  441,  445,  447,  448,  451,  454,  455,
-      452,  453,  456,  444,  447,  452,  453,  456,  457,  459,
-      446,  451,  454,  455,  458,  458,  460,  461,  462,  464,
-      463,  448,  461,  457,  463,  460,  465,  459,  466,  467,
-
-      468,  470,  469,  471,  464,  472,  476,  462,  469,  569,
-      474,  465,  569,  475,  472,  479,  470,  466,  468,  484,
-      467,  475,  477,  471,  474,  478,  476,  477,  479,  478,
-      478,  480,  481,  481,  482,  483,  480,  484,  485,  482,
-      486,  487,  489,  485,  488,  486,  487,  491,  488,  483,
-      490,  489,  492,  493,  490,  494,  489,  495,  489,  496,
-      489,  497,  491,  494,  498,  498,  492,  499,  499,  500,
-      501,  501,  493,  502,  500,  495,  504,  503,  505,  507,
-      497,  504,  506,  513,  496,  503,  507,  509,  506,  510,
-      511,  512,  509,  502,  510,  511,  505,  514,  514,  515,
-
-      512,  516,  513,  519,  517,  518,  518,  520,  521,  523,
-      524,  525,  527,  523,  523,  526,  527,  529,  528,  515,
-      530,  516,  517,  519,  534,  531,  521,  532,  533,  525,
-      531,  529,  520,  533,  532,  526,  524,  528,  535,  530,
-      536,  537,  534,  538,  539,  540,  544,  535,  538,  539,
-      540,  541,  541,  543,  548,  536,  545,  549,  543,  548,
-      545,  545,  537,  546,  546,  544,  547,  550,  551,  552,
-      553,  554,  547,  111,  555,  557,  549,  556,  556,  557,
-      558,  559,  560,  560,  553,  561,  550,  551,  552,  555,
-      561,  562,  554,  558,  563,  564,  567,  567,  570,  563,
-
-      564,  559,  571,  572,  573,  574,  574,  577,  572,  575,
-      581,  562,  578,  570,  576,  576,  578,  579,  577,  573,
-      582,  583,  587,  591,  109,  585,  586,  571,  581,  575,
-      585,  586,  588,  593,  590,  594,  579,  600,  588,  590,
-      582,  583,  587,  592,  592,  595,  599,  596,  591,  601,
-      595,  593,  596,  597,  597,  594,  598,  600,  602,  605,
-      603,  598,  604,  606,  599,  607,  608,  604,  609,  601,
-      614,  610,  602,  603,  619,  613,  615,  609,   72,  605,
-      609,  608,  616,  606,  613,  615,  607,  610,  615,  614,
-      617,  616,  618,  618,  619,  617,  620,  621,  622,  623,
-
-      624,  624,  625,  627,  633,  628,  632,  629,  627,  620,
-      628,  634,  622,  629,  632,  621,  630,  623,  635,  630,
-      625,  636,  633,  638,  639,  630,  640,  641,  639,  642,
-      634,  640,  641,  643,  635,  644,  645,  646,  642,  636,
-      647,  645,  650,  638,  648,  649,  649,  644,  643,  646,
-      648,  650,  651,  651,  652,  653,  654,  654,  647,  652,
-      655,  655,  656,  656,  657,  659,  660,  657,  661,  662,
-      659,  663,  663,  661,  664,  653,  665,  666,  667,  664,
-      668,  669,  670,  672,  660,  671,  671,  675,  665,  673,
-      665,  677,  674,  678,  662,  665,  673,  666,  667,  682,
-
-      668,  674,  669,  672,  676,  676,  680,  681,  670,  678,
-      684,  680,  681,  675,  683,  684,  685,  677,  686,  682,
-      687,  683,  688,  689,  690,  685,  691,  699,  688,  692,
-       70,  693,  689,  686,  692,  693,  693,  694,  695,  687,
-      691,  696,  694,  697,  698,  690,  696,  701,  698,  700,
-      695,  702,  699,  704,  700,  697,  703,  703,  706,  704,
-      705,  707,  709,  702,  706,  705,  711,  711,  712,  701,
-      707,  716,  717,  719,  709,  719,  716,  712,  711,  718,
-      718,  720,  720,  722,  723,  723,  724,  725,  726,  717,
-      727,  728,  729,  730,  731,  732,  731,  734,  730,  725,
-
-      726,  739,  727,  722,  733,  733,  728,  724,  736,  735,
-      736,  737,  729,  732,  735,  738,  737,  740,  744,  739,
-      738,  741,  742,  734,  743,  747,  741,  742,  745,  746,
-      748,  749,  744,  750,  747,  751,  755,  740,  746,  752,
-      745,  746,  748,  743,  749,  752,  754,  756,  757,  757,
-      758,  751,  754,  750,  759,  761,  756,  764,  760,  758,
-      761,  755,  760,  762,  762,  767,  764,  765,  765,  766,
-      766,  768,  770,  759,  769,  771,  768,  767,  769,  772,
-      773,  774,  775,  777,  778,  786,  777,  770,   68,  779,
-      780,  780,  783,  774,  771,  781,  781,  778,  772,  782,
-
-      782,  773,  779,  775,  786,  783,  784,  784,  785,  785,
-      787,  787,  789,  790,  790,  791,  794,  789,  792,  792,
-      793,  795,  794,  798,  795,  796,  796,  797,  797,  799,
-      799,  800,  800,  801,  791,  802,  802,  803,  793,  804,
-      805,  796,  798,  806,  804,  807,  808,  809,  806,  803,
-      811,  813,  810,  814,  811,  808,  809,  810,   65,  801,
-      807,  805,  814,  815,  815,  816,  818,  825,  821,  820,
-      816,  813,  820,  821,  822,  822,  823,  826,  818,  824,
-      823,  827,  824,  828,  829,  830,  827,  825,  828,  831,
-      829,  832,  903,  833,  831,  833,  848,  826,  847,  832,
-
-      903,  830,  836,  836,  839,  839,  841,  841,  843,  843,
-      845,  846,  846,  859,  847,  845,  849,  854,  848,  851,
-      851,  849,  854,  855,  856,  855,  857,  857,  858,  856,
-      860,  859,  861,  862,  863,  864,  864,  865,  866,  867,
-      858,   58,  860,  868,  861,  862,  865,  869,  870,  871,
-      871,  873,  869,  870,  863,  876,  868,  874,  874,  867,
-      877,  875,  879,  878,  866,  880,  880,  881,  882,  873,
-      875,  883,  881,  876,  884,  888,  891,  889,  877,  878,
-      889,  879,  892,  882,  890,  890,  894,  894,  895,  899,
-      883,  891,  896,  896,  884,  888,  898,  898,  901,  900,
-
-      892,  902,  905,  901,  906,  907,  902,  895,  900,  906,
-      907,  899,  908,  909,  909,  910,  910,  905,  912,  913,
-      915,  914,  920,  912,  914,  916,  918,  908,  921,  915,
-      923,  913,  917,  917,  916,  918,  922,  922,  924,  923,
-      925,  920,  927,  928,  932,  925,  924,  921,  930,  930,
-      937,  927,  933,  933,  934,  938,  928,  934,  935,  935,
-      936,  936,  939,  944,  932,  940,  940,  939,  937,  938,
-      941,  945,  946,  947,  941,  948,  949,  950,  951,  945,
-      948,  952,  944,  954,  955,   54,  954,  951,  958,  947,
-      957,  946,  956,  956,  957,  960,  949,  958,  961,  962,
-
-      965,  952,  955,  950,  960,  965,  966,  966,  967,  969,
-      961,  970,  971,  973,  969,  972,  972,  967,  974,  977,
-      975,  976,  978,  983,  962,  984,  976,  971,  975,  973,
-      970,  979,  979,  980,  982,  982,  987,  974,  980,  985,
-      985,  978,  988,  983,  989,  977,  992,  984,  986,  986,
-      990,  990,  991,  991,  988,  987,  994,  995,  995,  996,
-      996,  994,  997,  997,  989,  992,  998,  999,  999, 1001,
-     1001,  998, 1003, 1003, 1004, 1007, 1008, 1008, 1012, 1004,
-     1009, 1022, 1013, 1007, 1024, 1009, 1013, 1017, 1017, 1019,
-     1021, 1021, 1036, 1019, 1025, 1025, 1022, 1030, 1012, 1026,
-
-     1026, 1038, 1024, 1028, 1028, 1031, 1031, 1035, 1040, 1030,
-     1038, 1035, 1036, 1037, 1037, 1041, 1042, 1043, 1043,   49,
-       48,   44,   40, 1040,   14,   13,    0,    0,    0, 1041,
-        0,    0,    0,    0,    0, 1042, 1046, 1046, 1046, 1046,
-     1046, 1046, 1047, 1047, 1047, 1047, 1047, 1047, 1048, 1048,
-     1048, 1048, 1048, 1048, 1049, 1049, 1049, 1049, 1049, 1049,
-     1050, 1050, 1050, 1050, 1050, 1050, 1052, 1052, 1052, 1052,
-     1052, 1052, 1053, 1053,    0,    0, 1053, 1053, 1054, 1054,
-        0, 1054,    0, 1054, 1055,    0,    0,    0,    0, 1055,
-     1056, 1056,    0,    0, 1056, 1056, 1057,    0,    0,    0,
-
-        0, 1057, 1058, 1058, 1058, 1058, 1058, 1058, 1059, 1059,
-     1059, 1059, 1059, 1059, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045,
-     1045, 1045, 1045, 1045
+      162,  152,  162,  160,  161,  163,  154,  165,  155,  166,
+      167,  158,  165,  168,  171,  164,  168,  163,  172,  162,
+
+      175,  160,  169,  169,  166,  170,  170,  174,  167,  173,
+      171,  174,  173,  172,  175,  176,  176,  177,  178,  179,
+      180,  184,  177,  178,  182,  182,  183,  185,  186,  187,
+      185,  191,  191,  184,  188,  189,  193,  194,  118,  179,
+      186,  180,  192,  188,  183,  192,  195,  189,  190,  187,
+      190,  190,  194,  193,  198,  195,  193,  196,  196,  197,
+      197,  199,  200,  201,  202,  203,  199,  204,  201,  205,
+      203,  206,  204,  202,  198,  207,  208,  210,  207,  211,
+      212,  213,  200,  215,  216,  206,  214,  217,  211,  205,
+      208,  214,  210,  116,  207,  209,  222,  209,  209,  216,
+
+      213,  212,  218,  215,  221,  223,  226,  217,  219,  209,
+      209,  209,  222,  219,  220,  220,  218,  220,  224,  225,
+      226,  223,  224,  227,  221,  228,  229,  230,  231,  232,
+      229,  115,  227,  231,  228,  232,  230,  225,  233,  234,
+      234,  235,  236,  233,  237,  227,  235,  238,  239,  240,
+      240,  236,  238,  242,  242,  243,  237,  244,  245,  246,
+      248,  249,  250,  251,  252,  244,  249,  245,  251,  239,
+      250,  246,  253,  254,  254,  255,  243,  257,  256,  259,
+      248,  254,  252,  256,  258,  258,  260,  260,  256,  254,
+      261,  253,  263,  264,  262,  255,  265,  257,  266,  254,
+
+      270,  265,  269,  267,  259,  261,  262,  269,  268,  271,
+      271,  263,  268,  270,  272,  264,  273,  266,  267,  274,
+      275,  301,  274,  276,  276,  278,  272,  277,  277,  113,
+      278,  273,  286,  275,  279,  279,  280,  280,  281,  301,
+      282,  283,  285,  281,  282,  284,  283,  285,  287,  284,
+      288,  289,  286,  287,  289,  290,  290,  291,  292,  289,
+      294,  292,  291,  289,  288,  293,  295,  296,  297,  293,
+      302,  295,  296,  294,  297,  298,  299,  300,  298,  299,
+      303,  304,  300,  305,  302,  303,  304,  306,  305,  307,
+      308,  293,  307,  309,  308,  308,  306,  310,  312,  311,
+
+      313,  310,  314,  315,  315,  316,  317,  314,  318,  316,
+      319,  317,  320,  309,  311,  313,  312,  322,  323,  321,
+      325,  326,  322,  323,  318,  320,  321,  324,  327,  319,
+      326,  328,  324,  333,  329,  334,  328,  329,  325,  330,
+      330,  332,  327,  334,  335,  338,  332,  345,  341,  342,
+      344,  333,  341,  346,  342,  344,  347,  347,  350,  335,
+      353,  348,  338,  343,  111,  345,  352,  343,  348,  352,
+      343,  349,  349,  350,  356,  343,  351,  351,  346,  354,
+      353,  343,  343,  355,  355,  357,  363,  354,  360,  356,
+      357,  358,  358,  359,  360,  361,  359,  362,  366,  366,
+
+      365,  364,  369,  361,  363,  362,  364,  365,  367,  368,
+      370,  370,  368,  367,  371,  373,  369,  371,  374,  375,
+      376,  377,  374,  379,  373,  371,  378,  381,  380,  376,
+      382,  381,  378,  380,  383,  377,  384,  379,  375,  385,
+      388,  384,  386,  386,  387,  390,  383,  387,  389,  382,
+      391,  391,  392,  392,  393,  394,  396,  397,  388,  398,
+      385,  389,  400,  399,  402,  390,  109,  400,  416,  393,
+      404,  404,  397,  398,  401,  401,  403,  416,  402,  394,
+      395,  396,  401,  395,  399,  395,  406,  405,  403,  395,
+      407,  395,  405,  408,  406,  413,  395,  409,  409,  412,
+
+      401,  411,  412,  414,  407,  415,  411,  418,  417,  419,
+      415,  422,  408,  417,  413,  420,  414,  423,  431,  424,
+      420,  432,  423,  419,  424,  425,  422,  418,  426,  428,
+      425,  427,  427,  431,  428,  430,  430,  426,  437,  430,
+      433,  432,  434,  433,  435,  436,  438,  434,  436,  435,
+      439,  442,  440,  441,  442,  444,  437,  440,  441,  443,
+      444,  446,  445,  439,  447,  447,  438,  445,  448,  449,
+      443,  450,  451,  452,  453,  450,  446,  456,  459,  457,
+      458,  460,  452,  449,  457,  458,  462,  448,  461,  464,
+      451,  456,  459,  461,  465,  460,  463,  463,  467,  453,
+
+      466,  462,  468,  465,  469,  466,  468,  464,  470,  471,
+      472,  473,  474,  476,  480,  475,  477,  467,  474,  469,
+      479,  481,  480,  470,  484,  477,   72,  482,  471,  473,
+      475,  472,  482,  476,  479,  483,  489,  484,  485,  483,
+      483,  481,  487,  485,  486,  486,  490,  487,  488,  488,
+      489,  491,  492,  493,  495,  494,  491,  492,  493,  494,
+      497,  496,  498,  495,  490,  496,  499,  502,  495,  500,
+      495,  501,  495,  511,  503,  497,  498,  500,  504,  504,
+      505,  505,  506,  507,  507,  499,  508,  506,  509,  501,
+      510,  511,  502,  503,  512,  510,  509,  513,  515,  518,
+
+      512,  519,  516,  515,  513,  517,  508,  516,  518,  521,
+      517,  520,  520,  522,  523,  524,  524,  525,  526,  529,
+      519,  527,  530,  529,  529,  532,  531,  533,  534,  521,
+       70,  533,  523,  522,  536,  535,  537,  525,  540,  527,
+      542,  537,  543,  526,  531,  532,  539,  534,  530,  535,
+      538,  539,  541,  536,  544,  542,  540,  538,  550,  544,
+      545,  541,  546,  543,  553,  545,  549,  546,  547,  547,
+      551,  549,  552,  552,  551,  551,  554,  550,  556,  555,
+      557,  558,  554,  553,  555,  559,  561,  560,  562,  563,
+      563,  564,  565,  566,  569,  564,  578,  556,  585,  557,
+
+      558,  560,  585,  562,  559,  565,  568,  561,  567,  567,
+      570,  568,  571,  566,  569,  570,  577,  571,  574,  574,
+      576,  578,  579,  576,  580,  581,  581,  579,  582,  583,
+      583,  577,  584,  586,  589,  588,  590,  592,  591,  580,
+      591,  593,  592,  584,  594,  595,  593,  598,  582,  600,
+      597,  595,  586,  588,  589,  597,  590,  599,  599,  601,
+      602,  603,  604,  604,  594,  602,  603,  600,  605,  606,
+      607,  608,  598,  605,  609,  611,  610,  612,  613,  601,
+      611,  614,   68,  616,  615,  617,  622,  606,  609,  610,
+      607,  608,  616,  620,  621,  616,  620,  612,  613,  615,
+
+      623,  617,  614,  621,  624,  622,  625,  626,  626,  623,
+      627,  625,  623,  624,  628,  629,  631,  630,  632,  632,
+      633,  635,  641,  636,  640,  642,  635,  628,  636,  637,
+      627,  630,  640,  629,  631,  637,  638,  643,  633,  638,
+      641,  644,  646,  647,  642,  638,  648,  647,  650,  649,
+      651,  648,  652,  643,  649,  653,  654,  650,  655,  644,
+      653,  656,  646,  658,  652,  651,  660,  656,  654,  657,
+      657,  660,  658,  659,  659,  661,  655,  662,  662,  663,
+      663,  664,  664,  665,  667,  668,  665,  669,  670,  667,
+      671,  671,  669,  672,  674,  661,  673,  675,  672,  676,
+
+      677,  678,  680,  668,  679,  679,  684,  681,  673,  686,
+      673,  682,  687,  670,  674,  673,  681,  675,  682,  676,
+      683,  677,  680,  685,  685,  689,  690,  678,  687,  683,
+      689,  690,  684,  691,  692,  686,  694,  693,  696,  695,
+      697,  692,  693,  698,  699,  694,  697,  700,  704,  708,
+      701,  703,  698,  691,  695,  701,  703,  696,  702,  705,
+      704,  700,  702,  702,  705,  699,  706,  707,  709,  710,
+      711,  707,  716,  709,  708,  712,  712,  713,  706,  714,
+      715,  716,  711,  713,  714,  718,  715,  720,  720,  721,
+      725,  710,  726,  727,  727,  725,  731,  718,  721,  720,
+
+      728,  733,  728,  729,  729,  732,  732,  734,  735,  726,
+      737,  736,  738,  739,  744,  740,  731,  740,  739,  734,
+      735,  741,  733,  736,  742,  737,  743,  743,  746,  745,
+      746,  747,  738,  742,  745,  749,  747,  748,  750,  741,
+      744,  751,  748,  752,  753,  754,  751,  757,  752,  755,
+      758,  760,  759,  749,  761,  756,  757,  765,  750,  754,
+      762,  755,  758,  753,  756,  759,  762,  756,  764,  766,
+      761,  760,  767,  767,  764,  768,  769,  770,  766,  774,
+      771,  770,  765,  780,  768,  771,  772,  772,  774,  775,
+      775,  776,  776,  777,  778,  769,  779,  781,  780,  778,
+
+      779,  782,  783,  784,  785,  777,  787,  806,  788,  787,
+      806,  789,  790,  790,  796,  784,  781,  791,  791,  793,
+      782,  788,  802,  783,  789,  785,  792,  792,  794,  794,
+      795,  795,  793,  796,  797,  797,  798,  798,  800,  801,
+      801,  802,  804,  800,  803,  803,  805,  807,  807,  808,
+      808,  809,  805,  810,  810,  811,  811,  812,  813,  813,
+      804,  814,  815,  807,  816,  818,  817,  815,  819,  820,
+      809,  817,  822,  814,  821,  824,  822,  819,  820,  821,
+      818,  825,  829,  812,  827,  816,  826,  826,  831,  827,
+      825,  831,  832,  836,  829,  824,  834,  832,  833,  833,
+
+      834,  835,  837,  838,  835,  839,  840,  841,  838,  842,
+      839,  843,  840,  836,  842,  844,  860,  844,  859,  843,
+      847,  847,  837,  841,  850,  850,  853,  853,  855,  855,
+      857,  858,  858,  871,  859,  857,  861,  866,  860,  863,
+      863,  861,  866,  867,  868,  867,  869,  869,  870,  868,
+      872,  871,  873,  874,  875,  876,  876,  877,  878,  879,
+      870,   65,  872,  880,  873,  874,  877,  881,  882,  883,
+      883,  885,  881,  882,  875,  888,  880,  886,  886,  879,
+      889,  887,  891,  890,  878,  892,  892,  893,  894,  885,
+      887,  895,  893,  888,  896,  900,  903,  901,  889,  890,
+
+      901,  891,  904,  894,  902,  902,  906,  906,  907,  911,
+      895,  903,  908,  908,  896,  900,  910,  910,  913,  912,
+      904,  914,  915,  913,  917,  920,  914,  907,  912,  918,
+      915,  911,  919,  924,  918,  921,  921,  919,  924,  917,
+      920,  922,  922,  925,  926,  927,  932,  926,  928,  929,
+      929,  930,  933,  935,  927,  925,  936,  928,  934,  934,
+      930,  937,  935,  939,  936,  932,  937,  940,  942,  942,
+      944,  933,  939,  945,  945,  946,  947,  947,  946,  949,
+      940,  948,  948,  951,  950,  952,  952,  953,  951,  956,
+      944,  953,  957,  958,  959,  961,  960,  949,  950,  962,
+
+      957,  960,  963,  964,  966,  969,  967,  966,  956,  969,
+      959,  963,  958,  968,  968,  961,  973,  970,  972,  974,
+      978,  978,  979,  964,  967,  962,  970,  972,  973,  977,
+      981,  979,  982,  983,  977,  981,  984,  984,  985,  986,
+      988,  987,  989,  990,  974,  988,  991,  991,  983,  987,
+      992,  982,  994,  994,  985,  992,  995,  996,  986,  997,
+      997,  999,  990,  998,  998, 1000, 1001, 1024,  989, 1002,
+     1002, 1003, 1003, 1004, 1007, 1007,  995, 1000, 1006,  996,
+      999, 1008, 1008, 1006, 1009, 1009, 1001, 1024, 1010, 1011,
+     1011, 1019, 1004, 1010, 1013, 1013, 1015, 1015, 1016, 1019,
+
+     1020, 1020, 1021, 1016, 1025, 1029, 1029, 1021, 1025, 1031,
+     1033, 1033, 1034, 1031, 1036, 1037, 1037, 1038, 1038, 1040,
+     1040, 1042, 1043, 1043, 1047, 1048, 1050, 1034, 1047, 1049,
+     1049, 1052, 1036, 1042, 1053, 1050, 1054, 1055, 1055,   58,
+       54,   49,   48,   44,   40, 1048, 1052,   14, 1053,   13,
+        0,    0,    0,    0,    0, 1054, 1058, 1058, 1058, 1058,
+     1058, 1058, 1059, 1059, 1059, 1059, 1059, 1059, 1060, 1060,
+     1060, 1060, 1060, 1060, 1061, 1061, 1061, 1061, 1061, 1061,
+     1062, 1062, 1062, 1062, 1062, 1062, 1064, 1064, 1064, 1064,
+     1064, 1064, 1065, 1065,    0,    0, 1065, 1065, 1066, 1066,
+
+        0, 1066,    0, 1066, 1067,    0,    0,    0,    0, 1067,
+     1068, 1068,    0,    0, 1068, 1068, 1069,    0,    0,    0,
+        0, 1069, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1071,
+     1071, 1071, 1071, 1071, 1057, 1057, 1057, 1057, 1057, 1057,
+     1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
+     1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
+     1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057,
+     1057, 1057, 1057, 1057
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1372,7 +1381,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 1375 "<stdout>"
+#line 1384 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -1559,7 +1568,7 @@ YY_DECL
     
 #line 120 "util/configlexer.lex"
 
-#line 1562 "<stdout>"
+#line 1571 "<stdout>"
 
        if ( !(yy_init) )
                {
@@ -1618,13 +1627,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 >= 1046 )
+                               if ( yy_current_state >= 1058 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 2115 );
+               while ( yy_base[yy_current_state] != 2135 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -2047,108 +2056,113 @@ YY_RULE_SETUP
 case 79:
 YY_RULE_SETUP
 #line 202 "util/configlexer.lex"
-{ YDVAR(2, VAR_LOCAL_ZONE) }
+{ YDVAR(1, VAR_LOG_TIME_ASCII) }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
 #line 203 "util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA) }
+{ YDVAR(2, VAR_LOCAL_ZONE) }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
 #line 204 "util/configlexer.lex"
-{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
+{ YDVAR(1, VAR_LOCAL_DATA) }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
 #line 205 "util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
+{ YDVAR(1, VAR_LOCAL_DATA_PTR) }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
 #line 206 "util/configlexer.lex"
-{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
+{ YDVAR(1, VAR_STATISTICS_INTERVAL) }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
 #line 207 "util/configlexer.lex"
-{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
+{ YDVAR(1, VAR_STATISTICS_CUMULATIVE) }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
 #line 208 "util/configlexer.lex"
-{ YDVAR(0, VAR_REMOTE_CONTROL) }
+{ YDVAR(1, VAR_EXTENDED_STATISTICS) }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
 #line 209 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_ENABLE) }
+{ YDVAR(0, VAR_REMOTE_CONTROL) }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
 #line 210 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_INTERFACE) }
+{ YDVAR(1, VAR_CONTROL_ENABLE) }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
 #line 211 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_PORT) }
+{ YDVAR(1, VAR_CONTROL_INTERFACE) }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
 #line 212 "util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_KEY_FILE) }
+{ YDVAR(1, VAR_CONTROL_PORT) }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
 #line 213 "util/configlexer.lex"
-{ YDVAR(1, VAR_SERVER_CERT_FILE) }
+{ YDVAR(1, VAR_SERVER_KEY_FILE) }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
 #line 214 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
+{ YDVAR(1, VAR_SERVER_CERT_FILE) }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
 #line 215 "util/configlexer.lex"
-{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
+{ YDVAR(1, VAR_CONTROL_KEY_FILE) }
        YY_BREAK
 case 93:
-/* rule 93 can match eol */
 YY_RULE_SETUP
 #line 216 "util/configlexer.lex"
+{ YDVAR(1, VAR_CONTROL_CERT_FILE) }
+       YY_BREAK
+case 94:
+/* rule 94 can match eol */
+YY_RULE_SETUP
+#line 217 "util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++; }
        YY_BREAK
 /* Quoted strings. Strip leading and ending quotes */
-case 94:
+case 95:
 YY_RULE_SETUP
-#line 219 "util/configlexer.lex"
+#line 220 "util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 220 "util/configlexer.lex"
+#line 221 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 95:
+case 96:
 YY_RULE_SETUP
-#line 225 "util/configlexer.lex"
+#line 226 "util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 96:
-/* rule 96 can match eol */
+case 97:
+/* rule 97 can match eol */
 YY_RULE_SETUP
-#line 226 "util/configlexer.lex"
+#line 227 "util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 97:
+case 98:
 YY_RULE_SETUP
-#line 228 "util/configlexer.lex"
+#line 229 "util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2161,34 +2175,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 98:
+case 99:
 YY_RULE_SETUP
-#line 240 "util/configlexer.lex"
+#line 241 "util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 241 "util/configlexer.lex"
+#line 242 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 99:
+case 100:
 YY_RULE_SETUP
-#line 246 "util/configlexer.lex"
+#line 247 "util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 100:
-/* rule 100 can match eol */
+case 101:
+/* rule 101 can match eol */
 YY_RULE_SETUP
-#line 247 "util/configlexer.lex"
+#line 248 "util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 101:
+case 102:
 YY_RULE_SETUP
-#line 249 "util/configlexer.lex"
+#line 250 "util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -2201,38 +2215,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 102:
+case 103:
 YY_RULE_SETUP
-#line 261 "util/configlexer.lex"
+#line 262 "util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 263 "util/configlexer.lex"
+#line 264 "util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 103:
-YY_RULE_SETUP
-#line 267 "util/configlexer.lex"
-{ LEXOUT(("ISP ")); /* ignore */ }
-       YY_BREAK
 case 104:
-/* rule 104 can match eol */
 YY_RULE_SETUP
 #line 268 "util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++;}
+{ LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
 case 105:
+/* rule 105 can match eol */
 YY_RULE_SETUP
 #line 269 "util/configlexer.lex"
-{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+{ LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
 case 106:
 YY_RULE_SETUP
 #line 270 "util/configlexer.lex"
+{ LEXOUT(("IQS ")); BEGIN(include_quoted); }
+       YY_BREAK
+case 107:
+YY_RULE_SETUP
+#line 271 "util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include(yytext);
@@ -2240,27 +2254,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 275 "util/configlexer.lex"
+#line 276 "util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 107:
+case 108:
 YY_RULE_SETUP
-#line 279 "util/configlexer.lex"
+#line 280 "util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 108:
-/* rule 108 can match eol */
+case 109:
+/* rule 109 can match eol */
 YY_RULE_SETUP
-#line 280 "util/configlexer.lex"
+#line 281 "util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 109:
+case 110:
 YY_RULE_SETUP
-#line 282 "util/configlexer.lex"
+#line 283 "util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -2270,7 +2284,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 288 "util/configlexer.lex"
+#line 289 "util/configlexer.lex"
 {
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
        if (config_include_stack_ptr == 0) {
@@ -2281,33 +2295,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 110:
+case 111:
 YY_RULE_SETUP
-#line 298 "util/configlexer.lex"
+#line 299 "util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING; }
        YY_BREAK
-case 111:
+case 112:
 YY_RULE_SETUP
-#line 302 "util/configlexer.lex"
+#line 303 "util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 112:
+case 113:
 YY_RULE_SETUP
-#line 305 "util/configlexer.lex"
+#line 306 "util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 113:
+case 114:
 YY_RULE_SETUP
-#line 309 "util/configlexer.lex"
+#line 310 "util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 2310 "<stdout>"
+#line 2324 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -2597,7 +2611,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 >= 1046 )
+                       if ( yy_current_state >= 1058 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2625,11 +2639,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 >= 1046 )
+               if ( yy_current_state >= 1058 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 1045);
+       yy_is_jam = (yy_current_state == 1057);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3266,7 +3280,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 309 "util/configlexer.lex"
+#line 310 "util/configlexer.lex"
 
 
 
index 294f48a08cf6134dda8cc9e865207ce0221d395b..18c1c300822dff9ed23df9e57e9ca34f69626249 100644 (file)
@@ -199,6 +199,7 @@ neg-cache-size{COLON}               { YDVAR(1, VAR_NEG_CACHE_SIZE) }
 val-nsec3-keysize-iterations{COLON}    { 
                                  YDVAR(1, VAR_VAL_NSEC3_KEYSIZE_ITERATIONS) }
 use-syslog{COLON}              { YDVAR(1, VAR_USE_SYSLOG) }
+log-time-ascii{COLON}          { YDVAR(1, VAR_LOG_TIME_ASCII) }
 local-zone{COLON}              { YDVAR(2, VAR_LOCAL_ZONE) }
 local-data{COLON}              { YDVAR(1, VAR_LOCAL_DATA) }
 local-data-ptr{COLON}          { YDVAR(1, VAR_LOCAL_DATA_PTR) }
index d4090d7d6a769e050453f2b78a38d72e805bb9b2..114c3ec1ef10829d14307cffc34bef06a228c39d 100644 (file)
      VAR_LOCAL_DATA_PTR = 352,
      VAR_JOSTLE_TIMEOUT = 353,
      VAR_STUB_PRIME = 354,
-     VAR_UNWANTED_REPLY_THRESHOLD = 355
+     VAR_UNWANTED_REPLY_THRESHOLD = 355,
+     VAR_LOG_TIME_ASCII = 356
    };
 #endif
 /* Tokens.  */
 #define VAR_JOSTLE_TIMEOUT 353
 #define VAR_STUB_PRIME 354
 #define VAR_UNWANTED_REPLY_THRESHOLD 355
+#define VAR_LOG_TIME_ASCII 356
 
 
 
@@ -323,7 +325,7 @@ typedef union YYSTYPE
        char*   str;
 }
 /* Line 187 of yacc.c.  */
-#line 327 "util/configparser.c"
+#line 329 "util/configparser.c"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -336,7 +338,7 @@ typedef union YYSTYPE
 
 
 /* Line 216 of yacc.c.  */
-#line 340 "util/configparser.c"
+#line 342 "util/configparser.c"
 
 #ifdef short
 # undef short
@@ -551,20 +553,20 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   180
+#define YYLAST   182
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  101
+#define YYNTOKENS  102
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  102
+#define YYNNTS  103
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  193
+#define YYNRULES  195
 /* YYNRULES -- Number of states.  */
-#define YYNSTATES  283
+#define YYNSTATES  286
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   355
+#define YYMAXUTOK   356
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -607,7 +609,7 @@ static const yytype_uint8 yytranslate[] =
       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
-      95,    96,    97,    98,    99,   100
+      95,    96,    97,    98,    99,   100,   101
 };
 
 #if YYDEBUG
@@ -623,71 +625,72 @@ static const yytype_uint16 yyprhs[] =
      103,   105,   107,   109,   111,   113,   115,   117,   119,   121,
      123,   125,   127,   129,   131,   133,   135,   137,   139,   141,
      143,   145,   147,   149,   151,   153,   155,   157,   159,   161,
-     163,   165,   167,   169,   171,   173,   176,   177,   179,   181,
-     183,   185,   187,   190,   191,   193,   195,   197,   200,   203,
-     206,   209,   212,   215,   218,   221,   224,   227,   230,   233,
-     236,   239,   242,   245,   248,   251,   254,   257,   260,   263,
-     266,   269,   272,   275,   278,   281,   284,   287,   290,   293,
-     296,   299,   302,   305,   308,   311,   314,   317,   320,   323,
-     326,   329,   332,   335,   338,   341,   344,   347,   350,   353,
-     356,   359,   362,   365,   368,   371,   374,   378,   381,   384,
-     387,   390,   393,   396,   399,   402,   405,   408,   412,   415,
-     418,   421,   424,   427,   430,   433,   436,   439,   441,   444,
-     445,   447,   449,   451,   453,   455,   457,   459,   462,   465,
-     468,   471,   474,   477
+     163,   165,   167,   169,   171,   173,   175,   178,   179,   181,
+     183,   185,   187,   189,   192,   193,   195,   197,   199,   202,
+     205,   208,   211,   214,   217,   220,   223,   226,   229,   232,
+     235,   238,   241,   244,   247,   250,   253,   256,   259,   262,
+     265,   268,   271,   274,   277,   280,   283,   286,   289,   292,
+     295,   298,   301,   304,   307,   310,   313,   316,   319,   322,
+     325,   328,   331,   334,   337,   340,   343,   346,   349,   352,
+     355,   358,   361,   364,   367,   370,   373,   376,   379,   383,
+     386,   389,   392,   395,   398,   401,   404,   407,   410,   413,
+     417,   420,   423,   426,   429,   432,   435,   438,   441,   444,
+     446,   449,   450,   452,   454,   456,   458,   460,   462,   464,
+     467,   470,   473,   476,   479,   482
 };
 
 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
 static const yytype_int16 yyrhs[] =
 {
-     102,     0,    -1,    -1,   102,   103,    -1,   104,   105,    -1,
-     107,   108,    -1,   110,   111,    -1,   193,   194,    -1,    11,
-      -1,   105,   106,    -1,    -1,   113,    -1,   114,    -1,   118,
-      -1,   121,    -1,   127,    -1,   128,    -1,   129,    -1,   130,
-      -1,   119,    -1,   133,    -1,   134,    -1,   135,    -1,   136,
-      -1,   137,    -1,   149,    -1,   150,    -1,   151,    -1,   153,
-      -1,   154,    -1,   124,    -1,   155,    -1,   156,    -1,   159,
-      -1,   157,    -1,   158,    -1,   160,    -1,   161,    -1,   162,
-      -1,   170,    -1,   144,    -1,   145,    -1,   146,    -1,   147,
-      -1,   163,    -1,   173,    -1,   141,    -1,   143,    -1,   174,
-      -1,   176,    -1,   177,    -1,   178,    -1,   125,    -1,   148,
-      -1,   180,    -1,   181,    -1,   142,    -1,   179,    -1,   132,
-      -1,   120,    -1,   138,    -1,   171,    -1,   175,    -1,   164,
-      -1,   172,    -1,   183,    -1,   184,    -1,   126,    -1,   115,
-      -1,   131,    -1,   166,    -1,   116,    -1,   122,    -1,   123,
-      -1,   139,    -1,   140,    -1,   182,    -1,   165,    -1,   167,
-      -1,   168,    -1,   117,    -1,   185,    -1,   152,    -1,   169,
-      -1,    38,    -1,   108,   109,    -1,    -1,   186,    -1,   187,
-      -1,   188,    -1,   189,    -1,    44,    -1,   111,   112,    -1,
-      -1,   190,    -1,   191,    -1,   192,    -1,    13,    10,    -1,
-      12,    10,    -1,    76,    10,    -1,    79,    10,    -1,    96,
-      10,    -1,    14,    10,    -1,    16,    10,    -1,    67,    10,
-      -1,    15,    10,    -1,    80,    10,    -1,    81,    10,    -1,
-      31,    10,    -1,    60,    10,    -1,    75,    10,    -1,    17,
-      10,    -1,    18,    10,    -1,    19,    10,    -1,    20,    10,
-      -1,    77,    10,    -1,    66,    10,    -1,    21,    10,    -1,
-      22,    10,    -1,    23,    10,    -1,    24,    10,    -1,    25,
-      10,    -1,    68,    10,    -1,    82,    10,    -1,    83,    10,
-      -1,    54,    10,    -1,    64,    10,    -1,    55,    10,    -1,
-      48,    10,    -1,    49,    10,    -1,    50,    10,    -1,    51,
-      10,    -1,    61,    10,    -1,    26,    10,    -1,    27,    10,
-      -1,    28,    10,    -1,    98,    10,    -1,    29,    10,    -1,
-      30,    10,    -1,    32,    10,    -1,    33,    10,    -1,    35,
-      10,    -1,    36,    10,    -1,    34,    10,    -1,    41,    10,
-      -1,    42,    10,    -1,    43,    10,    -1,    52,    10,    -1,
-      71,    10,    -1,    85,    10,    -1,    78,    10,    -1,    86,
-      10,    -1,    87,    10,    -1,   100,    10,    -1,    47,    10,
-      -1,    69,    10,    -1,    72,    10,    10,    -1,    53,    10,
-      -1,    56,    10,    -1,    70,    10,    -1,    57,    10,    -1,
-      58,    10,    -1,    59,    10,    -1,    65,    10,    -1,    62,
-      10,    -1,    63,    10,    -1,    84,    10,    -1,    73,    10,
-      10,    -1,    74,    10,    -1,    97,    10,    -1,    37,    10,
-      -1,    39,    10,    -1,    40,    10,    -1,    99,    10,    -1,
-      37,    10,    -1,    45,    10,    -1,    46,    10,    -1,    88,
-      -1,   194,   195,    -1,    -1,   196,    -1,   198,    -1,   197,
-      -1,   199,    -1,   200,    -1,   201,    -1,   202,    -1,    89,
-      10,    -1,    91,    10,    -1,    90,    10,    -1,    92,    10,
-      -1,    93,    10,    -1,    94,    10,    -1,    95,    10,    -1
+     103,     0,    -1,    -1,   103,   104,    -1,   105,   106,    -1,
+     108,   109,    -1,   111,   112,    -1,   195,   196,    -1,    11,
+      -1,   106,   107,    -1,    -1,   114,    -1,   115,    -1,   119,
+      -1,   122,    -1,   128,    -1,   129,    -1,   130,    -1,   131,
+      -1,   120,    -1,   135,    -1,   136,    -1,   137,    -1,   138,
+      -1,   139,    -1,   151,    -1,   152,    -1,   153,    -1,   155,
+      -1,   156,    -1,   125,    -1,   157,    -1,   158,    -1,   161,
+      -1,   159,    -1,   160,    -1,   162,    -1,   163,    -1,   164,
+      -1,   172,    -1,   146,    -1,   147,    -1,   148,    -1,   149,
+      -1,   165,    -1,   175,    -1,   143,    -1,   145,    -1,   176,
+      -1,   178,    -1,   179,    -1,   180,    -1,   126,    -1,   150,
+      -1,   182,    -1,   183,    -1,   144,    -1,   181,    -1,   133,
+      -1,   121,    -1,   140,    -1,   173,    -1,   177,    -1,   166,
+      -1,   174,    -1,   185,    -1,   186,    -1,   127,    -1,   116,
+      -1,   132,    -1,   168,    -1,   117,    -1,   123,    -1,   124,
+      -1,   141,    -1,   142,    -1,   184,    -1,   167,    -1,   169,
+      -1,   170,    -1,   118,    -1,   187,    -1,   154,    -1,   171,
+      -1,   134,    -1,    38,    -1,   109,   110,    -1,    -1,   188,
+      -1,   189,    -1,   190,    -1,   191,    -1,    44,    -1,   112,
+     113,    -1,    -1,   192,    -1,   193,    -1,   194,    -1,    13,
+      10,    -1,    12,    10,    -1,    76,    10,    -1,    79,    10,
+      -1,    96,    10,    -1,    14,    10,    -1,    16,    10,    -1,
+      67,    10,    -1,    15,    10,    -1,    80,    10,    -1,    81,
+      10,    -1,    31,    10,    -1,    60,    10,    -1,    75,    10,
+      -1,    17,    10,    -1,    18,    10,    -1,    19,    10,    -1,
+      20,    10,    -1,    77,    10,    -1,    66,    10,    -1,   101,
+      10,    -1,    21,    10,    -1,    22,    10,    -1,    23,    10,
+      -1,    24,    10,    -1,    25,    10,    -1,    68,    10,    -1,
+      82,    10,    -1,    83,    10,    -1,    54,    10,    -1,    64,
+      10,    -1,    55,    10,    -1,    48,    10,    -1,    49,    10,
+      -1,    50,    10,    -1,    51,    10,    -1,    61,    10,    -1,
+      26,    10,    -1,    27,    10,    -1,    28,    10,    -1,    98,
+      10,    -1,    29,    10,    -1,    30,    10,    -1,    32,    10,
+      -1,    33,    10,    -1,    35,    10,    -1,    36,    10,    -1,
+      34,    10,    -1,    41,    10,    -1,    42,    10,    -1,    43,
+      10,    -1,    52,    10,    -1,    71,    10,    -1,    85,    10,
+      -1,    78,    10,    -1,    86,    10,    -1,    87,    10,    -1,
+     100,    10,    -1,    47,    10,    -1,    69,    10,    -1,    72,
+      10,    10,    -1,    53,    10,    -1,    56,    10,    -1,    70,
+      10,    -1,    57,    10,    -1,    58,    10,    -1,    59,    10,
+      -1,    65,    10,    -1,    62,    10,    -1,    63,    10,    -1,
+      84,    10,    -1,    73,    10,    10,    -1,    74,    10,    -1,
+      97,    10,    -1,    37,    10,    -1,    39,    10,    -1,    40,
+      10,    -1,    99,    10,    -1,    37,    10,    -1,    45,    10,
+      -1,    46,    10,    -1,    88,    -1,   196,   197,    -1,    -1,
+     198,    -1,   200,    -1,   199,    -1,   201,    -1,   202,    -1,
+     203,    -1,   204,    -1,    89,    10,    -1,    91,    10,    -1,
+      90,    10,    -1,    92,    10,    -1,    93,    10,    -1,    94,
+      10,    -1,    95,    10,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -701,18 +704,18 @@ static const yytype_uint16 yyrline[] =
      131,   131,   132,   132,   133,   133,   134,   134,   135,   135,
      135,   136,   136,   137,   137,   138,   138,   138,   139,   139,
      140,   140,   141,   141,   142,   142,   142,   143,   143,   144,
-     144,   145,   145,   146,   148,   160,   161,   162,   162,   162,
-     162,   164,   176,   177,   178,   178,   178,   180,   189,   198,
-     209,   218,   227,   236,   249,   264,   273,   282,   291,   300,
-     309,   318,   327,   336,   345,   354,   363,   377,   384,   391,
-     398,   406,   413,   420,   427,   434,   442,   450,   457,   466,
-     475,   482,   489,   500,   508,   521,   530,   539,   547,   560,
-     569,   578,   587,   596,   609,   616,   626,   636,   646,   656,
-     666,   676,   683,   690,   699,   706,   716,   730,   737,   755,
-     764,   773,   783,   793,   800,   808,   821,   829,   849,   856,
-     871,   878,   885,   892,   902,   909,   916,   923,   928,   929,
-     930,   930,   930,   931,   931,   931,   932,   934,   944,   953,
-     960,   967,   974,   981
+     144,   145,   145,   146,   146,   148,   160,   161,   162,   162,
+     162,   162,   164,   176,   177,   178,   178,   178,   180,   189,
+     198,   209,   218,   227,   236,   249,   264,   273,   282,   291,
+     300,   309,   318,   327,   336,   345,   354,   363,   377,   386,
+     393,   400,   407,   415,   422,   429,   436,   443,   451,   459,
+     466,   475,   484,   491,   498,   509,   517,   530,   539,   548,
+     556,   569,   578,   587,   596,   605,   618,   625,   635,   645,
+     655,   665,   675,   685,   692,   699,   708,   715,   725,   739,
+     746,   764,   773,   782,   792,   802,   809,   817,   830,   838,
+     858,   865,   880,   887,   894,   901,   911,   918,   925,   932,
+     937,   938,   939,   939,   939,   940,   940,   940,   941,   943,
+     953,   962,   969,   976,   983,   990
 };
 #endif
 
@@ -752,10 +755,10 @@ static const char *const yytname[] =
   "VAR_CONTROL_INTERFACE", "VAR_CONTROL_PORT", "VAR_SERVER_KEY_FILE",
   "VAR_SERVER_CERT_FILE", "VAR_CONTROL_KEY_FILE", "VAR_CONTROL_CERT_FILE",
   "VAR_EXTENDED_STATISTICS", "VAR_LOCAL_DATA_PTR", "VAR_JOSTLE_TIMEOUT",
-  "VAR_STUB_PRIME", "VAR_UNWANTED_REPLY_THRESHOLD", "$accept",
-  "toplevelvars", "toplevelvar", "serverstart", "contents_server",
-  "content_server", "stubstart", "contents_stub", "content_stub",
-  "forwardstart", "contents_forward", "content_forward",
+  "VAR_STUB_PRIME", "VAR_UNWANTED_REPLY_THRESHOLD", "VAR_LOG_TIME_ASCII",
+  "$accept", "toplevelvars", "toplevelvar", "serverstart",
+  "contents_server", "content_server", "stubstart", "contents_stub",
+  "content_stub", "forwardstart", "contents_forward", "content_forward",
   "server_num_threads", "server_verbosity", "server_statistics_interval",
   "server_statistics_cumulative", "server_extended_statistics",
   "server_port", "server_interface", "server_outgoing_interface",
@@ -763,34 +766,35 @@ static const char *const yytname[] =
   "server_outgoing_port_avoid", "server_outgoing_num_tcp",
   "server_incoming_num_tcp", "server_interface_automatic", "server_do_ip4",
   "server_do_ip6", "server_do_udp", "server_do_tcp", "server_do_daemonize",
-  "server_use_syslog", "server_chroot", "server_username",
-  "server_directory", "server_logfile", "server_pidfile",
-  "server_root_hints", "server_dlv_anchor_file", "server_dlv_anchor",
-  "server_trust_anchor_file", "server_trusted_keys_file",
-  "server_trust_anchor", "server_hide_identity", "server_hide_version",
-  "server_identity", "server_version", "server_msg_buffer_size",
-  "server_msg_cache_size", "server_msg_cache_slabs",
-  "server_num_queries_per_thread", "server_jostle_timeout",
-  "server_rrset_cache_size", "server_rrset_cache_slabs",
-  "server_infra_host_ttl", "server_infra_lame_ttl",
-  "server_infra_cache_numhosts", "server_infra_cache_lame_size",
-  "server_infra_cache_slabs", "server_target_fetch_policy",
-  "server_harden_short_bufsize", "server_harden_large_queries",
-  "server_harden_glue", "server_harden_dnssec_stripped",
-  "server_harden_referral_path", "server_use_caps_for_id",
-  "server_private_address", "server_private_domain",
-  "server_unwanted_reply_threshold", "server_do_not_query_address",
-  "server_do_not_query_localhost", "server_access_control",
-  "server_module_conf", "server_val_override_date", "server_cache_max_ttl",
-  "server_bogus_ttl", "server_val_clean_additional",
-  "server_val_permissive_mode", "server_val_nsec3_keysize_iterations",
-  "server_key_cache_size", "server_key_cache_slabs",
-  "server_neg_cache_size", "server_local_zone", "server_local_data",
-  "server_local_data_ptr", "stub_name", "stub_host", "stub_addr",
-  "stub_prime", "forward_name", "forward_host", "forward_addr", "rcstart",
-  "contents_rc", "content_rc", "rc_control_enable", "rc_control_port",
-  "rc_control_interface", "rc_server_key_file", "rc_server_cert_file",
-  "rc_control_key_file", "rc_control_cert_file", 0
+  "server_use_syslog", "server_log_time_ascii", "server_chroot",
+  "server_username", "server_directory", "server_logfile",
+  "server_pidfile", "server_root_hints", "server_dlv_anchor_file",
+  "server_dlv_anchor", "server_trust_anchor_file",
+  "server_trusted_keys_file", "server_trust_anchor",
+  "server_hide_identity", "server_hide_version", "server_identity",
+  "server_version", "server_msg_buffer_size", "server_msg_cache_size",
+  "server_msg_cache_slabs", "server_num_queries_per_thread",
+  "server_jostle_timeout", "server_rrset_cache_size",
+  "server_rrset_cache_slabs", "server_infra_host_ttl",
+  "server_infra_lame_ttl", "server_infra_cache_numhosts",
+  "server_infra_cache_lame_size", "server_infra_cache_slabs",
+  "server_target_fetch_policy", "server_harden_short_bufsize",
+  "server_harden_large_queries", "server_harden_glue",
+  "server_harden_dnssec_stripped", "server_harden_referral_path",
+  "server_use_caps_for_id", "server_private_address",
+  "server_private_domain", "server_unwanted_reply_threshold",
+  "server_do_not_query_address", "server_do_not_query_localhost",
+  "server_access_control", "server_module_conf",
+  "server_val_override_date", "server_cache_max_ttl", "server_bogus_ttl",
+  "server_val_clean_additional", "server_val_permissive_mode",
+  "server_val_nsec3_keysize_iterations", "server_key_cache_size",
+  "server_key_cache_slabs", "server_neg_cache_size", "server_local_zone",
+  "server_local_data", "server_local_data_ptr", "stub_name", "stub_host",
+  "stub_addr", "stub_prime", "forward_name", "forward_host",
+  "forward_addr", "rcstart", "contents_rc", "content_rc",
+  "rc_control_enable", "rc_control_port", "rc_control_interface",
+  "rc_server_key_file", "rc_server_cert_file", "rc_control_key_file",
+  "rc_control_cert_file", 0
 };
 #endif
 
@@ -809,23 +813,23 @@ static const yytype_uint16 yytoknum[] =
      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
+     355,   356
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,   101,   102,   102,   103,   103,   103,   103,   104,   105,
-     105,   106,   106,   106,   106,   106,   106,   106,   106,   106,
-     106,   106,   106,   106,   106,   106,   106,   106,   106,   106,
-     106,   106,   106,   106,   106,   106,   106,   106,   106,   106,
-     106,   106,   106,   106,   106,   106,   106,   106,   106,   106,
-     106,   106,   106,   106,   106,   106,   106,   106,   106,   106,
-     106,   106,   106,   106,   106,   106,   106,   106,   106,   106,
-     106,   106,   106,   106,   106,   106,   106,   106,   106,   106,
-     106,   106,   106,   106,   107,   108,   108,   109,   109,   109,
-     109,   110,   111,   111,   112,   112,   112,   113,   114,   115,
+       0,   102,   103,   103,   104,   104,   104,   104,   105,   106,
+     106,   107,   107,   107,   107,   107,   107,   107,   107,   107,
+     107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
+     107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
+     107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
+     107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
+     107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
+     107,   107,   107,   107,   107,   107,   107,   107,   107,   107,
+     107,   107,   107,   107,   107,   108,   109,   109,   110,   110,
+     110,   110,   111,   112,   112,   113,   113,   113,   114,   115,
      116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
      126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
      136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
@@ -833,9 +837,9 @@ static const yytype_uint8 yyr1[] =
      156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
      166,   167,   168,   169,   170,   171,   172,   173,   174,   175,
      176,   177,   178,   179,   180,   181,   182,   183,   184,   185,
-     186,   187,   188,   189,   190,   191,   192,   193,   194,   194,
-     195,   195,   195,   195,   195,   195,   195,   196,   197,   198,
-     199,   200,   201,   202
+     186,   187,   188,   189,   190,   191,   192,   193,   194,   195,
+     196,   196,   197,   197,   197,   197,   197,   197,   197,   198,
+     199,   200,   201,   202,   203,   204
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -849,18 +853,18 @@ static const yytype_uint8 yyr2[] =
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     2,     0,     1,     1,     1,
-       1,     1,     2,     0,     1,     1,     1,     2,     2,     2,
+       1,     1,     1,     1,     1,     1,     2,     0,     1,     1,
+       1,     1,     1,     2,     0,     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,     3,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     3,     2,     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
+       2,     2,     2,     2,     2,     2,     2,     2,     3,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
+       2,     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
 };
 
 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -868,51 +872,51 @@ static const yytype_uint8 yyr2[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,     0,     1,     8,    84,    91,   177,     3,    10,    86,
-      93,   179,     4,     5,     6,     7,     0,     0,     0,     0,
+       2,     0,     1,     8,    85,    92,   179,     3,    10,    87,
+      94,   181,     4,     5,     6,     7,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     9,
-      11,    12,    68,    71,    80,    13,    19,    59,    14,    72,
-      73,    30,    52,    67,    15,    16,    17,    18,    69,    58,
-      20,    21,    22,    23,    24,    60,    74,    75,    46,    56,
-      47,    40,    41,    42,    43,    53,    25,    26,    27,    82,
-      28,    29,    31,    32,    34,    35,    33,    36,    37,    38,
-      44,    63,    77,    70,    78,    79,    83,    39,    61,    64,
-      45,    48,    62,    49,    50,    51,    57,    54,    55,    76,
-      65,    66,    81,     0,     0,     0,     0,    85,    87,    88,
-      89,    90,     0,     0,     0,    92,    94,    95,    96,     0,
-       0,     0,     0,     0,     0,     0,   178,   180,   182,   181,
-     183,   184,   185,   186,    98,    97,   102,   105,   103,   111,
-     112,   113,   114,   117,   118,   119,   120,   121,   133,   134,
-     135,   137,   138,   108,   139,   140,   143,   141,   142,   144,
-     145,   146,   154,   128,   129,   130,   131,   147,   157,   125,
-     127,   158,   160,   161,   162,   109,   132,   164,   165,   126,
-     163,   116,   104,   122,   155,   159,   148,     0,     0,   168,
-     110,    99,   115,   150,   100,   106,   107,   123,   124,   166,
-     149,   151,   152,   101,   169,   136,   153,   170,   171,   172,
-     173,   174,   175,   176,   187,   189,   188,   190,   191,   192,
-     193,   156,   167
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       9,    11,    12,    68,    71,    80,    13,    19,    59,    14,
+      72,    73,    30,    52,    67,    15,    16,    17,    18,    69,
+      58,    84,    20,    21,    22,    23,    24,    60,    74,    75,
+      46,    56,    47,    40,    41,    42,    43,    53,    25,    26,
+      27,    82,    28,    29,    31,    32,    34,    35,    33,    36,
+      37,    38,    44,    63,    77,    70,    78,    79,    83,    39,
+      61,    64,    45,    48,    62,    49,    50,    51,    57,    54,
+      55,    76,    65,    66,    81,     0,     0,     0,     0,    86,
+      88,    89,    90,    91,     0,     0,     0,    93,    95,    96,
+      97,     0,     0,     0,     0,     0,     0,     0,   180,   182,
+     184,   183,   185,   186,   187,   188,    99,    98,   103,   106,
+     104,   112,   113,   114,   115,   119,   120,   121,   122,   123,
+     135,   136,   137,   139,   140,   109,   141,   142,   145,   143,
+     144,   146,   147,   148,   156,   130,   131,   132,   133,   149,
+     159,   127,   129,   160,   162,   163,   164,   110,   134,   166,
+     167,   128,   165,   117,   105,   124,   157,   161,   150,     0,
+       0,   170,   111,   100,   116,   152,   101,   107,   108,   125,
+     126,   168,   151,   153,   154,   102,   171,   138,   155,   118,
+     172,   173,   174,   175,   176,   177,   178,   189,   191,   190,
+     192,   193,   194,   195,   158,   169
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     7,     8,    12,    89,     9,    13,   167,    10,
-      14,   175,    90,    91,    92,    93,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-     108,   109,   110,   111,   112,   113,   114,   115,   116,   117,
-     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
-     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
-     138,   139,   140,   141,   142,   143,   144,   145,   146,   147,
-     148,   149,   150,   151,   152,   153,   154,   155,   156,   157,
-     158,   159,   160,   161,   162,   168,   169,   170,   171,   176,
-     177,   178,    11,    15,   186,   187,   188,   189,   190,   191,
-     192,   193
+      -1,     1,     7,     8,    12,    90,     9,    13,   169,    10,
+      14,   177,    91,    92,    93,    94,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   106,   107,   108,
+     109,   110,   111,   112,   113,   114,   115,   116,   117,   118,
+     119,   120,   121,   122,   123,   124,   125,   126,   127,   128,
+     129,   130,   131,   132,   133,   134,   135,   136,   137,   138,
+     139,   140,   141,   142,   143,   144,   145,   146,   147,   148,
+     149,   150,   151,   152,   153,   154,   155,   156,   157,   158,
+     159,   160,   161,   162,   163,   164,   170,   171,   172,   173,
+     178,   179,   180,    11,    15,   188,   189,   190,   191,   192,
+     193,   194,   195
 };
 
 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
@@ -921,34 +925,34 @@ static const yytype_int16 yydefgoto[] =
 static const yytype_int16 yypact[] =
 {
      -13,    76,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
-     -13,   -13,   -12,    40,    44,     2,    15,    16,    17,    18,
-      22,    23,    24,    68,    72,    73,    88,    89,    90,    91,
-      92,    93,    94,    95,    96,    97,    98,    99,   100,   101,
-     102,   103,   105,   106,   107,   108,   109,   111,   112,   113,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   130,   131,   132,   133,   134,
-     135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   -13,
-     -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
+     -13,   -13,   -12,    40,    45,     3,    15,    16,    17,    18,
+      22,    23,    24,    68,    71,    73,    89,    90,    91,    92,
+      93,    94,    95,    96,    97,    98,    99,   100,   101,   102,
+     103,   105,   106,   107,   108,   109,   111,   112,   113,   114,
+     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
+     125,   126,   127,   128,   130,   131,   132,   133,   134,   135,
+     136,   137,   138,   139,   140,   141,   142,   143,   144,   145,
+     146,   147,   148,   149,   150,   151,   152,   153,   155,   156,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
-     -13,   -13,   -13,   155,   156,   157,   158,   -13,   -13,   -13,
-     -13,   -13,   159,   160,   161,   -13,   -13,   -13,   -13,   162,
-     163,   164,   165,   166,   167,   168,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
+     -13,   -13,   -13,   -13,   -13,   157,   158,   159,   160,   -13,
+     -13,   -13,   -13,   -13,   161,   162,   163,   -13,   -13,   -13,
+     -13,   164,   165,   166,   167,   168,   169,   170,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
-     -13,   -13,   -13,   -13,   -13,   -13,   -13,   169,   170,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
+     -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   171,
+     172,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
-     -13,   -13,   -13
+     -13,   -13,   -13,   -13,   -13,   -13
 };
 
 /* YYPGOTO[NTERM-NUM].  */
@@ -964,7 +968,7 @@ static const yytype_int8 yypgoto[] =
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
      -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,   -13,
-     -13,   -13
+     -13,   -13,   -13
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
@@ -976,23 +980,23 @@ static const yytype_uint16 yytable[] =
 {
       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,   194,   195,   196,   197,    41,
-      42,    43,   198,   199,   200,    44,    45,    46,    47,    48,
+      36,    37,    38,    39,    40,   196,   197,   198,   199,    41,
+      42,    43,   200,   201,   202,    44,    45,    46,    47,    48,
       49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
       59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
       69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    83,    84,     2,   163,   201,   164,
-     165,   172,   202,   203,    85,    86,    87,     3,    88,   173,
-     174,   179,   180,   181,   182,   183,   184,   185,   204,   205,
-     206,   207,   208,   209,   210,   211,   212,   213,   214,   215,
-     216,   217,   218,   219,     4,   220,   221,   222,   223,   224,
-       5,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     234,   235,   236,   237,   238,   239,   240,   241,   242,   166,
-     243,   244,   245,   246,   247,   248,   249,   250,   251,   252,
-     253,   254,   255,   256,   257,   258,   259,   260,   261,   262,
-     263,   264,   265,   266,     6,   267,   268,   269,   270,   271,
-     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
-     282
+      79,    80,    81,    82,    83,    84,     2,   165,   203,   166,
+     167,   204,   174,   205,    85,    86,    87,     3,    88,    89,
+     175,   176,   181,   182,   183,   184,   185,   186,   187,   206,
+     207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
+     217,   218,   219,   220,     4,   221,   222,   223,   224,   225,
+       5,   226,   227,   228,   229,   230,   231,   232,   233,   234,
+     235,   236,   237,   238,   239,   240,   241,   242,   243,   168,
+     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
+     264,   265,   266,   267,     6,   268,   269,   270,   271,   272,
+     273,   274,   275,   276,   277,   278,   279,   280,   281,   282,
+     283,   284,   285
 };
 
 static const yytype_uint8 yycheck[] =
@@ -1005,8 +1009,8 @@ static const yytype_uint8 yycheck[] =
       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,     0,    37,    10,    39,
-      40,    37,    10,    10,    96,    97,    98,    11,   100,    45,
-      46,    89,    90,    91,    92,    93,    94,    95,    10,    10,
+      40,    10,    37,    10,    96,    97,    98,    11,   100,   101,
+      45,    46,    89,    90,    91,    92,    93,    94,    95,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    38,    10,    10,    10,    10,    10,
       44,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -1015,33 +1019,33 @@ static const yytype_uint8 yycheck[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    88,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10
+      10,    10,    10
 };
 
 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
    symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,   102,     0,    11,    38,    44,    88,   103,   104,   107,
-     110,   193,   105,   108,   111,   194,    12,    13,    14,    15,
+       0,   103,     0,    11,    38,    44,    88,   104,   105,   108,
+     111,   195,   106,   109,   112,   196,    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,    41,    42,    43,    47,    48,    49,    50,    51,    52,
       53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
       63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
       73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-      83,    84,    85,    86,    87,    96,    97,    98,   100,   106,
-     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+      83,    84,    85,    86,    87,    96,    97,    98,   100,   101,
+     107,   114,   115,   116,   117,   118,   119,   120,   121,   122,
      123,   124,   125,   126,   127,   128,   129,   130,   131,   132,
      133,   134,   135,   136,   137,   138,   139,   140,   141,   142,
      143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
      153,   154,   155,   156,   157,   158,   159,   160,   161,   162,
      163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
      173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
-     183,   184,   185,    37,    39,    40,    99,   109,   186,   187,
-     188,   189,    37,    45,    46,   112,   190,   191,   192,    89,
-      90,    91,    92,    93,    94,    95,   195,   196,   197,   198,
-     199,   200,   201,   202,    10,    10,    10,    10,    10,    10,
+     183,   184,   185,   186,   187,    37,    39,    40,    99,   110,
+     188,   189,   190,   191,    37,    45,    46,   113,   192,   193,
+     194,    89,    90,    91,    92,    93,    94,    95,   197,   198,
+     199,   200,   201,   202,   203,   204,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -1050,7 +1054,7 @@ static const yytype_uint8 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
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -1871,7 +1875,7 @@ yyreduce:
        }
     break;
 
-  case 84:
+  case 85:
 #line 149 "util/configparser.y"
     {
                struct config_stub* s;
@@ -1885,7 +1889,7 @@ yyreduce:
        }
     break;
 
-  case 91:
+  case 92:
 #line 165 "util/configparser.y"
     {
                struct config_stub* s;
@@ -1899,7 +1903,7 @@ yyreduce:
        }
     break;
 
-  case 97:
+  case 98:
 #line 181 "util/configparser.y"
     { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[(2) - (2)].str))); 
@@ -1910,7 +1914,7 @@ yyreduce:
        }
     break;
 
-  case 98:
+  case 99:
 #line 190 "util/configparser.y"
     { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[(2) - (2)].str))); 
@@ -1921,7 +1925,7 @@ yyreduce:
        }
     break;
 
-  case 99:
+  case 100:
 #line 199 "util/configparser.y"
     { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[(2) - (2)].str))); 
@@ -1934,7 +1938,7 @@ yyreduce:
        }
     break;
 
-  case 100:
+  case 101:
 #line 210 "util/configparser.y"
     {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -1945,7 +1949,7 @@ yyreduce:
        }
     break;
 
-  case 101:
+  case 102:
 #line 219 "util/configparser.y"
     {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -1956,7 +1960,7 @@ yyreduce:
        }
     break;
 
-  case 102:
+  case 103:
 #line 228 "util/configparser.y"
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -1967,7 +1971,7 @@ yyreduce:
        }
     break;
 
-  case 103:
+  case 104:
 #line 237 "util/configparser.y"
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -1982,7 +1986,7 @@ yyreduce:
        }
     break;
 
-  case 104:
+  case 105:
 #line 250 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -1999,7 +2003,7 @@ yyreduce:
        }
     break;
 
-  case 105:
+  case 106:
 #line 265 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -2010,7 +2014,7 @@ yyreduce:
        }
     break;
 
-  case 106:
+  case 107:
 #line 274 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -2021,7 +2025,7 @@ yyreduce:
        }
     break;
 
-  case 107:
+  case 108:
 #line 283 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -2032,7 +2036,7 @@ yyreduce:
        }
     break;
 
-  case 108:
+  case 109:
 #line 292 "util/configparser.y"
     {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -2043,7 +2047,7 @@ yyreduce:
        }
     break;
 
-  case 109:
+  case 110:
 #line 301 "util/configparser.y"
     {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -2054,7 +2058,7 @@ yyreduce:
        }
     break;
 
-  case 110:
+  case 111:
 #line 310 "util/configparser.y"
     {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -2065,7 +2069,7 @@ yyreduce:
        }
     break;
 
-  case 111:
+  case 112:
 #line 319 "util/configparser.y"
     {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -2076,7 +2080,7 @@ yyreduce:
        }
     break;
 
-  case 112:
+  case 113:
 #line 328 "util/configparser.y"
     {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -2087,7 +2091,7 @@ yyreduce:
        }
     break;
 
-  case 113:
+  case 114:
 #line 337 "util/configparser.y"
     {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -2098,7 +2102,7 @@ yyreduce:
        }
     break;
 
-  case 114:
+  case 115:
 #line 346 "util/configparser.y"
     {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -2109,7 +2113,7 @@ yyreduce:
        }
     break;
 
-  case 115:
+  case 116:
 #line 355 "util/configparser.y"
     {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -2120,7 +2124,7 @@ yyreduce:
        }
     break;
 
-  case 116:
+  case 117:
 #line 364 "util/configparser.y"
     {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -2136,8 +2140,19 @@ yyreduce:
        }
     break;
 
-  case 117:
+  case 118:
 #line 378 "util/configparser.y"
+    {
+               OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[(2) - (2)].str)));
+               if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[(2) - (2)].str), "yes")==0);
+               free((yyvsp[(2) - (2)].str));
+       }
+    break;
+
+  case 119:
+#line 387 "util/configparser.y"
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->chrootdir);
@@ -2145,8 +2160,8 @@ yyreduce:
        }
     break;
 
-  case 118:
-#line 385 "util/configparser.y"
+  case 120:
+#line 394 "util/configparser.y"
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->username);
@@ -2154,8 +2169,8 @@ yyreduce:
        }
     break;
 
-  case 119:
-#line 392 "util/configparser.y"
+  case 121:
+#line 401 "util/configparser.y"
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->directory);
@@ -2163,8 +2178,8 @@ yyreduce:
        }
     break;
 
-  case 120:
-#line 399 "util/configparser.y"
+  case 122:
+#line 408 "util/configparser.y"
     {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->logfile);
@@ -2173,8 +2188,8 @@ yyreduce:
        }
     break;
 
-  case 121:
-#line 407 "util/configparser.y"
+  case 123:
+#line 416 "util/configparser.y"
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->pidfile);
@@ -2182,8 +2197,8 @@ yyreduce:
        }
     break;
 
-  case 122:
-#line 414 "util/configparser.y"
+  case 124:
+#line 423 "util/configparser.y"
     {
                OUTYY(("P(server_root_hints:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[(2) - (2)].str)))
@@ -2191,8 +2206,8 @@ yyreduce:
        }
     break;
 
-  case 123:
-#line 421 "util/configparser.y"
+  case 125:
+#line 430 "util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->dlv_anchor_file);
@@ -2200,8 +2215,8 @@ yyreduce:
        }
     break;
 
-  case 124:
-#line 428 "util/configparser.y"
+  case 126:
+#line 437 "util/configparser.y"
     {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[(2) - (2)].str)))
@@ -2209,8 +2224,8 @@ yyreduce:
        }
     break;
 
-  case 125:
-#line 435 "util/configparser.y"
+  case 127:
+#line 444 "util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2219,8 +2234,8 @@ yyreduce:
        }
     break;
 
-  case 126:
-#line 443 "util/configparser.y"
+  case 128:
+#line 452 "util/configparser.y"
     {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
@@ -2229,8 +2244,8 @@ yyreduce:
        }
     break;
 
-  case 127:
-#line 451 "util/configparser.y"
+  case 129:
+#line 460 "util/configparser.y"
     {
                OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[(2) - (2)].str)))
@@ -2238,8 +2253,8 @@ yyreduce:
        }
     break;
 
-  case 128:
-#line 458 "util/configparser.y"
+  case 130:
+#line 467 "util/configparser.y"
     {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2249,8 +2264,8 @@ yyreduce:
        }
     break;
 
-  case 129:
-#line 467 "util/configparser.y"
+  case 131:
+#line 476 "util/configparser.y"
     {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2260,8 +2275,8 @@ yyreduce:
        }
     break;
 
-  case 130:
-#line 476 "util/configparser.y"
+  case 132:
+#line 485 "util/configparser.y"
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->identity);
@@ -2269,8 +2284,8 @@ yyreduce:
        }
     break;
 
-  case 131:
-#line 483 "util/configparser.y"
+  case 133:
+#line 492 "util/configparser.y"
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->version);
@@ -2278,8 +2293,8 @@ yyreduce:
        }
     break;
 
-  case 132:
-#line 490 "util/configparser.y"
+  case 134:
+#line 499 "util/configparser.y"
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2291,8 +2306,8 @@ yyreduce:
        }
     break;
 
-  case 133:
-#line 501 "util/configparser.y"
+  case 135:
+#line 510 "util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->msg_cache_size))
@@ -2301,8 +2316,8 @@ yyreduce:
        }
     break;
 
-  case 134:
-#line 509 "util/configparser.y"
+  case 136:
+#line 518 "util/configparser.y"
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2316,8 +2331,8 @@ yyreduce:
        }
     break;
 
-  case 135:
-#line 522 "util/configparser.y"
+  case 137:
+#line 531 "util/configparser.y"
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2327,8 +2342,8 @@ yyreduce:
        }
     break;
 
-  case 136:
-#line 531 "util/configparser.y"
+  case 138:
+#line 540 "util/configparser.y"
     {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2338,8 +2353,8 @@ yyreduce:
        }
     break;
 
-  case 137:
-#line 540 "util/configparser.y"
+  case 139:
+#line 549 "util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->rrset_cache_size))
@@ -2348,8 +2363,8 @@ yyreduce:
        }
     break;
 
-  case 138:
-#line 548 "util/configparser.y"
+  case 140:
+#line 557 "util/configparser.y"
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2363,8 +2378,8 @@ yyreduce:
        }
     break;
 
-  case 139:
-#line 561 "util/configparser.y"
+  case 141:
+#line 570 "util/configparser.y"
     {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2374,8 +2389,8 @@ yyreduce:
        }
     break;
 
-  case 140:
-#line 570 "util/configparser.y"
+  case 142:
+#line 579 "util/configparser.y"
     {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2385,8 +2400,8 @@ yyreduce:
        }
     break;
 
-  case 141:
-#line 579 "util/configparser.y"
+  case 143:
+#line 588 "util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2396,8 +2411,8 @@ yyreduce:
        }
     break;
 
-  case 142:
-#line 588 "util/configparser.y"
+  case 144:
+#line 597 "util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->
@@ -2407,8 +2422,8 @@ yyreduce:
        }
     break;
 
-  case 143:
-#line 597 "util/configparser.y"
+  case 145:
+#line 606 "util/configparser.y"
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2422,8 +2437,8 @@ yyreduce:
        }
     break;
 
-  case 144:
-#line 610 "util/configparser.y"
+  case 146:
+#line 619 "util/configparser.y"
     {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->target_fetch_policy);
@@ -2431,8 +2446,8 @@ yyreduce:
        }
     break;
 
-  case 145:
-#line 617 "util/configparser.y"
+  case 147:
+#line 626 "util/configparser.y"
     {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2443,8 +2458,8 @@ yyreduce:
        }
     break;
 
-  case 146:
-#line 627 "util/configparser.y"
+  case 148:
+#line 636 "util/configparser.y"
     {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2455,8 +2470,8 @@ yyreduce:
        }
     break;
 
-  case 147:
-#line 637 "util/configparser.y"
+  case 149:
+#line 646 "util/configparser.y"
     {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2467,8 +2482,8 @@ yyreduce:
        }
     break;
 
-  case 148:
-#line 647 "util/configparser.y"
+  case 150:
+#line 656 "util/configparser.y"
     {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2479,8 +2494,8 @@ yyreduce:
        }
     break;
 
-  case 149:
-#line 657 "util/configparser.y"
+  case 151:
+#line 666 "util/configparser.y"
     {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2491,8 +2506,8 @@ yyreduce:
        }
     break;
 
-  case 150:
-#line 667 "util/configparser.y"
+  case 152:
+#line 676 "util/configparser.y"
     {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2503,8 +2518,8 @@ yyreduce:
        }
     break;
 
-  case 151:
-#line 677 "util/configparser.y"
+  case 153:
+#line 686 "util/configparser.y"
     {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[(2) - (2)].str)))
@@ -2512,8 +2527,8 @@ yyreduce:
        }
     break;
 
-  case 152:
-#line 684 "util/configparser.y"
+  case 154:
+#line 693 "util/configparser.y"
     {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[(2) - (2)].str)))
@@ -2521,8 +2536,8 @@ yyreduce:
        }
     break;
 
-  case 153:
-#line 691 "util/configparser.y"
+  case 155:
+#line 700 "util/configparser.y"
     {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2532,8 +2547,8 @@ yyreduce:
        }
     break;
 
-  case 154:
-#line 700 "util/configparser.y"
+  case 156:
+#line 709 "util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[(2) - (2)].str)))
@@ -2541,8 +2556,8 @@ yyreduce:
        }
     break;
 
-  case 155:
-#line 707 "util/configparser.y"
+  case 157:
+#line 716 "util/configparser.y"
     {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2553,8 +2568,8 @@ yyreduce:
        }
     break;
 
-  case 156:
-#line 717 "util/configparser.y"
+  case 158:
+#line 726 "util/configparser.y"
     {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(strcmp((yyvsp[(3) - (3)].str), "deny")!=0 && strcmp((yyvsp[(3) - (3)].str), "refuse")!=0 &&
@@ -2569,8 +2584,8 @@ yyreduce:
        }
     break;
 
-  case 157:
-#line 731 "util/configparser.y"
+  case 159:
+#line 740 "util/configparser.y"
     {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->module_conf);
@@ -2578,8 +2593,8 @@ yyreduce:
        }
     break;
 
-  case 158:
-#line 738 "util/configparser.y"
+  case 160:
+#line 747 "util/configparser.y"
     {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strlen((yyvsp[(2) - (2)].str)) == 0 || strcmp((yyvsp[(2) - (2)].str), "0") == 0) {
@@ -2598,8 +2613,8 @@ yyreduce:
        }
     break;
 
-  case 159:
-#line 756 "util/configparser.y"
+  case 161:
+#line 765 "util/configparser.y"
     {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2609,8 +2624,8 @@ yyreduce:
        }
     break;
 
-  case 160:
-#line 765 "util/configparser.y"
+  case 162:
+#line 774 "util/configparser.y"
     {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0 && strcmp((yyvsp[(2) - (2)].str), "0") != 0)
@@ -2620,8 +2635,8 @@ yyreduce:
        }
     break;
 
-  case 161:
-#line 774 "util/configparser.y"
+  case 163:
+#line 783 "util/configparser.y"
     {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2632,8 +2647,8 @@ yyreduce:
        }
     break;
 
-  case 162:
-#line 784 "util/configparser.y"
+  case 164:
+#line 793 "util/configparser.y"
     {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2644,8 +2659,8 @@ yyreduce:
        }
     break;
 
-  case 163:
-#line 794 "util/configparser.y"
+  case 165:
+#line 803 "util/configparser.y"
     {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
@@ -2653,8 +2668,8 @@ yyreduce:
        }
     break;
 
-  case 164:
-#line 801 "util/configparser.y"
+  case 166:
+#line 810 "util/configparser.y"
     {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->key_cache_size))
@@ -2663,8 +2678,8 @@ yyreduce:
        }
     break;
 
-  case 165:
-#line 809 "util/configparser.y"
+  case 167:
+#line 818 "util/configparser.y"
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2678,8 +2693,8 @@ yyreduce:
        }
     break;
 
-  case 166:
-#line 822 "util/configparser.y"
+  case 168:
+#line 831 "util/configparser.y"
     {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_parse_memsize((yyvsp[(2) - (2)].str), &cfg_parser->cfg->neg_cache_size))
@@ -2688,8 +2703,8 @@ yyreduce:
        }
     break;
 
-  case 167:
-#line 830 "util/configparser.y"
+  case 169:
+#line 839 "util/configparser.y"
     {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[(2) - (3)].str), (yyvsp[(3) - (3)].str)));
                if(strcmp((yyvsp[(3) - (3)].str), "static")!=0 && strcmp((yyvsp[(3) - (3)].str), "deny")!=0 &&
@@ -2710,8 +2725,8 @@ yyreduce:
        }
     break;
 
-  case 168:
-#line 850 "util/configparser.y"
+  case 170:
+#line 859 "util/configparser.y"
     {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[(2) - (2)].str)))
@@ -2719,8 +2734,8 @@ yyreduce:
        }
     break;
 
-  case 169:
-#line 857 "util/configparser.y"
+  case 171:
+#line 866 "util/configparser.y"
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[(2) - (2)].str)));
@@ -2736,8 +2751,8 @@ yyreduce:
        }
     break;
 
-  case 170:
-#line 872 "util/configparser.y"
+  case 172:
+#line 881 "util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->stubs->name);
@@ -2745,8 +2760,8 @@ yyreduce:
        }
     break;
 
-  case 171:
-#line 879 "util/configparser.y"
+  case 173:
+#line 888 "util/configparser.y"
     {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[(2) - (2)].str)))
@@ -2754,8 +2769,8 @@ yyreduce:
        }
     break;
 
-  case 172:
-#line 886 "util/configparser.y"
+  case 174:
+#line 895 "util/configparser.y"
     {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[(2) - (2)].str)))
@@ -2763,8 +2778,8 @@ yyreduce:
        }
     break;
 
-  case 173:
-#line 893 "util/configparser.y"
+  case 175:
+#line 902 "util/configparser.y"
     {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2775,8 +2790,8 @@ yyreduce:
        }
     break;
 
-  case 174:
-#line 903 "util/configparser.y"
+  case 176:
+#line 912 "util/configparser.y"
     {
                OUTYY(("P(name:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->forwards->name);
@@ -2784,8 +2799,8 @@ yyreduce:
        }
     break;
 
-  case 175:
-#line 910 "util/configparser.y"
+  case 177:
+#line 919 "util/configparser.y"
     {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[(2) - (2)].str)))
@@ -2793,8 +2808,8 @@ yyreduce:
        }
     break;
 
-  case 176:
-#line 917 "util/configparser.y"
+  case 178:
+#line 926 "util/configparser.y"
     {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[(2) - (2)].str)))
@@ -2802,15 +2817,15 @@ yyreduce:
        }
     break;
 
-  case 177:
-#line 924 "util/configparser.y"
+  case 179:
+#line 933 "util/configparser.y"
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
     break;
 
-  case 187:
-#line 935 "util/configparser.y"
+  case 189:
+#line 944 "util/configparser.y"
     {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[(2) - (2)].str)));
                if(strcmp((yyvsp[(2) - (2)].str), "yes") != 0 && strcmp((yyvsp[(2) - (2)].str), "no") != 0)
@@ -2821,8 +2836,8 @@ yyreduce:
        }
     break;
 
-  case 188:
-#line 945 "util/configparser.y"
+  case 190:
+#line 954 "util/configparser.y"
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[(2) - (2)].str)));
                if(atoi((yyvsp[(2) - (2)].str)) == 0)
@@ -2832,8 +2847,8 @@ yyreduce:
        }
     break;
 
-  case 189:
-#line 954 "util/configparser.y"
+  case 191:
+#line 963 "util/configparser.y"
     {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[(2) - (2)].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[(2) - (2)].str)))
@@ -2841,8 +2856,8 @@ yyreduce:
        }
     break;
 
-  case 190:
-#line 961 "util/configparser.y"
+  case 192:
+#line 970 "util/configparser.y"
     {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_key_file);
@@ -2850,8 +2865,8 @@ yyreduce:
        }
     break;
 
-  case 191:
-#line 968 "util/configparser.y"
+  case 193:
+#line 977 "util/configparser.y"
     {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->server_cert_file);
@@ -2859,8 +2874,8 @@ yyreduce:
        }
     break;
 
-  case 192:
-#line 975 "util/configparser.y"
+  case 194:
+#line 984 "util/configparser.y"
     {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_key_file);
@@ -2868,8 +2883,8 @@ yyreduce:
        }
     break;
 
-  case 193:
-#line 982 "util/configparser.y"
+  case 195:
+#line 991 "util/configparser.y"
     {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[(2) - (2)].str)));
                free(cfg_parser->cfg->control_cert_file);
@@ -2879,7 +2894,7 @@ yyreduce:
 
 
 /* Line 1267 of yacc.c.  */
-#line 2883 "util/configparser.c"
+#line 2898 "util/configparser.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -3093,7 +3108,7 @@ yyreturn:
 }
 
 
-#line 988 "util/configparser.y"
+#line 997 "util/configparser.y"
 
 
 /* parse helper routines could be here */
index 473492e046e5011d6a0cdafc102ace12a5c1a259..e1e4b4de4f3d6bf81748fbe78c399b4c7c968671 100644 (file)
      VAR_LOCAL_DATA_PTR = 352,
      VAR_JOSTLE_TIMEOUT = 353,
      VAR_STUB_PRIME = 354,
-     VAR_UNWANTED_REPLY_THRESHOLD = 355
+     VAR_UNWANTED_REPLY_THRESHOLD = 355,
+     VAR_LOG_TIME_ASCII = 356
    };
 #endif
 /* Tokens.  */
 #define VAR_JOSTLE_TIMEOUT 353
 #define VAR_STUB_PRIME 354
 #define VAR_UNWANTED_REPLY_THRESHOLD 355
+#define VAR_LOG_TIME_ASCII 356
 
 
 
@@ -249,7 +251,7 @@ typedef union YYSTYPE
        char*   str;
 }
 /* Line 1489 of yacc.c.  */
-#line 253 "util/configparser.h"
+#line 255 "util/configparser.h"
        YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
index 767a4b41951d457936af26f80822c6c7d3c6dad6..ee9791e1a81343c5745b6f84790d01d89b2ced4e 100644 (file)
@@ -96,7 +96,7 @@ extern struct config_parser_state* cfg_parser;
 %token VAR_CONTROL_INTERFACE VAR_CONTROL_PORT VAR_SERVER_KEY_FILE
 %token VAR_SERVER_CERT_FILE VAR_CONTROL_KEY_FILE VAR_CONTROL_CERT_FILE
 %token VAR_EXTENDED_STATISTICS VAR_LOCAL_DATA_PTR VAR_JOSTLE_TIMEOUT
-%token VAR_STUB_PRIME VAR_UNWANTED_REPLY_THRESHOLD
+%token VAR_STUB_PRIME VAR_UNWANTED_REPLY_THRESHOLD VAR_LOG_TIME_ASCII
 
 %%
 toplevelvars: /* empty */ | toplevelvars toplevelvar ;
@@ -143,7 +143,7 @@ content_server: server_num_threads | server_verbosity | server_port |
        server_harden_referral_path | server_private_address |
        server_private_domain | server_extended_statistics | 
        server_local_data_ptr | server_jostle_timeout | 
-       server_unwanted_reply_threshold
+       server_unwanted_reply_threshold | server_log_time_ascii
        ;
 stubstart: VAR_STUB_ZONE
        {
@@ -374,6 +374,15 @@ server_use_syslog: VAR_USE_SYSLOG STRING
                free($2);
        }
        ;
+server_log_time_ascii: VAR_LOG_TIME_ASCII STRING
+       {
+               OUTYY(("P(server_log_time_ascii:%s)\n", $2));
+               if(strcmp($2, "yes") != 0 && strcmp($2, "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->log_time_ascii = (strcmp($2, "yes")==0);
+               free($2);
+       }
+       ;
 server_chroot: VAR_CHROOT STRING
        {
                OUTYY(("P(server_chroot:%s)\n", $2));
index 429610e0948ab4d015ec87b72b3f481833cb9966..b4d2c71d0fc8d2f9f8b125e10694f8a138d8be5e 100644 (file)
@@ -71,6 +71,8 @@ static int logging_to_syslog = 0;
 #endif /* HAVE_SYSLOG_H */
 /** time to print in log, if NULL, use time(2) */
 static uint32_t* log_now = NULL;
+/** print time in UTC or in secondsfrom1970 */
+static int log_time_asc = 0;
 
 void
 log_init(const char* filename, int use_syslog, const char* chrootdir)
@@ -139,13 +141,20 @@ void log_set_time(uint32_t* t)
        log_now = t;
 }
 
+void log_set_time_asc(int use_asc)
+{
+       log_time_asc = use_asc;
+}
+
 void
 log_vmsg(int pri, const char* type,
        const char *format, va_list args)
 {
        char message[MAXSYSLOGMSGLEN];
+       char tmbuf[32];
        unsigned int* tid = (unsigned int*)ub_thread_key_get(logkey);
-       uint32_t now;
+       time_t now;
+       struct tm tm;
        (void)pri;
        vsnprintf(message, sizeof(message), format, args);
 #ifdef HAVE_SYSLOG_H
@@ -157,8 +166,16 @@ log_vmsg(int pri, const char* type,
 #endif /* HAVE_SYSLOG_H */
        if(!logfile) return;
        if(log_now)
-               now = *log_now;
-       else    now = (uint32_t)time(NULL);
+               now = (time_t)*log_now;
+       else    now = (time_t)time(NULL);
+#if defined(HAVE_STRFTIME) && defined(HAVE_LOCALTIME_R) 
+       if(log_time_asc && strftime(tmbuf, sizeof(tmbuf), "%b %d %H:%M:%S",
+               localtime_r(&now, &tm))%(sizeof(tmbuf)) != 0) {
+               /* %sizeof buf!=0 because old strftime returned max on error */
+               fprintf(logfile, "%s %s[%d:%x] %s: %s\n", tmbuf, 
+                       ident, (int)getpid(), tid?*tid:0, type, message);
+       } else
+#endif
        fprintf(logfile, "[%u] %s[%d:%x] %s: %s\n", (unsigned)now, 
                ident, (int)getpid(), tid?*tid:0, type, message);
        fflush(logfile);
index c61a612688adc4cefd35942fa4f55a221a1d7762..926a8ab6280ea658d914adbbd02f627adc330c14 100644 (file)
@@ -114,6 +114,14 @@ void log_ident_set(const char* id);
  */
 void log_set_time(uint32_t* t);
 
+/**
+ * Set if the time value is printed ascii or decimal in log entries.
+ * @param use_asc: if true, ascii is printed, otherwise decimal.
+ *     If the conversion fails or you have no time functions, 
+ *     decimal is printed.
+ */
+void log_set_time_asc(int use_asc);
+
 /**
  * Log informational message.
  * Pass printf formatted arguments. No trailing newline is needed.