+
Short Contents
+@@ -93,7 +93,7 @@ may be arbitrarily set in the keys file.
+ as the configuration file.
+ Key entries use a fixed format of the form
+
+-
keyno type key
++ keyno type key opt_IP_list
+
+ where
+ keyno
+@@ -102,7 +102,15 @@ is a positive integer (between 1 and 65534),
+ is the message digest algorithm,
+ and
+ key
+-is the key itself.
++is the key itself, and
++opt_IP_list
++is an optional comma-separated list of IPs
++that are allowed to serve time.
++If
++opt_IP_list
++is empty,
++any properly-authenticated server message will be
++accepted.
+
+
The
+ key
+Index: contrib/ntp/ntpd/ntp.keys.man.in
+===================================================================
+--- contrib/ntp/ntpd/ntp.keys.man.in (revision 294707)
++++ contrib/ntp/ntpd/ntp.keys.man.in (working copy)
+@@ -1,8 +1,8 @@
+-.TH ntp.keys 5 "07 Jan 2016" "4.2.8p5" "File Formats"
++.TH ntp.keys 5 "20 Jan 2016" "4.2.8p6" "File Formats"
+ .\"
+ .\" EDIT THIS FILE WITH CAUTION (ntp.man)
+ .\"
+-.\" It has been AutoGen-ed January 7, 2016 at 11:30:41 PM by AutoGen 5.18.5
++.\" It has been AutoGen-ed January 20, 2016 at 04:17:51 AM by AutoGen 5.18.5
+ .\" From the definitions ntp.keys.def
+ .\" and the template file agman-file.tpl
+ .Sh NAME
+@@ -66,7 +66,7 @@ Key entries use a fixed format of the form
+ .ne 2
+
+ .in +4
+-\f\*[I-Font]keyno\f[] \f\*[I-Font]type\f[] \f\*[I-Font]key\f[]
++\f\*[I-Font]keyno\f[] \f\*[I-Font]type\f[] \f\*[I-Font]key\f[] \f\*[I-Font]opt_IP_list\f[]
+ .in -4
+ .sp \n(Ppu
+ .ne 2
+@@ -78,7 +78,15 @@ is a positive integer (between 1 and 65534),
+ is the message digest algorithm,
+ and
+ \f\*[I-Font]key\f[]
+-is the key itself.
++is the key itself, and
++\f\*[I-Font]opt_IP_list\f[]
++is an optional comma-separated list of IPs
++that are allowed to serve time.
++If
++\f\*[I-Font]opt_IP_list\f[]
++is empty,
++any properly-authenticated server message will be
++accepted.
+ .sp \n(Ppu
+ .ne 2
+
+@@ -160,7 +168,7 @@ the default name of the configuration file
+ .SH "AUTHORS"
+ The University of Delaware and Network Time Foundation
+ .SH "COPYRIGHT"
+-Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation all rights reserved.
++Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation all rights reserved.
+ This program is released under the terms of the NTP license, .
+ .SH "BUGS"
+ Please send bug reports to: http://bugs.ntp.org, bugs@ntp.org
+Index: contrib/ntp/ntpd/ntp.keys.mdoc.in
+===================================================================
+--- contrib/ntp/ntpd/ntp.keys.mdoc.in (revision 294707)
++++ contrib/ntp/ntpd/ntp.keys.mdoc.in (working copy)
+@@ -1,9 +1,9 @@
+-.Dd January 7 2016
++.Dd January 20 2016
+ .Dt NTP_KEYS 5 File Formats
+ .Os SunOS 5.10
+ .\" EDIT THIS FILE WITH CAUTION (ntp.mdoc)
+ .\"
+-.\" It has been AutoGen-ed January 7, 2016 at 11:31:00 PM by AutoGen 5.18.5
++.\" It has been AutoGen-ed January 20, 2016 at 04:18:10 AM by AutoGen 5.18.5
+ .\" From the definitions ntp.keys.def
+ .\" and the template file agmdoc-file.tpl
+ .Sh NAME
+@@ -44,7 +44,7 @@ The key file uses the same comment conventions
+ as the configuration file.
+ Key entries use a fixed format of the form
+ .Pp
+-.D1 Ar keyno type key
++.D1 Ar keyno type key opt_IP_list
+ .Pp
+ where
+ .Ar keyno
+@@ -53,7 +53,15 @@ is a positive integer (between 1 and 65534),
+ is the message digest algorithm,
+ and
+ .Ar key
+-is the key itself.
++is the key itself, and
++.Ar opt_IP_list
++is an optional comma\-separated list of IPs
++that are allowed to serve time.
++If
++.Ar opt_IP_list
++is empty,
++any properly\-authenticated server message will be
++accepted.
+ .Pp
+ The
+ .Ar key
+@@ -147,7 +155,7 @@ it to autogen\-users@lists.sourceforge.net. Thank
+ .Sh "AUTHORS"
+ The University of Delaware and Network Time Foundation
+ .Sh "COPYRIGHT"
+-Copyright (C) 1992\-2015 The University of Delaware and Network Time Foundation all rights reserved.
++Copyright (C) 1992\-2016 The University of Delaware and Network Time Foundation all rights reserved.
+ This program is released under the terms of the NTP license, .
+ .Sh "BUGS"
+ Please send bug reports to: http://bugs.ntp.org, bugs@ntp.org
+Index: contrib/ntp/ntpd/ntp_config.c
+===================================================================
+--- contrib/ntp/ntpd/ntp_config.c (revision 294707)
++++ contrib/ntp/ntpd/ntp_config.c (working copy)
+@@ -53,6 +53,8 @@
+ #include "ntp_parser.h"
+ #include "ntpd-opts.h"
+
++extern int yyparse(void);
++
+ /* Bug 2817 */
+ #if defined(HAVE_SYS_MMAN_H)
+ # include
+@@ -2981,6 +2983,18 @@ apply_enable_disable(
+ proto_config(PROTO_FILEGEN, enable, 0., NULL);
+ break;
+
++ case T_UEcrypto:
++ proto_config(PROTO_UECRYPTO, enable, 0., NULL);
++ break;
++
++ case T_UEcryptonak:
++ proto_config(PROTO_UECRYPTONAK, enable, 0., NULL);
++ break;
++
++ case T_UEdigest:
++ proto_config(PROTO_UEDIGEST, enable, 0., NULL);
++ break;
++
+ #ifdef BC_LIST_FRAMEWORK_NOT_YET_USED
+ case T_Bc_bugXXXX:
+ pentry = bc_list;
+Index: contrib/ntp/ntpd/ntp_control.c
+===================================================================
+--- contrib/ntp/ntpd/ntp_control.c (revision 294707)
++++ contrib/ntp/ntpd/ntp_control.c (working copy)
+@@ -75,6 +75,7 @@ static void ctl_putarray (const char *, double *,
+ static void ctl_putsys (int);
+ static void ctl_putpeer (int, struct peer *);
+ static void ctl_putfs (const char *, tstamp_t);
++static void ctl_printf (const char *, ...) NTP_PRINTF(1, 2);
+ #ifdef REFCLOCK
+ static void ctl_putclock (int, struct refclockstat *, int);
+ #endif /* REFCLOCK */
+@@ -111,6 +112,8 @@ static void unset_trap (struct recvbuf *, int);
+ static struct ctl_trap *ctlfindtrap(sockaddr_u *,
+ struct interface *);
+
++int/*BOOL*/ is_safe_filename(const char * name);
++
+ static const struct ctl_proc control_codes[] = {
+ { CTL_OP_UNSPEC, NOAUTH, control_unspec },
+ { CTL_OP_READSTAT, NOAUTH, read_status },
+@@ -873,10 +876,66 @@ ctl_error(
+ CTL_HEADER_LEN);
+ }
+
++int/*BOOL*/
++is_safe_filename(const char * name)
++{
++ /* We need a strict validation of filenames we should write: The
++ * daemon might run with special permissions and is remote
++ * controllable, so we better take care what we allow as file
++ * name!
++ *
++ * The first character must be digit or a letter from the ASCII
++ * base plane or a '_' ([_A-Za-z0-9]), the following characters
++ * must be from [-._+A-Za-z0-9].
++ *
++ * We do not trust the character classification much here: Since
++ * the NTP protocol makes no provisions for UTF-8 or local code
++ * pages, we strictly require the 7bit ASCII code page.
++ *
++ * The following table is a packed bit field of 128 two-bit
++ * groups. The LSB in each group tells us if a character is
++ * acceptable at the first position, the MSB if the character is
++ * accepted at any other position.
++ *
++ * This does not ensure that the file name is syntactically
++ * correct (multiple dots will not work with VMS...) but it will
++ * exclude potential globbing bombs and directory traversal. It
++ * also rules out drive selection. (For systems that have this
++ * notion, like Windows or VMS.)
++ */
++ static const uint32_t chclass[8] = {
++ 0x00000000, 0x00000000,
++ 0x28800000, 0x000FFFFF,
++ 0xFFFFFFFC, 0xC03FFFFF,
++ 0xFFFFFFFC, 0x003FFFFF
++ };
++
++ u_int widx, bidx, mask;
++ if (!*name)
++ return FALSE;
++
++ mask = 1u;
++ while (0 != (widx = (u_char)*name++)) {
++ bidx = (widx & 15) << 1;
++ widx = widx >> 4;
++ if (widx >= sizeof(chclass))
++ return FALSE;
++ if (0 == ((chclass[widx] >> bidx) & mask))
++ return FALSE;
++ mask |= 2u;
++ }
++ return TRUE;
++}
++
++
+ /*
+ * save_config - Implements ntpq -c "saveconfig "
+ * Writes current configuration including any runtime
+ * changes by ntpq's :config or config-from-file
++ *
++ * Note: There should be no buffer overflow or truncation in the
++ * processing of file names -- both cause security problems. This is bit
++ * painful to code but essential here.
+ */
+ void
+ save_config(
+@@ -904,24 +963,38 @@ save_config(
+ "\\/" /* separator and critical char for POSIX */
+ #endif
+ ;
+-
+-
+ char reply[128];
+ #ifdef SAVECONFIG
++ static const char savedconfig_eq[] = "savedconfig=";
++
++ /* Build a safe open mode from the available mode flags. We want
++ * to create a new file and write it in text mode (when
++ * applicable -- only Windows does this...)
++ */
++ static const int openmode = O_CREAT | O_TRUNC | O_WRONLY
++# if defined(O_EXCL) /* posix, vms */
++ | O_EXCL
++# elif defined(_O_EXCL) /* windows is alway very special... */
++ | _O_EXCL
++# endif
++# if defined(_O_TEXT) /* windows, again */
++ | _O_TEXT
++#endif
++ ;
++
+ char filespec[128];
+ char filename[128];
+ char fullpath[512];
+- const char savedconfig_eq[] = "savedconfig=";
+ char savedconfig[sizeof(savedconfig_eq) + sizeof(filename)];
+ time_t now;
+ int fd;
+ FILE *fptr;
++ int prc;
++ size_t reqlen;
+ #endif
+
+ if (RES_NOMODIFY & restrict_mask) {
+- snprintf(reply, sizeof(reply),
+- "saveconfig prohibited by restrict ... nomodify");
+- ctl_putdata(reply, strlen(reply), 0);
++ ctl_printf("%s", "saveconfig prohibited by restrict ... nomodify");
+ ctl_flushpkt(0);
+ NLOG(NLOG_SYSINFO)
+ msyslog(LOG_NOTICE,
+@@ -933,9 +1006,7 @@ save_config(
+
+ #ifdef SAVECONFIG
+ if (NULL == saveconfigdir) {
+- snprintf(reply, sizeof(reply),
+- "saveconfig prohibited, no saveconfigdir configured");
+- ctl_putdata(reply, strlen(reply), 0);
++ ctl_printf("%s", "saveconfig prohibited, no saveconfigdir configured");
+ ctl_flushpkt(0);
+ NLOG(NLOG_SYSINFO)
+ msyslog(LOG_NOTICE,
+@@ -944,22 +1015,80 @@ save_config(
+ return;
+ }
+
+- if (0 == reqend - reqpt)
++ /* The length checking stuff gets serious. Do not assume a NUL
++ * byte can be found, but if so, use it to calculate the needed
++ * buffer size. If the available buffer is too short, bail out;
++ * likewise if there is no file spec. (The latter will not
++ * happen when using NTPQ, but there are other ways to craft a
++ * network packet!)
++ */
++ reqlen = (size_t)(reqend - reqpt);
++ if (0 != reqlen) {
++ char * nulpos = (char*)memchr(reqpt, 0, reqlen);
++ if (NULL != nulpos)
++ reqlen = (size_t)(nulpos - reqpt);
++ }
++ if (0 == reqlen)
+ return;
++ if (reqlen >= sizeof(filespec)) {
++ ctl_printf("saveconfig exceeded maximum raw name length (%u)",
++ (u_int)sizeof(filespec));
++ ctl_flushpkt(0);
++ msyslog(LOG_NOTICE,
++ "saveconfig exceeded maximum raw name length from %s",
++ stoa(&rbufp->recv_srcadr));
++ return;
++ }
+
+- strlcpy(filespec, reqpt, sizeof(filespec));
+- time(&now);
+-
++ /* copy data directly as we exactly know the size */
++ memcpy(filespec, reqpt, reqlen);
++ filespec[reqlen] = '\0';
++
+ /*
+ * allow timestamping of the saved config filename with
+ * strftime() format such as:
+ * ntpq -c "saveconfig ntp-%Y%m%d-%H%M%S.conf"
+ * XXX: Nice feature, but not too safe.
++ * YYY: The check for permitted characters in file names should
++ * weed out the worst. Let's hope 'strftime()' does not
++ * develop pathological problems.
+ */
++ time(&now);
+ if (0 == strftime(filename, sizeof(filename), filespec,
+- localtime(&now)))
++ localtime(&now)))
++ {
++ /*
++ * If we arrive here, 'strftime()' balked; most likely
++ * the buffer was too short. (Or it encounterd an empty
++ * format, or just a format that expands to an empty
++ * string.) We try to use the original name, though this
++ * is very likely to fail later if there are format
++ * specs in the string. Note that truncation cannot
++ * happen here as long as both buffers have the same
++ * size!
++ */
+ strlcpy(filename, filespec, sizeof(filename));
++ }
+
++ /*
++ * Check the file name for sanity. This might/will rule out file
++ * names that would be legal but problematic, and it blocks
++ * directory traversal.
++ */
++ if (!is_safe_filename(filename)) {
++ ctl_printf("saveconfig rejects unsafe file name '%s'",
++ filename);
++ ctl_flushpkt(0);
++ msyslog(LOG_NOTICE,
++ "saveconfig rejects unsafe file name from %s",
++ stoa(&rbufp->recv_srcadr));
++ return;
++ }
++
++ /*
++ * XXX: This next test may not be needed with is_safe_filename()
++ */
++
+ /* block directory/drive traversal */
+ /* TALOS-CAN-0062: block directory traversal for VMS, too */
+ if (NULL != strpbrk(filename, illegal_in_filename)) {
+@@ -968,16 +1097,27 @@ save_config(
+ ctl_putdata(reply, strlen(reply), 0);
+ ctl_flushpkt(0);
+ msyslog(LOG_NOTICE,
+- "saveconfig with path from %s rejected",
++ "saveconfig rejects unsafe file name from %s",
+ stoa(&rbufp->recv_srcadr));
+ return;
+ }
+
+- snprintf(fullpath, sizeof(fullpath), "%s%s",
+- saveconfigdir, filename);
++ /* concatenation of directory and path can cause another
++ * truncation...
++ */
++ prc = snprintf(fullpath, sizeof(fullpath), "%s%s",
++ saveconfigdir, filename);
++ if (prc < 0 || prc >= sizeof(fullpath)) {
++ ctl_printf("saveconfig exceeded maximum path length (%u)",
++ (u_int)sizeof(fullpath));
++ ctl_flushpkt(0);
++ msyslog(LOG_NOTICE,
++ "saveconfig exceeded maximum path length from %s",
++ stoa(&rbufp->recv_srcadr));
++ return;
++ }
+
+- fd = open(fullpath, O_CREAT | O_TRUNC | O_WRONLY,
+- S_IRUSR | S_IWUSR);
++ fd = open(fullpath, openmode, S_IRUSR | S_IWUSR);
+ if (-1 == fd)
+ fptr = NULL;
+ else
+@@ -984,22 +1124,22 @@ save_config(
+ fptr = fdopen(fd, "w");
+
+ if (NULL == fptr || -1 == dump_all_config_trees(fptr, 1)) {
+- snprintf(reply, sizeof(reply),
+- "Unable to save configuration to file %s",
+- filename);
++ ctl_printf("Unable to save configuration to file '%s': %m",
++ filename);
+ msyslog(LOG_ERR,
+ "saveconfig %s from %s failed", filename,
+ stoa(&rbufp->recv_srcadr));
+ } else {
+- snprintf(reply, sizeof(reply),
+- "Configuration saved to %s", filename);
++ ctl_printf("Configuration saved to '%s'", filename);
+ msyslog(LOG_NOTICE,
+- "Configuration saved to %s (requested by %s)",
++ "Configuration saved to '%s' (requested by %s)",
+ fullpath, stoa(&rbufp->recv_srcadr));
+ /*
+ * save the output filename in system variable
+ * savedconfig, retrieved with:
+ * ntpq -c "rv 0 savedconfig"
++ * Note: the way 'savedconfig' is defined makes overflow
++ * checks unnecessary here.
+ */
+ snprintf(savedconfig, sizeof(savedconfig), "%s%s",
+ savedconfig_eq, filename);
+@@ -1009,11 +1149,9 @@ save_config(
+ if (NULL != fptr)
+ fclose(fptr);
+ #else /* !SAVECONFIG follows */
+- snprintf(reply, sizeof(reply),
+- "saveconfig unavailable, configured with --disable-saveconfig");
+-#endif
+-
+- ctl_putdata(reply, strlen(reply), 0);
++ ctl_printf("%s",
++ "saveconfig unavailable, configured with --disable-saveconfig");
++#endif
+ ctl_flushpkt(0);
+ }
+
+@@ -1757,7 +1895,30 @@ ctl_putarray(
+ ctl_putdata(buffer, (unsigned)(cp - buffer), 0);
+ }
+
++/*
++ * ctl_printf - put a formatted string into the data buffer
++ */
++static void
++ctl_printf(
++ const char * fmt,
++ ...
++ )
++{
++ static const char * ellipsis = "[...]";
++ va_list va;
++ char fmtbuf[128];
++ int rc;
++
++ va_start(va, fmt);
++ rc = vsnprintf(fmtbuf, sizeof(fmtbuf), fmt, va);
++ va_end(va);
++ if (rc < 0 || rc >= sizeof(fmtbuf))
++ strcpy(fmtbuf + sizeof(fmtbuf) - strlen(ellipsis) - 1,
++ ellipsis);
++ ctl_putdata(fmtbuf, strlen(fmtbuf), 0);
++}
+
++
+ /*
+ * ctl_putsys - output a system variable
+ */
+Index: contrib/ntp/ntpd/ntp_crypto.c
+===================================================================
+--- contrib/ntp/ntpd/ntp_crypto.c (revision 294707)
++++ contrib/ntp/ntpd/ntp_crypto.c (working copy)
+@@ -269,7 +269,7 @@ session_key(
+ memcpy(&keyid, dgst, 4);
+ keyid = ntohl(keyid);
+ if (lifetime != 0) {
+- MD5auth_setkey(keyno, crypto_nid, dgst, len);
++ MD5auth_setkey(keyno, crypto_nid, dgst, len, NULL);
+ authtrust(keyno, lifetime);
+ }
+ DPRINTF(2, ("session_key: %s > %s %08x %08x hash %08x life %lu\n",
+Index: contrib/ntp/ntpd/ntp_io.c
+===================================================================
+--- contrib/ntp/ntpd/ntp_io.c (revision 294707)
++++ contrib/ntp/ntpd/ntp_io.c (working copy)
+@@ -62,6 +62,9 @@
+ # endif
+ #endif
+
++#if defined(HAVE_SIGNALED_IO) && defined(DEBUG_TIMING)
++# undef DEBUG_TIMING
++#endif
+
+ /*
+ * setsockopt does not always have the same arg declaration
+@@ -280,9 +283,12 @@ static int addr_samesubnet (const sockaddr_u *, co
+ const sockaddr_u *, const sockaddr_u *);
+ static int create_sockets (u_short);
+ static SOCKET open_socket (sockaddr_u *, int, int, endpt *);
+-static char * fdbits (int, fd_set *);
+ static void set_reuseaddr (int);
+ static isc_boolean_t socket_broadcast_enable (struct interface *, SOCKET, sockaddr_u *);
++
++#if !defined(HAVE_IO_COMPLETION_PORT) && !defined(HAVE_SIGNALED_IO)
++static char * fdbits (int, const fd_set *);
++#endif
+ #ifdef OS_MISSES_SPECIFIC_ROUTE_UPDATES
+ static isc_boolean_t socket_broadcast_disable (struct interface *, sockaddr_u *);
+ #endif
+@@ -337,14 +343,17 @@ static int cmp_addr_distance(const sockaddr_u *,
+ #if !defined(HAVE_IO_COMPLETION_PORT)
+ static inline int read_network_packet (SOCKET, struct interface *, l_fp);
+ static void ntpd_addremove_io_fd (int, int, int);
+-static input_handler_t input_handler;
++static void input_handler_scan (const l_fp*, const fd_set*);
++static int/*BOOL*/ sanitize_fdset (int errc);
+ #ifdef REFCLOCK
+ static inline int read_refclock_packet (SOCKET, struct refclockio *, l_fp);
+ #endif
++#ifdef HAVE_SIGNALED_IO
++static void input_handler (l_fp*);
+ #endif
++#endif
+
+
+-
+ #ifndef HAVE_IO_COMPLETION_PORT
+ void
+ maintain_activefds(
+@@ -455,11 +464,9 @@ init_io(void)
+ addremove_io_fd = &ntpd_addremove_io_fd;
+ #endif
+
+-#ifdef SYS_WINNT
++#if defined(SYS_WINNT)
+ init_io_completion_port();
+-#endif
+-
+-#if defined(HAVE_SIGNALED_IO)
++#elif defined(HAVE_SIGNALED_IO)
+ (void) set_signal(input_handler);
+ #endif
+ }
+@@ -475,7 +482,8 @@ ntpd_addremove_io_fd(
+ UNUSED_ARG(is_pipe);
+
+ #ifdef HAVE_SIGNALED_IO
+- init_socket_sig(fd);
++ if (!remove_it)
++ init_socket_sig(fd);
+ #endif /* not HAVE_SIGNALED_IO */
+
+ maintain_activefds(fd, remove_it);
+@@ -717,78 +725,6 @@ addr_samesubnet(
+
+
+ /*
+- * Code to tell if we have an IP address
+- * If we have then return the sockaddr structure
+- * and set the return value
+- * see the bind9/getaddresses.c for details
+- */
+-int
+-is_ip_address(
+- const char * host,
+- u_short af,
+- sockaddr_u * addr
+- )
+-{
+- struct in_addr in4;
+- struct addrinfo hints;
+- struct addrinfo *result;
+- struct sockaddr_in6 *resaddr6;
+- char tmpbuf[128];
+- char *pch;
+-
+- REQUIRE(host != NULL);
+- REQUIRE(addr != NULL);
+-
+- ZERO_SOCK(addr);
+-
+- /*
+- * Try IPv4, then IPv6. In order to handle the extended format
+- * for IPv6 scoped addresses (address%scope_ID), we'll use a local
+- * working buffer of 128 bytes. The length is an ad-hoc value, but
+- * should be enough for this purpose; the buffer can contain a string
+- * of at least 80 bytes for scope_ID in addition to any IPv6 numeric
+- * addresses (up to 46 bytes), the delimiter character and the
+- * terminating NULL character.
+- */
+- if (AF_UNSPEC == af || AF_INET == af)
+- if (inet_pton(AF_INET, host, &in4) == 1) {
+- AF(addr) = AF_INET;
+- SET_ADDR4N(addr, in4.s_addr);
+-
+- return TRUE;
+- }
+-
+- if (AF_UNSPEC == af || AF_INET6 == af)
+- if (sizeof(tmpbuf) > strlen(host)) {
+- if ('[' == host[0]) {
+- strlcpy(tmpbuf, &host[1], sizeof(tmpbuf));
+- pch = strchr(tmpbuf, ']');
+- if (pch != NULL)
+- *pch = '\0';
+- } else {
+- strlcpy(tmpbuf, host, sizeof(tmpbuf));
+- }
+- ZERO(hints);
+- hints.ai_family = AF_INET6;
+- hints.ai_flags |= AI_NUMERICHOST;
+- if (getaddrinfo(tmpbuf, NULL, &hints, &result) == 0) {
+- AF(addr) = AF_INET6;
+- resaddr6 = UA_PTR(struct sockaddr_in6, result->ai_addr);
+- SET_ADDR6N(addr, resaddr6->sin6_addr);
+- SET_SCOPE(addr, resaddr6->sin6_scope_id);
+-
+- freeaddrinfo(result);
+- return TRUE;
+- }
+- }
+- /*
+- * If we got here it was not an IP address
+- */
+- return FALSE;
+-}
+-
+-
+-/*
+ * interface list enumerator - visitor pattern
+ */
+ void
+@@ -2354,6 +2290,7 @@ get_broadcastclient_flag(void)
+ {
+ return (broadcast_client_enabled);
+ }
++
+ /*
+ * Check to see if the address is a multicast address
+ */
+@@ -3204,7 +3141,7 @@ sendpkt(
+ }
+
+
+-#if !defined(HAVE_IO_COMPLETION_PORT)
++#if !defined(HAVE_IO_COMPLETION_PORT) && !defined(HAVE_SIGNALED_IO)
+ /*
+ * fdbits - generate ascii representation of fd_set (FAU debug support)
+ * HFDF format - highest fd first.
+@@ -3211,8 +3148,8 @@ sendpkt(
+ */
+ static char *
+ fdbits(
+- int count,
+- fd_set *set
++ int count,
++ const fd_set* set
+ )
+ {
+ static char buffer[256];
+@@ -3228,8 +3165,8 @@ fdbits(
+
+ return buffer;
+ }
++#endif
+
+-
+ #ifdef REFCLOCK
+ /*
+ * Routine to read the refclock packets for a specific interface
+@@ -3265,7 +3202,7 @@ read_refclock_packet(
+ /* TALOS-CAN-0064: avoid signed/unsigned clashes that can lead
+ * to buffer overrun and memory corruption
+ */
+- if (rp->datalen <= 0 || rp->datalen > sizeof(rb->recv_space))
++ if (rp->datalen <= 0 || (size_t)rp->datalen > sizeof(rb->recv_space))
+ read_count = sizeof(rb->recv_space);
+ else
+ read_count = (u_int)rp->datalen;
+@@ -3582,6 +3519,7 @@ io_handler(void)
+ * and - lacking a hardware reference clock - I have
+ * yet to learn about anything else that is.
+ */
++ ++handler_calls;
+ rdfdes = activefds;
+ # if !defined(VMS) && !defined(SYS_VXWORKS)
+ nfound = select(maxactivefd + 1, &rdfdes, NULL,
+@@ -3590,8 +3528,7 @@ io_handler(void)
+ /* make select() wake up after one second */
+ {
+ struct timeval t1;
+-
+- t1.tv_sec = 1;
++ t1.tv_sec = 1;
+ t1.tv_usec = 0;
+ nfound = select(maxactivefd + 1,
+ &rdfdes, NULL, NULL,
+@@ -3598,12 +3535,22 @@ io_handler(void)
+ &t1);
+ }
+ # endif /* VMS, VxWorks */
++ if (nfound < 0 && sanitize_fdset(errno)) {
++ struct timeval t1;
++ t1.tv_sec = 0;
++ t1.tv_usec = 0;
++ rdfdes = activefds;
++ nfound = select(maxactivefd + 1,
++ &rdfdes, NULL, NULL,
++ &t1);
++ }
++
+ if (nfound > 0) {
+ l_fp ts;
+
+ get_systime(&ts);
+
+- input_handler(&ts);
++ input_handler_scan(&ts, &rdfdes);
+ } else if (nfound == -1 && errno != EINTR) {
+ msyslog(LOG_ERR, "select() error: %m");
+ }
+@@ -3619,27 +3566,110 @@ io_handler(void)
+ # endif /* HAVE_SIGNALED_IO */
+ }
+
++#ifdef HAVE_SIGNALED_IO
+ /*
+ * input_handler - receive packets asynchronously
++ *
++ * ALWAYS IN SIGNAL HANDLER CONTEXT -- only async-safe functions allowed!
+ */
+-static void
++static RETSIGTYPE
+ input_handler(
+ l_fp * cts
+ )
+ {
++ int n;
++ struct timeval tvzero;
++ fd_set fds;
++
++ ++handler_calls;
++
++ /*
++ * Do a poll to see who has data
++ */
++
++ fds = activefds;
++ tvzero.tv_sec = tvzero.tv_usec = 0;
++
++ n = select(maxactivefd + 1, &fds, NULL, NULL, &tvzero);
++ if (n < 0 && sanitize_fdset(errno)) {
++ fds = activefds;
++ tvzero.tv_sec = tvzero.tv_usec = 0;
++ n = select(maxactivefd + 1, &fds, NULL, NULL, &tvzero);
++ }
++ if (n > 0)
++ input_handler_scan(cts, &fds);
++}
++#endif /* HAVE_SIGNALED_IO */
++
++
++/*
++ * Try to sanitize the global FD set
++ *
++ * SIGNAL HANDLER CONTEXT if HAVE_SIGNALED_IO, ordinary userspace otherwise
++ */
++static int/*BOOL*/
++sanitize_fdset(
++ int errc
++ )
++{
++ int j, b, maxscan;
++
++# ifndef HAVE_SIGNALED_IO
++ /*
++ * extended FAU debugging output
++ */
++ if (errc != EINTR) {
++ msyslog(LOG_ERR,
++ "select(%d, %s, 0L, 0L, &0.0) error: %m",
++ maxactivefd + 1,
++ fdbits(maxactivefd, &activefds));
++ }
++# endif
++
++ if (errc != EBADF)
++ return FALSE;
++
++ /* if we have oviously bad FDs, try to sanitize the FD set. */
++ for (j = 0, maxscan = 0; j <= maxactivefd; j++) {
++ if (FD_ISSET(j, &activefds)) {
++ if (-1 != read(j, &b, 0)) {
++ maxscan = j;
++ continue;
++ }
++# ifndef HAVE_SIGNALED_IO
++ msyslog(LOG_ERR,
++ "Removing bad file descriptor %d from select set",
++ j);
++# endif
++ FD_CLR(j, &activefds);
++ }
++ }
++ if (maxactivefd != maxscan)
++ maxactivefd = maxscan;
++ return TRUE;
++}
++
++/*
++ * scan the known FDs (clocks, servers, ...) for presence in a 'fd_set'.
++ *
++ * SIGNAL HANDLER CONTEXT if HAVE_SIGNALED_IO, ordinary userspace otherwise
++ */
++static void
++input_handler_scan(
++ const l_fp * cts,
++ const fd_set * pfds
++ )
++{
+ int buflen;
+- int n;
+ u_int idx;
+ int doing;
+ SOCKET fd;
+ blocking_child *c;
+- struct timeval tvzero;
+ l_fp ts; /* Timestamp at BOselect() gob */
+-#ifdef DEBUG_TIMING
++
++#if defined(DEBUG_TIMING)
+ l_fp ts_e; /* Timestamp at EOselect() gob */
+ #endif
+- fd_set fds;
+- size_t select_count;
+ endpt * ep;
+ #ifdef REFCLOCK
+ struct refclockio *rp;
+@@ -3651,101 +3681,45 @@ input_handler(
+ struct asyncio_reader * next_asyncio_reader;
+ #endif
+
+- handler_calls++;
+- select_count = 0;
+-
+- /*
+- * If we have something to do, freeze a timestamp.
+- * See below for the other cases (nothing left to do or error)
+- */
++ ++handler_pkts;
+ ts = *cts;
+
++#ifdef REFCLOCK
+ /*
+- * Do a poll to see who has data
++ * Check out the reference clocks first, if any
+ */
+-
+- fds = activefds;
+- tvzero.tv_sec = tvzero.tv_usec = 0;
+-
+- n = select(maxactivefd + 1, &fds, NULL, NULL, &tvzero);
+-
+- /*
+- * If there are no packets waiting just return
+- */
+- if (n < 0) {
+- int err = errno;
+- int j, b, prior;
++
++ for (rp = refio; rp != NULL; rp = rp->next) {
++ fd = rp->fd;
++
++ if (!FD_ISSET(fd, pfds))
++ continue;
++ buflen = read_refclock_packet(fd, rp, ts);
+ /*
+- * extended FAU debugging output
++ * The first read must succeed after select() indicates
++ * readability, or we've reached a permanent EOF.
++ * http://bugs.ntp.org/1732 reported ntpd munching CPU
++ * after a USB GPS was unplugged because select was
++ * indicating EOF but ntpd didn't remove the descriptor
++ * from the activefds set.
+ */
+- if (err != EINTR)
+- msyslog(LOG_ERR,
+- "select(%d, %s, 0L, 0L, &0.0) error: %m",
+- maxactivefd + 1,
+- fdbits(maxactivefd, &activefds));
+- if (err != EBADF)
+- goto ih_return;
+- for (j = 0, prior = 0; j <= maxactivefd; j++) {
+- if (FD_ISSET(j, &activefds)) {
+- if (-1 != read(j, &b, 0)) {
+- prior = j;
+- continue;
+- }
+- msyslog(LOG_ERR,
+- "Removing bad file descriptor %d from select set",
+- j);
+- FD_CLR(j, &activefds);
+- if (j == maxactivefd)
+- maxactivefd = prior;
+- }
++ if (buflen < 0 && EAGAIN != errno) {
++ saved_errno = errno;
++ clk = refnumtoa(&rp->srcclock->srcadr);
++ errno = saved_errno;
++ msyslog(LOG_ERR, "%s read: %m", clk);
++ maintain_activefds(fd, TRUE);
++ } else if (0 == buflen) {
++ clk = refnumtoa(&rp->srcclock->srcadr);
++ msyslog(LOG_ERR, "%s read EOF", clk);
++ maintain_activefds(fd, TRUE);
++ } else {
++ /* drain any remaining refclock input */
++ do {
++ buflen = read_refclock_packet(fd, rp, ts);
++ } while (buflen > 0);
+ }
+- goto ih_return;
+ }
+- else if (n == 0)
+- goto ih_return;
+-
+- ++handler_pkts;
+-
+-#ifdef REFCLOCK
+- /*
+- * Check out the reference clocks first, if any
+- */
+-
+- if (refio != NULL) {
+- for (rp = refio; rp != NULL; rp = rp->next) {
+- fd = rp->fd;
+-
+- if (!FD_ISSET(fd, &fds))
+- continue;
+- ++select_count;
+- buflen = read_refclock_packet(fd, rp, ts);
+- /*
+- * The first read must succeed after select()
+- * indicates readability, or we've reached
+- * a permanent EOF. http://bugs.ntp.org/1732
+- * reported ntpd munching CPU after a USB GPS
+- * was unplugged because select was indicating
+- * EOF but ntpd didn't remove the descriptor
+- * from the activefds set.
+- */
+- if (buflen < 0 && EAGAIN != errno) {
+- saved_errno = errno;
+- clk = refnumtoa(&rp->srcclock->srcadr);
+- errno = saved_errno;
+- msyslog(LOG_ERR, "%s read: %m", clk);
+- maintain_activefds(fd, TRUE);
+- } else if (0 == buflen) {
+- clk = refnumtoa(&rp->srcclock->srcadr);
+- msyslog(LOG_ERR, "%s read EOF", clk);
+- maintain_activefds(fd, TRUE);
+- } else {
+- /* drain any remaining refclock input */
+- do {
+- buflen = read_refclock_packet(fd, rp, ts);
+- } while (buflen > 0);
+- }
+- }
+- }
+ #endif /* REFCLOCK */
+
+ /*
+@@ -3762,9 +3736,8 @@ input_handler(
+ }
+ if (fd < 0)
+ continue;
+- if (FD_ISSET(fd, &fds))
++ if (FD_ISSET(fd, pfds))
+ do {
+- ++select_count;
+ buflen = read_network_packet(
+ fd, ep, ts);
+ } while (buflen > 0);
+@@ -3781,10 +3754,8 @@ input_handler(
+ while (asyncio_reader != NULL) {
+ /* callback may unlink and free asyncio_reader */
+ next_asyncio_reader = asyncio_reader->link;
+- if (FD_ISSET(asyncio_reader->fd, &fds)) {
+- ++select_count;
++ if (FD_ISSET(asyncio_reader->fd, pfds))
+ (*asyncio_reader->receiver)(asyncio_reader);
+- }
+ asyncio_reader = next_asyncio_reader;
+ }
+ #endif /* HAS_ROUTING_SOCKET */
+@@ -3796,26 +3767,14 @@ input_handler(
+ c = blocking_children[idx];
+ if (NULL == c || -1 == c->resp_read_pipe)
+ continue;
+- if (FD_ISSET(c->resp_read_pipe, &fds)) {
+- select_count++;
+- process_blocking_resp(c);
++ if (FD_ISSET(c->resp_read_pipe, pfds)) {
++ ++c->resp_ready_seen;
++ ++blocking_child_ready_seen;
+ }
+ }
+
+- /*
+- * Done everything from that select.
+- * If nothing to do, just return.
+- * If an error occurred, complain and return.
+- */
+- if (select_count == 0) { /* We really had nothing to do */
+-#ifdef DEBUG
+- if (debug)
+- msyslog(LOG_DEBUG, "input_handler: select() returned 0");
+-#endif /* DEBUG */
+- goto ih_return;
+- }
+ /* We've done our work */
+-#ifdef DEBUG_TIMING
++#if defined(DEBUG_TIMING)
+ get_systime(&ts_e);
+ /*
+ * (ts_e - ts) is the amount of time we spent
+@@ -3829,11 +3788,7 @@ input_handler(
+ "input_handler: Processed a gob of fd's in %s msec",
+ lfptoms(&ts_e, 6));
+ #endif /* DEBUG_TIMING */
+- /* We're done... */
+- ih_return:
+- return;
+ }
+-#endif /* !HAVE_IO_COMPLETION_PORT */
+
+
+ /*
+Index: contrib/ntp/ntpd/ntp_keyword.h
+===================================================================
+--- contrib/ntp/ntpd/ntp_keyword.h (revision 294707)
++++ contrib/ntp/ntpd/ntp_keyword.h (working copy)
+@@ -2,7 +2,7 @@
+ * ntp_keyword.h
+ *
+ * NOTE: edit this file with caution, it is generated by keyword-gen.c
+- * Generated 2015-06-25 03:57:00 UTC diff_ignore_line
++ * Generated 2016-01-16 08:33:03 UTC diff_ignore_line
+ *
+ */
+ #include "ntp_scanner.h"
+@@ -10,7 +10,7 @@
+
+ #define LOWEST_KEYWORD_ID 258
+
+-const char * const keyword_text[191] = {
++const char * const keyword_text[194] = {
+ /* 0 258 T_Abbrev */ "abbrev",
+ /* 1 259 T_Age */ "age",
+ /* 2 260 T_All */ "all",
+@@ -182,31 +182,34 @@
+ /* 168 426 T_Ttl */ "ttl",
+ /* 169 427 T_Type */ "type",
+ /* 170 428 T_U_int */ NULL,
+- /* 171 429 T_Unconfig */ "unconfig",
+- /* 172 430 T_Unpeer */ "unpeer",
+- /* 173 431 T_Version */ "version",
+- /* 174 432 T_WanderThreshold */ NULL,
+- /* 175 433 T_Week */ "week",
+- /* 176 434 T_Wildcard */ "wildcard",
+- /* 177 435 T_Xleave */ "xleave",
+- /* 178 436 T_Year */ "year",
+- /* 179 437 T_Flag */ NULL,
+- /* 180 438 T_EOC */ NULL,
+- /* 181 439 T_Simulate */ "simulate",
+- /* 182 440 T_Beep_Delay */ "beep_delay",
+- /* 183 441 T_Sim_Duration */ "simulation_duration",
+- /* 184 442 T_Server_Offset */ "server_offset",
+- /* 185 443 T_Duration */ "duration",
+- /* 186 444 T_Freq_Offset */ "freq_offset",
+- /* 187 445 T_Wander */ "wander",
+- /* 188 446 T_Jitter */ "jitter",
+- /* 189 447 T_Prop_Delay */ "prop_delay",
+- /* 190 448 T_Proc_Delay */ "proc_delay"
++ /* 171 429 T_UEcrypto */ "unpeer_crypto_early",
++ /* 172 430 T_UEcryptonak */ "unpeer_crypto_nak_early",
++ /* 173 431 T_UEdigest */ "unpeer_digest_early",
++ /* 174 432 T_Unconfig */ "unconfig",
++ /* 175 433 T_Unpeer */ "unpeer",
++ /* 176 434 T_Version */ "version",
++ /* 177 435 T_WanderThreshold */ NULL,
++ /* 178 436 T_Week */ "week",
++ /* 179 437 T_Wildcard */ "wildcard",
++ /* 180 438 T_Xleave */ "xleave",
++ /* 181 439 T_Year */ "year",
++ /* 182 440 T_Flag */ NULL,
++ /* 183 441 T_EOC */ NULL,
++ /* 184 442 T_Simulate */ "simulate",
++ /* 185 443 T_Beep_Delay */ "beep_delay",
++ /* 186 444 T_Sim_Duration */ "simulation_duration",
++ /* 187 445 T_Server_Offset */ "server_offset",
++ /* 188 446 T_Duration */ "duration",
++ /* 189 447 T_Freq_Offset */ "freq_offset",
++ /* 190 448 T_Wander */ "wander",
++ /* 191 449 T_Jitter */ "jitter",
++ /* 192 450 T_Prop_Delay */ "prop_delay",
++ /* 193 451 T_Proc_Delay */ "proc_delay"
+ };
+
+-#define SCANNER_INIT_S 853
++#define SCANNER_INIT_S 887
+
+-const scan_state sst[856] = {
++const scan_state sst[890] = {
+ /*SS_T( ch, f-by, match, other ), */
+ 0, /* 0 */
+ S_ST( '-', 3, 323, 0 ), /* 1 */
+@@ -252,7 +255,7 @@
+ S_ST( 'd', 3, 42, 0 ), /* 41 beep_ */
+ S_ST( 'e', 3, 43, 0 ), /* 42 beep_d */
+ S_ST( 'l', 3, 44, 0 ), /* 43 beep_de */
+- S_ST( 'a', 3, 440, 0 ), /* 44 beep_del */
++ S_ST( 'a', 3, 443, 0 ), /* 44 beep_del */
+ S_ST( 'r', 3, 46, 34 ), /* 45 b */
+ S_ST( 'o', 3, 47, 0 ), /* 46 br */
+ S_ST( 'a', 3, 48, 0 ), /* 47 bro */
+@@ -352,7 +355,7 @@
+ S_ST( 'a', 3, 142, 0 ), /* 141 dur */
+ S_ST( 't', 3, 143, 0 ), /* 142 dura */
+ S_ST( 'i', 3, 144, 0 ), /* 143 durat */
+- S_ST( 'o', 3, 443, 0 ), /* 144 durati */
++ S_ST( 'o', 3, 446, 0 ), /* 144 durati */
+ S_ST( 'e', 3, 146, 105 ), /* 145 */
+ S_ST( 'n', 3, 293, 0 ), /* 146 e */
+ S_ST( 'a', 3, 148, 0 ), /* 147 en */
+@@ -378,7 +381,7 @@
+ S_ST( 'f', 3, 168, 0 ), /* 167 freq_o */
+ S_ST( 'f', 3, 169, 0 ), /* 168 freq_of */
+ S_ST( 's', 3, 170, 0 ), /* 169 freq_off */
+- S_ST( 'e', 3, 444, 0 ), /* 170 freq_offs */
++ S_ST( 'e', 3, 447, 0 ), /* 170 freq_offs */
+ S_ST( 'u', 3, 172, 163 ), /* 171 f */
+ S_ST( 'd', 3, 173, 0 ), /* 172 fu */
+ S_ST( 'g', 3, 305, 0 ), /* 173 fud */
+@@ -438,7 +441,7 @@
+ S_ST( 'i', 3, 228, 0 ), /* 227 j */
+ S_ST( 't', 3, 229, 0 ), /* 228 ji */
+ S_ST( 't', 3, 230, 0 ), /* 229 jit */
+- S_ST( 'e', 3, 446, 0 ), /* 230 jitt */
++ S_ST( 'e', 3, 449, 0 ), /* 230 jitt */
+ S_ST( 'k', 3, 238, 226 ), /* 231 */
+ S_ST( 'e', 3, 325, 0 ), /* 232 k */
+ S_ST( 'r', 3, 234, 0 ), /* 233 ke */
+@@ -447,7 +450,7 @@
+ S_ST( 'd', 3, 237, 0 ), /* 236 keys */
+ S_ST( 'i', 3, 327, 0 ), /* 237 keysd */
+ S_ST( 'o', 3, 328, 232 ), /* 238 k */
+- S_ST( 'l', 3, 449, 231 ), /* 239 */
++ S_ST( 'l', 3, 452, 231 ), /* 239 */
+ S_ST( 'e', 3, 241, 0 ), /* 240 l */
+ S_ST( 'a', 3, 242, 0 ), /* 241 le */
+ S_ST( 'p', 3, 246, 0 ), /* 242 lea */
+@@ -495,7 +498,7 @@
+ S_ST( 'e', 0, 0, 0 ), /* 284 T_Disable */
+ S_ST( 'd', 0, 0, 0 ), /* 285 T_Discard */
+ S_ST( 'n', 0, 0, 0 ), /* 286 T_Dispersion */
+- S_ST( 'i', 3, 432, 240 ), /* 287 l */
++ S_ST( 'i', 3, 435, 240 ), /* 287 l */
+ S_ST( 'e', 1, 0, 0 ), /* 288 T_Driftfile */
+ S_ST( 'p', 0, 0, 0 ), /* 289 T_Drop */
+ S_ST( 'p', 0, 0, 0 ), /* 290 T_Dscp */
+@@ -557,7 +560,7 @@
+ S_ST( 'm', 0, 0, 0 ), /* 346 T_Maxmem */
+ S_ST( 'l', 0, 0, 0 ), /* 347 T_Maxpoll */
+ S_ST( 's', 0, 0, 0 ), /* 348 T_Mdnstries */
+- S_ST( 'm', 0, 518, 0 ), /* 349 T_Mem */
++ S_ST( 'm', 0, 521, 0 ), /* 349 T_Mem */
+ S_ST( 'k', 0, 0, 0 ), /* 350 T_Memlock */
+ S_ST( 'k', 0, 0, 0 ), /* 351 T_Minclock */
+ S_ST( 'h', 0, 0, 0 ), /* 352 T_Mindepth */
+@@ -583,16 +586,16 @@
+ S_ST( 'e', 0, 0, 0 ), /* 372 T_Noserve */
+ S_ST( 'p', 0, 0, 0 ), /* 373 T_Notrap */
+ S_ST( 't', 0, 0, 0 ), /* 374 T_Notrust */
+- S_ST( 'p', 0, 614, 0 ), /* 375 T_Ntp */
++ S_ST( 'p', 0, 617, 0 ), /* 375 T_Ntp */
+ S_ST( 't', 0, 0, 0 ), /* 376 T_Ntpport */
+ S_ST( 't', 1, 0, 0 ), /* 377 T_NtpSignDsocket */
+- S_ST( 'n', 0, 629, 0 ), /* 378 T_Orphan */
++ S_ST( 'n', 0, 632, 0 ), /* 378 T_Orphan */
+ S_ST( 't', 0, 0, 0 ), /* 379 T_Orphanwait */
+ S_ST( 'c', 0, 0, 0 ), /* 380 T_Panic */
+- S_ST( 'r', 1, 638, 0 ), /* 381 T_Peer */
++ S_ST( 'r', 1, 641, 0 ), /* 381 T_Peer */
+ S_ST( 's', 0, 0, 0 ), /* 382 T_Peerstats */
+ S_ST( 'e', 2, 0, 0 ), /* 383 T_Phone */
+- S_ST( 'd', 0, 646, 0 ), /* 384 T_Pid */
++ S_ST( 'd', 0, 649, 0 ), /* 384 T_Pid */
+ S_ST( 'e', 1, 0, 0 ), /* 385 T_Pidfile */
+ S_ST( 'l', 1, 0, 0 ), /* 386 T_Pool */
+ S_ST( 't', 0, 0, 0 ), /* 387 T_Port */
+@@ -599,7 +602,7 @@
+ S_ST( 't', 0, 0, 0 ), /* 388 T_Preempt */
+ S_ST( 'r', 0, 0, 0 ), /* 389 T_Prefer */
+ S_ST( 's', 0, 0, 0 ), /* 390 T_Protostats */
+- S_ST( 'w', 1, 0, 652 ), /* 391 T_Pw */
++ S_ST( 'w', 1, 0, 655 ), /* 391 T_Pw */
+ S_ST( 'e', 1, 0, 0 ), /* 392 T_Randfile */
+ S_ST( 's', 0, 0, 0 ), /* 393 T_Rawstats */
+ S_ST( 'd', 1, 0, 0 ), /* 394 T_Refid */
+@@ -609,20 +612,20 @@
+ S_ST( 'e', 0, 0, 0 ), /* 398 T_Revoke */
+ S_ST( 't', 0, 0, 0 ), /* 399 T_Rlimit */
+ S_ST( 'r', 1, 0, 0 ), /* 400 T_Saveconfigdir */
+- S_ST( 'r', 1, 729, 0 ), /* 401 T_Server */
++ S_ST( 'r', 1, 732, 0 ), /* 401 T_Server */
+ S_ST( 'r', 1, 0, 0 ), /* 402 T_Setvar */
+ S_ST( 'e', 0, 0, 0 ), /* 403 T_Source */
+ S_ST( 'e', 0, 0, 0 ), /* 404 T_Stacksize */
+ S_ST( 's', 0, 0, 0 ), /* 405 T_Statistics */
+- S_ST( 's', 0, 772, 767 ), /* 406 T_Stats */
++ S_ST( 's', 0, 775, 770 ), /* 406 T_Stats */
+ S_ST( 'r', 1, 0, 0 ), /* 407 T_Statsdir */
+- S_ST( 'p', 0, 780, 0 ), /* 408 T_Step */
++ S_ST( 'p', 0, 783, 0 ), /* 408 T_Step */
+ S_ST( 'k', 0, 0, 0 ), /* 409 T_Stepback */
+ S_ST( 'd', 0, 0, 0 ), /* 410 T_Stepfwd */
+ S_ST( 't', 0, 0, 0 ), /* 411 T_Stepout */
+ S_ST( 'm', 0, 0, 0 ), /* 412 T_Stratum */
+ S_ST( 'e', 3, 332, 0 ), /* 413 limit */
+- S_ST( 's', 0, 787, 0 ), /* 414 T_Sys */
++ S_ST( 's', 0, 790, 0 ), /* 414 T_Sys */
+ S_ST( 's', 0, 0, 0 ), /* 415 T_Sysstats */
+ S_ST( 'k', 0, 0, 0 ), /* 416 T_Tick */
+ S_ST( '1', 0, 0, 0 ), /* 417 T_Time1 */
+@@ -637,432 +640,466 @@
+ S_ST( 'l', 0, 0, 0 ), /* 426 T_Ttl */
+ S_ST( 'e', 0, 0, 0 ), /* 427 T_Type */
+ S_ST( 'n', 3, 333, 294 ), /* 428 li */
+- S_ST( 'g', 1, 0, 0 ), /* 429 T_Unconfig */
+- S_ST( 'r', 1, 0, 0 ), /* 430 T_Unpeer */
+- S_ST( 'n', 0, 0, 0 ), /* 431 T_Version */
+- S_ST( 's', 3, 437, 428 ), /* 432 li */
+- S_ST( 'k', 0, 0, 0 ), /* 433 T_Week */
+- S_ST( 'd', 0, 0, 0 ), /* 434 T_Wildcard */
+- S_ST( 'e', 0, 0, 0 ), /* 435 T_Xleave */
+- S_ST( 'r', 0, 0, 0 ), /* 436 T_Year */
+- S_ST( 't', 3, 438, 0 ), /* 437 lis */
+- S_ST( 'e', 3, 334, 0 ), /* 438 list */
+- S_ST( 'e', 0, 0, 0 ), /* 439 T_Simulate */
+- S_ST( 'y', 0, 0, 0 ), /* 440 T_Beep_Delay */
+- S_ST( 'n', 0, 0, 0 ), /* 441 T_Sim_Duration */
+- S_ST( 't', 0, 0, 0 ), /* 442 T_Server_Offset */
+- S_ST( 'n', 0, 0, 0 ), /* 443 T_Duration */
+- S_ST( 't', 0, 0, 0 ), /* 444 T_Freq_Offset */
+- S_ST( 'r', 0, 0, 0 ), /* 445 T_Wander */
+- S_ST( 'r', 0, 0, 0 ), /* 446 T_Jitter */
+- S_ST( 'y', 0, 0, 0 ), /* 447 T_Prop_Delay */
+- S_ST( 'y', 0, 0, 0 ), /* 448 T_Proc_Delay */
+- S_ST( 'o', 3, 465, 287 ), /* 449 l */
+- S_ST( 'g', 3, 456, 0 ), /* 450 lo */
+- S_ST( 'c', 3, 452, 0 ), /* 451 log */
+- S_ST( 'o', 3, 453, 0 ), /* 452 logc */
+- S_ST( 'n', 3, 454, 0 ), /* 453 logco */
+- S_ST( 'f', 3, 455, 0 ), /* 454 logcon */
+- S_ST( 'i', 3, 335, 0 ), /* 455 logconf */
+- S_ST( 'f', 3, 457, 451 ), /* 456 log */
+- S_ST( 'i', 3, 458, 0 ), /* 457 logf */
+- S_ST( 'l', 3, 336, 0 ), /* 458 logfi */
+- S_ST( 'o', 3, 460, 450 ), /* 459 lo */
+- S_ST( 'p', 3, 461, 0 ), /* 460 loo */
+- S_ST( 's', 3, 462, 0 ), /* 461 loop */
+- S_ST( 't', 3, 463, 0 ), /* 462 loops */
+- S_ST( 'a', 3, 464, 0 ), /* 463 loopst */
+- S_ST( 't', 3, 337, 0 ), /* 464 loopsta */
+- S_ST( 'w', 3, 466, 459 ), /* 465 lo */
+- S_ST( 'p', 3, 467, 0 ), /* 466 low */
+- S_ST( 'r', 3, 468, 0 ), /* 467 lowp */
+- S_ST( 'i', 3, 469, 0 ), /* 468 lowpr */
+- S_ST( 'o', 3, 470, 0 ), /* 469 lowpri */
+- S_ST( 't', 3, 471, 0 ), /* 470 lowprio */
+- S_ST( 'r', 3, 472, 0 ), /* 471 lowpriot */
+- S_ST( 'a', 3, 338, 0 ), /* 472 lowpriotr */
+- S_ST( 'm', 3, 554, 239 ), /* 473 */
+- S_ST( 'a', 3, 492, 0 ), /* 474 m */
+- S_ST( 'n', 3, 476, 0 ), /* 475 ma */
+- S_ST( 'y', 3, 477, 0 ), /* 476 man */
+- S_ST( 'c', 3, 478, 0 ), /* 477 many */
+- S_ST( 'a', 3, 479, 0 ), /* 478 manyc */
+- S_ST( 's', 3, 480, 0 ), /* 479 manyca */
+- S_ST( 't', 3, 486, 0 ), /* 480 manycas */
+- S_ST( 'c', 3, 482, 0 ), /* 481 manycast */
+- S_ST( 'l', 3, 483, 0 ), /* 482 manycastc */
+- S_ST( 'i', 3, 484, 0 ), /* 483 manycastcl */
+- S_ST( 'e', 3, 485, 0 ), /* 484 manycastcli */
+- S_ST( 'n', 3, 339, 0 ), /* 485 manycastclie */
+- S_ST( 's', 3, 487, 481 ), /* 486 manycast */
+- S_ST( 'e', 3, 488, 0 ), /* 487 manycasts */
+- S_ST( 'r', 3, 489, 0 ), /* 488 manycastse */
+- S_ST( 'v', 3, 490, 0 ), /* 489 manycastser */
+- S_ST( 'e', 3, 340, 0 ), /* 490 manycastserv */
+- S_ST( 's', 3, 341, 475 ), /* 491 ma */
+- S_ST( 'x', 3, 507, 491 ), /* 492 ma */
+- S_ST( 'a', 3, 494, 0 ), /* 493 max */
+- S_ST( 'g', 3, 342, 0 ), /* 494 maxa */
+- S_ST( 'c', 3, 496, 493 ), /* 495 max */
+- S_ST( 'l', 3, 497, 0 ), /* 496 maxc */
+- S_ST( 'o', 3, 498, 0 ), /* 497 maxcl */
+- S_ST( 'c', 3, 343, 0 ), /* 498 maxclo */
+- S_ST( 'd', 3, 503, 495 ), /* 499 max */
+- S_ST( 'e', 3, 501, 0 ), /* 500 maxd */
+- S_ST( 'p', 3, 502, 0 ), /* 501 maxde */
+- S_ST( 't', 3, 344, 0 ), /* 502 maxdep */
+- S_ST( 'i', 3, 504, 500 ), /* 503 maxd */
+- S_ST( 's', 3, 345, 0 ), /* 504 maxdi */
+- S_ST( 'm', 3, 506, 499 ), /* 505 max */
+- S_ST( 'e', 3, 346, 0 ), /* 506 maxm */
+- S_ST( 'p', 3, 508, 505 ), /* 507 max */
+- S_ST( 'o', 3, 509, 0 ), /* 508 maxp */
+- S_ST( 'l', 3, 347, 0 ), /* 509 maxpo */
+- S_ST( 'd', 3, 511, 474 ), /* 510 m */
+- S_ST( 'n', 3, 512, 0 ), /* 511 md */
+- S_ST( 's', 3, 513, 0 ), /* 512 mdn */
+- S_ST( 't', 3, 514, 0 ), /* 513 mdns */
+- S_ST( 'r', 3, 515, 0 ), /* 514 mdnst */
+- S_ST( 'i', 3, 516, 0 ), /* 515 mdnstr */
+- S_ST( 'e', 3, 348, 0 ), /* 516 mdnstri */
+- S_ST( 'e', 3, 349, 510 ), /* 517 m */
+- S_ST( 'l', 3, 519, 0 ), /* 518 mem */
+- S_ST( 'o', 3, 520, 0 ), /* 519 meml */
+- S_ST( 'c', 3, 350, 0 ), /* 520 memlo */
+- S_ST( 'i', 3, 522, 517 ), /* 521 m */
+- S_ST( 'n', 3, 539, 0 ), /* 522 mi */
+- S_ST( 'c', 3, 524, 0 ), /* 523 min */
+- S_ST( 'l', 3, 525, 0 ), /* 524 minc */
+- S_ST( 'o', 3, 526, 0 ), /* 525 mincl */
+- S_ST( 'c', 3, 351, 0 ), /* 526 minclo */
+- S_ST( 'd', 3, 531, 523 ), /* 527 min */
+- S_ST( 'e', 3, 529, 0 ), /* 528 mind */
+- S_ST( 'p', 3, 530, 0 ), /* 529 minde */
+- S_ST( 't', 3, 352, 0 ), /* 530 mindep */
+- S_ST( 'i', 3, 532, 528 ), /* 531 mind */
+- S_ST( 's', 3, 353, 0 ), /* 532 mindi */
+- S_ST( 'i', 3, 534, 527 ), /* 533 min */
+- S_ST( 'm', 3, 535, 0 ), /* 534 mini */
+- S_ST( 'u', 3, 354, 0 ), /* 535 minim */
+- S_ST( 'p', 3, 537, 533 ), /* 536 min */
+- S_ST( 'o', 3, 538, 0 ), /* 537 minp */
+- S_ST( 'l', 3, 355, 0 ), /* 538 minpo */
+- S_ST( 's', 3, 540, 536 ), /* 539 min */
+- S_ST( 'a', 3, 541, 0 ), /* 540 mins */
+- S_ST( 'n', 3, 356, 0 ), /* 541 minsa */
+- S_ST( 'o', 3, 544, 521 ), /* 542 m */
+- S_ST( 'd', 3, 357, 0 ), /* 543 mo */
+- S_ST( 'n', 3, 548, 543 ), /* 544 mo */
+- S_ST( 'i', 3, 546, 0 ), /* 545 mon */
+- S_ST( 't', 3, 547, 0 ), /* 546 moni */
+- S_ST( 'o', 3, 359, 0 ), /* 547 monit */
+- S_ST( 't', 3, 360, 545 ), /* 548 mon */
+- S_ST( 'r', 3, 361, 542 ), /* 549 m */
+- S_ST( 's', 3, 551, 549 ), /* 550 m */
+- S_ST( 's', 3, 552, 0 ), /* 551 ms */
+- S_ST( 'n', 3, 553, 0 ), /* 552 mss */
+- S_ST( 't', 3, 329, 0 ), /* 553 mssn */
+- S_ST( 'u', 3, 555, 550 ), /* 554 m */
+- S_ST( 'l', 3, 556, 0 ), /* 555 mu */
+- S_ST( 't', 3, 557, 0 ), /* 556 mul */
+- S_ST( 'i', 3, 558, 0 ), /* 557 mult */
+- S_ST( 'c', 3, 559, 0 ), /* 558 multi */
+- S_ST( 'a', 3, 560, 0 ), /* 559 multic */
+- S_ST( 's', 3, 561, 0 ), /* 560 multica */
+- S_ST( 't', 3, 562, 0 ), /* 561 multicas */
+- S_ST( 'c', 3, 563, 0 ), /* 562 multicast */
+- S_ST( 'l', 3, 564, 0 ), /* 563 multicastc */
+- S_ST( 'i', 3, 565, 0 ), /* 564 multicastcl */
+- S_ST( 'e', 3, 566, 0 ), /* 565 multicastcli */
+- S_ST( 'n', 3, 362, 0 ), /* 566 multicastclie */
+- S_ST( 'n', 3, 610, 473 ), /* 567 */
+- S_ST( 'i', 3, 363, 0 ), /* 568 n */
+- S_ST( 'o', 3, 605, 568 ), /* 569 n */
+- S_ST( 'l', 3, 571, 0 ), /* 570 no */
+- S_ST( 'i', 3, 572, 0 ), /* 571 nol */
+- S_ST( 'n', 3, 364, 0 ), /* 572 noli */
+- S_ST( 'm', 3, 578, 570 ), /* 573 no */
+- S_ST( 'o', 3, 575, 0 ), /* 574 nom */
+- S_ST( 'd', 3, 576, 0 ), /* 575 nomo */
+- S_ST( 'i', 3, 577, 0 ), /* 576 nomod */
+- S_ST( 'f', 3, 365, 0 ), /* 577 nomodi */
+- S_ST( 'r', 3, 579, 574 ), /* 578 nom */
+- S_ST( 'u', 3, 580, 0 ), /* 579 nomr */
+- S_ST( 'l', 3, 581, 0 ), /* 580 nomru */
+- S_ST( 'i', 3, 582, 0 ), /* 581 nomrul */
+- S_ST( 's', 3, 366, 0 ), /* 582 nomruli */
+- S_ST( 'n', 3, 584, 573 ), /* 583 no */
+- S_ST( 'v', 3, 585, 367 ), /* 584 non */
+- S_ST( 'o', 3, 586, 0 ), /* 585 nonv */
+- S_ST( 'l', 3, 587, 0 ), /* 586 nonvo */
+- S_ST( 'a', 3, 588, 0 ), /* 587 nonvol */
+- S_ST( 't', 3, 589, 0 ), /* 588 nonvola */
+- S_ST( 'i', 3, 590, 0 ), /* 589 nonvolat */
+- S_ST( 'l', 3, 368, 0 ), /* 590 nonvolati */
+- S_ST( 'p', 3, 592, 583 ), /* 591 no */
+- S_ST( 'e', 3, 593, 0 ), /* 592 nop */
+- S_ST( 'e', 3, 369, 0 ), /* 593 nope */
+- S_ST( 'q', 3, 595, 591 ), /* 594 no */
+- S_ST( 'u', 3, 596, 0 ), /* 595 noq */
+- S_ST( 'e', 3, 597, 0 ), /* 596 noqu */
+- S_ST( 'r', 3, 370, 0 ), /* 597 noque */
+- S_ST( 's', 3, 599, 594 ), /* 598 no */
+- S_ST( 'e', 3, 603, 0 ), /* 599 nos */
+- S_ST( 'l', 3, 601, 0 ), /* 600 nose */
+- S_ST( 'e', 3, 602, 0 ), /* 601 nosel */
+- S_ST( 'c', 3, 371, 0 ), /* 602 nosele */
+- S_ST( 'r', 3, 604, 600 ), /* 603 nose */
+- S_ST( 'v', 3, 372, 0 ), /* 604 noser */
+- S_ST( 't', 3, 606, 598 ), /* 605 no */
+- S_ST( 'r', 3, 608, 0 ), /* 606 not */
+- S_ST( 'a', 3, 373, 0 ), /* 607 notr */
+- S_ST( 'u', 3, 609, 607 ), /* 608 notr */
+- S_ST( 's', 3, 374, 0 ), /* 609 notru */
+- S_ST( 't', 3, 375, 569 ), /* 610 n */
+- S_ST( 'p', 3, 612, 0 ), /* 611 ntp */
+- S_ST( 'o', 3, 613, 0 ), /* 612 ntpp */
+- S_ST( 'r', 3, 376, 0 ), /* 613 ntppo */
+- S_ST( 's', 3, 615, 611 ), /* 614 ntp */
+- S_ST( 'i', 3, 616, 0 ), /* 615 ntps */
+- S_ST( 'g', 3, 617, 0 ), /* 616 ntpsi */
+- S_ST( 'n', 3, 618, 0 ), /* 617 ntpsig */
+- S_ST( 'd', 3, 619, 0 ), /* 618 ntpsign */
+- S_ST( 's', 3, 620, 0 ), /* 619 ntpsignd */
+- S_ST( 'o', 3, 621, 0 ), /* 620 ntpsignds */
+- S_ST( 'c', 3, 622, 0 ), /* 621 ntpsigndso */
+- S_ST( 'k', 3, 623, 0 ), /* 622 ntpsigndsoc */
+- S_ST( 'e', 3, 377, 0 ), /* 623 ntpsigndsock */
+- S_ST( 'o', 3, 625, 567 ), /* 624 */
+- S_ST( 'r', 3, 626, 0 ), /* 625 o */
+- S_ST( 'p', 3, 627, 0 ), /* 626 or */
+- S_ST( 'h', 3, 628, 0 ), /* 627 orp */
+- S_ST( 'a', 3, 378, 0 ), /* 628 orph */
+- S_ST( 'w', 3, 630, 0 ), /* 629 orphan */
+- S_ST( 'a', 3, 631, 0 ), /* 630 orphanw */
+- S_ST( 'i', 3, 379, 0 ), /* 631 orphanwa */
+- S_ST( 'p', 3, 391, 624 ), /* 632 */
+- S_ST( 'a', 3, 634, 0 ), /* 633 p */
+- S_ST( 'n', 3, 635, 0 ), /* 634 pa */
+- S_ST( 'i', 3, 380, 0 ), /* 635 pan */
+- S_ST( 'e', 3, 637, 633 ), /* 636 p */
+- S_ST( 'e', 3, 381, 0 ), /* 637 pe */
+- S_ST( 's', 3, 639, 0 ), /* 638 peer */
+- S_ST( 't', 3, 640, 0 ), /* 639 peers */
+- S_ST( 'a', 3, 641, 0 ), /* 640 peerst */
+- S_ST( 't', 3, 382, 0 ), /* 641 peersta */
+- S_ST( 'h', 3, 643, 636 ), /* 642 p */
+- S_ST( 'o', 3, 644, 0 ), /* 643 ph */
+- S_ST( 'n', 3, 383, 0 ), /* 644 pho */
+- S_ST( 'i', 3, 384, 642 ), /* 645 p */
+- S_ST( 'f', 3, 647, 0 ), /* 646 pid */
+- S_ST( 'i', 3, 648, 0 ), /* 647 pidf */
+- S_ST( 'l', 3, 385, 0 ), /* 648 pidfi */
+- S_ST( 'o', 3, 651, 645 ), /* 649 p */
+- S_ST( 'o', 3, 386, 0 ), /* 650 po */
+- S_ST( 'r', 3, 387, 650 ), /* 651 po */
+- S_ST( 'r', 3, 659, 649 ), /* 652 p */
+- S_ST( 'e', 3, 657, 0 ), /* 653 pr */
+- S_ST( 'e', 3, 655, 0 ), /* 654 pre */
+- S_ST( 'm', 3, 656, 0 ), /* 655 pree */
+- S_ST( 'p', 3, 388, 0 ), /* 656 preem */
+- S_ST( 'f', 3, 658, 654 ), /* 657 pre */
+- S_ST( 'e', 3, 389, 0 ), /* 658 pref */
+- S_ST( 'o', 3, 672, 653 ), /* 659 pr */
+- S_ST( 'c', 3, 661, 0 ), /* 660 pro */
+- S_ST( '_', 3, 662, 0 ), /* 661 proc */
+- S_ST( 'd', 3, 663, 0 ), /* 662 proc_ */
+- S_ST( 'e', 3, 664, 0 ), /* 663 proc_d */
+- S_ST( 'l', 3, 665, 0 ), /* 664 proc_de */
+- S_ST( 'a', 3, 448, 0 ), /* 665 proc_del */
+- S_ST( 'p', 3, 667, 660 ), /* 666 pro */
+- S_ST( '_', 3, 668, 0 ), /* 667 prop */
+- S_ST( 'd', 3, 669, 0 ), /* 668 prop_ */
+- S_ST( 'e', 3, 670, 0 ), /* 669 prop_d */
+- S_ST( 'l', 3, 671, 0 ), /* 670 prop_de */
+- S_ST( 'a', 3, 447, 0 ), /* 671 prop_del */
+- S_ST( 't', 3, 673, 666 ), /* 672 pro */
+- S_ST( 'o', 3, 674, 0 ), /* 673 prot */
+- S_ST( 's', 3, 675, 0 ), /* 674 proto */
+- S_ST( 't', 3, 676, 0 ), /* 675 protos */
+- S_ST( 'a', 3, 677, 0 ), /* 676 protost */
+- S_ST( 't', 3, 390, 0 ), /* 677 protosta */
+- S_ST( 'r', 3, 709, 632 ), /* 678 */
+- S_ST( 'a', 3, 685, 0 ), /* 679 r */
+- S_ST( 'n', 3, 681, 0 ), /* 680 ra */
+- S_ST( 'd', 3, 682, 0 ), /* 681 ran */
+- S_ST( 'f', 3, 683, 0 ), /* 682 rand */
+- S_ST( 'i', 3, 684, 0 ), /* 683 randf */
+- S_ST( 'l', 3, 392, 0 ), /* 684 randfi */
+- S_ST( 'w', 3, 686, 680 ), /* 685 ra */
+- S_ST( 's', 3, 687, 0 ), /* 686 raw */
+- S_ST( 't', 3, 688, 0 ), /* 687 raws */
+- S_ST( 'a', 3, 689, 0 ), /* 688 rawst */
+- S_ST( 't', 3, 393, 0 ), /* 689 rawsta */
+- S_ST( 'e', 3, 706, 679 ), /* 690 r */
+- S_ST( 'f', 3, 692, 0 ), /* 691 re */
+- S_ST( 'i', 3, 394, 0 ), /* 692 ref */
+- S_ST( 'q', 3, 694, 691 ), /* 693 re */
+- S_ST( 'u', 3, 695, 0 ), /* 694 req */
+- S_ST( 'e', 3, 696, 0 ), /* 695 requ */
+- S_ST( 's', 3, 697, 0 ), /* 696 reque */
+- S_ST( 't', 3, 698, 0 ), /* 697 reques */
+- S_ST( 'k', 3, 699, 0 ), /* 698 request */
+- S_ST( 'e', 3, 395, 0 ), /* 699 requestk */
+- S_ST( 's', 3, 702, 693 ), /* 700 re */
+- S_ST( 'e', 3, 396, 0 ), /* 701 res */
+- S_ST( 't', 3, 703, 701 ), /* 702 res */
+- S_ST( 'r', 3, 704, 0 ), /* 703 rest */
+- S_ST( 'i', 3, 705, 0 ), /* 704 restr */
+- S_ST( 'c', 3, 397, 0 ), /* 705 restri */
+- S_ST( 'v', 3, 707, 700 ), /* 706 re */
+- S_ST( 'o', 3, 708, 0 ), /* 707 rev */
+- S_ST( 'k', 3, 398, 0 ), /* 708 revo */
+- S_ST( 'l', 3, 710, 690 ), /* 709 r */
+- S_ST( 'i', 3, 711, 0 ), /* 710 rl */
+- S_ST( 'm', 3, 712, 0 ), /* 711 rli */
+- S_ST( 'i', 3, 399, 0 ), /* 712 rlim */
+- S_ST( 's', 3, 786, 678 ), /* 713 */
+- S_ST( 'a', 3, 715, 0 ), /* 714 s */
+- S_ST( 'v', 3, 716, 0 ), /* 715 sa */
+- S_ST( 'e', 3, 717, 0 ), /* 716 sav */
+- S_ST( 'c', 3, 718, 0 ), /* 717 save */
+- S_ST( 'o', 3, 719, 0 ), /* 718 savec */
+- S_ST( 'n', 3, 720, 0 ), /* 719 saveco */
+- S_ST( 'f', 3, 721, 0 ), /* 720 savecon */
+- S_ST( 'i', 3, 722, 0 ), /* 721 saveconf */
+- S_ST( 'g', 3, 723, 0 ), /* 722 saveconfi */
+- S_ST( 'd', 3, 724, 0 ), /* 723 saveconfig */
+- S_ST( 'i', 3, 400, 0 ), /* 724 saveconfigd */
+- S_ST( 'e', 3, 735, 714 ), /* 725 s */
+- S_ST( 'r', 3, 727, 0 ), /* 726 se */
+- S_ST( 'v', 3, 728, 0 ), /* 727 ser */
+- S_ST( 'e', 3, 401, 0 ), /* 728 serv */
+- S_ST( '_', 3, 730, 0 ), /* 729 server */
+- S_ST( 'o', 3, 731, 0 ), /* 730 server_ */
+- S_ST( 'f', 3, 732, 0 ), /* 731 server_o */
+- S_ST( 'f', 3, 733, 0 ), /* 732 server_of */
+- S_ST( 's', 3, 734, 0 ), /* 733 server_off */
+- S_ST( 'e', 3, 442, 0 ), /* 734 server_offs */
+- S_ST( 't', 3, 736, 726 ), /* 735 se */
+- S_ST( 'v', 3, 737, 0 ), /* 736 set */
+- S_ST( 'a', 3, 402, 0 ), /* 737 setv */
+- S_ST( 'i', 3, 739, 725 ), /* 738 s */
+- S_ST( 'm', 3, 740, 0 ), /* 739 si */
+- S_ST( 'u', 3, 741, 0 ), /* 740 sim */
+- S_ST( 'l', 3, 742, 0 ), /* 741 simu */
+- S_ST( 'a', 3, 743, 0 ), /* 742 simul */
+- S_ST( 't', 3, 744, 0 ), /* 743 simula */
+- S_ST( 'i', 3, 745, 439 ), /* 744 simulat */
+- S_ST( 'o', 3, 746, 0 ), /* 745 simulati */
+- S_ST( 'n', 3, 747, 0 ), /* 746 simulatio */
+- S_ST( '_', 3, 748, 0 ), /* 747 simulation */
+- S_ST( 'd', 3, 749, 0 ), /* 748 simulation_ */
+- S_ST( 'u', 3, 750, 0 ), /* 749 simulation_d */
+- S_ST( 'r', 3, 751, 0 ), /* 750 simulation_du */
+- S_ST( 'a', 3, 752, 0 ), /* 751 simulation_dur */
+- S_ST( 't', 3, 753, 0 ), /* 752 simulation_dura */
+- S_ST( 'i', 3, 754, 0 ), /* 753 simulation_durat */
+- S_ST( 'o', 3, 441, 0 ), /* 754 simulation_durati */
+- S_ST( 'o', 3, 756, 738 ), /* 755 s */
+- S_ST( 'u', 3, 757, 0 ), /* 756 so */
+- S_ST( 'r', 3, 758, 0 ), /* 757 sou */
+- S_ST( 'c', 3, 403, 0 ), /* 758 sour */
+- S_ST( 't', 3, 782, 755 ), /* 759 s */
+- S_ST( 'a', 3, 766, 0 ), /* 760 st */
+- S_ST( 'c', 3, 762, 0 ), /* 761 sta */
+- S_ST( 'k', 3, 763, 0 ), /* 762 stac */
+- S_ST( 's', 3, 764, 0 ), /* 763 stack */
+- S_ST( 'i', 3, 765, 0 ), /* 764 stacks */
+- S_ST( 'z', 3, 404, 0 ), /* 765 stacksi */
+- S_ST( 't', 3, 406, 761 ), /* 766 sta */
+- S_ST( 'i', 3, 768, 0 ), /* 767 stat */
+- S_ST( 's', 3, 769, 0 ), /* 768 stati */
+- S_ST( 't', 3, 770, 0 ), /* 769 statis */
+- S_ST( 'i', 3, 771, 0 ), /* 770 statist */
+- S_ST( 'c', 3, 405, 0 ), /* 771 statisti */
+- S_ST( 'd', 3, 773, 0 ), /* 772 stats */
+- S_ST( 'i', 3, 407, 0 ), /* 773 statsd */
+- S_ST( 'e', 3, 408, 760 ), /* 774 st */
+- S_ST( 'b', 3, 776, 0 ), /* 775 step */
+- S_ST( 'a', 3, 777, 0 ), /* 776 stepb */
+- S_ST( 'c', 3, 409, 0 ), /* 777 stepba */
+- S_ST( 'f', 3, 779, 775 ), /* 778 step */
+- S_ST( 'w', 3, 410, 0 ), /* 779 stepf */
+- S_ST( 'o', 3, 781, 778 ), /* 780 step */
+- S_ST( 'u', 3, 411, 0 ), /* 781 stepo */
+- S_ST( 'r', 3, 783, 774 ), /* 782 st */
+- S_ST( 'a', 3, 784, 0 ), /* 783 str */
+- S_ST( 't', 3, 785, 0 ), /* 784 stra */
+- S_ST( 'u', 3, 412, 0 ), /* 785 strat */
+- S_ST( 'y', 3, 414, 759 ), /* 786 s */
+- S_ST( 's', 3, 788, 0 ), /* 787 sys */
+- S_ST( 't', 3, 789, 0 ), /* 788 syss */
+- S_ST( 'a', 3, 790, 0 ), /* 789 sysst */
+- S_ST( 't', 3, 415, 0 ), /* 790 syssta */
+- S_ST( 't', 3, 817, 713 ), /* 791 */
+- S_ST( 'i', 3, 803, 0 ), /* 792 t */
+- S_ST( 'c', 3, 416, 0 ), /* 793 ti */
+- S_ST( 'm', 3, 796, 793 ), /* 794 ti */
+- S_ST( 'e', 3, 419, 0 ), /* 795 tim */
+- S_ST( 'i', 3, 797, 795 ), /* 796 tim */
+- S_ST( 'n', 3, 798, 0 ), /* 797 timi */
+- S_ST( 'g', 3, 799, 0 ), /* 798 timin */
+- S_ST( 's', 3, 800, 0 ), /* 799 timing */
+- S_ST( 't', 3, 801, 0 ), /* 800 timings */
+- S_ST( 'a', 3, 802, 0 ), /* 801 timingst */
+- S_ST( 't', 3, 420, 0 ), /* 802 timingsta */
+- S_ST( 'n', 3, 804, 794 ), /* 803 ti */
+- S_ST( 'k', 3, 805, 0 ), /* 804 tin */
+- S_ST( 'e', 3, 421, 0 ), /* 805 tink */
+- S_ST( 'o', 3, 422, 792 ), /* 806 t */
+- S_ST( 'r', 3, 809, 806 ), /* 807 t */
+- S_ST( 'a', 3, 423, 0 ), /* 808 tr */
+- S_ST( 'u', 3, 810, 808 ), /* 809 tr */
+- S_ST( 's', 3, 811, 424 ), /* 810 tru */
+- S_ST( 't', 3, 812, 0 ), /* 811 trus */
+- S_ST( 'e', 3, 813, 0 ), /* 812 trust */
+- S_ST( 'd', 3, 814, 0 ), /* 813 truste */
+- S_ST( 'k', 3, 815, 0 ), /* 814 trusted */
+- S_ST( 'e', 3, 425, 0 ), /* 815 trustedk */
+- S_ST( 't', 3, 426, 807 ), /* 816 t */
+- S_ST( 'y', 3, 818, 816 ), /* 817 t */
+- S_ST( 'p', 3, 427, 0 ), /* 818 ty */
+- S_ST( 'u', 3, 820, 791 ), /* 819 */
+- S_ST( 'n', 3, 826, 0 ), /* 820 u */
+- S_ST( 'c', 3, 822, 0 ), /* 821 un */
+- S_ST( 'o', 3, 823, 0 ), /* 822 unc */
+- S_ST( 'n', 3, 824, 0 ), /* 823 unco */
+- S_ST( 'f', 3, 825, 0 ), /* 824 uncon */
+- S_ST( 'i', 3, 429, 0 ), /* 825 unconf */
+- S_ST( 'p', 3, 827, 821 ), /* 826 un */
+- S_ST( 'e', 3, 828, 0 ), /* 827 unp */
+- S_ST( 'e', 3, 430, 0 ), /* 828 unpe */
+- S_ST( 'v', 3, 830, 819 ), /* 829 */
+- S_ST( 'e', 3, 831, 0 ), /* 830 v */
+- S_ST( 'r', 3, 832, 0 ), /* 831 ve */
+- S_ST( 's', 3, 833, 0 ), /* 832 ver */
+- S_ST( 'i', 3, 834, 0 ), /* 833 vers */
+- S_ST( 'o', 3, 431, 0 ), /* 834 versi */
+- S_ST( 'w', 3, 842, 829 ), /* 835 */
+- S_ST( 'a', 3, 837, 0 ), /* 836 w */
+- S_ST( 'n', 3, 838, 0 ), /* 837 wa */
+- S_ST( 'd', 3, 839, 0 ), /* 838 wan */
+- S_ST( 'e', 3, 445, 0 ), /* 839 wand */
+- S_ST( 'e', 3, 841, 836 ), /* 840 w */
+- S_ST( 'e', 3, 433, 0 ), /* 841 we */
+- S_ST( 'i', 3, 843, 840 ), /* 842 w */
+- S_ST( 'l', 3, 844, 0 ), /* 843 wi */
+- S_ST( 'd', 3, 845, 0 ), /* 844 wil */
+- S_ST( 'c', 3, 846, 0 ), /* 845 wild */
+- S_ST( 'a', 3, 847, 0 ), /* 846 wildc */
+- S_ST( 'r', 3, 434, 0 ), /* 847 wildca */
+- S_ST( 'x', 3, 849, 835 ), /* 848 */
+- S_ST( 'l', 3, 850, 0 ), /* 849 x */
+- S_ST( 'e', 3, 851, 0 ), /* 850 xl */
+- S_ST( 'a', 3, 852, 0 ), /* 851 xle */
+- S_ST( 'v', 3, 435, 0 ), /* 852 xlea */
+- S_ST( 'y', 3, 854, 848 ), /* 853 [initial state] */
+- S_ST( 'e', 3, 855, 0 ), /* 854 y */
+- S_ST( 'a', 3, 436, 0 ) /* 855 ye */
++ S_ST( 'y', 0, 0, 0 ), /* 429 T_UEcrypto */
++ S_ST( 'y', 0, 0, 0 ), /* 430 T_UEcryptonak */
++ S_ST( 'y', 0, 0, 0 ), /* 431 T_UEdigest */
++ S_ST( 'g', 1, 0, 0 ), /* 432 T_Unconfig */
++ S_ST( 'r', 1, 832, 0 ), /* 433 T_Unpeer */
++ S_ST( 'n', 0, 0, 0 ), /* 434 T_Version */
++ S_ST( 's', 3, 440, 428 ), /* 435 li */
++ S_ST( 'k', 0, 0, 0 ), /* 436 T_Week */
++ S_ST( 'd', 0, 0, 0 ), /* 437 T_Wildcard */
++ S_ST( 'e', 0, 0, 0 ), /* 438 T_Xleave */
++ S_ST( 'r', 0, 0, 0 ), /* 439 T_Year */
++ S_ST( 't', 3, 441, 0 ), /* 440 lis */
++ S_ST( 'e', 3, 334, 0 ), /* 441 list */
++ S_ST( 'e', 0, 0, 0 ), /* 442 T_Simulate */
++ S_ST( 'y', 0, 0, 0 ), /* 443 T_Beep_Delay */
++ S_ST( 'n', 0, 0, 0 ), /* 444 T_Sim_Duration */
++ S_ST( 't', 0, 0, 0 ), /* 445 T_Server_Offset */
++ S_ST( 'n', 0, 0, 0 ), /* 446 T_Duration */
++ S_ST( 't', 0, 0, 0 ), /* 447 T_Freq_Offset */
++ S_ST( 'r', 0, 0, 0 ), /* 448 T_Wander */
++ S_ST( 'r', 0, 0, 0 ), /* 449 T_Jitter */
++ S_ST( 'y', 0, 0, 0 ), /* 450 T_Prop_Delay */
++ S_ST( 'y', 0, 0, 0 ), /* 451 T_Proc_Delay */
++ S_ST( 'o', 3, 468, 287 ), /* 452 l */
++ S_ST( 'g', 3, 459, 0 ), /* 453 lo */
++ S_ST( 'c', 3, 455, 0 ), /* 454 log */
++ S_ST( 'o', 3, 456, 0 ), /* 455 logc */
++ S_ST( 'n', 3, 457, 0 ), /* 456 logco */
++ S_ST( 'f', 3, 458, 0 ), /* 457 logcon */
++ S_ST( 'i', 3, 335, 0 ), /* 458 logconf */
++ S_ST( 'f', 3, 460, 454 ), /* 459 log */
++ S_ST( 'i', 3, 461, 0 ), /* 460 logf */
++ S_ST( 'l', 3, 336, 0 ), /* 461 logfi */
++ S_ST( 'o', 3, 463, 453 ), /* 462 lo */
++ S_ST( 'p', 3, 464, 0 ), /* 463 loo */
++ S_ST( 's', 3, 465, 0 ), /* 464 loop */
++ S_ST( 't', 3, 466, 0 ), /* 465 loops */
++ S_ST( 'a', 3, 467, 0 ), /* 466 loopst */
++ S_ST( 't', 3, 337, 0 ), /* 467 loopsta */
++ S_ST( 'w', 3, 469, 462 ), /* 468 lo */
++ S_ST( 'p', 3, 470, 0 ), /* 469 low */
++ S_ST( 'r', 3, 471, 0 ), /* 470 lowp */
++ S_ST( 'i', 3, 472, 0 ), /* 471 lowpr */
++ S_ST( 'o', 3, 473, 0 ), /* 472 lowpri */
++ S_ST( 't', 3, 474, 0 ), /* 473 lowprio */
++ S_ST( 'r', 3, 475, 0 ), /* 474 lowpriot */
++ S_ST( 'a', 3, 338, 0 ), /* 475 lowpriotr */
++ S_ST( 'm', 3, 557, 239 ), /* 476 */
++ S_ST( 'a', 3, 495, 0 ), /* 477 m */
++ S_ST( 'n', 3, 479, 0 ), /* 478 ma */
++ S_ST( 'y', 3, 480, 0 ), /* 479 man */
++ S_ST( 'c', 3, 481, 0 ), /* 480 many */
++ S_ST( 'a', 3, 482, 0 ), /* 481 manyc */
++ S_ST( 's', 3, 483, 0 ), /* 482 manyca */
++ S_ST( 't', 3, 489, 0 ), /* 483 manycas */
++ S_ST( 'c', 3, 485, 0 ), /* 484 manycast */
++ S_ST( 'l', 3, 486, 0 ), /* 485 manycastc */
++ S_ST( 'i', 3, 487, 0 ), /* 486 manycastcl */
++ S_ST( 'e', 3, 488, 0 ), /* 487 manycastcli */
++ S_ST( 'n', 3, 339, 0 ), /* 488 manycastclie */
++ S_ST( 's', 3, 490, 484 ), /* 489 manycast */
++ S_ST( 'e', 3, 491, 0 ), /* 490 manycasts */
++ S_ST( 'r', 3, 492, 0 ), /* 491 manycastse */
++ S_ST( 'v', 3, 493, 0 ), /* 492 manycastser */
++ S_ST( 'e', 3, 340, 0 ), /* 493 manycastserv */
++ S_ST( 's', 3, 341, 478 ), /* 494 ma */
++ S_ST( 'x', 3, 510, 494 ), /* 495 ma */
++ S_ST( 'a', 3, 497, 0 ), /* 496 max */
++ S_ST( 'g', 3, 342, 0 ), /* 497 maxa */
++ S_ST( 'c', 3, 499, 496 ), /* 498 max */
++ S_ST( 'l', 3, 500, 0 ), /* 499 maxc */
++ S_ST( 'o', 3, 501, 0 ), /* 500 maxcl */
++ S_ST( 'c', 3, 343, 0 ), /* 501 maxclo */
++ S_ST( 'd', 3, 506, 498 ), /* 502 max */
++ S_ST( 'e', 3, 504, 0 ), /* 503 maxd */
++ S_ST( 'p', 3, 505, 0 ), /* 504 maxde */
++ S_ST( 't', 3, 344, 0 ), /* 505 maxdep */
++ S_ST( 'i', 3, 507, 503 ), /* 506 maxd */
++ S_ST( 's', 3, 345, 0 ), /* 507 maxdi */
++ S_ST( 'm', 3, 509, 502 ), /* 508 max */
++ S_ST( 'e', 3, 346, 0 ), /* 509 maxm */
++ S_ST( 'p', 3, 511, 508 ), /* 510 max */
++ S_ST( 'o', 3, 512, 0 ), /* 511 maxp */
++ S_ST( 'l', 3, 347, 0 ), /* 512 maxpo */
++ S_ST( 'd', 3, 514, 477 ), /* 513 m */
++ S_ST( 'n', 3, 515, 0 ), /* 514 md */
++ S_ST( 's', 3, 516, 0 ), /* 515 mdn */
++ S_ST( 't', 3, 517, 0 ), /* 516 mdns */
++ S_ST( 'r', 3, 518, 0 ), /* 517 mdnst */
++ S_ST( 'i', 3, 519, 0 ), /* 518 mdnstr */
++ S_ST( 'e', 3, 348, 0 ), /* 519 mdnstri */
++ S_ST( 'e', 3, 349, 513 ), /* 520 m */
++ S_ST( 'l', 3, 522, 0 ), /* 521 mem */
++ S_ST( 'o', 3, 523, 0 ), /* 522 meml */
++ S_ST( 'c', 3, 350, 0 ), /* 523 memlo */
++ S_ST( 'i', 3, 525, 520 ), /* 524 m */
++ S_ST( 'n', 3, 542, 0 ), /* 525 mi */
++ S_ST( 'c', 3, 527, 0 ), /* 526 min */
++ S_ST( 'l', 3, 528, 0 ), /* 527 minc */
++ S_ST( 'o', 3, 529, 0 ), /* 528 mincl */
++ S_ST( 'c', 3, 351, 0 ), /* 529 minclo */
++ S_ST( 'd', 3, 534, 526 ), /* 530 min */
++ S_ST( 'e', 3, 532, 0 ), /* 531 mind */
++ S_ST( 'p', 3, 533, 0 ), /* 532 minde */
++ S_ST( 't', 3, 352, 0 ), /* 533 mindep */
++ S_ST( 'i', 3, 535, 531 ), /* 534 mind */
++ S_ST( 's', 3, 353, 0 ), /* 535 mindi */
++ S_ST( 'i', 3, 537, 530 ), /* 536 min */
++ S_ST( 'm', 3, 538, 0 ), /* 537 mini */
++ S_ST( 'u', 3, 354, 0 ), /* 538 minim */
++ S_ST( 'p', 3, 540, 536 ), /* 539 min */
++ S_ST( 'o', 3, 541, 0 ), /* 540 minp */
++ S_ST( 'l', 3, 355, 0 ), /* 541 minpo */
++ S_ST( 's', 3, 543, 539 ), /* 542 min */
++ S_ST( 'a', 3, 544, 0 ), /* 543 mins */
++ S_ST( 'n', 3, 356, 0 ), /* 544 minsa */
++ S_ST( 'o', 3, 547, 524 ), /* 545 m */
++ S_ST( 'd', 3, 357, 0 ), /* 546 mo */
++ S_ST( 'n', 3, 551, 546 ), /* 547 mo */
++ S_ST( 'i', 3, 549, 0 ), /* 548 mon */
++ S_ST( 't', 3, 550, 0 ), /* 549 moni */
++ S_ST( 'o', 3, 359, 0 ), /* 550 monit */
++ S_ST( 't', 3, 360, 548 ), /* 551 mon */
++ S_ST( 'r', 3, 361, 545 ), /* 552 m */
++ S_ST( 's', 3, 554, 552 ), /* 553 m */
++ S_ST( 's', 3, 555, 0 ), /* 554 ms */
++ S_ST( 'n', 3, 556, 0 ), /* 555 mss */
++ S_ST( 't', 3, 329, 0 ), /* 556 mssn */
++ S_ST( 'u', 3, 558, 553 ), /* 557 m */
++ S_ST( 'l', 3, 559, 0 ), /* 558 mu */
++ S_ST( 't', 3, 560, 0 ), /* 559 mul */
++ S_ST( 'i', 3, 561, 0 ), /* 560 mult */
++ S_ST( 'c', 3, 562, 0 ), /* 561 multi */
++ S_ST( 'a', 3, 563, 0 ), /* 562 multic */
++ S_ST( 's', 3, 564, 0 ), /* 563 multica */
++ S_ST( 't', 3, 565, 0 ), /* 564 multicas */
++ S_ST( 'c', 3, 566, 0 ), /* 565 multicast */
++ S_ST( 'l', 3, 567, 0 ), /* 566 multicastc */
++ S_ST( 'i', 3, 568, 0 ), /* 567 multicastcl */
++ S_ST( 'e', 3, 569, 0 ), /* 568 multicastcli */
++ S_ST( 'n', 3, 362, 0 ), /* 569 multicastclie */
++ S_ST( 'n', 3, 613, 476 ), /* 570 */
++ S_ST( 'i', 3, 363, 0 ), /* 571 n */
++ S_ST( 'o', 3, 608, 571 ), /* 572 n */
++ S_ST( 'l', 3, 574, 0 ), /* 573 no */
++ S_ST( 'i', 3, 575, 0 ), /* 574 nol */
++ S_ST( 'n', 3, 364, 0 ), /* 575 noli */
++ S_ST( 'm', 3, 581, 573 ), /* 576 no */
++ S_ST( 'o', 3, 578, 0 ), /* 577 nom */
++ S_ST( 'd', 3, 579, 0 ), /* 578 nomo */
++ S_ST( 'i', 3, 580, 0 ), /* 579 nomod */
++ S_ST( 'f', 3, 365, 0 ), /* 580 nomodi */
++ S_ST( 'r', 3, 582, 577 ), /* 581 nom */
++ S_ST( 'u', 3, 583, 0 ), /* 582 nomr */
++ S_ST( 'l', 3, 584, 0 ), /* 583 nomru */
++ S_ST( 'i', 3, 585, 0 ), /* 584 nomrul */
++ S_ST( 's', 3, 366, 0 ), /* 585 nomruli */
++ S_ST( 'n', 3, 587, 576 ), /* 586 no */
++ S_ST( 'v', 3, 588, 367 ), /* 587 non */
++ S_ST( 'o', 3, 589, 0 ), /* 588 nonv */
++ S_ST( 'l', 3, 590, 0 ), /* 589 nonvo */
++ S_ST( 'a', 3, 591, 0 ), /* 590 nonvol */
++ S_ST( 't', 3, 592, 0 ), /* 591 nonvola */
++ S_ST( 'i', 3, 593, 0 ), /* 592 nonvolat */
++ S_ST( 'l', 3, 368, 0 ), /* 593 nonvolati */
++ S_ST( 'p', 3, 595, 586 ), /* 594 no */
++ S_ST( 'e', 3, 596, 0 ), /* 595 nop */
++ S_ST( 'e', 3, 369, 0 ), /* 596 nope */
++ S_ST( 'q', 3, 598, 594 ), /* 597 no */
++ S_ST( 'u', 3, 599, 0 ), /* 598 noq */
++ S_ST( 'e', 3, 600, 0 ), /* 599 noqu */
++ S_ST( 'r', 3, 370, 0 ), /* 600 noque */
++ S_ST( 's', 3, 602, 597 ), /* 601 no */
++ S_ST( 'e', 3, 606, 0 ), /* 602 nos */
++ S_ST( 'l', 3, 604, 0 ), /* 603 nose */
++ S_ST( 'e', 3, 605, 0 ), /* 604 nosel */
++ S_ST( 'c', 3, 371, 0 ), /* 605 nosele */
++ S_ST( 'r', 3, 607, 603 ), /* 606 nose */
++ S_ST( 'v', 3, 372, 0 ), /* 607 noser */
++ S_ST( 't', 3, 609, 601 ), /* 608 no */
++ S_ST( 'r', 3, 611, 0 ), /* 609 not */
++ S_ST( 'a', 3, 373, 0 ), /* 610 notr */
++ S_ST( 'u', 3, 612, 610 ), /* 611 notr */
++ S_ST( 's', 3, 374, 0 ), /* 612 notru */
++ S_ST( 't', 3, 375, 572 ), /* 613 n */
++ S_ST( 'p', 3, 615, 0 ), /* 614 ntp */
++ S_ST( 'o', 3, 616, 0 ), /* 615 ntpp */
++ S_ST( 'r', 3, 376, 0 ), /* 616 ntppo */
++ S_ST( 's', 3, 618, 614 ), /* 617 ntp */
++ S_ST( 'i', 3, 619, 0 ), /* 618 ntps */
++ S_ST( 'g', 3, 620, 0 ), /* 619 ntpsi */
++ S_ST( 'n', 3, 621, 0 ), /* 620 ntpsig */
++ S_ST( 'd', 3, 622, 0 ), /* 621 ntpsign */
++ S_ST( 's', 3, 623, 0 ), /* 622 ntpsignd */
++ S_ST( 'o', 3, 624, 0 ), /* 623 ntpsignds */
++ S_ST( 'c', 3, 625, 0 ), /* 624 ntpsigndso */
++ S_ST( 'k', 3, 626, 0 ), /* 625 ntpsigndsoc */
++ S_ST( 'e', 3, 377, 0 ), /* 626 ntpsigndsock */
++ S_ST( 'o', 3, 628, 570 ), /* 627 */
++ S_ST( 'r', 3, 629, 0 ), /* 628 o */
++ S_ST( 'p', 3, 630, 0 ), /* 629 or */
++ S_ST( 'h', 3, 631, 0 ), /* 630 orp */
++ S_ST( 'a', 3, 378, 0 ), /* 631 orph */
++ S_ST( 'w', 3, 633, 0 ), /* 632 orphan */
++ S_ST( 'a', 3, 634, 0 ), /* 633 orphanw */
++ S_ST( 'i', 3, 379, 0 ), /* 634 orphanwa */
++ S_ST( 'p', 3, 391, 627 ), /* 635 */
++ S_ST( 'a', 3, 637, 0 ), /* 636 p */
++ S_ST( 'n', 3, 638, 0 ), /* 637 pa */
++ S_ST( 'i', 3, 380, 0 ), /* 638 pan */
++ S_ST( 'e', 3, 640, 636 ), /* 639 p */
++ S_ST( 'e', 3, 381, 0 ), /* 640 pe */
++ S_ST( 's', 3, 642, 0 ), /* 641 peer */
++ S_ST( 't', 3, 643, 0 ), /* 642 peers */
++ S_ST( 'a', 3, 644, 0 ), /* 643 peerst */
++ S_ST( 't', 3, 382, 0 ), /* 644 peersta */
++ S_ST( 'h', 3, 646, 639 ), /* 645 p */
++ S_ST( 'o', 3, 647, 0 ), /* 646 ph */
++ S_ST( 'n', 3, 383, 0 ), /* 647 pho */
++ S_ST( 'i', 3, 384, 645 ), /* 648 p */
++ S_ST( 'f', 3, 650, 0 ), /* 649 pid */
++ S_ST( 'i', 3, 651, 0 ), /* 650 pidf */
++ S_ST( 'l', 3, 385, 0 ), /* 651 pidfi */
++ S_ST( 'o', 3, 654, 648 ), /* 652 p */
++ S_ST( 'o', 3, 386, 0 ), /* 653 po */
++ S_ST( 'r', 3, 387, 653 ), /* 654 po */
++ S_ST( 'r', 3, 662, 652 ), /* 655 p */
++ S_ST( 'e', 3, 660, 0 ), /* 656 pr */
++ S_ST( 'e', 3, 658, 0 ), /* 657 pre */
++ S_ST( 'm', 3, 659, 0 ), /* 658 pree */
++ S_ST( 'p', 3, 388, 0 ), /* 659 preem */
++ S_ST( 'f', 3, 661, 657 ), /* 660 pre */
++ S_ST( 'e', 3, 389, 0 ), /* 661 pref */
++ S_ST( 'o', 3, 675, 656 ), /* 662 pr */
++ S_ST( 'c', 3, 664, 0 ), /* 663 pro */
++ S_ST( '_', 3, 665, 0 ), /* 664 proc */
++ S_ST( 'd', 3, 666, 0 ), /* 665 proc_ */
++ S_ST( 'e', 3, 667, 0 ), /* 666 proc_d */
++ S_ST( 'l', 3, 668, 0 ), /* 667 proc_de */
++ S_ST( 'a', 3, 451, 0 ), /* 668 proc_del */
++ S_ST( 'p', 3, 670, 663 ), /* 669 pro */
++ S_ST( '_', 3, 671, 0 ), /* 670 prop */
++ S_ST( 'd', 3, 672, 0 ), /* 671 prop_ */
++ S_ST( 'e', 3, 673, 0 ), /* 672 prop_d */
++ S_ST( 'l', 3, 674, 0 ), /* 673 prop_de */
++ S_ST( 'a', 3, 450, 0 ), /* 674 prop_del */
++ S_ST( 't', 3, 676, 669 ), /* 675 pro */
++ S_ST( 'o', 3, 677, 0 ), /* 676 prot */
++ S_ST( 's', 3, 678, 0 ), /* 677 proto */
++ S_ST( 't', 3, 679, 0 ), /* 678 protos */
++ S_ST( 'a', 3, 680, 0 ), /* 679 protost */
++ S_ST( 't', 3, 390, 0 ), /* 680 protosta */
++ S_ST( 'r', 3, 712, 635 ), /* 681 */
++ S_ST( 'a', 3, 688, 0 ), /* 682 r */
++ S_ST( 'n', 3, 684, 0 ), /* 683 ra */
++ S_ST( 'd', 3, 685, 0 ), /* 684 ran */
++ S_ST( 'f', 3, 686, 0 ), /* 685 rand */
++ S_ST( 'i', 3, 687, 0 ), /* 686 randf */
++ S_ST( 'l', 3, 392, 0 ), /* 687 randfi */
++ S_ST( 'w', 3, 689, 683 ), /* 688 ra */
++ S_ST( 's', 3, 690, 0 ), /* 689 raw */
++ S_ST( 't', 3, 691, 0 ), /* 690 raws */
++ S_ST( 'a', 3, 692, 0 ), /* 691 rawst */
++ S_ST( 't', 3, 393, 0 ), /* 692 rawsta */
++ S_ST( 'e', 3, 709, 682 ), /* 693 r */
++ S_ST( 'f', 3, 695, 0 ), /* 694 re */
++ S_ST( 'i', 3, 394, 0 ), /* 695 ref */
++ S_ST( 'q', 3, 697, 694 ), /* 696 re */
++ S_ST( 'u', 3, 698, 0 ), /* 697 req */
++ S_ST( 'e', 3, 699, 0 ), /* 698 requ */
++ S_ST( 's', 3, 700, 0 ), /* 699 reque */
++ S_ST( 't', 3, 701, 0 ), /* 700 reques */
++ S_ST( 'k', 3, 702, 0 ), /* 701 request */
++ S_ST( 'e', 3, 395, 0 ), /* 702 requestk */
++ S_ST( 's', 3, 705, 696 ), /* 703 re */
++ S_ST( 'e', 3, 396, 0 ), /* 704 res */
++ S_ST( 't', 3, 706, 704 ), /* 705 res */
++ S_ST( 'r', 3, 707, 0 ), /* 706 rest */
++ S_ST( 'i', 3, 708, 0 ), /* 707 restr */
++ S_ST( 'c', 3, 397, 0 ), /* 708 restri */
++ S_ST( 'v', 3, 710, 703 ), /* 709 re */
++ S_ST( 'o', 3, 711, 0 ), /* 710 rev */
++ S_ST( 'k', 3, 398, 0 ), /* 711 revo */
++ S_ST( 'l', 3, 713, 693 ), /* 712 r */
++ S_ST( 'i', 3, 714, 0 ), /* 713 rl */
++ S_ST( 'm', 3, 715, 0 ), /* 714 rli */
++ S_ST( 'i', 3, 399, 0 ), /* 715 rlim */
++ S_ST( 's', 3, 789, 681 ), /* 716 */
++ S_ST( 'a', 3, 718, 0 ), /* 717 s */
++ S_ST( 'v', 3, 719, 0 ), /* 718 sa */
++ S_ST( 'e', 3, 720, 0 ), /* 719 sav */
++ S_ST( 'c', 3, 721, 0 ), /* 720 save */
++ S_ST( 'o', 3, 722, 0 ), /* 721 savec */
++ S_ST( 'n', 3, 723, 0 ), /* 722 saveco */
++ S_ST( 'f', 3, 724, 0 ), /* 723 savecon */
++ S_ST( 'i', 3, 725, 0 ), /* 724 saveconf */
++ S_ST( 'g', 3, 726, 0 ), /* 725 saveconfi */
++ S_ST( 'd', 3, 727, 0 ), /* 726 saveconfig */
++ S_ST( 'i', 3, 400, 0 ), /* 727 saveconfigd */
++ S_ST( 'e', 3, 738, 717 ), /* 728 s */
++ S_ST( 'r', 3, 730, 0 ), /* 729 se */
++ S_ST( 'v', 3, 731, 0 ), /* 730 ser */
++ S_ST( 'e', 3, 401, 0 ), /* 731 serv */
++ S_ST( '_', 3, 733, 0 ), /* 732 server */
++ S_ST( 'o', 3, 734, 0 ), /* 733 server_ */
++ S_ST( 'f', 3, 735, 0 ), /* 734 server_o */
++ S_ST( 'f', 3, 736, 0 ), /* 735 server_of */
++ S_ST( 's', 3, 737, 0 ), /* 736 server_off */
++ S_ST( 'e', 3, 445, 0 ), /* 737 server_offs */
++ S_ST( 't', 3, 739, 729 ), /* 738 se */
++ S_ST( 'v', 3, 740, 0 ), /* 739 set */
++ S_ST( 'a', 3, 402, 0 ), /* 740 setv */
++ S_ST( 'i', 3, 742, 728 ), /* 741 s */
++ S_ST( 'm', 3, 743, 0 ), /* 742 si */
++ S_ST( 'u', 3, 744, 0 ), /* 743 sim */
++ S_ST( 'l', 3, 745, 0 ), /* 744 simu */
++ S_ST( 'a', 3, 746, 0 ), /* 745 simul */
++ S_ST( 't', 3, 747, 0 ), /* 746 simula */
++ S_ST( 'i', 3, 748, 442 ), /* 747 simulat */
++ S_ST( 'o', 3, 749, 0 ), /* 748 simulati */
++ S_ST( 'n', 3, 750, 0 ), /* 749 simulatio */
++ S_ST( '_', 3, 751, 0 ), /* 750 simulation */
++ S_ST( 'd', 3, 752, 0 ), /* 751 simulation_ */
++ S_ST( 'u', 3, 753, 0 ), /* 752 simulation_d */
++ S_ST( 'r', 3, 754, 0 ), /* 753 simulation_du */
++ S_ST( 'a', 3, 755, 0 ), /* 754 simulation_dur */
++ S_ST( 't', 3, 756, 0 ), /* 755 simulation_dura */
++ S_ST( 'i', 3, 757, 0 ), /* 756 simulation_durat */
++ S_ST( 'o', 3, 444, 0 ), /* 757 simulation_durati */
++ S_ST( 'o', 3, 759, 741 ), /* 758 s */
++ S_ST( 'u', 3, 760, 0 ), /* 759 so */
++ S_ST( 'r', 3, 761, 0 ), /* 760 sou */
++ S_ST( 'c', 3, 403, 0 ), /* 761 sour */
++ S_ST( 't', 3, 785, 758 ), /* 762 s */
++ S_ST( 'a', 3, 769, 0 ), /* 763 st */
++ S_ST( 'c', 3, 765, 0 ), /* 764 sta */
++ S_ST( 'k', 3, 766, 0 ), /* 765 stac */
++ S_ST( 's', 3, 767, 0 ), /* 766 stack */
++ S_ST( 'i', 3, 768, 0 ), /* 767 stacks */
++ S_ST( 'z', 3, 404, 0 ), /* 768 stacksi */
++ S_ST( 't', 3, 406, 764 ), /* 769 sta */
++ S_ST( 'i', 3, 771, 0 ), /* 770 stat */
++ S_ST( 's', 3, 772, 0 ), /* 771 stati */
++ S_ST( 't', 3, 773, 0 ), /* 772 statis */
++ S_ST( 'i', 3, 774, 0 ), /* 773 statist */
++ S_ST( 'c', 3, 405, 0 ), /* 774 statisti */
++ S_ST( 'd', 3, 776, 0 ), /* 775 stats */
++ S_ST( 'i', 3, 407, 0 ), /* 776 statsd */
++ S_ST( 'e', 3, 408, 763 ), /* 777 st */
++ S_ST( 'b', 3, 779, 0 ), /* 778 step */
++ S_ST( 'a', 3, 780, 0 ), /* 779 stepb */
++ S_ST( 'c', 3, 409, 0 ), /* 780 stepba */
++ S_ST( 'f', 3, 782, 778 ), /* 781 step */
++ S_ST( 'w', 3, 410, 0 ), /* 782 stepf */
++ S_ST( 'o', 3, 784, 781 ), /* 783 step */
++ S_ST( 'u', 3, 411, 0 ), /* 784 stepo */
++ S_ST( 'r', 3, 786, 777 ), /* 785 st */
++ S_ST( 'a', 3, 787, 0 ), /* 786 str */
++ S_ST( 't', 3, 788, 0 ), /* 787 stra */
++ S_ST( 'u', 3, 412, 0 ), /* 788 strat */
++ S_ST( 'y', 3, 414, 762 ), /* 789 s */
++ S_ST( 's', 3, 791, 0 ), /* 790 sys */
++ S_ST( 't', 3, 792, 0 ), /* 791 syss */
++ S_ST( 'a', 3, 793, 0 ), /* 792 sysst */
++ S_ST( 't', 3, 415, 0 ), /* 793 syssta */
++ S_ST( 't', 3, 820, 716 ), /* 794 */
++ S_ST( 'i', 3, 806, 0 ), /* 795 t */
++ S_ST( 'c', 3, 416, 0 ), /* 796 ti */
++ S_ST( 'm', 3, 799, 796 ), /* 797 ti */
++ S_ST( 'e', 3, 419, 0 ), /* 798 tim */
++ S_ST( 'i', 3, 800, 798 ), /* 799 tim */
++ S_ST( 'n', 3, 801, 0 ), /* 800 timi */
++ S_ST( 'g', 3, 802, 0 ), /* 801 timin */
++ S_ST( 's', 3, 803, 0 ), /* 802 timing */
++ S_ST( 't', 3, 804, 0 ), /* 803 timings */
++ S_ST( 'a', 3, 805, 0 ), /* 804 timingst */
++ S_ST( 't', 3, 420, 0 ), /* 805 timingsta */
++ S_ST( 'n', 3, 807, 797 ), /* 806 ti */
++ S_ST( 'k', 3, 808, 0 ), /* 807 tin */
++ S_ST( 'e', 3, 421, 0 ), /* 808 tink */
++ S_ST( 'o', 3, 422, 795 ), /* 809 t */
++ S_ST( 'r', 3, 812, 809 ), /* 810 t */
++ S_ST( 'a', 3, 423, 0 ), /* 811 tr */
++ S_ST( 'u', 3, 813, 811 ), /* 812 tr */
++ S_ST( 's', 3, 814, 424 ), /* 813 tru */
++ S_ST( 't', 3, 815, 0 ), /* 814 trus */
++ S_ST( 'e', 3, 816, 0 ), /* 815 trust */
++ S_ST( 'd', 3, 817, 0 ), /* 816 truste */
++ S_ST( 'k', 3, 818, 0 ), /* 817 trusted */
++ S_ST( 'e', 3, 425, 0 ), /* 818 trustedk */
++ S_ST( 't', 3, 426, 810 ), /* 819 t */
++ S_ST( 'y', 3, 821, 819 ), /* 820 t */
++ S_ST( 'p', 3, 427, 0 ), /* 821 ty */
++ S_ST( 'u', 3, 823, 794 ), /* 822 */
++ S_ST( 'n', 3, 829, 0 ), /* 823 u */
++ S_ST( 'c', 3, 825, 0 ), /* 824 un */
++ S_ST( 'o', 3, 826, 0 ), /* 825 unc */
++ S_ST( 'n', 3, 827, 0 ), /* 826 unco */
++ S_ST( 'f', 3, 828, 0 ), /* 827 uncon */
++ S_ST( 'i', 3, 432, 0 ), /* 828 unconf */
++ S_ST( 'p', 3, 830, 824 ), /* 829 un */
++ S_ST( 'e', 3, 831, 0 ), /* 830 unp */
++ S_ST( 'e', 3, 433, 0 ), /* 831 unpe */
++ S_ST( '_', 3, 852, 0 ), /* 832 unpeer */
++ S_ST( 'c', 3, 834, 0 ), /* 833 unpeer_ */
++ S_ST( 'r', 3, 835, 0 ), /* 834 unpeer_c */
++ S_ST( 'y', 3, 836, 0 ), /* 835 unpeer_cr */
++ S_ST( 'p', 3, 837, 0 ), /* 836 unpeer_cry */
++ S_ST( 't', 3, 838, 0 ), /* 837 unpeer_cryp */
++ S_ST( 'o', 3, 839, 0 ), /* 838 unpeer_crypt */
++ S_ST( '_', 3, 844, 0 ), /* 839 unpeer_crypto */
++ S_ST( 'e', 3, 841, 0 ), /* 840 unpeer_crypto_ */
++ S_ST( 'a', 3, 842, 0 ), /* 841 unpeer_crypto_e */
++ S_ST( 'r', 3, 843, 0 ), /* 842 unpeer_crypto_ea */
++ S_ST( 'l', 3, 429, 0 ), /* 843 unpeer_crypto_ear */
++ S_ST( 'n', 3, 845, 840 ), /* 844 unpeer_crypto_ */
++ S_ST( 'a', 3, 846, 0 ), /* 845 unpeer_crypto_n */
++ S_ST( 'k', 3, 847, 0 ), /* 846 unpeer_crypto_na */
++ S_ST( '_', 3, 848, 0 ), /* 847 unpeer_crypto_nak */
++ S_ST( 'e', 3, 849, 0 ), /* 848 unpeer_crypto_nak_ */
++ S_ST( 'a', 3, 850, 0 ), /* 849 unpeer_crypto_nak_e */
++ S_ST( 'r', 3, 851, 0 ), /* 850 unpeer_crypto_nak_ea */
++ S_ST( 'l', 3, 430, 0 ), /* 851 unpeer_crypto_nak_ear */
++ S_ST( 'd', 3, 853, 833 ), /* 852 unpeer_ */
++ S_ST( 'i', 3, 854, 0 ), /* 853 unpeer_d */
++ S_ST( 'g', 3, 855, 0 ), /* 854 unpeer_di */
++ S_ST( 'e', 3, 856, 0 ), /* 855 unpeer_dig */
++ S_ST( 's', 3, 857, 0 ), /* 856 unpeer_dige */
++ S_ST( 't', 3, 858, 0 ), /* 857 unpeer_diges */
++ S_ST( '_', 3, 859, 0 ), /* 858 unpeer_digest */
++ S_ST( 'e', 3, 860, 0 ), /* 859 unpeer_digest_ */
++ S_ST( 'a', 3, 861, 0 ), /* 860 unpeer_digest_e */
++ S_ST( 'r', 3, 862, 0 ), /* 861 unpeer_digest_ea */
++ S_ST( 'l', 3, 431, 0 ), /* 862 unpeer_digest_ear */
++ S_ST( 'v', 3, 864, 822 ), /* 863 */
++ S_ST( 'e', 3, 865, 0 ), /* 864 v */
++ S_ST( 'r', 3, 866, 0 ), /* 865 ve */
++ S_ST( 's', 3, 867, 0 ), /* 866 ver */
++ S_ST( 'i', 3, 868, 0 ), /* 867 vers */
++ S_ST( 'o', 3, 434, 0 ), /* 868 versi */
++ S_ST( 'w', 3, 876, 863 ), /* 869 */
++ S_ST( 'a', 3, 871, 0 ), /* 870 w */
++ S_ST( 'n', 3, 872, 0 ), /* 871 wa */
++ S_ST( 'd', 3, 873, 0 ), /* 872 wan */
++ S_ST( 'e', 3, 448, 0 ), /* 873 wand */
++ S_ST( 'e', 3, 875, 870 ), /* 874 w */
++ S_ST( 'e', 3, 436, 0 ), /* 875 we */
++ S_ST( 'i', 3, 877, 874 ), /* 876 w */
++ S_ST( 'l', 3, 878, 0 ), /* 877 wi */
++ S_ST( 'd', 3, 879, 0 ), /* 878 wil */
++ S_ST( 'c', 3, 880, 0 ), /* 879 wild */
++ S_ST( 'a', 3, 881, 0 ), /* 880 wildc */
++ S_ST( 'r', 3, 437, 0 ), /* 881 wildca */
++ S_ST( 'x', 3, 883, 869 ), /* 882 */
++ S_ST( 'l', 3, 884, 0 ), /* 883 x */
++ S_ST( 'e', 3, 885, 0 ), /* 884 xl */
++ S_ST( 'a', 3, 886, 0 ), /* 885 xle */
++ S_ST( 'v', 3, 438, 0 ), /* 886 xlea */
++ S_ST( 'y', 3, 888, 882 ), /* 887 [initial state] */
++ S_ST( 'e', 3, 889, 0 ), /* 888 y */
++ S_ST( 'a', 3, 439, 0 ) /* 889 ye */
+ };
+
+Index: contrib/ntp/ntpd/ntp_parser.c
+===================================================================
+--- contrib/ntp/ntpd/ntp_parser.c (revision 294707)
++++ contrib/ntp/ntpd/ntp_parser.c (working copy)
+@@ -1,19 +1,19 @@
+-/* A Bison parser, made by GNU Bison 3.0.2. */
++/* A Bison parser, made by GNU Bison 2.7.12-4996. */
+
+ /* Bison implementation for Yacc-like parsers in C
+-
+- Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+-
++
++ Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
++
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+-
++
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+-
++
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see . */
+
+@@ -26,7 +26,7 @@
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+-
++
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+@@ -44,7 +44,7 @@
+ #define YYBISON 1
+
+ /* Bison version. */
+-#define YYBISON_VERSION "3.0.2"
++#define YYBISON_VERSION "2.7.12-4996"
+
+ /* Skeleton name. */
+ #define YYSKELETON_NAME "yacc.c"
+@@ -62,7 +62,8 @@
+
+
+ /* Copy the first part of user declarations. */
+-#line 11 "../../ntpd/ntp_parser.y" /* yacc.c:339 */
++/* Line 371 of yacc.c */
++#line 11 "../../ntpd/ntp_parser.y"
+
+ #ifdef HAVE_CONFIG_H
+ # include
+@@ -96,13 +97,14 @@
+ # define ONLY_SIM(a) NULL
+ #endif
+
+-#line 100 "../../ntpd/ntp_parser.c" /* yacc.c:339 */
++/* Line 371 of yacc.c */
++#line 102 "ntp_parser.c"
+
+-# ifndef YY_NULLPTR
++# ifndef YY_NULL
+ # if defined __cplusplus && 201103L <= __cplusplus
+-# define YY_NULLPTR nullptr
++# define YY_NULL nullptr
+ # else
+-# define YY_NULLPTR 0
++# define YY_NULL 0
+ # endif
+ # endif
+
+@@ -116,9 +118,9 @@
+
+ /* In a future release of Bison, this section will be replaced
+ by #include "y.tab.h". */
+-#ifndef YY_YY__NTPD_NTP_PARSER_H_INCLUDED
+-# define YY_YY__NTPD_NTP_PARSER_H_INCLUDED
+-/* Debug traces. */
++#ifndef YY_YY_NTP_PARSER_H_INCLUDED
++# define YY_YY_NTP_PARSER_H_INCLUDED
++/* Enabling traces. */
+ #ifndef YYDEBUG
+ # define YYDEBUG 1
+ #endif
+@@ -126,203 +128,207 @@
+ extern int yydebug;
+ #endif
+
+-/* Token type. */
++/* Tokens. */
+ #ifndef YYTOKENTYPE
+ # define YYTOKENTYPE
+- enum yytokentype
+- {
+- T_Abbrev = 258,
+- T_Age = 259,
+- T_All = 260,
+- T_Allan = 261,
+- T_Allpeers = 262,
+- T_Auth = 263,
+- T_Autokey = 264,
+- T_Automax = 265,
+- T_Average = 266,
+- T_Bclient = 267,
+- T_Beacon = 268,
+- T_Broadcast = 269,
+- T_Broadcastclient = 270,
+- T_Broadcastdelay = 271,
+- T_Burst = 272,
+- T_Calibrate = 273,
+- T_Ceiling = 274,
+- T_Clockstats = 275,
+- T_Cohort = 276,
+- T_ControlKey = 277,
+- T_Crypto = 278,
+- T_Cryptostats = 279,
+- T_Ctl = 280,
+- T_Day = 281,
+- T_Default = 282,
+- T_Digest = 283,
+- T_Disable = 284,
+- T_Discard = 285,
+- T_Dispersion = 286,
+- T_Double = 287,
+- T_Driftfile = 288,
+- T_Drop = 289,
+- T_Dscp = 290,
+- T_Ellipsis = 291,
+- T_Enable = 292,
+- T_End = 293,
+- T_False = 294,
+- T_File = 295,
+- T_Filegen = 296,
+- T_Filenum = 297,
+- T_Flag1 = 298,
+- T_Flag2 = 299,
+- T_Flag3 = 300,
+- T_Flag4 = 301,
+- T_Flake = 302,
+- T_Floor = 303,
+- T_Freq = 304,
+- T_Fudge = 305,
+- T_Host = 306,
+- T_Huffpuff = 307,
+- T_Iburst = 308,
+- T_Ident = 309,
+- T_Ignore = 310,
+- T_Incalloc = 311,
+- T_Incmem = 312,
+- T_Initalloc = 313,
+- T_Initmem = 314,
+- T_Includefile = 315,
+- T_Integer = 316,
+- T_Interface = 317,
+- T_Intrange = 318,
+- T_Io = 319,
+- T_Ipv4 = 320,
+- T_Ipv4_flag = 321,
+- T_Ipv6 = 322,
+- T_Ipv6_flag = 323,
+- T_Kernel = 324,
+- T_Key = 325,
+- T_Keys = 326,
+- T_Keysdir = 327,
+- T_Kod = 328,
+- T_Mssntp = 329,
+- T_Leapfile = 330,
+- T_Leapsmearinterval = 331,
+- T_Limited = 332,
+- T_Link = 333,
+- T_Listen = 334,
+- T_Logconfig = 335,
+- T_Logfile = 336,
+- T_Loopstats = 337,
+- T_Lowpriotrap = 338,
+- T_Manycastclient = 339,
+- T_Manycastserver = 340,
+- T_Mask = 341,
+- T_Maxage = 342,
+- T_Maxclock = 343,
+- T_Maxdepth = 344,
+- T_Maxdist = 345,
+- T_Maxmem = 346,
+- T_Maxpoll = 347,
+- T_Mdnstries = 348,
+- T_Mem = 349,
+- T_Memlock = 350,
+- T_Minclock = 351,
+- T_Mindepth = 352,
+- T_Mindist = 353,
+- T_Minimum = 354,
+- T_Minpoll = 355,
+- T_Minsane = 356,
+- T_Mode = 357,
+- T_Mode7 = 358,
+- T_Monitor = 359,
+- T_Month = 360,
+- T_Mru = 361,
+- T_Multicastclient = 362,
+- T_Nic = 363,
+- T_Nolink = 364,
+- T_Nomodify = 365,
+- T_Nomrulist = 366,
+- T_None = 367,
+- T_Nonvolatile = 368,
+- T_Nopeer = 369,
+- T_Noquery = 370,
+- T_Noselect = 371,
+- T_Noserve = 372,
+- T_Notrap = 373,
+- T_Notrust = 374,
+- T_Ntp = 375,
+- T_Ntpport = 376,
+- T_NtpSignDsocket = 377,
+- T_Orphan = 378,
+- T_Orphanwait = 379,
+- T_Panic = 380,
+- T_Peer = 381,
+- T_Peerstats = 382,
+- T_Phone = 383,
+- T_Pid = 384,
+- T_Pidfile = 385,
+- T_Pool = 386,
+- T_Port = 387,
+- T_Preempt = 388,
+- T_Prefer = 389,
+- T_Protostats = 390,
+- T_Pw = 391,
+- T_Randfile = 392,
+- T_Rawstats = 393,
+- T_Refid = 394,
+- T_Requestkey = 395,
+- T_Reset = 396,
+- T_Restrict = 397,
+- T_Revoke = 398,
+- T_Rlimit = 399,
+- T_Saveconfigdir = 400,
+- T_Server = 401,
+- T_Setvar = 402,
+- T_Source = 403,
+- T_Stacksize = 404,
+- T_Statistics = 405,
+- T_Stats = 406,
+- T_Statsdir = 407,
+- T_Step = 408,
+- T_Stepback = 409,
+- T_Stepfwd = 410,
+- T_Stepout = 411,
+- T_Stratum = 412,
+- T_String = 413,
+- T_Sys = 414,
+- T_Sysstats = 415,
+- T_Tick = 416,
+- T_Time1 = 417,
+- T_Time2 = 418,
+- T_Timer = 419,
+- T_Timingstats = 420,
+- T_Tinker = 421,
+- T_Tos = 422,
+- T_Trap = 423,
+- T_True = 424,
+- T_Trustedkey = 425,
+- T_Ttl = 426,
+- T_Type = 427,
+- T_U_int = 428,
+- T_Unconfig = 429,
+- T_Unpeer = 430,
+- T_Version = 431,
+- T_WanderThreshold = 432,
+- T_Week = 433,
+- T_Wildcard = 434,
+- T_Xleave = 435,
+- T_Year = 436,
+- T_Flag = 437,
+- T_EOC = 438,
+- T_Simulate = 439,
+- T_Beep_Delay = 440,
+- T_Sim_Duration = 441,
+- T_Server_Offset = 442,
+- T_Duration = 443,
+- T_Freq_Offset = 444,
+- T_Wander = 445,
+- T_Jitter = 446,
+- T_Prop_Delay = 447,
+- T_Proc_Delay = 448
+- };
++ /* Put the tokens into the symbol table, so that GDB and other debuggers
++ know about them. */
++ enum yytokentype {
++ T_Abbrev = 258,
++ T_Age = 259,
++ T_All = 260,
++ T_Allan = 261,
++ T_Allpeers = 262,
++ T_Auth = 263,
++ T_Autokey = 264,
++ T_Automax = 265,
++ T_Average = 266,
++ T_Bclient = 267,
++ T_Beacon = 268,
++ T_Broadcast = 269,
++ T_Broadcastclient = 270,
++ T_Broadcastdelay = 271,
++ T_Burst = 272,
++ T_Calibrate = 273,
++ T_Ceiling = 274,
++ T_Clockstats = 275,
++ T_Cohort = 276,
++ T_ControlKey = 277,
++ T_Crypto = 278,
++ T_Cryptostats = 279,
++ T_Ctl = 280,
++ T_Day = 281,
++ T_Default = 282,
++ T_Digest = 283,
++ T_Disable = 284,
++ T_Discard = 285,
++ T_Dispersion = 286,
++ T_Double = 287,
++ T_Driftfile = 288,
++ T_Drop = 289,
++ T_Dscp = 290,
++ T_Ellipsis = 291,
++ T_Enable = 292,
++ T_End = 293,
++ T_False = 294,
++ T_File = 295,
++ T_Filegen = 296,
++ T_Filenum = 297,
++ T_Flag1 = 298,
++ T_Flag2 = 299,
++ T_Flag3 = 300,
++ T_Flag4 = 301,
++ T_Flake = 302,
++ T_Floor = 303,
++ T_Freq = 304,
++ T_Fudge = 305,
++ T_Host = 306,
++ T_Huffpuff = 307,
++ T_Iburst = 308,
++ T_Ident = 309,
++ T_Ignore = 310,
++ T_Incalloc = 311,
++ T_Incmem = 312,
++ T_Initalloc = 313,
++ T_Initmem = 314,
++ T_Includefile = 315,
++ T_Integer = 316,
++ T_Interface = 317,
++ T_Intrange = 318,
++ T_Io = 319,
++ T_Ipv4 = 320,
++ T_Ipv4_flag = 321,
++ T_Ipv6 = 322,
++ T_Ipv6_flag = 323,
++ T_Kernel = 324,
++ T_Key = 325,
++ T_Keys = 326,
++ T_Keysdir = 327,
++ T_Kod = 328,
++ T_Mssntp = 329,
++ T_Leapfile = 330,
++ T_Leapsmearinterval = 331,
++ T_Limited = 332,
++ T_Link = 333,
++ T_Listen = 334,
++ T_Logconfig = 335,
++ T_Logfile = 336,
++ T_Loopstats = 337,
++ T_Lowpriotrap = 338,
++ T_Manycastclient = 339,
++ T_Manycastserver = 340,
++ T_Mask = 341,
++ T_Maxage = 342,
++ T_Maxclock = 343,
++ T_Maxdepth = 344,
++ T_Maxdist = 345,
++ T_Maxmem = 346,
++ T_Maxpoll = 347,
++ T_Mdnstries = 348,
++ T_Mem = 349,
++ T_Memlock = 350,
++ T_Minclock = 351,
++ T_Mindepth = 352,
++ T_Mindist = 353,
++ T_Minimum = 354,
++ T_Minpoll = 355,
++ T_Minsane = 356,
++ T_Mode = 357,
++ T_Mode7 = 358,
++ T_Monitor = 359,
++ T_Month = 360,
++ T_Mru = 361,
++ T_Multicastclient = 362,
++ T_Nic = 363,
++ T_Nolink = 364,
++ T_Nomodify = 365,
++ T_Nomrulist = 366,
++ T_None = 367,
++ T_Nonvolatile = 368,
++ T_Nopeer = 369,
++ T_Noquery = 370,
++ T_Noselect = 371,
++ T_Noserve = 372,
++ T_Notrap = 373,
++ T_Notrust = 374,
++ T_Ntp = 375,
++ T_Ntpport = 376,
++ T_NtpSignDsocket = 377,
++ T_Orphan = 378,
++ T_Orphanwait = 379,
++ T_Panic = 380,
++ T_Peer = 381,
++ T_Peerstats = 382,
++ T_Phone = 383,
++ T_Pid = 384,
++ T_Pidfile = 385,
++ T_Pool = 386,
++ T_Port = 387,
++ T_Preempt = 388,
++ T_Prefer = 389,
++ T_Protostats = 390,
++ T_Pw = 391,
++ T_Randfile = 392,
++ T_Rawstats = 393,
++ T_Refid = 394,
++ T_Requestkey = 395,
++ T_Reset = 396,
++ T_Restrict = 397,
++ T_Revoke = 398,
++ T_Rlimit = 399,
++ T_Saveconfigdir = 400,
++ T_Server = 401,
++ T_Setvar = 402,
++ T_Source = 403,
++ T_Stacksize = 404,
++ T_Statistics = 405,
++ T_Stats = 406,
++ T_Statsdir = 407,
++ T_Step = 408,
++ T_Stepback = 409,
++ T_Stepfwd = 410,
++ T_Stepout = 411,
++ T_Stratum = 412,
++ T_String = 413,
++ T_Sys = 414,
++ T_Sysstats = 415,
++ T_Tick = 416,
++ T_Time1 = 417,
++ T_Time2 = 418,
++ T_Timer = 419,
++ T_Timingstats = 420,
++ T_Tinker = 421,
++ T_Tos = 422,
++ T_Trap = 423,
++ T_True = 424,
++ T_Trustedkey = 425,
++ T_Ttl = 426,
++ T_Type = 427,
++ T_U_int = 428,
++ T_UEcrypto = 429,
++ T_UEcryptonak = 430,
++ T_UEdigest = 431,
++ T_Unconfig = 432,
++ T_Unpeer = 433,
++ T_Version = 434,
++ T_WanderThreshold = 435,
++ T_Week = 436,
++ T_Wildcard = 437,
++ T_Xleave = 438,
++ T_Year = 439,
++ T_Flag = 440,
++ T_EOC = 441,
++ T_Simulate = 442,
++ T_Beep_Delay = 443,
++ T_Sim_Duration = 444,
++ T_Server_Offset = 445,
++ T_Duration = 446,
++ T_Freq_Offset = 447,
++ T_Wander = 448,
++ T_Jitter = 449,
++ T_Prop_Delay = 450,
++ T_Proc_Delay = 451
++ };
+ #endif
+ /* Tokens. */
+ #define T_Abbrev 258
+@@ -496,33 +502,37 @@ extern int yydebug;
+ #define T_Ttl 426
+ #define T_Type 427
+ #define T_U_int 428
+-#define T_Unconfig 429
+-#define T_Unpeer 430
+-#define T_Version 431
+-#define T_WanderThreshold 432
+-#define T_Week 433
+-#define T_Wildcard 434
+-#define T_Xleave 435
+-#define T_Year 436
+-#define T_Flag 437
+-#define T_EOC 438
+-#define T_Simulate 439
+-#define T_Beep_Delay 440
+-#define T_Sim_Duration 441
+-#define T_Server_Offset 442
+-#define T_Duration 443
+-#define T_Freq_Offset 444
+-#define T_Wander 445
+-#define T_Jitter 446
+-#define T_Prop_Delay 447
+-#define T_Proc_Delay 448
++#define T_UEcrypto 429
++#define T_UEcryptonak 430
++#define T_UEdigest 431
++#define T_Unconfig 432
++#define T_Unpeer 433
++#define T_Version 434
++#define T_WanderThreshold 435
++#define T_Week 436
++#define T_Wildcard 437
++#define T_Xleave 438
++#define T_Year 439
++#define T_Flag 440
++#define T_EOC 441
++#define T_Simulate 442
++#define T_Beep_Delay 443
++#define T_Sim_Duration 444
++#define T_Server_Offset 445
++#define T_Duration 446
++#define T_Freq_Offset 447
++#define T_Wander 448
++#define T_Jitter 449
++#define T_Prop_Delay 450
++#define T_Proc_Delay 451
+
+-/* Value type. */
++
++
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+-typedef union YYSTYPE YYSTYPE;
+-union YYSTYPE
++typedef union YYSTYPE
+ {
+-#line 51 "../../ntpd/ntp_parser.y" /* yacc.c:355 */
++/* Line 387 of yacc.c */
++#line 51 "../../ntpd/ntp_parser.y"
+
+ char * String;
+ double Double;
+@@ -541,22 +551,37 @@ extern int yydebug;
+ script_info * Sim_script;
+ script_info_fifo * Sim_script_fifo;
+
+-#line 545 "../../ntpd/ntp_parser.c" /* yacc.c:355 */
+-};
++
++/* Line 387 of yacc.c */
++#line 557 "ntp_parser.c"
++} YYSTYPE;
+ # define YYSTYPE_IS_TRIVIAL 1
++# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ #endif
+
+-
+ extern YYSTYPE yylval;
+
++#ifdef YYPARSE_PARAM
++#if defined __STDC__ || defined __cplusplus
++int yyparse (void *YYPARSE_PARAM);
++#else
++int yyparse ();
++#endif
++#else /* ! YYPARSE_PARAM */
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void);
++#else
++int yyparse ();
++#endif
++#endif /* ! YYPARSE_PARAM */
+
+-#endif /* !YY_YY__NTPD_NTP_PARSER_H_INCLUDED */
++#endif /* !YY_YY_NTP_PARSER_H_INCLUDED */
+
+ /* Copy the second part of user declarations. */
+
+-#line 560 "../../ntpd/ntp_parser.c" /* yacc.c:358 */
++/* Line 390 of yacc.c */
++#line 585 "ntp_parser.c"
+
+ #ifdef short
+ # undef short
+@@ -570,8 +595,11 @@ typedef unsigned char yytype_uint8;
+
+ #ifdef YYTYPE_INT8
+ typedef YYTYPE_INT8 yytype_int8;
++#elif (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
++typedef signed char yytype_int8;
+ #else
+-typedef signed char yytype_int8;
++typedef short int yytype_int8;
+ #endif
+
+ #ifdef YYTYPE_UINT16
+@@ -591,7 +619,8 @@ typedef short int yytype_int16;
+ # define YYSIZE_T __SIZE_TYPE__
+ # elif defined size_t
+ # define YYSIZE_T size_t
+-# elif ! defined YYSIZE_T
++# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ # include /* INFRINGES ON USER NAME SPACE */
+ # define YYSIZE_T size_t
+ # else
+@@ -613,33 +642,14 @@ typedef short int yytype_int16;
+ # endif
+ #endif
+
+-#ifndef YY_ATTRIBUTE
+-# if (defined __GNUC__ \
+- && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
+- || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+-# define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+-# else
+-# define YY_ATTRIBUTE(Spec) /* empty */
++#ifndef __attribute__
++/* This feature is available in gcc versions 2.5 and later. */
++# if (! defined __GNUC__ || __GNUC__ < 2 \
++ || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
++# define __attribute__(Spec) /* empty */
+ # endif
+ #endif
+
+-#ifndef YY_ATTRIBUTE_PURE
+-# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
+-#endif
+-
+-#ifndef YY_ATTRIBUTE_UNUSED
+-# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+-#endif
+-
+-#if !defined _Noreturn \
+- && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+-# if defined _MSC_VER && 1200 <= _MSC_VER
+-# define _Noreturn __declspec (noreturn)
+-# else
+-# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+-# endif
+-#endif
+-
+ /* Suppress unused-variable warnings by "using" E. */
+ #if ! defined lint || defined __GNUC__
+ # define YYUSE(E) ((void) (E))
+@@ -647,26 +657,25 @@ typedef short int yytype_int16;
+ # define YYUSE(E) /* empty */
+ #endif
+
+-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+-/* Suppress an incorrect diagnostic about yylval being uninitialized. */
+-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+- _Pragma ("GCC diagnostic push") \
+- _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+- _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+-# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+- _Pragma ("GCC diagnostic pop")
++
++/* Identity function, used to suppress warnings about constant conditions. */
++#ifndef lint
++# define YYID(N) (N)
+ #else
+-# define YY_INITIAL_VALUE(Value) Value
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
++static int
++YYID (int yyi)
++#else
++static int
++YYID (yyi)
++ int yyi;
+ #endif
+-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
++{
++ return yyi;
++}
+ #endif
+-#ifndef YY_INITIAL_VALUE
+-# define YY_INITIAL_VALUE(Value) /* Nothing. */
+-#endif
+
+-
+ #if ! defined yyoverflow || YYERROR_VERBOSE
+
+ /* The parser invokes alloca or malloc; define the necessary symbols. */
+@@ -684,7 +693,8 @@ typedef short int yytype_int16;
+ # define alloca _alloca
+ # else
+ # define YYSTACK_ALLOC alloca
+-# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
++# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ # include /* INFRINGES ON USER NAME SPACE */
+ /* Use EXIT_SUCCESS as a witness for stdlib.h. */
+ # ifndef EXIT_SUCCESS
+@@ -696,8 +706,8 @@ typedef short int yytype_int16;
+ # endif
+
+ # ifdef YYSTACK_ALLOC
+- /* Pacify GCC's 'empty if-body' warning. */
+-# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
++ /* Pacify GCC's `empty if-body' warning. */
++# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+ # ifndef YYSTACK_ALLOC_MAXIMUM
+ /* The OS might guarantee only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+@@ -713,7 +723,7 @@ typedef short int yytype_int16;
+ # endif
+ # if (defined __cplusplus && ! defined EXIT_SUCCESS \
+ && ! ((defined YYMALLOC || defined malloc) \
+- && (defined YYFREE || defined free)))
++ && (defined YYFREE || defined free)))
+ # include /* INFRINGES ON USER NAME SPACE */
+ # ifndef EXIT_SUCCESS
+ # define EXIT_SUCCESS 0
+@@ -721,13 +731,15 @@ typedef short int yytype_int16;
+ # endif
+ # ifndef YYMALLOC
+ # define YYMALLOC malloc
+-# if ! defined malloc && ! defined EXIT_SUCCESS
++# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+ # endif
+ # endif
+ # ifndef YYFREE
+ # define YYFREE free
+-# if ! defined free && ! defined EXIT_SUCCESS
++# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ void free (void *); /* INFRINGES ON USER NAME SPACE */
+ # endif
+ # endif
+@@ -737,7 +749,7 @@ void free (void *); /* INFRINGES ON USER NAME SPAC
+
+ #if (! defined yyoverflow \
+ && (! defined __cplusplus \
+- || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
++ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+ /* A type that is properly aligned for any stack member. */
+ union yyalloc
+@@ -762,16 +774,16 @@ union yyalloc
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+-# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
+- do \
+- { \
+- YYSIZE_T yynewbytes; \
+- YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
+- Stack = &yyptr->Stack_alloc; \
+- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+- yyptr += yynewbytes / sizeof (*yyptr); \
+- } \
+- while (0)
++# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
++ do \
++ { \
++ YYSIZE_T yynewbytes; \
++ YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
++ Stack = &yyptr->Stack_alloc; \
++ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
++ yyptr += yynewbytes / sizeof (*yyptr); \
++ } \
++ while (YYID (0))
+
+ #endif
+
+@@ -790,35 +802,33 @@ union yyalloc
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (Dst)[yyi] = (Src)[yyi]; \
+ } \
+- while (0)
++ while (YYID (0))
+ # endif
+ # endif
+ #endif /* !YYCOPY_NEEDED */
+
+ /* YYFINAL -- State number of the termination state. */
+-#define YYFINAL 210
++#define YYFINAL 213
+ /* YYLAST -- Last index in YYTABLE. */
+-#define YYLAST 647
++#define YYLAST 624
+
+ /* YYNTOKENS -- Number of terminals. */
+-#define YYNTOKENS 199
++#define YYNTOKENS 202
+ /* YYNNTS -- Number of nonterminals. */
+ #define YYNNTS 105
+ /* YYNRULES -- Number of rules. */
+-#define YYNRULES 313
+-/* YYNSTATES -- Number of states. */
+-#define YYNSTATES 419
++#define YYNRULES 316
++/* YYNRULES -- Number of states. */
++#define YYNSTATES 422
+
+-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+- by yylex, with out-of-bounds checking. */
++/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+ #define YYUNDEFTOK 2
+-#define YYMAXUTOK 448
++#define YYMAXUTOK 451
+
+-#define YYTRANSLATE(YYX) \
++#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+-/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+- as returned by yylex, without out-of-bounds checking. */
++/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+ static const yytype_uint8 yytranslate[] =
+ {
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+@@ -825,15 +835,15 @@ static const yytype_uint8 yytranslate[] =
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+- 195, 196, 2, 2, 2, 2, 2, 2, 2, 2,
++ 198, 199, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+- 2, 194, 2, 2, 2, 2, 2, 2, 2, 2,
++ 2, 197, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+- 2, 2, 2, 197, 2, 198, 2, 2, 2, 2,
++ 2, 2, 2, 200, 2, 201, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+@@ -865,45 +875,166 @@ static const yytype_uint8 yytranslate[] =
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
+ 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
+ 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
+- 185, 186, 187, 188, 189, 190, 191, 192, 193
++ 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
++ 195, 196
+ };
+
+ #if YYDEBUG
+- /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
++/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
++ YYRHS. */
++static const yytype_uint16 yyprhs[] =
++{
++ 0, 0, 3, 5, 9, 12, 15, 16, 18, 20,
++ 22, 24, 26, 28, 30, 32, 34, 36, 38, 40,
++ 42, 46, 48, 50, 52, 54, 56, 58, 61, 63,
++ 65, 67, 68, 71, 73, 75, 77, 79, 81, 83,
++ 85, 87, 89, 91, 93, 95, 98, 101, 103, 105,
++ 107, 109, 111, 113, 116, 118, 121, 123, 125, 127,
++ 130, 133, 136, 139, 142, 145, 148, 151, 154, 157,
++ 160, 163, 164, 167, 170, 173, 175, 177, 179, 181,
++ 183, 186, 189, 191, 194, 197, 200, 202, 204, 206,
++ 208, 210, 212, 214, 216, 218, 220, 223, 226, 230,
++ 233, 235, 237, 239, 241, 243, 245, 247, 249, 251,
++ 252, 255, 258, 261, 263, 265, 267, 269, 271, 273,
++ 275, 277, 279, 281, 283, 285, 287, 290, 293, 297,
++ 303, 307, 312, 317, 321, 322, 325, 327, 329, 331,
++ 333, 335, 337, 339, 341, 343, 345, 347, 349, 351,
++ 353, 355, 358, 360, 363, 365, 367, 369, 372, 374,
++ 377, 379, 381, 383, 385, 387, 389, 391, 393, 397,
++ 400, 402, 405, 408, 411, 414, 417, 419, 421, 423,
++ 425, 427, 429, 432, 435, 437, 440, 442, 444, 446,
++ 449, 452, 455, 457, 459, 461, 463, 465, 467, 469,
++ 471, 473, 475, 477, 479, 481, 483, 486, 489, 491,
++ 494, 496, 498, 500, 502, 504, 506, 508, 510, 512,
++ 514, 516, 518, 521, 524, 527, 530, 534, 536, 539,
++ 542, 545, 548, 552, 555, 557, 559, 561, 563, 565,
++ 567, 569, 571, 573, 575, 577, 580, 581, 586, 588,
++ 589, 590, 593, 596, 599, 602, 604, 606, 610, 614,
++ 616, 618, 620, 622, 624, 626, 628, 630, 632, 635,
++ 638, 640, 642, 644, 646, 648, 650, 652, 654, 657,
++ 659, 662, 664, 666, 668, 674, 677, 679, 682, 684,
++ 686, 688, 690, 692, 694, 700, 702, 706, 709, 713,
++ 715, 717, 720, 722, 728, 733, 737, 740, 742, 749,
++ 753, 756, 760, 762, 764, 766, 768
++};
++
++/* YYRHS -- A `-1'-separated list of the rules' RHS. */
++static const yytype_int16 yyrhs[] =
++{
++ 203, 0, -1, 204, -1, 204, 205, 186, -1, 205,
++ 186, -1, 1, 186, -1, -1, 206, -1, 219, -1,
++ 221, -1, 222, -1, 231, -1, 239, -1, 226, -1,
++ 248, -1, 253, -1, 257, -1, 262, -1, 266, -1,
++ 293, -1, 207, 208, 211, -1, 146, -1, 131, -1,
++ 126, -1, 14, -1, 84, -1, 209, -1, 210, 158,
++ -1, 158, -1, 66, -1, 68, -1, -1, 211, 212,
++ -1, 213, -1, 215, -1, 217, -1, 214, -1, 9,
++ -1, 17, -1, 53, -1, 116, -1, 133, -1, 134,
++ -1, 169, -1, 183, -1, 216, 61, -1, 216, 173,
++ -1, 70, -1, 100, -1, 92, -1, 171, -1, 102,
++ -1, 179, -1, 218, 158, -1, 54, -1, 220, 208,
++ -1, 177, -1, 178, -1, 15, -1, 85, 290, -1,
++ 107, 290, -1, 93, 61, -1, 10, 61, -1, 22,
++ 61, -1, 23, 223, -1, 71, 158, -1, 72, 158,
++ -1, 140, 61, -1, 143, 61, -1, 170, 286, -1,
++ 122, 158, -1, -1, 223, 224, -1, 225, 158, -1,
++ 143, 61, -1, 51, -1, 54, -1, 136, -1, 137,
++ -1, 28, -1, 167, 227, -1, 227, 228, -1, 228,
++ -1, 229, 61, -1, 230, 292, -1, 21, 291, -1,
++ 19, -1, 48, -1, 123, -1, 124, -1, 101, -1,
++ 13, -1, 98, -1, 90, -1, 96, -1, 88, -1,
++ 150, 232, -1, 152, 158, -1, 41, 233, 234, -1,
++ 232, 233, -1, 233, -1, 20, -1, 24, -1, 82,
++ -1, 127, -1, 138, -1, 160, -1, 165, -1, 135,
++ -1, -1, 234, 235, -1, 40, 158, -1, 172, 238,
++ -1, 236, -1, 237, -1, 78, -1, 109, -1, 37,
++ -1, 29, -1, 112, -1, 129, -1, 26, -1, 181,
++ -1, 105, -1, 184, -1, 4, -1, 30, 242, -1,
++ 106, 245, -1, 142, 208, 240, -1, 142, 209, 86,
++ 209, 240, -1, 142, 27, 240, -1, 142, 66, 27,
++ 240, -1, 142, 68, 27, 240, -1, 142, 148, 240,
++ -1, -1, 240, 241, -1, 47, -1, 55, -1, 73,
++ -1, 74, -1, 77, -1, 83, -1, 110, -1, 111,
++ -1, 114, -1, 115, -1, 117, -1, 118, -1, 119,
++ -1, 121, -1, 179, -1, 242, 243, -1, 243, -1,
++ 244, 61, -1, 11, -1, 99, -1, 104, -1, 245,
++ 246, -1, 246, -1, 247, 61, -1, 56, -1, 57,
++ -1, 58, -1, 59, -1, 87, -1, 89, -1, 91,
++ -1, 97, -1, 50, 208, 249, -1, 249, 250, -1,
++ 250, -1, 251, 292, -1, 252, 291, -1, 157, 61,
++ -1, 3, 158, -1, 139, 158, -1, 162, -1, 163,
++ -1, 43, -1, 44, -1, 45, -1, 46, -1, 144,
++ 254, -1, 254, 255, -1, 255, -1, 256, 61, -1,
++ 95, -1, 149, -1, 42, -1, 37, 258, -1, 29,
++ 258, -1, 258, 259, -1, 259, -1, 260, -1, 261,
++ -1, 8, -1, 12, -1, 18, -1, 69, -1, 104,
++ -1, 120, -1, 103, -1, 151, -1, 174, -1, 175,
++ -1, 176, -1, 166, 263, -1, 263, 264, -1, 264,
++ -1, 265, 292, -1, 6, -1, 31, -1, 49, -1,
++ 52, -1, 125, -1, 153, -1, 154, -1, 155, -1,
++ 156, -1, 161, -1, 278, -1, 282, -1, 267, 292,
++ -1, 268, 61, -1, 269, 158, -1, 270, 158, -1,
++ 60, 158, 205, -1, 38, -1, 33, 271, -1, 80,
++ 276, -1, 128, 289, -1, 147, 272, -1, 168, 209,
++ 274, -1, 171, 285, -1, 16, -1, 113, -1, 161,
++ -1, 35, -1, 76, -1, 54, -1, 75, -1, 81,
++ -1, 130, -1, 145, -1, 158, -1, 158, 32, -1,
++ -1, 158, 197, 158, 273, -1, 27, -1, -1, -1,
++ 274, 275, -1, 132, 61, -1, 62, 209, -1, 276,
++ 277, -1, 277, -1, 158, -1, 279, 281, 280, -1,
++ 279, 281, 158, -1, 62, -1, 108, -1, 5, -1,
++ 65, -1, 67, -1, 182, -1, 79, -1, 55, -1,
++ 34, -1, 141, 283, -1, 283, 284, -1, 284, -1,
++ 7, -1, 8, -1, 25, -1, 64, -1, 94, -1,
++ 159, -1, 164, -1, 285, 61, -1, 61, -1, 286,
++ 287, -1, 287, -1, 61, -1, 288, -1, 198, 61,
++ 36, 61, 199, -1, 289, 158, -1, 158, -1, 290,
++ 208, -1, 208, -1, 61, -1, 169, -1, 39, -1,
++ 61, -1, 32, -1, 294, 200, 295, 298, 201, -1,
++ 187, -1, 295, 296, 186, -1, 296, 186, -1, 297,
++ 197, 292, -1, 188, -1, 189, -1, 298, 299, -1,
++ 299, -1, 301, 200, 300, 302, 201, -1, 190, 197,
++ 292, 186, -1, 146, 197, 208, -1, 302, 303, -1,
++ 303, -1, 191, 197, 292, 200, 304, 201, -1, 304,
++ 305, 186, -1, 305, 186, -1, 306, 197, 292, -1,
++ 192, -1, 193, -1, 194, -1, 195, -1, 196, -1
++};
++
++/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+ static const yytype_uint16 yyrline[] =
+ {
+- 0, 366, 366, 370, 371, 372, 387, 388, 389, 390,
+- 391, 392, 393, 394, 395, 396, 397, 398, 399, 400,
+- 408, 418, 419, 420, 421, 422, 426, 427, 432, 437,
+- 439, 445, 446, 454, 455, 456, 460, 465, 466, 467,
+- 468, 469, 470, 471, 472, 476, 478, 483, 484, 485,
+- 486, 487, 488, 492, 497, 506, 516, 517, 527, 529,
+- 531, 533, 544, 551, 553, 558, 560, 562, 564, 566,
+- 575, 581, 582, 590, 592, 604, 605, 606, 607, 608,
+- 617, 622, 627, 635, 637, 639, 644, 645, 646, 647,
+- 648, 649, 653, 654, 655, 656, 665, 667, 676, 686,
+- 691, 699, 700, 701, 702, 703, 704, 705, 706, 711,
+- 712, 720, 730, 739, 754, 759, 760, 764, 765, 769,
+- 770, 771, 772, 773, 774, 775, 784, 788, 792, 800,
+- 808, 816, 831, 846, 859, 860, 868, 869, 870, 871,
+- 872, 873, 874, 875, 876, 877, 878, 879, 880, 881,
+- 882, 886, 891, 899, 904, 905, 906, 910, 915, 923,
+- 928, 929, 930, 931, 932, 933, 934, 935, 943, 953,
+- 958, 966, 968, 970, 979, 981, 986, 987, 991, 992,
+- 993, 994, 1002, 1007, 1012, 1020, 1025, 1026, 1027, 1036,
+- 1038, 1043, 1048, 1056, 1058, 1075, 1076, 1077, 1078, 1079,
+- 1080, 1084, 1085, 1093, 1098, 1103, 1111, 1116, 1117, 1118,
+- 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1134, 1135, 1136,
+- 1143, 1150, 1157, 1173, 1192, 1194, 1196, 1198, 1200, 1202,
+- 1209, 1214, 1215, 1216, 1220, 1224, 1233, 1234, 1238, 1239,
+- 1240, 1244, 1255, 1269, 1281, 1286, 1288, 1293, 1294, 1302,
+- 1304, 1312, 1317, 1325, 1350, 1357, 1367, 1368, 1372, 1373,
+- 1374, 1375, 1379, 1380, 1381, 1385, 1390, 1395, 1403, 1404,
+- 1405, 1406, 1407, 1408, 1409, 1419, 1424, 1432, 1437, 1445,
+- 1447, 1451, 1456, 1461, 1469, 1474, 1482, 1491, 1492, 1496,
+- 1497, 1506, 1524, 1528, 1533, 1541, 1546, 1547, 1551, 1556,
+- 1564, 1569, 1574, 1579, 1584, 1592, 1597, 1602, 1610, 1615,
+- 1616, 1617, 1618, 1619
++ 0, 369, 369, 373, 374, 375, 390, 391, 392, 393,
++ 394, 395, 396, 397, 398, 399, 400, 401, 402, 403,
++ 411, 421, 422, 423, 424, 425, 429, 430, 435, 440,
++ 442, 448, 449, 457, 458, 459, 463, 468, 469, 470,
++ 471, 472, 473, 474, 475, 479, 481, 486, 487, 488,
++ 489, 490, 491, 495, 500, 509, 519, 520, 530, 532,
++ 534, 536, 547, 554, 556, 561, 563, 565, 567, 569,
++ 578, 584, 585, 593, 595, 607, 608, 609, 610, 611,
++ 620, 625, 630, 638, 640, 642, 647, 648, 649, 650,
++ 651, 652, 656, 657, 658, 659, 668, 670, 679, 689,
++ 694, 702, 703, 704, 705, 706, 707, 708, 709, 714,
++ 715, 723, 733, 742, 757, 762, 763, 767, 768, 772,
++ 773, 774, 775, 776, 777, 778, 787, 791, 795, 803,
++ 811, 819, 834, 849, 862, 863, 871, 872, 873, 874,
++ 875, 876, 877, 878, 879, 880, 881, 882, 883, 884,
++ 885, 889, 894, 902, 907, 908, 909, 913, 918, 926,
++ 931, 932, 933, 934, 935, 936, 937, 938, 946, 956,
++ 961, 969, 971, 973, 982, 984, 989, 990, 994, 995,
++ 996, 997, 1005, 1010, 1015, 1023, 1028, 1029, 1030, 1039,
++ 1041, 1046, 1051, 1059, 1061, 1078, 1079, 1080, 1081, 1082,
++ 1083, 1087, 1088, 1089, 1090, 1091, 1099, 1104, 1109, 1117,
++ 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131,
++ 1140, 1141, 1142, 1149, 1156, 1163, 1179, 1198, 1200, 1202,
++ 1204, 1206, 1208, 1215, 1220, 1221, 1222, 1226, 1230, 1239,
++ 1240, 1244, 1245, 1246, 1250, 1261, 1275, 1287, 1292, 1294,
++ 1299, 1300, 1308, 1310, 1318, 1323, 1331, 1356, 1363, 1373,
++ 1374, 1378, 1379, 1380, 1381, 1385, 1386, 1387, 1391, 1396,
++ 1401, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1425, 1430,
++ 1438, 1443, 1451, 1453, 1457, 1462, 1467, 1475, 1480, 1488,
++ 1497, 1498, 1502, 1503, 1512, 1530, 1534, 1539, 1547, 1552,
++ 1553, 1557, 1562, 1570, 1575, 1580, 1585, 1590, 1598, 1603,
++ 1608, 1616, 1621, 1622, 1623, 1624, 1625
+ };
+ #endif
+
+@@ -944,29 +1075,29 @@ static const char *const yytname[] =
+ "T_Step", "T_Stepback", "T_Stepfwd", "T_Stepout", "T_Stratum",
+ "T_String", "T_Sys", "T_Sysstats", "T_Tick", "T_Time1", "T_Time2",
+ "T_Timer", "T_Timingstats", "T_Tinker", "T_Tos", "T_Trap", "T_True",
+- "T_Trustedkey", "T_Ttl", "T_Type", "T_U_int", "T_Unconfig", "T_Unpeer",
+- "T_Version", "T_WanderThreshold", "T_Week", "T_Wildcard", "T_Xleave",
+- "T_Year", "T_Flag", "T_EOC", "T_Simulate", "T_Beep_Delay",
+- "T_Sim_Duration", "T_Server_Offset", "T_Duration", "T_Freq_Offset",
+- "T_Wander", "T_Jitter", "T_Prop_Delay", "T_Proc_Delay", "'='", "'('",
+- "')'", "'{'", "'}'", "$accept", "configuration", "command_list",
+- "command", "server_command", "client_type", "address", "ip_address",
+- "address_fam", "option_list", "option", "option_flag",
+- "option_flag_keyword", "option_int", "option_int_keyword", "option_str",
+- "option_str_keyword", "unpeer_command", "unpeer_keyword",
+- "other_mode_command", "authentication_command", "crypto_command_list",
+- "crypto_command", "crypto_str_keyword", "orphan_mode_command",
+- "tos_option_list", "tos_option", "tos_option_int_keyword",
+- "tos_option_dbl_keyword", "monitoring_command", "stats_list", "stat",
+- "filegen_option_list", "filegen_option", "link_nolink", "enable_disable",
+- "filegen_type", "access_control_command", "ac_flag_list",
+- "access_control_flag", "discard_option_list", "discard_option",
+- "discard_option_keyword", "mru_option_list", "mru_option",
+- "mru_option_keyword", "fudge_command", "fudge_factor_list",
+- "fudge_factor", "fudge_factor_dbl_keyword", "fudge_factor_bool_keyword",
+- "rlimit_command", "rlimit_option_list", "rlimit_option",
+- "rlimit_option_keyword", "system_option_command", "system_option_list",
+- "system_option", "system_option_flag_keyword",
++ "T_Trustedkey", "T_Ttl", "T_Type", "T_U_int", "T_UEcrypto",
++ "T_UEcryptonak", "T_UEdigest", "T_Unconfig", "T_Unpeer", "T_Version",
++ "T_WanderThreshold", "T_Week", "T_Wildcard", "T_Xleave", "T_Year",
++ "T_Flag", "T_EOC", "T_Simulate", "T_Beep_Delay", "T_Sim_Duration",
++ "T_Server_Offset", "T_Duration", "T_Freq_Offset", "T_Wander", "T_Jitter",
++ "T_Prop_Delay", "T_Proc_Delay", "'='", "'('", "')'", "'{'", "'}'",
++ "$accept", "configuration", "command_list", "command", "server_command",
++ "client_type", "address", "ip_address", "address_fam", "option_list",
++ "option", "option_flag", "option_flag_keyword", "option_int",
++ "option_int_keyword", "option_str", "option_str_keyword",
++ "unpeer_command", "unpeer_keyword", "other_mode_command",
++ "authentication_command", "crypto_command_list", "crypto_command",
++ "crypto_str_keyword", "orphan_mode_command", "tos_option_list",
++ "tos_option", "tos_option_int_keyword", "tos_option_dbl_keyword",
++ "monitoring_command", "stats_list", "stat", "filegen_option_list",
++ "filegen_option", "link_nolink", "enable_disable", "filegen_type",
++ "access_control_command", "ac_flag_list", "access_control_flag",
++ "discard_option_list", "discard_option", "discard_option_keyword",
++ "mru_option_list", "mru_option", "mru_option_keyword", "fudge_command",
++ "fudge_factor_list", "fudge_factor", "fudge_factor_dbl_keyword",
++ "fudge_factor_bool_keyword", "rlimit_command", "rlimit_option_list",
++ "rlimit_option", "rlimit_option_keyword", "system_option_command",
++ "system_option_list", "system_option", "system_option_flag_keyword",
+ "system_option_local_flag_keyword", "tinker_command",
+ "tinker_option_list", "tinker_option", "tinker_option_keyword",
+ "miscellaneous_command", "misc_cmd_dbl_keyword", "misc_cmd_int_keyword",
+@@ -981,13 +1112,13 @@ static const char *const yytname[] =
+ "sim_init_statement_list", "sim_init_statement", "sim_init_keyword",
+ "sim_server_list", "sim_server", "sim_server_offset", "sim_server_name",
+ "sim_act_list", "sim_act", "sim_act_stmt_list", "sim_act_stmt",
+- "sim_act_keyword", YY_NULLPTR
++ "sim_act_keyword", YY_NULL
+ };
+ #endif
+
+ # ifdef YYPRINT
+-/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+- (internal) symbol number NUM (which must be that of a token). */
++/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
++ token YYLEX-NUM. */
+ static const yytype_uint16 yytoknum[] =
+ {
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+@@ -1009,292 +1140,363 @@ static const yytype_uint16 yytoknum[] =
+ 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
+ 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
+ 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
+- 445, 446, 447, 448, 61, 40, 41, 123, 125
++ 445, 446, 447, 448, 449, 450, 451, 61, 40, 41,
++ 123, 125
+ };
+ # endif
+
+-#define YYPACT_NINF -185
++/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
++static const yytype_uint16 yyr1[] =
++{
++ 0, 202, 203, 204, 204, 204, 205, 205, 205, 205,
++ 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
++ 206, 207, 207, 207, 207, 207, 208, 208, 209, 210,
++ 210, 211, 211, 212, 212, 212, 213, 214, 214, 214,
++ 214, 214, 214, 214, 214, 215, 215, 216, 216, 216,
++ 216, 216, 216, 217, 218, 219, 220, 220, 221, 221,
++ 221, 221, 222, 222, 222, 222, 222, 222, 222, 222,
++ 222, 223, 223, 224, 224, 225, 225, 225, 225, 225,
++ 226, 227, 227, 228, 228, 228, 229, 229, 229, 229,
++ 229, 229, 230, 230, 230, 230, 231, 231, 231, 232,
++ 232, 233, 233, 233, 233, 233, 233, 233, 233, 234,
++ 234, 235, 235, 235, 235, 236, 236, 237, 237, 238,
++ 238, 238, 238, 238, 238, 238, 239, 239, 239, 239,
++ 239, 239, 239, 239, 240, 240, 241, 241, 241, 241,
++ 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
++ 241, 242, 242, 243, 244, 244, 244, 245, 245, 246,
++ 247, 247, 247, 247, 247, 247, 247, 247, 248, 249,
++ 249, 250, 250, 250, 250, 250, 251, 251, 252, 252,
++ 252, 252, 253, 254, 254, 255, 256, 256, 256, 257,
++ 257, 258, 258, 259, 259, 260, 260, 260, 260, 260,
++ 260, 261, 261, 261, 261, 261, 262, 263, 263, 264,
++ 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
++ 266, 266, 266, 266, 266, 266, 266, 266, 266, 266,
++ 266, 266, 266, 266, 267, 267, 267, 268, 268, 269,
++ 269, 270, 270, 270, 271, 271, 271, 272, 273, 273,
++ 274, 274, 275, 275, 276, 276, 277, 278, 278, 279,
++ 279, 280, 280, 280, 280, 281, 281, 281, 282, 283,
++ 283, 284, 284, 284, 284, 284, 284, 284, 285, 285,
++ 286, 286, 287, 287, 288, 289, 289, 290, 290, 291,
++ 291, 291, 292, 292, 293, 294, 295, 295, 296, 297,
++ 297, 298, 298, 299, 300, 301, 302, 302, 303, 304,
++ 304, 305, 306, 306, 306, 306, 306
++};
+
+-#define yypact_value_is_default(Yystate) \
+- (!!((Yystate) == (-185)))
+-
+-#define YYTABLE_NINF -7
+-
+-#define yytable_value_is_error(Yytable_value) \
+- 0
+-
+- /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+- STATE-NUM. */
+-static const yytype_int16 yypact[] =
++/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
++static const yytype_uint8 yyr2[] =
+ {
+- 78, -169, -34, -185, -185, -185, -29, -185, 17, 43,
+- -124, -185, 17, -185, -5, -27, -185, -121, -185, -112,
+- -110, -185, -185, -100, -185, -185, -27, 0, 116, -27,
+- -185, -185, -91, -185, -89, -185, -185, 11, 35, 30,
+- 13, 31, -185, -185, -83, -5, -78, -185, 186, 523,
+- -76, -56, 15, -185, -185, -185, 83, 244, -99, -185,
+- -27, -185, -27, -185, -185, -185, -185, -185, -185, -185,
+- -185, -185, -185, -12, 24, -71, -69, -185, -11, -185,
+- -185, -107, -185, -185, -185, 8, -185, -185, -185, -185,
+- -185, -185, -185, -185, 17, -185, -185, -185, -185, -185,
+- -185, 43, -185, 34, 59, -185, 17, -185, -185, -185,
+- -185, -185, -185, -185, -185, -185, -185, -185, -185, 7,
+- -185, -61, 407, -185, -185, -185, -100, -185, -185, -27,
+- -185, -185, -185, -185, -185, -185, -185, -185, -185, 116,
+- -185, 44, -27, -185, -185, -52, -185, -185, -185, -185,
+- -185, -185, -185, -185, 35, -185, -185, 85, 96, -185,
+- -185, 39, -185, -185, -185, -185, 31, -185, 75, -46,
+- -185, -5, -185, -185, -185, -185, -185, -185, -185, -185,
+- -185, -185, -185, -185, 186, -185, -12, -185, -185, -35,
+- -185, -185, -185, -185, -185, -185, -185, -185, 523, -185,
+- 82, -12, -185, -185, 91, -56, -185, -185, -185, 100,
+- -185, -26, -185, -185, -185, -185, -185, -185, -185, -185,
+- -185, -185, -185, -185, -2, -130, -185, -185, -185, -185,
+- -185, 105, -185, 9, -185, -185, -185, -185, -7, 18,
+- -185, -185, -185, -185, 25, 121, -185, -185, 7, -185,
+- -12, -35, -185, -185, -185, -185, -185, -185, -185, -185,
+- 391, -185, -185, 391, 391, -76, -185, -185, 29, -185,
+- -185, -185, -185, -185, -185, -185, -185, -185, -185, -51,
+- 153, -185, -185, -185, 464, -185, -185, -185, -185, -185,
+- -185, -185, -185, -82, 14, 1, -185, -185, -185, -185,
+- 38, -185, -185, 12, -185, -185, -185, -185, -185, -185,
+- -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+- -185, -185, -185, -185, -185, -185, -185, -185, -185, 391,
+- 391, -185, 171, -76, 140, -185, 141, -185, -185, -185,
+- -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+- -185, -185, -185, -185, -185, -185, -55, -185, 53, 20,
+- 33, -128, -185, 32, -185, -12, -185, -185, -185, -185,
+- -185, -185, -185, -185, -185, 391, -185, -185, -185, -185,
+- 16, -185, -185, -185, -27, -185, -185, -185, 46, -185,
+- -185, -185, 37, 48, -12, 40, -167, -185, 54, -12,
+- -185, -185, -185, 45, 79, -185, -185, -185, -185, -185,
+- 98, 57, 47, -185, 60, -185, -12, -185, -185
++ 0, 2, 1, 3, 2, 2, 0, 1, 1, 1,
++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
++ 3, 1, 1, 1, 1, 1, 1, 2, 1, 1,
++ 1, 0, 2, 1, 1, 1, 1, 1, 1, 1,
++ 1, 1, 1, 1, 1, 2, 2, 1, 1, 1,
++ 1, 1, 1, 2, 1, 2, 1, 1, 1, 2,
++ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
++ 2, 0, 2, 2, 2, 1, 1, 1, 1, 1,
++ 2, 2, 1, 2, 2, 2, 1, 1, 1, 1,
++ 1, 1, 1, 1, 1, 1, 2, 2, 3, 2,
++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
++ 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
++ 1, 1, 1, 1, 1, 1, 2, 2, 3, 5,
++ 3, 4, 4, 3, 0, 2, 1, 1, 1, 1,
++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
++ 1, 2, 1, 2, 1, 1, 1, 2, 1, 2,
++ 1, 1, 1, 1, 1, 1, 1, 1, 3, 2,
++ 1, 2, 2, 2, 2, 2, 1, 1, 1, 1,
++ 1, 1, 2, 2, 1, 2, 1, 1, 1, 2,
++ 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
++ 1, 1, 1, 1, 1, 1, 2, 2, 1, 2,
++ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
++ 1, 1, 2, 2, 2, 2, 3, 1, 2, 2,
++ 2, 2, 3, 2, 1, 1, 1, 1, 1, 1,
++ 1, 1, 1, 1, 1, 2, 0, 4, 1, 0,
++ 0, 2, 2, 2, 2, 1, 1, 3, 3, 1,
++ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
++ 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
++ 2, 1, 1, 1, 5, 2, 1, 2, 1, 1,
++ 1, 1, 1, 1, 5, 1, 3, 2, 3, 1,
++ 1, 2, 1, 5, 4, 3, 2, 1, 6, 3,
++ 2, 3, 1, 1, 1, 1, 1
+ };
+
+- /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+- Performed when YYTABLE does not specify something else to do. Zero
+- means the default is an error. */
++/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
++ Performed when YYTABLE doesn't specify something else to do. Zero
++ means the default is an error. */
+ static const yytype_uint16 yydefact[] =
+ {
+- 0, 0, 0, 24, 58, 231, 0, 71, 0, 0,
+- 243, 234, 0, 224, 0, 0, 236, 0, 256, 0,
+- 0, 237, 235, 0, 238, 25, 0, 0, 0, 0,
+- 257, 232, 0, 23, 0, 239, 22, 0, 0, 0,
+- 0, 0, 240, 21, 0, 0, 0, 233, 0, 0,
+- 0, 0, 0, 56, 57, 292, 0, 2, 0, 7,
++ 0, 0, 0, 24, 58, 234, 0, 71, 0, 0,
++ 246, 237, 0, 227, 0, 0, 239, 0, 259, 0,
++ 0, 240, 238, 0, 241, 25, 0, 0, 0, 0,
++ 260, 235, 0, 23, 0, 242, 22, 0, 0, 0,
++ 0, 0, 243, 21, 0, 0, 0, 236, 0, 0,
++ 0, 0, 0, 56, 57, 295, 0, 2, 0, 7,
+ 0, 8, 0, 9, 10, 13, 11, 12, 14, 15,
+- 16, 17, 18, 0, 0, 0, 0, 217, 0, 218,
++ 16, 17, 18, 0, 0, 0, 0, 220, 0, 221,
+ 19, 0, 5, 62, 63, 64, 195, 196, 197, 198,
+- 201, 199, 200, 202, 190, 192, 193, 194, 154, 155,
+- 156, 126, 152, 0, 241, 225, 189, 101, 102, 103,
+- 104, 108, 105, 106, 107, 109, 29, 30, 28, 0,
+- 26, 0, 6, 65, 66, 253, 226, 252, 285, 59,
+- 61, 160, 161, 162, 163, 164, 165, 166, 167, 127,
+- 158, 0, 60, 70, 283, 227, 67, 268, 269, 270,
+- 271, 272, 273, 274, 265, 267, 134, 29, 30, 134,
+- 134, 26, 68, 188, 186, 187, 182, 184, 0, 0,
+- 228, 96, 100, 97, 207, 208, 209, 210, 211, 212,
+- 213, 214, 215, 216, 203, 205, 0, 91, 86, 0,
+- 87, 95, 93, 94, 92, 90, 88, 89, 80, 82,
+- 0, 0, 247, 279, 0, 69, 278, 280, 276, 230,
+- 1, 0, 4, 31, 55, 290, 289, 219, 220, 221,
+- 222, 264, 263, 262, 0, 0, 79, 75, 76, 77,
+- 78, 0, 72, 0, 191, 151, 153, 242, 98, 0,
+- 178, 179, 180, 181, 0, 0, 176, 177, 168, 170,
+- 0, 0, 27, 223, 251, 284, 157, 159, 282, 266,
+- 130, 134, 134, 133, 128, 0, 183, 185, 0, 99,
+- 204, 206, 288, 286, 287, 85, 81, 83, 84, 229,
+- 0, 277, 275, 3, 20, 258, 259, 260, 255, 261,
+- 254, 296, 297, 0, 0, 0, 74, 73, 118, 117,
+- 0, 115, 116, 0, 110, 113, 114, 174, 175, 173,
+- 169, 171, 172, 136, 137, 138, 139, 140, 141, 142,
+- 143, 144, 145, 146, 147, 148, 149, 150, 135, 131,
+- 132, 134, 246, 0, 0, 248, 0, 37, 38, 39,
+- 54, 47, 49, 48, 51, 40, 41, 42, 43, 50,
+- 52, 44, 32, 33, 36, 34, 0, 35, 0, 0,
+- 0, 0, 299, 0, 294, 0, 111, 125, 121, 123,
+- 119, 120, 122, 124, 112, 129, 245, 244, 250, 249,
+- 0, 45, 46, 53, 0, 293, 291, 298, 0, 295,
+- 281, 302, 0, 0, 0, 0, 0, 304, 0, 0,
+- 300, 303, 301, 0, 0, 309, 310, 311, 312, 313,
+- 0, 0, 0, 305, 0, 307, 0, 306, 308
++ 201, 199, 200, 202, 203, 204, 205, 190, 192, 193,
++ 194, 154, 155, 156, 126, 152, 0, 244, 228, 189,
++ 101, 102, 103, 104, 108, 105, 106, 107, 109, 29,
++ 30, 28, 0, 26, 0, 6, 65, 66, 256, 229,
++ 255, 288, 59, 61, 160, 161, 162, 163, 164, 165,
++ 166, 167, 127, 158, 0, 60, 70, 286, 230, 67,
++ 271, 272, 273, 274, 275, 276, 277, 268, 270, 134,
++ 29, 30, 134, 134, 26, 68, 188, 186, 187, 182,
++ 184, 0, 0, 231, 96, 100, 97, 210, 211, 212,
++ 213, 214, 215, 216, 217, 218, 219, 206, 208, 0,
++ 91, 86, 0, 87, 95, 93, 94, 92, 90, 88,
++ 89, 80, 82, 0, 0, 250, 282, 0, 69, 281,
++ 283, 279, 233, 1, 0, 4, 31, 55, 293, 292,
++ 222, 223, 224, 225, 267, 266, 265, 0, 0, 79,
++ 75, 76, 77, 78, 0, 72, 0, 191, 151, 153,
++ 245, 98, 0, 178, 179, 180, 181, 0, 0, 176,
++ 177, 168, 170, 0, 0, 27, 226, 254, 287, 157,
++ 159, 285, 269, 130, 134, 134, 133, 128, 0, 183,
++ 185, 0, 99, 207, 209, 291, 289, 290, 85, 81,
++ 83, 84, 232, 0, 280, 278, 3, 20, 261, 262,
++ 263, 258, 264, 257, 299, 300, 0, 0, 0, 74,
++ 73, 118, 117, 0, 115, 116, 0, 110, 113, 114,
++ 174, 175, 173, 169, 171, 172, 136, 137, 138, 139,
++ 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
++ 150, 135, 131, 132, 134, 249, 0, 0, 251, 0,
++ 37, 38, 39, 54, 47, 49, 48, 51, 40, 41,
++ 42, 43, 50, 52, 44, 32, 33, 36, 34, 0,
++ 35, 0, 0, 0, 0, 302, 0, 297, 0, 111,
++ 125, 121, 123, 119, 120, 122, 124, 112, 129, 248,
++ 247, 253, 252, 0, 45, 46, 53, 0, 296, 294,
++ 301, 0, 298, 284, 305, 0, 0, 0, 0, 0,
++ 307, 0, 0, 303, 306, 304, 0, 0, 312, 313,
++ 314, 315, 316, 0, 0, 0, 308, 0, 310, 0,
++ 309, 311
+ };
+
+- /* YYPGOTO[NTERM-NUM]. */
+-static const yytype_int16 yypgoto[] =
++/* YYDEFGOTO[NTERM-NUM]. */
++static const yytype_int16 yydefgoto[] =
+ {
+- -185, -185, -185, -44, -185, -185, -15, -38, -185, -185,
+- -185, -185, -185, -185, -185, -185, -185, -185, -185, -185,
+- -185, -185, -185, -185, -185, -185, 28, -185, -185, -185,
+- -185, -36, -185, -185, -185, -185, -185, -185, -152, -185,
+- -185, 146, -185, -185, 111, -185, -185, -185, 3, -185,
+- -185, -185, -185, 89, -185, -185, 245, -66, -185, -185,
+- -185, -185, 72, -185, -185, -185, -185, -185, -185, -185,
+- -185, -185, -185, -185, -185, 137, -185, -185, -185, -185,
+- -185, -185, 110, -185, -185, 70, -185, -185, 236, 27,
+- -184, -185, -185, -185, -17, -185, -185, -81, -185, -185,
+- -185, -113, -185, -126, -185
++ -1, 56, 57, 58, 59, 60, 131, 123, 124, 287,
++ 355, 356, 357, 358, 359, 360, 361, 61, 62, 63,
++ 64, 85, 235, 236, 65, 201, 202, 203, 204, 66,
++ 174, 118, 241, 307, 308, 309, 377, 67, 263, 331,
++ 104, 105, 106, 142, 143, 144, 68, 251, 252, 253,
++ 254, 69, 169, 170, 171, 70, 97, 98, 99, 100,
++ 71, 187, 188, 189, 72, 73, 74, 75, 76, 108,
++ 173, 380, 282, 338, 129, 130, 77, 78, 293, 227,
++ 79, 157, 158, 212, 208, 209, 210, 148, 132, 278,
++ 220, 80, 81, 296, 297, 298, 364, 365, 396, 366,
++ 399, 400, 413, 414, 415
+ };
+
+- /* YYDEFGOTO[NTERM-NUM]. */
+-static const yytype_int16 yydefgoto[] =
++/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
++ STATE-NUM. */
++#define YYPACT_NINF -188
++static const yytype_int16 yypact[] =
+ {
+- -1, 56, 57, 58, 59, 60, 128, 120, 121, 284,
+- 352, 353, 354, 355, 356, 357, 358, 61, 62, 63,
+- 64, 85, 232, 233, 65, 198, 199, 200, 201, 66,
+- 171, 115, 238, 304, 305, 306, 374, 67, 260, 328,
+- 101, 102, 103, 139, 140, 141, 68, 248, 249, 250,
+- 251, 69, 166, 167, 168, 70, 94, 95, 96, 97,
+- 71, 184, 185, 186, 72, 73, 74, 75, 76, 105,
+- 170, 377, 279, 335, 126, 127, 77, 78, 290, 224,
+- 79, 154, 155, 209, 205, 206, 207, 145, 129, 275,
+- 217, 80, 81, 293, 294, 295, 361, 362, 393, 363,
+- 396, 397, 410, 411, 412
++ 5, -160, -28, -188, -188, -188, -24, -188, 60, 0,
++ -119, -188, 60, -188, 118, 7, -188, -117, -188, -110,
++ -108, -188, -188, -101, -188, -188, 7, -1, 345, 7,
++ -188, -188, -96, -188, -95, -188, -188, 21, -3, 73,
++ 33, 11, -188, -188, -94, 118, -61, -188, 43, 446,
++ -57, -58, 41, -188, -188, -188, 105, 179, -79, -188,
++ 7, -188, 7, -188, -188, -188, -188, -188, -188, -188,
++ -188, -188, -188, -7, 48, -48, -39, -188, 24, -188,
++ -188, -86, -188, -188, -188, 42, -188, -188, -188, -188,
++ -188, -188, -188, -188, -188, -188, -188, 60, -188, -188,
++ -188, -188, -188, -188, 0, -188, 59, 89, -188, 60,
++ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
++ -188, -188, 80, -188, 9, 338, -188, -188, -188, -101,
++ -188, -188, 7, -188, -188, -188, -188, -188, -188, -188,
++ -188, -188, 345, -188, 67, 7, -188, -188, 12, -188,
++ -188, -188, -188, -188, -188, -188, -188, -3, -188, -188,
++ 107, 116, -188, -188, 83, -188, -188, -188, -188, 11,
++ -188, 113, -20, -188, 118, -188, -188, -188, -188, -188,
++ -188, -188, -188, -188, -188, -188, -188, 43, -188, -7,
++ -188, -188, -25, -188, -188, -188, -188, -188, -188, -188,
++ -188, 446, -188, 127, -7, -188, -188, 129, -58, -188,
++ -188, -188, 142, -188, 19, -188, -188, -188, -188, -188,
++ -188, -188, -188, -188, -188, -188, -188, 4, -158, -188,
++ -188, -188, -188, -188, 145, -188, 49, -188, -188, -188,
++ -188, 233, 55, -188, -188, -188, -188, 64, 157, -188,
++ -188, 80, -188, -7, -25, -188, -188, -188, -188, -188,
++ -188, -188, -188, 445, -188, -188, 445, 445, -57, -188,
++ -188, 82, -188, -188, -188, -188, -188, -188, -188, -188,
++ -188, -188, -44, 202, -188, -188, -188, 324, -188, -188,
++ -188, -188, -188, -188, -188, -188, -30, 58, 50, -188,
++ -188, -188, -188, 88, -188, -188, 3, -188, -188, -188,
++ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
++ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
++ -188, -188, 445, 445, -188, 221, -57, 188, -188, 191,
++ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
++ -188, -188, -188, -188, -188, -188, -188, -188, -188, -51,
++ -188, 99, 61, 75, -114, -188, 65, -188, -7, -188,
++ -188, -188, -188, -188, -188, -188, -188, -188, 445, -188,
++ -188, -188, -188, 68, -188, -188, -188, 7, -188, -188,
++ -188, 76, -188, -188, -188, 71, 78, -7, 74, -178,
++ -188, 90, -7, -188, -188, -188, 77, 32, -188, -188,
++ -188, -188, -188, 101, 93, 84, -188, 94, -188, -7,
++ -188, -188
+ };
+
+- /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
+- positive, shift that token. If negative, reduce the rule whose
+- number is the opposite. If YYTABLE_NINF, syntax error. */
++/* YYPGOTO[NTERM-NUM]. */
++static const yytype_int16 yypgoto[] =
++{
++ -188, -188, -188, -41, -188, -188, -15, -38, -188, -188,
++ -188, -188, -188, -188, -188, -188, -188, -188, -188, -188,
++ -188, -188, -188, -188, -188, -188, 81, -188, -188, -188,
++ -188, -37, -188, -188, -188, -188, -188, -188, -111, -188,
++ -188, 170, -188, -188, 133, -188, -188, -188, 37, -188,
++ -188, -188, -188, 115, -188, -188, 277, -53, -188, -188,
++ -188, -188, 103, -188, -188, -188, -188, -188, -188, -188,
++ -188, -188, -188, -188, -188, 162, -188, -188, -188, -188,
++ -188, -188, 143, -188, -188, 91, -188, -188, 274, 52,
++ -187, -188, -188, -188, 8, -188, -188, -56, -188, -188,
++ -188, -87, -188, -100, -188
++};
++
++/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
++ positive, shift that token. If negative, reduce the rule which
++ number is the opposite. If YYTABLE_NINF, syntax error. */
++#define YYTABLE_NINF -7
+ static const yytype_int16 yytable[] =
+ {
+- 119, 161, 271, 285, 272, 203, 381, 263, 264, 172,
+- 239, 333, 202, 211, 82, 107, 367, 278, 359, 108,
+- 215, 395, 298, 221, 160, 86, 273, 83, 234, 87,
+- 299, 400, 84, 300, 104, 88, 226, 122, 368, 116,
+- 234, 117, 147, 148, 222, 213, 123, 214, 124, 216,
+- 240, 241, 242, 243, 98, 291, 292, 156, 125, 227,
+- 149, 130, 228, 286, 359, 287, 311, 143, 223, 144,
+- 386, 301, 146, 163, 162, 169, 208, 109, 253, 1,
+- 173, 334, 118, 210, 212, 218, 89, 219, 2, 220,
+- 225, 237, 3, 4, 5, 236, 157, 252, 158, 150,
+- 6, 7, 302, 291, 292, 257, 258, 8, 9, 329,
+- 330, 10, 261, 11, 255, 12, 13, 369, 382, 14,
+- 90, 91, 110, 262, 370, 265, 164, 255, 15, 151,
+- 111, 118, 16, 112, 274, 269, 267, 92, 17, 204,
+- 18, 371, 99, 277, 229, 230, 244, 100, 268, 19,
+- 20, 231, 280, 21, 22, 113, 288, 283, 23, 24,
+- 114, 282, 25, 26, 245, 303, 296, 297, 93, 246,
+- 247, 27, 131, 132, 133, 134, 307, 289, 159, 375,
+- 165, 389, 309, 308, 28, 29, 30, 332, 118, 336,
+- 372, 31, 174, 373, 152, 365, 366, 364, 376, 153,
+- 32, 379, 380, 135, 33, 136, 34, 137, 35, 36,
+- 398, 383, 390, 138, 384, 403, 385, 175, 37, 38,
+- 39, 40, 41, 42, 43, 44, 276, 331, 45, 388,
+- 46, 394, 418, 392, 399, 176, 395, 402, 177, 47,
+- 415, 416, 404, 417, 48, 49, 50, 235, 51, 52,
+- 256, 310, 53, 54, 2, 266, 270, 106, 3, 4,
+- 5, -6, 55, 254, 259, 142, 6, 7, 405, 406,
+- 407, 408, 409, 8, 9, 281, 360, 10, 312, 11,
+- 387, 12, 13, 401, 414, 14, 0, 405, 406, 407,
+- 408, 409, 0, 0, 15, 378, 413, 0, 16, 0,
+- 0, 0, 0, 0, 17, 0, 18, 0, 0, 0,
+- 0, 178, 0, 0, 0, 19, 20, 0, 0, 21,
+- 22, 0, 0, 0, 23, 24, 0, 0, 25, 26,
+- 0, 0, 0, 0, 0, 0, 0, 27, 0, 179,
+- 180, 181, 182, 0, 0, 0, 0, 183, 0, 0,
+- 28, 29, 30, 0, 0, 0, 0, 31, 0, 0,
+- 0, 0, 0, 0, 0, 0, 32, 0, 0, 391,
+- 33, 0, 34, 0, 35, 36, 0, 0, 0, 0,
+- 0, 0, 0, 0, 37, 38, 39, 40, 41, 42,
+- 43, 44, 0, 0, 45, 0, 46, 0, 0, 0,
+- 0, 0, 0, 0, 0, 47, 0, 0, 0, 0,
+- 48, 49, 50, 0, 51, 52, 0, 2, 53, 54,
+- 0, 3, 4, 5, 0, 0, 0, -6, 55, 6,
+- 7, 0, 0, 0, 0, 0, 8, 9, 313, 0,
+- 10, 0, 11, 0, 12, 13, 314, 0, 14, 0,
+- 0, 0, 0, 0, 0, 0, 0, 15, 0, 0,
+- 0, 16, 0, 0, 315, 316, 0, 17, 317, 18,
+- 0, 0, 0, 337, 318, 0, 0, 0, 19, 20,
+- 0, 338, 21, 22, 0, 0, 0, 23, 24, 0,
+- 0, 25, 26, 0, 0, 0, 0, 0, 0, 0,
+- 27, 319, 320, 0, 0, 321, 322, 0, 323, 324,
+- 325, 0, 326, 28, 29, 30, 0, 339, 340, 0,
+- 31, 0, 0, 0, 0, 0, 0, 0, 0, 32,
+- 0, 0, 0, 33, 341, 34, 187, 35, 36, 0,
+- 0, 0, 188, 0, 189, 0, 0, 37, 38, 39,
+- 40, 41, 42, 43, 44, 0, 342, 45, 0, 46,
+- 0, 0, 0, 0, 343, 0, 344, 327, 47, 0,
+- 0, 190, 0, 48, 49, 50, 0, 51, 52, 0,
+- 345, 53, 54, 0, 0, 0, 0, 0, 0, 0,
+- 0, 55, 0, 0, 0, 0, 0, 346, 347, 0,
++ 122, 164, 274, 206, 150, 151, 1, 370, 175, 288,
++ 384, 101, 205, 398, 275, 2, 214, 281, 336, 3,
++ 4, 5, 152, 403, 163, 218, 82, 6, 7, 371,
++ 294, 295, 362, 83, 8, 9, 276, 84, 10, 107,
++ 11, 125, 12, 13, 237, 216, 14, 217, 126, 177,
++ 127, 266, 267, 166, 219, 15, 237, 128, 224, 16,
++ 133, 153, 146, 147, 172, 17, 314, 18, 86, 289,
++ 229, 290, 87, 119, 178, 120, 19, 20, 88, 225,
++ 21, 22, 149, 242, 256, 23, 24, 389, 337, 25,
++ 26, 154, 179, 230, 165, 180, 231, 176, 27, 102,
++ 159, 121, 211, 226, 103, 213, 167, 215, 372, 221,
++ 222, 28, 29, 30, 228, 373, 362, 258, 31, 223,
++ 239, 240, 385, 243, 244, 245, 246, 32, 260, 89,
++ 258, 33, 374, 34, 264, 35, 36, 272, 110, 160,
++ 207, 161, 111, 265, 277, 37, 38, 39, 40, 41,
++ 42, 43, 44, 332, 333, 45, 155, 46, 294, 295,
++ 168, 156, 291, 90, 91, 121, 47, 255, 181, 268,
++ 261, 48, 49, 50, 270, 51, 52, 271, 232, 233,
++ 92, 392, 53, 54, 375, 234, 292, 376, 280, 2,
++ 283, -6, 55, 3, 4, 5, 182, 183, 184, 185,
++ 112, 6, 7, 285, 186, 286, 299, 300, 8, 9,
++ 401, 93, 10, 310, 11, 406, 12, 13, 312, 247,
++ 14, 162, 311, 378, 408, 409, 410, 411, 412, 15,
++ 334, 121, 421, 16, 94, 95, 96, 248, 339, 17,
++ 335, 18, 249, 250, 367, 113, 369, 368, 379, 382,
++ 19, 20, 383, 114, 21, 22, 115, 386, 387, 23,
++ 24, 388, 301, 25, 26, 391, 395, 393, 397, 398,
++ 302, 402, 27, 303, 238, 259, 405, 407, 116, 418,
++ 420, 419, 279, 117, 269, 28, 29, 30, 313, 109,
++ 273, 257, 31, 408, 409, 410, 411, 412, 381, 284,
++ 262, 32, 416, 145, 363, 33, 315, 34, 390, 35,
++ 36, 304, 404, 417, 0, 0, 0, 0, 0, 37,
++ 38, 39, 40, 41, 42, 43, 44, 0, 0, 45,
++ 0, 46, 0, 340, 0, 0, 0, 0, 0, 0,
++ 47, 341, 305, 0, 0, 48, 49, 50, 2, 51,
++ 52, 0, 3, 4, 5, 0, 53, 54, 0, 0,
++ 6, 7, 0, 0, 0, -6, 55, 8, 9, 0,
++ 0, 10, 394, 11, 0, 12, 13, 342, 343, 14,
++ 0, 0, 0, 0, 0, 0, 0, 0, 15, 0,
++ 0, 0, 16, 0, 344, 0, 0, 0, 17, 0,
++ 18, 134, 135, 136, 137, 306, 0, 0, 0, 19,
++ 20, 0, 0, 21, 22, 0, 345, 0, 23, 24,
++ 0, 0, 25, 26, 346, 0, 347, 0, 0, 0,
++ 0, 27, 138, 0, 139, 0, 140, 0, 0, 0,
++ 348, 0, 141, 0, 28, 29, 30, 0, 0, 0,
++ 0, 31, 0, 0, 0, 0, 0, 349, 350, 190,
++ 32, 0, 0, 0, 33, 191, 34, 192, 35, 36,
++ 0, 0, 0, 0, 0, 0, 0, 0, 37, 38,
++ 39, 40, 41, 42, 43, 44, 0, 0, 45, 0,
++ 46, 0, 316, 351, 193, 352, 0, 0, 0, 47,
++ 317, 0, 0, 353, 48, 49, 50, 354, 51, 52,
++ 0, 0, 0, 0, 0, 53, 54, 0, 318, 319,
++ 0, 0, 320, 0, 0, 55, 0, 0, 321, 0,
++ 0, 0, 0, 0, 194, 0, 195, 0, 0, 0,
++ 0, 0, 196, 0, 197, 0, 0, 198, 0, 0,
++ 0, 0, 0, 0, 0, 322, 323, 0, 0, 324,
++ 325, 0, 326, 327, 328, 0, 329, 0, 0, 199,
++ 200, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+- 0, 191, 0, 192, 0, 0, 0, 0, 0, 193,
+- 0, 194, 0, 0, 195, 0, 0, 0, 0, 0,
+- 0, 0, 0, 348, 0, 349, 0, 0, 0, 0,
+- 350, 0, 0, 0, 351, 0, 196, 197
++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
++ 0, 0, 0, 0, 330
+ };
+
++#define yypact_value_is_default(Yystate) \
++ (!!((Yystate) == (-188)))
++
++#define yytable_value_is_error(Yytable_value) \
++ YYID (0)
++
+ static const yytype_int16 yycheck[] =
+ {
+- 15, 39, 186, 5, 39, 61, 61, 159, 160, 45,
+- 3, 62, 50, 57, 183, 20, 4, 201, 146, 24,
+- 32, 188, 29, 34, 39, 8, 61, 61, 94, 12,
+- 37, 198, 61, 40, 158, 18, 28, 158, 26, 66,
+- 106, 68, 7, 8, 55, 60, 158, 62, 158, 61,
+- 43, 44, 45, 46, 11, 185, 186, 27, 158, 51,
+- 25, 61, 54, 65, 146, 67, 250, 158, 79, 158,
+- 198, 78, 61, 42, 61, 158, 61, 82, 122, 1,
+- 158, 132, 158, 0, 183, 61, 69, 158, 10, 158,
+- 197, 32, 14, 15, 16, 61, 66, 158, 68, 64,
+- 22, 23, 109, 185, 186, 61, 158, 29, 30, 261,
+- 262, 33, 27, 35, 129, 37, 38, 105, 173, 41,
+- 103, 104, 127, 27, 112, 86, 95, 142, 50, 94,
+- 135, 158, 54, 138, 169, 171, 61, 120, 60, 195,
+- 62, 129, 99, 61, 136, 137, 139, 104, 194, 71,
+- 72, 143, 61, 75, 76, 160, 158, 183, 80, 81,
+- 165, 61, 84, 85, 157, 172, 61, 158, 151, 162,
+- 163, 93, 56, 57, 58, 59, 158, 179, 148, 331,
+- 149, 365, 61, 158, 106, 107, 108, 158, 158, 36,
+- 178, 113, 6, 181, 159, 194, 158, 183, 27, 164,
+- 122, 61, 61, 87, 126, 89, 128, 91, 130, 131,
+- 394, 158, 196, 97, 194, 399, 183, 31, 140, 141,
+- 142, 143, 144, 145, 146, 147, 198, 265, 150, 197,
+- 152, 194, 416, 187, 194, 49, 188, 183, 52, 161,
+- 183, 194, 197, 183, 166, 167, 168, 101, 170, 171,
+- 139, 248, 174, 175, 10, 166, 184, 12, 14, 15,
+- 16, 183, 184, 126, 154, 29, 22, 23, 189, 190,
+- 191, 192, 193, 29, 30, 205, 293, 33, 251, 35,
+- 361, 37, 38, 396, 410, 41, -1, 189, 190, 191,
+- 192, 193, -1, -1, 50, 333, 198, -1, 54, -1,
+- -1, -1, -1, -1, 60, -1, 62, -1, -1, -1,
+- -1, 125, -1, -1, -1, 71, 72, -1, -1, 75,
+- 76, -1, -1, -1, 80, 81, -1, -1, 84, 85,
+- -1, -1, -1, -1, -1, -1, -1, 93, -1, 153,
+- 154, 155, 156, -1, -1, -1, -1, 161, -1, -1,
+- 106, 107, 108, -1, -1, -1, -1, 113, -1, -1,
+- -1, -1, -1, -1, -1, -1, 122, -1, -1, 384,
+- 126, -1, 128, -1, 130, 131, -1, -1, -1, -1,
+- -1, -1, -1, -1, 140, 141, 142, 143, 144, 145,
+- 146, 147, -1, -1, 150, -1, 152, -1, -1, -1,
+- -1, -1, -1, -1, -1, 161, -1, -1, -1, -1,
+- 166, 167, 168, -1, 170, 171, -1, 10, 174, 175,
+- -1, 14, 15, 16, -1, -1, -1, 183, 184, 22,
+- 23, -1, -1, -1, -1, -1, 29, 30, 47, -1,
+- 33, -1, 35, -1, 37, 38, 55, -1, 41, -1,
+- -1, -1, -1, -1, -1, -1, -1, 50, -1, -1,
+- -1, 54, -1, -1, 73, 74, -1, 60, 77, 62,
+- -1, -1, -1, 9, 83, -1, -1, -1, 71, 72,
+- -1, 17, 75, 76, -1, -1, -1, 80, 81, -1,
+- -1, 84, 85, -1, -1, -1, -1, -1, -1, -1,
+- 93, 110, 111, -1, -1, 114, 115, -1, 117, 118,
+- 119, -1, 121, 106, 107, 108, -1, 53, 54, -1,
+- 113, -1, -1, -1, -1, -1, -1, -1, -1, 122,
+- -1, -1, -1, 126, 70, 128, 13, 130, 131, -1,
+- -1, -1, 19, -1, 21, -1, -1, 140, 141, 142,
+- 143, 144, 145, 146, 147, -1, 92, 150, -1, 152,
+- -1, -1, -1, -1, 100, -1, 102, 176, 161, -1,
+- -1, 48, -1, 166, 167, 168, -1, 170, 171, -1,
+- 116, 174, 175, -1, -1, -1, -1, -1, -1, -1,
+- -1, 184, -1, -1, -1, -1, -1, 133, 134, -1,
++ 15, 39, 189, 61, 7, 8, 1, 4, 45, 5,
++ 61, 11, 50, 191, 39, 10, 57, 204, 62, 14,
++ 15, 16, 25, 201, 39, 32, 186, 22, 23, 26,
++ 188, 189, 146, 61, 29, 30, 61, 61, 33, 158,
++ 35, 158, 37, 38, 97, 60, 41, 62, 158, 6,
++ 158, 162, 163, 42, 61, 50, 109, 158, 34, 54,
++ 61, 64, 158, 158, 158, 60, 253, 62, 8, 65,
++ 28, 67, 12, 66, 31, 68, 71, 72, 18, 55,
++ 75, 76, 61, 3, 125, 80, 81, 201, 132, 84,
++ 85, 94, 49, 51, 61, 52, 54, 158, 93, 99,
++ 27, 158, 61, 79, 104, 0, 95, 186, 105, 61,
++ 158, 106, 107, 108, 200, 112, 146, 132, 113, 158,
++ 61, 32, 173, 43, 44, 45, 46, 122, 61, 69,
++ 145, 126, 129, 128, 27, 130, 131, 174, 20, 66,
++ 198, 68, 24, 27, 169, 140, 141, 142, 143, 144,
++ 145, 146, 147, 264, 265, 150, 159, 152, 188, 189,
++ 149, 164, 158, 103, 104, 158, 161, 158, 125, 86,
++ 158, 166, 167, 168, 61, 170, 171, 197, 136, 137,
++ 120, 368, 177, 178, 181, 143, 182, 184, 61, 10,
++ 61, 186, 187, 14, 15, 16, 153, 154, 155, 156,
++ 82, 22, 23, 61, 161, 186, 61, 158, 29, 30,
++ 397, 151, 33, 158, 35, 402, 37, 38, 61, 139,
++ 41, 148, 158, 334, 192, 193, 194, 195, 196, 50,
++ 268, 158, 419, 54, 174, 175, 176, 157, 36, 60,
++ 158, 62, 162, 163, 186, 127, 158, 197, 27, 61,
++ 71, 72, 61, 135, 75, 76, 138, 158, 197, 80,
++ 81, 186, 29, 84, 85, 200, 190, 199, 197, 191,
++ 37, 197, 93, 40, 104, 142, 186, 200, 160, 186,
++ 186, 197, 201, 165, 169, 106, 107, 108, 251, 12,
++ 187, 129, 113, 192, 193, 194, 195, 196, 336, 208,
++ 157, 122, 201, 29, 296, 126, 254, 128, 364, 130,
++ 131, 78, 399, 413, -1, -1, -1, -1, -1, 140,
++ 141, 142, 143, 144, 145, 146, 147, -1, -1, 150,
++ -1, 152, -1, 9, -1, -1, -1, -1, -1, -1,
++ 161, 17, 109, -1, -1, 166, 167, 168, 10, 170,
++ 171, -1, 14, 15, 16, -1, 177, 178, -1, -1,
++ 22, 23, -1, -1, -1, 186, 187, 29, 30, -1,
++ -1, 33, 387, 35, -1, 37, 38, 53, 54, 41,
++ -1, -1, -1, -1, -1, -1, -1, -1, 50, -1,
++ -1, -1, 54, -1, 70, -1, -1, -1, 60, -1,
++ 62, 56, 57, 58, 59, 172, -1, -1, -1, 71,
++ 72, -1, -1, 75, 76, -1, 92, -1, 80, 81,
++ -1, -1, 84, 85, 100, -1, 102, -1, -1, -1,
++ -1, 93, 87, -1, 89, -1, 91, -1, -1, -1,
++ 116, -1, 97, -1, 106, 107, 108, -1, -1, -1,
++ -1, 113, -1, -1, -1, -1, -1, 133, 134, 13,
++ 122, -1, -1, -1, 126, 19, 128, 21, 130, 131,
++ -1, -1, -1, -1, -1, -1, -1, -1, 140, 141,
++ 142, 143, 144, 145, 146, 147, -1, -1, 150, -1,
++ 152, -1, 47, 169, 48, 171, -1, -1, -1, 161,
++ 55, -1, -1, 179, 166, 167, 168, 183, 170, 171,
++ -1, -1, -1, -1, -1, 177, 178, -1, 73, 74,
++ -1, -1, 77, -1, -1, 187, -1, -1, 83, -1,
++ -1, -1, -1, -1, 88, -1, 90, -1, -1, -1,
++ -1, -1, 96, -1, 98, -1, -1, 101, -1, -1,
++ -1, -1, -1, -1, -1, 110, 111, -1, -1, 114,
++ 115, -1, 117, 118, 119, -1, 121, -1, -1, 123,
++ 124, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+- -1, 88, -1, 90, -1, -1, -1, -1, -1, 96,
+- -1, 98, -1, -1, 101, -1, -1, -1, -1, -1,
+- -1, -1, -1, 169, -1, 171, -1, -1, -1, -1,
+- 176, -1, -1, -1, 180, -1, 123, 124
++ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
++ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
++ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
++ -1, -1, -1, -1, 179
+ };
+
+- /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+- symbol of state STATE-NUM. */
++/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
++ symbol of state STATE-NUM. */
+ static const yytype_uint16 yystos[] =
+ {
+ 0, 1, 10, 14, 15, 16, 22, 23, 29, 30,
+@@ -1302,130 +1504,71 @@ static const yytype_uint16 yystos[] =
+ 72, 75, 76, 80, 81, 84, 85, 93, 106, 107,
+ 108, 113, 122, 126, 128, 130, 131, 140, 141, 142,
+ 143, 144, 145, 146, 147, 150, 152, 161, 166, 167,
+- 168, 170, 171, 174, 175, 184, 200, 201, 202, 203,
+- 204, 216, 217, 218, 219, 223, 228, 236, 245, 250,
+- 254, 259, 263, 264, 265, 266, 267, 275, 276, 279,
+- 290, 291, 183, 61, 61, 220, 8, 12, 18, 69,
+- 103, 104, 120, 151, 255, 256, 257, 258, 11, 99,
+- 104, 239, 240, 241, 158, 268, 255, 20, 24, 82,
+- 127, 135, 138, 160, 165, 230, 66, 68, 158, 205,
+- 206, 207, 158, 158, 158, 158, 273, 274, 205, 287,
+- 61, 56, 57, 58, 59, 87, 89, 91, 97, 242,
+- 243, 244, 287, 158, 158, 286, 61, 7, 8, 25,
+- 64, 94, 159, 164, 280, 281, 27, 66, 68, 148,
+- 205, 206, 61, 42, 95, 149, 251, 252, 253, 158,
+- 269, 229, 230, 158, 6, 31, 49, 52, 125, 153,
+- 154, 155, 156, 161, 260, 261, 262, 13, 19, 21,
+- 48, 88, 90, 96, 98, 101, 123, 124, 224, 225,
+- 226, 227, 206, 61, 195, 283, 284, 285, 61, 282,
+- 0, 202, 183, 205, 205, 32, 61, 289, 61, 158,
+- 158, 34, 55, 79, 278, 197, 28, 51, 54, 136,
+- 137, 143, 221, 222, 256, 240, 61, 32, 231, 3,
+- 43, 44, 45, 46, 139, 157, 162, 163, 246, 247,
+- 248, 249, 158, 202, 274, 205, 243, 61, 158, 281,
+- 237, 27, 27, 237, 237, 86, 252, 61, 194, 230,
+- 261, 289, 39, 61, 169, 288, 225, 61, 289, 271,
+- 61, 284, 61, 183, 208, 5, 65, 67, 158, 179,
+- 277, 185, 186, 292, 293, 294, 61, 158, 29, 37,
+- 40, 78, 109, 172, 232, 233, 234, 158, 158, 61,
+- 247, 289, 288, 47, 55, 73, 74, 77, 83, 110,
+- 111, 114, 115, 117, 118, 119, 121, 176, 238, 237,
+- 237, 206, 158, 62, 132, 272, 36, 9, 17, 53,
+- 54, 70, 92, 100, 102, 116, 133, 134, 169, 171,
+- 176, 180, 209, 210, 211, 212, 213, 214, 215, 146,
+- 293, 295, 296, 298, 183, 194, 158, 4, 26, 105,
+- 112, 129, 178, 181, 235, 237, 27, 270, 206, 61,
+- 61, 61, 173, 158, 194, 183, 198, 296, 197, 289,
+- 196, 205, 187, 297, 194, 188, 299, 300, 289, 194,
+- 198, 300, 183, 289, 197, 189, 190, 191, 192, 193,
+- 301, 302, 303, 198, 302, 183, 194, 183, 289
++ 168, 170, 171, 177, 178, 187, 203, 204, 205, 206,
++ 207, 219, 220, 221, 222, 226, 231, 239, 248, 253,
++ 257, 262, 266, 267, 268, 269, 270, 278, 279, 282,
++ 293, 294, 186, 61, 61, 223, 8, 12, 18, 69,
++ 103, 104, 120, 151, 174, 175, 176, 258, 259, 260,
++ 261, 11, 99, 104, 242, 243, 244, 158, 271, 258,
++ 20, 24, 82, 127, 135, 138, 160, 165, 233, 66,
++ 68, 158, 208, 209, 210, 158, 158, 158, 158, 276,
++ 277, 208, 290, 61, 56, 57, 58, 59, 87, 89,
++ 91, 97, 245, 246, 247, 290, 158, 158, 289, 61,
++ 7, 8, 25, 64, 94, 159, 164, 283, 284, 27,
++ 66, 68, 148, 208, 209, 61, 42, 95, 149, 254,
++ 255, 256, 158, 272, 232, 233, 158, 6, 31, 49,
++ 52, 125, 153, 154, 155, 156, 161, 263, 264, 265,
++ 13, 19, 21, 48, 88, 90, 96, 98, 101, 123,
++ 124, 227, 228, 229, 230, 209, 61, 198, 286, 287,
++ 288, 61, 285, 0, 205, 186, 208, 208, 32, 61,
++ 292, 61, 158, 158, 34, 55, 79, 281, 200, 28,
++ 51, 54, 136, 137, 143, 224, 225, 259, 243, 61,
++ 32, 234, 3, 43, 44, 45, 46, 139, 157, 162,
++ 163, 249, 250, 251, 252, 158, 205, 277, 208, 246,
++ 61, 158, 284, 240, 27, 27, 240, 240, 86, 255,
++ 61, 197, 233, 264, 292, 39, 61, 169, 291, 228,
++ 61, 292, 274, 61, 287, 61, 186, 211, 5, 65,
++ 67, 158, 182, 280, 188, 189, 295, 296, 297, 61,
++ 158, 29, 37, 40, 78, 109, 172, 235, 236, 237,
++ 158, 158, 61, 250, 292, 291, 47, 55, 73, 74,
++ 77, 83, 110, 111, 114, 115, 117, 118, 119, 121,
++ 179, 241, 240, 240, 209, 158, 62, 132, 275, 36,
++ 9, 17, 53, 54, 70, 92, 100, 102, 116, 133,
++ 134, 169, 171, 179, 183, 212, 213, 214, 215, 216,
++ 217, 218, 146, 296, 298, 299, 301, 186, 197, 158,
++ 4, 26, 105, 112, 129, 181, 184, 238, 240, 27,
++ 273, 209, 61, 61, 61, 173, 158, 197, 186, 201,
++ 299, 200, 292, 199, 208, 190, 300, 197, 191, 302,
++ 303, 292, 197, 201, 303, 186, 292, 200, 192, 193,
++ 194, 195, 196, 304, 305, 306, 201, 305, 186, 197,
++ 186, 292
+ };
+
+- /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+-static const yytype_uint16 yyr1[] =
+-{
+- 0, 199, 200, 201, 201, 201, 202, 202, 202, 202,
+- 202, 202, 202, 202, 202, 202, 202, 202, 202, 202,
+- 203, 204, 204, 204, 204, 204, 205, 205, 206, 207,
+- 207, 208, 208, 209, 209, 209, 210, 211, 211, 211,
+- 211, 211, 211, 211, 211, 212, 212, 213, 213, 213,
+- 213, 213, 213, 214, 215, 216, 217, 217, 218, 218,
+- 218, 218, 219, 219, 219, 219, 219, 219, 219, 219,
+- 219, 220, 220, 221, 221, 222, 222, 222, 222, 222,
+- 223, 224, 224, 225, 225, 225, 226, 226, 226, 226,
+- 226, 226, 227, 227, 227, 227, 228, 228, 228, 229,
+- 229, 230, 230, 230, 230, 230, 230, 230, 230, 231,
+- 231, 232, 232, 232, 232, 233, 233, 234, 234, 235,
+- 235, 235, 235, 235, 235, 235, 236, 236, 236, 236,
+- 236, 236, 236, 236, 237, 237, 238, 238, 238, 238,
+- 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
+- 238, 239, 239, 240, 241, 241, 241, 242, 242, 243,
+- 244, 244, 244, 244, 244, 244, 244, 244, 245, 246,
+- 246, 247, 247, 247, 247, 247, 248, 248, 249, 249,
+- 249, 249, 250, 251, 251, 252, 253, 253, 253, 254,
+- 254, 255, 255, 256, 256, 257, 257, 257, 257, 257,
+- 257, 258, 258, 259, 260, 260, 261, 262, 262, 262,
+- 262, 262, 262, 262, 262, 262, 262, 263, 263, 263,
+- 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
+- 263, 264, 264, 264, 265, 265, 266, 266, 267, 267,
+- 267, 268, 268, 268, 269, 270, 270, 271, 271, 272,
+- 272, 273, 273, 274, 275, 275, 276, 276, 277, 277,
+- 277, 277, 278, 278, 278, 279, 280, 280, 281, 281,
+- 281, 281, 281, 281, 281, 282, 282, 283, 283, 284,
+- 284, 285, 286, 286, 287, 287, 288, 288, 288, 289,
+- 289, 290, 291, 292, 292, 293, 294, 294, 295, 295,
+- 296, 297, 298, 299, 299, 300, 301, 301, 302, 303,
+- 303, 303, 303, 303
+-};
++#define yyerrok (yyerrstatus = 0)
++#define yyclearin (yychar = YYEMPTY)
++#define YYEMPTY (-2)
++#define YYEOF 0
+
+- /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
+-static const yytype_uint8 yyr2[] =
+-{
+- 0, 2, 1, 3, 2, 2, 0, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 3, 1, 1, 1, 1, 1, 1, 2, 1, 1,
+- 1, 0, 2, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 2, 2, 1, 1, 1,
+- 1, 1, 1, 2, 1, 2, 1, 1, 1, 2,
+- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+- 2, 0, 2, 2, 2, 1, 1, 1, 1, 1,
+- 2, 2, 1, 2, 2, 2, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 2, 2, 3, 2,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
+- 2, 2, 2, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 2, 2, 3, 5,
+- 3, 4, 4, 3, 0, 2, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 2, 1, 2, 1, 1, 1, 2, 1, 2,
+- 1, 1, 1, 1, 1, 1, 1, 1, 3, 2,
+- 1, 2, 2, 2, 2, 2, 1, 1, 1, 1,
+- 1, 1, 2, 2, 1, 2, 1, 1, 1, 2,
+- 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 1, 2, 2, 1, 2, 1, 1, 1,
+- 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+- 2, 2, 2, 3, 1, 2, 2, 2, 2, 3,
+- 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+- 1, 1, 2, 0, 4, 1, 0, 0, 2, 2,
+- 2, 2, 1, 1, 3, 3, 1, 1, 1, 1,
+- 1, 1, 1, 1, 1, 2, 2, 1, 1, 1,
+- 1, 1, 1, 1, 1, 2, 1, 2, 1, 1,
+- 1, 5, 2, 1, 2, 1, 1, 1, 1, 1,
+- 1, 5, 1, 3, 2, 3, 1, 1, 2, 1,
+- 5, 4, 3, 2, 1, 6, 3, 2, 3, 1,
+- 1, 1, 1, 1
+-};
++#define YYACCEPT goto yyacceptlab
++#define YYABORT goto yyabortlab
++#define YYERROR goto yyerrorlab
+
+
+-#define yyerrok (yyerrstatus = 0)
+-#define yyclearin (yychar = YYEMPTY)
+-#define YYEMPTY (-2)
+-#define YYEOF 0
++/* Like YYERROR except do call yyerror. This remains here temporarily
++ to ease the transition to the new meaning of YYERROR, for GCC.
++ Once GCC version 2 has supplanted version 1, this can go. However,
++ YYFAIL appears to be in use. Nevertheless, it is formally deprecated
++ in Bison 2.4.2's NEWS entry, where a plan to phase it out is
++ discussed. */
+
+-#define YYACCEPT goto yyacceptlab
+-#define YYABORT goto yyabortlab
+-#define YYERROR goto yyerrorlab
++#define YYFAIL goto yyerrlab
++#if defined YYFAIL
++ /* This is here to suppress warnings from the GCC cpp's
++ -Wunused-macros. Normally we don't worry about that warning, but
++ some users do, and we want to make it easy for users to remove
++ YYFAIL uses, which will produce warnings from Bison 2.5. */
++#endif
+
+-
+ #define YYRECOVERING() (!!yyerrstatus)
+
+ #define YYBACKUP(Token, Value) \
+@@ -1441,16 +1584,28 @@ do
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+- YYERROR; \
+- } \
+-while (0)
++ YYERROR; \
++ } \
++while (YYID (0))
+
+ /* Error token number */
+-#define YYTERROR 1
+-#define YYERRCODE 256
++#define YYTERROR 1
++#define YYERRCODE 256
+
+
++/* This macro is provided for backward compatibility. */
++#ifndef YY_LOCATION_PRINT
++# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
++#endif
+
++
++/* YYLEX -- calling `yylex' with the right arguments. */
++#ifdef YYLEX_PARAM
++# define YYLEX yylex (YYLEX_PARAM)
++#else
++# define YYLEX yylex ()
++#endif
++
+ /* Enable debugging if requested. */
+ #if YYDEBUG
+
+@@ -1459,36 +1614,40 @@ do
+ # define YYFPRINTF fprintf
+ # endif
+
+-# define YYDPRINTF(Args) \
+-do { \
+- if (yydebug) \
+- YYFPRINTF Args; \
+-} while (0)
++# define YYDPRINTF(Args) \
++do { \
++ if (yydebug) \
++ YYFPRINTF Args; \
++} while (YYID (0))
+
+-/* This macro is provided for backward compatibility. */
+-#ifndef YY_LOCATION_PRINT
+-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+-#endif
++# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
++do { \
++ if (yydebug) \
++ { \
++ YYFPRINTF (stderr, "%s ", Title); \
++ yy_symbol_print (stderr, \
++ Type, Value); \
++ YYFPRINTF (stderr, "\n"); \
++ } \
++} while (YYID (0))
+
+
+-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+-do { \
+- if (yydebug) \
+- { \
+- YYFPRINTF (stderr, "%s ", Title); \
+- yy_symbol_print (stderr, \
+- Type, Value); \
+- YYFPRINTF (stderr, "\n"); \
+- } \
+-} while (0)
++/*--------------------------------.
++| Print this symbol on YYOUTPUT. |
++`--------------------------------*/
+
+-
+-/*----------------------------------------.
+-| Print this symbol's value on YYOUTPUT. |
+-`----------------------------------------*/
+-
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ static void
+ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_value_print (yyoutput, yytype, yyvaluep)
++ FILE *yyoutput;
++ int yytype;
++ YYSTYPE const * const yyvaluep;
++#endif
+ {
+ FILE *yyo = yyoutput;
+ YYUSE (yyo);
+@@ -1497,6 +1656,8 @@ yy_symbol_value_print (FILE *yyoutput, int yytype,
+ # ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
++# else
++ YYUSE (yyoutput);
+ # endif
+ YYUSE (yytype);
+ }
+@@ -1506,11 +1667,22 @@ yy_symbol_value_print (FILE *yyoutput, int yytype,
+ | Print this symbol on YYOUTPUT. |
+ `--------------------------------*/
+
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ static void
+ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
++#else
++static void
++yy_symbol_print (yyoutput, yytype, yyvaluep)
++ FILE *yyoutput;
++ int yytype;
++ YYSTYPE const * const yyvaluep;
++#endif
+ {
+- YYFPRINTF (yyoutput, "%s %s (",
+- yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
++ if (yytype < YYNTOKENS)
++ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
++ else
++ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+ YYFPRINTF (yyoutput, ")");
+@@ -1521,8 +1693,16 @@ yy_symbol_print (FILE *yyoutput, int yytype, YYSTY
+ | TOP (included). |
+ `------------------------------------------------------------------*/
+
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ static void
+ yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
++#else
++static void
++yy_stack_print (yybottom, yytop)
++ yytype_int16 *yybottom;
++ yytype_int16 *yytop;
++#endif
+ {
+ YYFPRINTF (stderr, "Stack now");
+ for (; yybottom <= yytop; yybottom++)
+@@ -1533,11 +1713,11 @@ yy_stack_print (yytype_int16 *yybottom, yytype_int
+ YYFPRINTF (stderr, "\n");
+ }
+
+-# define YY_STACK_PRINT(Bottom, Top) \
+-do { \
+- if (yydebug) \
+- yy_stack_print ((Bottom), (Top)); \
+-} while (0)
++# define YY_STACK_PRINT(Bottom, Top) \
++do { \
++ if (yydebug) \
++ yy_stack_print ((Bottom), (Top)); \
++} while (YYID (0))
+
+
+ /*------------------------------------------------.
+@@ -1544,31 +1724,38 @@ yy_stack_print (yytype_int16 *yybottom, yytype_int
+ | Report that the YYRULE is going to be reduced. |
+ `------------------------------------------------*/
+
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ static void
+-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
++yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
++#else
++static void
++yy_reduce_print (yyvsp, yyrule)
++ YYSTYPE *yyvsp;
++ int yyrule;
++#endif
+ {
+- unsigned long int yylno = yyrline[yyrule];
+ int yynrhs = yyr2[yyrule];
+ int yyi;
++ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+- yyrule - 1, yylno);
++ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ YYFPRINTF (stderr, " $%d = ", yyi + 1);
+- yy_symbol_print (stderr,
+- yystos[yyssp[yyi + 1 - yynrhs]],
+- &(yyvsp[(yyi + 1) - (yynrhs)])
+- );
++ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
++ &(yyvsp[(yyi + 1) - (yynrhs)])
++ );
+ YYFPRINTF (stderr, "\n");
+ }
+ }
+
+-# define YY_REDUCE_PRINT(Rule) \
+-do { \
+- if (yydebug) \
+- yy_reduce_print (yyssp, yyvsp, Rule); \
+-} while (0)
++# define YY_REDUCE_PRINT(Rule) \
++do { \
++ if (yydebug) \
++ yy_reduce_print (yyvsp, Rule); \
++} while (YYID (0))
+
+ /* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+@@ -1582,7 +1769,7 @@ int yydebug;
+
+
+ /* YYINITDEPTH -- initial size of the parser's stacks. */
+-#ifndef YYINITDEPTH
++#ifndef YYINITDEPTH
+ # define YYINITDEPTH 200
+ #endif
+
+@@ -1605,8 +1792,15 @@ int yydebug;
+ # define yystrlen strlen
+ # else
+ /* Return the length of YYSTR. */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ static YYSIZE_T
+ yystrlen (const char *yystr)
++#else
++static YYSIZE_T
++yystrlen (yystr)
++ const char *yystr;
++#endif
+ {
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+@@ -1622,8 +1816,16 @@ yystrlen (const char *yystr)
+ # else
+ /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ static char *
+ yystpcpy (char *yydest, const char *yysrc)
++#else
++static char *
++yystpcpy (yydest, yysrc)
++ char *yydest;
++ const char *yysrc;
++#endif
+ {
+ char *yyd = yydest;
+ const char *yys = yysrc;
+@@ -1653,27 +1855,27 @@ yytnamerr (char *yyres, const char *yystr)
+ char const *yyp = yystr;
+
+ for (;;)
+- switch (*++yyp)
+- {
+- case '\'':
+- case ',':
+- goto do_not_strip_quotes;
++ switch (*++yyp)
++ {
++ case '\'':
++ case ',':
++ goto do_not_strip_quotes;
+
+- case '\\':
+- if (*++yyp != '\\')
+- goto do_not_strip_quotes;
+- /* Fall through. */
+- default:
+- if (yyres)
+- yyres[yyn] = *yyp;
+- yyn++;
+- break;
++ case '\\':
++ if (*++yyp != '\\')
++ goto do_not_strip_quotes;
++ /* Fall through. */
++ default:
++ if (yyres)
++ yyres[yyn] = *yyp;
++ yyn++;
++ break;
+
+- case '"':
+- if (yyres)
+- yyres[yyn] = '\0';
+- return yyn;
+- }
++ case '"':
++ if (yyres)
++ yyres[yyn] = '\0';
++ return yyn;
++ }
+ do_not_strip_quotes: ;
+ }
+
+@@ -1696,11 +1898,11 @@ static int
+ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
+ yytype_int16 *yyssp, int yytoken)
+ {
+- YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
++ YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
+ YYSIZE_T yysize = yysize0;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ /* Internationalized format string. */
+- const char *yyformat = YY_NULLPTR;
++ const char *yyformat = YY_NULL;
+ /* Arguments of yyformat. */
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ /* Number of reported tokens (one for the "unexpected", one per
+@@ -1708,6 +1910,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yyms
+ int yycount = 0;
+
+ /* There are many possibilities here to consider:
++ - Assume YYFAIL is not used. It's too flawed to consider. See
++
++ for details. YYERROR is fine as it does not invoke this
++ function.
+ - If this state is a consistent state with a default action, then
+ the only way this function was invoked is if the default action
+ is an error action. In that case, don't check for expected
+@@ -1757,7 +1963,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yyms
+ }
+ yyarg[yycount++] = yytname[yyx];
+ {
+- YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
++ YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+ if (! (yysize <= yysize1
+ && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+ return 2;
+@@ -1824,17 +2030,26 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yyms
+ | Release the memory associated to this symbol. |
+ `-----------------------------------------------*/
+
++/*ARGSUSED*/
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ static void
+ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
++#else
++static void
++yydestruct (yymsg, yytype, yyvaluep)
++ const char *yymsg;
++ int yytype;
++ YYSTYPE *yyvaluep;
++#endif
+ {
+ YYUSE (yyvaluep);
++
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+- YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ YYUSE (yytype);
+- YY_IGNORE_MAYBE_UNINITIALIZED_END
+ }
+
+
+@@ -1843,8 +2058,18 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE
+ /* The lookahead symbol. */
+ int yychar;
+
++
++#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
++# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
++# define YY_IGNORE_MAYBE_UNINITIALIZED_END
++#endif
++#ifndef YY_INITIAL_VALUE
++# define YY_INITIAL_VALUE(Value) /* Nothing. */
++#endif
++
+ /* The semantic value of the lookahead symbol. */
+-YYSTYPE yylval;
++YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
++
+ /* Number of syntax errors so far. */
+ int yynerrs;
+
+@@ -1853,8 +2078,27 @@ int yynerrs;
+ | yyparse. |
+ `----------*/
+
++#ifdef YYPARSE_PARAM
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
+ int
++yyparse (void *YYPARSE_PARAM)
++#else
++int
++yyparse (YYPARSE_PARAM)
++ void *YYPARSE_PARAM;
++#endif
++#else /* ! YYPARSE_PARAM */
++#if (defined __STDC__ || defined __C99__FUNC__ \
++ || defined __cplusplus || defined _MSC_VER)
++int
+ yyparse (void)
++#else
++int
++yyparse ()
++
++#endif
++#endif
+ {
+ int yystate;
+ /* Number of tokens to shift before error messages enabled. */
+@@ -1861,8 +2105,8 @@ yyparse (void)
+ int yyerrstatus;
+
+ /* The stacks and their tools:
+- 'yyss': related to states.
+- 'yyvs': related to semantic values.
++ `yyss': related to states.
++ `yyvs': related to semantic values.
+
+ Refer to the stacks through separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+@@ -1930,23 +2174,23 @@ yyparse (void)
+
+ #ifdef yyoverflow
+ {
+- /* Give user a chance to reallocate the stack. Use copies of
+- these so that the &'s don't force the real ones into
+- memory. */
+- YYSTYPE *yyvs1 = yyvs;
+- yytype_int16 *yyss1 = yyss;
++ /* Give user a chance to reallocate the stack. Use copies of
++ these so that the &'s don't force the real ones into
++ memory. */
++ YYSTYPE *yyvs1 = yyvs;
++ yytype_int16 *yyss1 = yyss;
+
+- /* Each stack pointer address is followed by the size of the
+- data in use in that stack, in bytes. This used to be a
+- conditional around just the two extra args, but that might
+- be undefined if yyoverflow is a macro. */
+- yyoverflow (YY_("memory exhausted"),
+- &yyss1, yysize * sizeof (*yyssp),
+- &yyvs1, yysize * sizeof (*yyvsp),
+- &yystacksize);
++ /* Each stack pointer address is followed by the size of the
++ data in use in that stack, in bytes. This used to be a
++ conditional around just the two extra args, but that might
++ be undefined if yyoverflow is a macro. */
++ yyoverflow (YY_("memory exhausted"),
++ &yyss1, yysize * sizeof (*yyssp),
++ &yyvs1, yysize * sizeof (*yyvsp),
++ &yystacksize);
+
+- yyss = yyss1;
+- yyvs = yyvs1;
++ yyss = yyss1;
++ yyvs = yyvs1;
+ }
+ #else /* no yyoverflow */
+ # ifndef YYSTACK_RELOCATE
+@@ -1954,22 +2198,22 @@ yyparse (void)
+ # else
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+- goto yyexhaustedlab;
++ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+- yystacksize = YYMAXDEPTH;
++ yystacksize = YYMAXDEPTH;
+
+ {
+- yytype_int16 *yyss1 = yyss;
+- union yyalloc *yyptr =
+- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+- if (! yyptr)
+- goto yyexhaustedlab;
+- YYSTACK_RELOCATE (yyss_alloc, yyss);
+- YYSTACK_RELOCATE (yyvs_alloc, yyvs);
++ yytype_int16 *yyss1 = yyss;
++ union yyalloc *yyptr =
++ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
++ if (! yyptr)
++ goto yyexhaustedlab;
++ YYSTACK_RELOCATE (yyss_alloc, yyss);
++ YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+ # undef YYSTACK_RELOCATE
+- if (yyss1 != yyssa)
+- YYSTACK_FREE (yyss1);
++ if (yyss1 != yyssa)
++ YYSTACK_FREE (yyss1);
+ }
+ # endif
+ #endif /* no yyoverflow */
+@@ -1978,10 +2222,10 @@ yyparse (void)
+ yyvsp = yyvs + yysize - 1;
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+- (unsigned long int) yystacksize));
++ (unsigned long int) yystacksize));
+
+ if (yyss + yystacksize - 1 <= yyssp)
+- YYABORT;
++ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+@@ -2010,7 +2254,7 @@ yybackup:
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+- yychar = yylex ();
++ yychar = YYLEX;
+ }
+
+ if (yychar <= YYEOF)
+@@ -2075,7 +2319,7 @@ yyreduce:
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+- '$$ = $1'.
++ `$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+@@ -2089,7 +2333,8 @@ yyreduce:
+ switch (yyn)
+ {
+ case 5:
+-#line 373 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 376 "../../ntpd/ntp_parser.y"
+ {
+ /* I will need to incorporate much more fine grained
+ * error messages. The following should suffice for
+@@ -2102,173 +2347,173 @@ yyreduce:
+ ip_ctx->errpos.nline,
+ ip_ctx->errpos.ncol);
+ }
+-#line 2106 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 20:
+-#line 409 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 412 "../../ntpd/ntp_parser.y"
+ {
+ peer_node *my_node;
+
+- my_node = create_peer_node((yyvsp[-2].Integer), (yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
++ my_node = create_peer_node((yyvsp[(1) - (3)].Integer), (yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Attr_val_fifo));
+ APPEND_G_FIFO(cfgt.peers, my_node);
+ }
+-#line 2117 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 27:
+-#line 428 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Address_node) = create_address_node((yyvsp[0].String), (yyvsp[-1].Integer)); }
+-#line 2123 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 431 "../../ntpd/ntp_parser.y"
++ { (yyval.Address_node) = create_address_node((yyvsp[(2) - (2)].String), (yyvsp[(1) - (2)].Integer)); }
+ break;
+
+ case 28:
+-#line 433 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Address_node) = create_address_node((yyvsp[0].String), AF_UNSPEC); }
+-#line 2129 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 436 "../../ntpd/ntp_parser.y"
++ { (yyval.Address_node) = create_address_node((yyvsp[(1) - (1)].String), AF_UNSPEC); }
+ break;
+
+ case 29:
+-#line 438 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 441 "../../ntpd/ntp_parser.y"
+ { (yyval.Integer) = AF_INET; }
+-#line 2135 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 30:
+-#line 440 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 443 "../../ntpd/ntp_parser.y"
+ { (yyval.Integer) = AF_INET6; }
+-#line 2141 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 31:
+-#line 445 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 448 "../../ntpd/ntp_parser.y"
+ { (yyval.Attr_val_fifo) = NULL; }
+-#line 2147 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 32:
+-#line 447 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 450 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
+ }
+-#line 2156 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 36:
+-#line 461 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
+-#line 2162 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 464 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
+ break;
+
+ case 45:
+-#line 477 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
+-#line 2168 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 480 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
+ break;
+
+ case 46:
+-#line 479 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_uval((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
+-#line 2174 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 482 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_uval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
+ break;
+
+ case 53:
+-#line 493 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
+-#line 2180 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 496 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
+ break;
+
+ case 55:
+-#line 507 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 510 "../../ntpd/ntp_parser.y"
+ {
+ unpeer_node *my_node;
+
+- my_node = create_unpeer_node((yyvsp[0].Address_node));
++ my_node = create_unpeer_node((yyvsp[(2) - (2)].Address_node));
+ if (my_node)
+ APPEND_G_FIFO(cfgt.unpeers, my_node);
+ }
+-#line 2192 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 58:
+-#line 528 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 531 "../../ntpd/ntp_parser.y"
+ { cfgt.broadcastclient = 1; }
+-#line 2198 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 59:
+-#line 530 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[0].Address_fifo)); }
+-#line 2204 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 533 "../../ntpd/ntp_parser.y"
++ { CONCAT_G_FIFOS(cfgt.manycastserver, (yyvsp[(2) - (2)].Address_fifo)); }
+ break;
+
+ case 60:
+-#line 532 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[0].Address_fifo)); }
+-#line 2210 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 535 "../../ntpd/ntp_parser.y"
++ { CONCAT_G_FIFOS(cfgt.multicastclient, (yyvsp[(2) - (2)].Address_fifo)); }
+ break;
+
+ case 61:
+-#line 534 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { cfgt.mdnstries = (yyvsp[0].Integer); }
+-#line 2216 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 537 "../../ntpd/ntp_parser.y"
++ { cfgt.mdnstries = (yyvsp[(2) - (2)].Integer); }
+ break;
+
+ case 62:
+-#line 545 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 548 "../../ntpd/ntp_parser.y"
+ {
+ attr_val *atrv;
+
+- atrv = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
++ atrv = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer));
+ APPEND_G_FIFO(cfgt.vars, atrv);
+ }
+-#line 2227 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 63:
+-#line 552 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { cfgt.auth.control_key = (yyvsp[0].Integer); }
+-#line 2233 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 555 "../../ntpd/ntp_parser.y"
++ { cfgt.auth.control_key = (yyvsp[(2) - (2)].Integer); }
+ break;
+
+ case 64:
+-#line 554 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 557 "../../ntpd/ntp_parser.y"
+ {
+ cfgt.auth.cryptosw++;
+- CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[0].Attr_val_fifo));
++ CONCAT_G_FIFOS(cfgt.auth.crypto_cmd_list, (yyvsp[(2) - (2)].Attr_val_fifo));
+ }
+-#line 2242 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 65:
+-#line 559 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { cfgt.auth.keys = (yyvsp[0].String); }
+-#line 2248 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 562 "../../ntpd/ntp_parser.y"
++ { cfgt.auth.keys = (yyvsp[(2) - (2)].String); }
+ break;
+
+ case 66:
+-#line 561 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { cfgt.auth.keysdir = (yyvsp[0].String); }
+-#line 2254 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 564 "../../ntpd/ntp_parser.y"
++ { cfgt.auth.keysdir = (yyvsp[(2) - (2)].String); }
+ break;
+
+ case 67:
+-#line 563 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { cfgt.auth.request_key = (yyvsp[0].Integer); }
+-#line 2260 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 566 "../../ntpd/ntp_parser.y"
++ { cfgt.auth.request_key = (yyvsp[(2) - (2)].Integer); }
+ break;
+
+ case 68:
+-#line 565 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { cfgt.auth.revoke = (yyvsp[0].Integer); }
+-#line 2266 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 568 "../../ntpd/ntp_parser.y"
++ { cfgt.auth.revoke = (yyvsp[(2) - (2)].Integer); }
+ break;
+
+ case 69:
+-#line 567 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 570 "../../ntpd/ntp_parser.y"
+ {
+- cfgt.auth.trusted_key_list = (yyvsp[0].Attr_val_fifo);
++ cfgt.auth.trusted_key_list = (yyvsp[(2) - (2)].Attr_val_fifo);
+
+ // if (!cfgt.auth.trusted_key_list)
+ // cfgt.auth.trusted_key_list = $2;
+@@ -2275,191 +2520,191 @@ yyreduce:
+ // else
+ // LINK_SLIST(cfgt.auth.trusted_key_list, $2, link);
+ }
+-#line 2279 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 70:
+-#line 576 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { cfgt.auth.ntp_signd_socket = (yyvsp[0].String); }
+-#line 2285 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 579 "../../ntpd/ntp_parser.y"
++ { cfgt.auth.ntp_signd_socket = (yyvsp[(2) - (2)].String); }
+ break;
+
+ case 71:
+-#line 581 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 584 "../../ntpd/ntp_parser.y"
+ { (yyval.Attr_val_fifo) = NULL; }
+-#line 2291 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 72:
+-#line 583 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 586 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
+ }
+-#line 2300 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 73:
+-#line 591 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
+-#line 2306 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 594 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
+ break;
+
+ case 74:
+-#line 593 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 596 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Attr_val) = NULL;
+- cfgt.auth.revoke = (yyvsp[0].Integer);
++ cfgt.auth.revoke = (yyvsp[(2) - (2)].Integer);
+ msyslog(LOG_WARNING,
+ "'crypto revoke %d' is deprecated, "
+ "please use 'revoke %d' instead.",
+ cfgt.auth.revoke, cfgt.auth.revoke);
+ }
+-#line 2319 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 80:
+-#line 618 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[0].Attr_val_fifo)); }
+-#line 2325 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 621 "../../ntpd/ntp_parser.y"
++ { CONCAT_G_FIFOS(cfgt.orphan_cmds, (yyvsp[(2) - (2)].Attr_val_fifo)); }
+ break;
+
+ case 81:
+-#line 623 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 626 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
+ }
+-#line 2334 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 82:
+-#line 628 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 631 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Attr_val_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
+ }
+-#line 2343 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 83:
+-#line 636 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); }
+-#line 2349 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 639 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (double)(yyvsp[(2) - (2)].Integer)); }
+ break;
+
+ case 84:
+-#line 638 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
+-#line 2355 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 641 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
+ break;
+
+ case 85:
+-#line 640 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (double)(yyvsp[0].Integer)); }
+-#line 2361 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 643 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (double)(yyvsp[(2) - (2)].Integer)); }
+ break;
+
+ case 96:
+-#line 666 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[0].Int_fifo)); }
+-#line 2367 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 669 "../../ntpd/ntp_parser.y"
++ { CONCAT_G_FIFOS(cfgt.stats_list, (yyvsp[(2) - (2)].Int_fifo)); }
+ break;
+
+ case 97:
+-#line 668 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 671 "../../ntpd/ntp_parser.y"
+ {
+ if (lex_from_file()) {
+- cfgt.stats_dir = (yyvsp[0].String);
++ cfgt.stats_dir = (yyvsp[(2) - (2)].String);
+ } else {
+- YYFREE((yyvsp[0].String));
++ YYFREE((yyvsp[(2) - (2)].String));
+ yyerror("statsdir remote configuration ignored");
+ }
+ }
+-#line 2380 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 98:
+-#line 677 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 680 "../../ntpd/ntp_parser.y"
+ {
+ filegen_node *fgn;
+
+- fgn = create_filegen_node((yyvsp[-1].Integer), (yyvsp[0].Attr_val_fifo));
++ fgn = create_filegen_node((yyvsp[(2) - (3)].Integer), (yyvsp[(3) - (3)].Attr_val_fifo));
+ APPEND_G_FIFO(cfgt.filegen_opts, fgn);
+ }
+-#line 2391 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 99:
+-#line 687 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 690 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
+- APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
++ (yyval.Int_fifo) = (yyvsp[(1) - (2)].Int_fifo);
++ APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(2) - (2)].Integer)));
+ }
+-#line 2400 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 100:
+-#line 692 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 695 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Int_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
++ APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(1) - (1)].Integer)));
+ }
+-#line 2409 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 109:
+-#line 711 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 714 "../../ntpd/ntp_parser.y"
+ { (yyval.Attr_val_fifo) = NULL; }
+-#line 2415 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 110:
+-#line 713 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 716 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
+ }
+-#line 2424 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 111:
+-#line 721 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 724 "../../ntpd/ntp_parser.y"
+ {
+ if (lex_from_file()) {
+- (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
++ (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
+ } else {
+ (yyval.Attr_val) = NULL;
+- YYFREE((yyvsp[0].String));
++ YYFREE((yyvsp[(2) - (2)].String));
+ yyerror("filegen file remote config ignored");
+ }
+ }
+-#line 2438 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 112:
+-#line 731 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 734 "../../ntpd/ntp_parser.y"
+ {
+ if (lex_from_file()) {
+- (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
++ (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer));
+ } else {
+ (yyval.Attr_val) = NULL;
+ yyerror("filegen type remote config ignored");
+ }
+ }
+-#line 2451 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 113:
+-#line 740 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 743 "../../ntpd/ntp_parser.y"
+ {
+ const char *err;
+
+ if (lex_from_file()) {
+- (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer));
++ (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer));
+ } else {
+ (yyval.Attr_val) = NULL;
+- if (T_Link == (yyvsp[0].Integer))
++ if (T_Link == (yyvsp[(1) - (1)].Integer))
+ err = "filegen link remote config ignored";
+ else
+ err = "filegen nolink remote config ignored";
+@@ -2466,69 +2711,69 @@ yyreduce:
+ yyerror(err);
+ }
+ }
+-#line 2470 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 114:
+-#line 755 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
+-#line 2476 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 758 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
+ break;
+
+ case 126:
+-#line 785 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 788 "../../ntpd/ntp_parser.y"
+ {
+- CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[0].Attr_val_fifo));
++ CONCAT_G_FIFOS(cfgt.discard_opts, (yyvsp[(2) - (2)].Attr_val_fifo));
+ }
+-#line 2484 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 127:
+-#line 789 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 792 "../../ntpd/ntp_parser.y"
+ {
+- CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[0].Attr_val_fifo));
++ CONCAT_G_FIFOS(cfgt.mru_opts, (yyvsp[(2) - (2)].Attr_val_fifo));
+ }
+-#line 2492 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 128:
+-#line 793 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 796 "../../ntpd/ntp_parser.y"
+ {
+ restrict_node *rn;
+
+- rn = create_restrict_node((yyvsp[-1].Address_node), NULL, (yyvsp[0].Int_fifo),
++ rn = create_restrict_node((yyvsp[(2) - (3)].Address_node), NULL, (yyvsp[(3) - (3)].Int_fifo),
+ lex_current()->curpos.nline);
+ APPEND_G_FIFO(cfgt.restrict_opts, rn);
+ }
+-#line 2504 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 129:
+-#line 801 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 804 "../../ntpd/ntp_parser.y"
+ {
+ restrict_node *rn;
+
+- rn = create_restrict_node((yyvsp[-3].Address_node), (yyvsp[-1].Address_node), (yyvsp[0].Int_fifo),
++ rn = create_restrict_node((yyvsp[(2) - (5)].Address_node), (yyvsp[(4) - (5)].Address_node), (yyvsp[(5) - (5)].Int_fifo),
+ lex_current()->curpos.nline);
+ APPEND_G_FIFO(cfgt.restrict_opts, rn);
+ }
+-#line 2516 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 130:
+-#line 809 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 812 "../../ntpd/ntp_parser.y"
+ {
+ restrict_node *rn;
+
+- rn = create_restrict_node(NULL, NULL, (yyvsp[0].Int_fifo),
++ rn = create_restrict_node(NULL, NULL, (yyvsp[(3) - (3)].Int_fifo),
+ lex_current()->curpos.nline);
+ APPEND_G_FIFO(cfgt.restrict_opts, rn);
+ }
+-#line 2528 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 131:
+-#line 817 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 820 "../../ntpd/ntp_parser.y"
+ {
+ restrict_node *rn;
+
+@@ -2539,15 +2784,15 @@ yyreduce:
+ create_address_node(
+ estrdup("0.0.0.0"),
+ AF_INET),
+- (yyvsp[0].Int_fifo),
++ (yyvsp[(4) - (4)].Int_fifo),
+ lex_current()->curpos.nline);
+ APPEND_G_FIFO(cfgt.restrict_opts, rn);
+ }
+-#line 2547 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 132:
+-#line 832 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 835 "../../ntpd/ntp_parser.y"
+ {
+ restrict_node *rn;
+
+@@ -2558,226 +2803,226 @@ yyreduce:
+ create_address_node(
+ estrdup("::"),
+ AF_INET6),
+- (yyvsp[0].Int_fifo),
++ (yyvsp[(4) - (4)].Int_fifo),
+ lex_current()->curpos.nline);
+ APPEND_G_FIFO(cfgt.restrict_opts, rn);
+ }
+-#line 2566 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 133:
+-#line 847 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 850 "../../ntpd/ntp_parser.y"
+ {
+ restrict_node * rn;
+
+- APPEND_G_FIFO((yyvsp[0].Int_fifo), create_int_node((yyvsp[-1].Integer)));
++ APPEND_G_FIFO((yyvsp[(3) - (3)].Int_fifo), create_int_node((yyvsp[(2) - (3)].Integer)));
+ rn = create_restrict_node(
+- NULL, NULL, (yyvsp[0].Int_fifo), lex_current()->curpos.nline);
++ NULL, NULL, (yyvsp[(3) - (3)].Int_fifo), lex_current()->curpos.nline);
+ APPEND_G_FIFO(cfgt.restrict_opts, rn);
+ }
+-#line 2579 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 134:
+-#line 859 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 862 "../../ntpd/ntp_parser.y"
+ { (yyval.Int_fifo) = NULL; }
+-#line 2585 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 135:
+-#line 861 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 864 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
+- APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
++ (yyval.Int_fifo) = (yyvsp[(1) - (2)].Int_fifo);
++ APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(2) - (2)].Integer)));
+ }
+-#line 2594 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 151:
+-#line 887 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 890 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
+ }
+-#line 2603 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 152:
+-#line 892 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 895 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Attr_val_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
+ }
+-#line 2612 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 153:
+-#line 900 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
+-#line 2618 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 903 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
+ break;
+
+ case 157:
+-#line 911 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 914 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
+ }
+-#line 2627 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 158:
+-#line 916 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 919 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Attr_val_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
+ }
+-#line 2636 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 159:
+-#line 924 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
+-#line 2642 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 927 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
+ break;
+
+ case 168:
+-#line 944 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 947 "../../ntpd/ntp_parser.y"
+ {
+ addr_opts_node *aon;
+
+- aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
++ aon = create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Attr_val_fifo));
+ APPEND_G_FIFO(cfgt.fudge, aon);
+ }
+-#line 2653 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 169:
+-#line 954 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 957 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
+ }
+-#line 2662 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 170:
+-#line 959 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 962 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Attr_val_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
+ }
+-#line 2671 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 171:
+-#line 967 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
+-#line 2677 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 970 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
+ break;
+
+ case 172:
+-#line 969 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
+-#line 2683 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 972 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
+ break;
+
+ case 173:
+-#line 971 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 974 "../../ntpd/ntp_parser.y"
+ {
+- if ((yyvsp[0].Integer) >= 0 && (yyvsp[0].Integer) <= 16) {
+- (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
++ if ((yyvsp[(2) - (2)].Integer) >= 0 && (yyvsp[(2) - (2)].Integer) <= 16) {
++ (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer));
+ } else {
+ (yyval.Attr_val) = NULL;
+ yyerror("fudge factor: stratum value not in [0..16], ignored");
+ }
+ }
+-#line 2696 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 174:
+-#line 980 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
+-#line 2702 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 983 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
+ break;
+
+ case 175:
+-#line 982 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String)); }
+-#line 2708 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 985 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String)); }
+ break;
+
+ case 182:
+-#line 1003 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { CONCAT_G_FIFOS(cfgt.rlimit, (yyvsp[0].Attr_val_fifo)); }
+-#line 2714 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 1006 "../../ntpd/ntp_parser.y"
++ { CONCAT_G_FIFOS(cfgt.rlimit, (yyvsp[(2) - (2)].Attr_val_fifo)); }
+ break;
+
+ case 183:
+-#line 1008 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 1011 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
+ }
+-#line 2723 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 184:
+-#line 1013 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 1016 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Attr_val_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
+ }
+-#line 2732 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 185:
+-#line 1021 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
+-#line 2738 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 1024 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
+ break;
+
+ case 189:
+-#line 1037 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[0].Attr_val_fifo)); }
+-#line 2744 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 1040 "../../ntpd/ntp_parser.y"
++ { CONCAT_G_FIFOS(cfgt.enable_opts, (yyvsp[(2) - (2)].Attr_val_fifo)); }
+ break;
+
+ case 190:
+-#line 1039 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[0].Attr_val_fifo)); }
+-#line 2750 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 1042 "../../ntpd/ntp_parser.y"
++ { CONCAT_G_FIFOS(cfgt.disable_opts, (yyvsp[(2) - (2)].Attr_val_fifo)); }
+ break;
+
+ case 191:
+-#line 1044 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 1047 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
+ }
+-#line 2759 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 192:
+-#line 1049 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 1052 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Attr_val_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
+ }
+-#line 2768 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+ case 193:
+-#line 1057 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer)); }
+-#line 2774 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 1060 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer)); }
+ break;
+
+ case 194:
+-#line 1059 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 1062 "../../ntpd/ntp_parser.y"
+ {
+ if (lex_from_file()) {
+- (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[0].Integer));
++ (yyval.Attr_val) = create_attr_ival(T_Flag, (yyvsp[(1) - (1)].Integer));
+ } else {
+ char err_str[128];
+
+@@ -2784,101 +3029,101 @@ yyreduce:
+ (yyval.Attr_val) = NULL;
+ snprintf(err_str, sizeof(err_str),
+ "enable/disable %s remote configuration ignored",
+- keyword((yyvsp[0].Integer)));
++ keyword((yyvsp[(1) - (1)].Integer)));
+ yyerror(err_str);
+ }
+ }
+-#line 2792 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 203:
+-#line 1094 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[0].Attr_val_fifo)); }
+-#line 2798 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 206:
++/* Line 1787 of yacc.c */
++#line 1100 "../../ntpd/ntp_parser.y"
++ { CONCAT_G_FIFOS(cfgt.tinker, (yyvsp[(2) - (2)].Attr_val_fifo)); }
+ break;
+
+- case 204:
+-#line 1099 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 207:
++/* Line 1787 of yacc.c */
++#line 1105 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
+ }
+-#line 2807 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 205:
+-#line 1104 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 208:
++/* Line 1787 of yacc.c */
++#line 1110 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Attr_val_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
+ }
+-#line 2816 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 206:
+-#line 1112 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double)); }
+-#line 2822 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 209:
++/* Line 1787 of yacc.c */
++#line 1118 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double)); }
+ break;
+
+- case 219:
+-#line 1137 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 222:
++/* Line 1787 of yacc.c */
++#line 1143 "../../ntpd/ntp_parser.y"
+ {
+ attr_val *av;
+
+- av = create_attr_dval((yyvsp[-1].Integer), (yyvsp[0].Double));
++ av = create_attr_dval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Double));
+ APPEND_G_FIFO(cfgt.vars, av);
+ }
+-#line 2833 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 220:
+-#line 1144 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 223:
++/* Line 1787 of yacc.c */
++#line 1150 "../../ntpd/ntp_parser.y"
+ {
+ attr_val *av;
+
+- av = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer));
++ av = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer));
+ APPEND_G_FIFO(cfgt.vars, av);
+ }
+-#line 2844 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 221:
+-#line 1151 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 224:
++/* Line 1787 of yacc.c */
++#line 1157 "../../ntpd/ntp_parser.y"
+ {
+ attr_val *av;
+
+- av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
++ av = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
+ APPEND_G_FIFO(cfgt.vars, av);
+ }
+-#line 2855 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 222:
+-#line 1158 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 225:
++/* Line 1787 of yacc.c */
++#line 1164 "../../ntpd/ntp_parser.y"
+ {
+ char error_text[64];
+ attr_val *av;
+
+ if (lex_from_file()) {
+- av = create_attr_sval((yyvsp[-1].Integer), (yyvsp[0].String));
++ av = create_attr_sval((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].String));
+ APPEND_G_FIFO(cfgt.vars, av);
+ } else {
+- YYFREE((yyvsp[0].String));
++ YYFREE((yyvsp[(2) - (2)].String));
+ snprintf(error_text, sizeof(error_text),
+ "%s remote config ignored",
+- keyword((yyvsp[-1].Integer)));
++ keyword((yyvsp[(1) - (2)].Integer)));
+ yyerror(error_text);
+ }
+ }
+-#line 2875 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 223:
+-#line 1174 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 226:
++/* Line 1787 of yacc.c */
++#line 1180 "../../ntpd/ntp_parser.y"
+ {
+ if (!lex_from_file()) {
+- YYFREE((yyvsp[-1].String)); /* avoid leak */
++ YYFREE((yyvsp[(2) - (3)].String)); /* avoid leak */
+ yyerror("remote includefile ignored");
+ break;
+ }
+@@ -2886,108 +3131,108 @@ yyreduce:
+ fprintf(stderr, "getconfig: Maximum include file level exceeded.\n");
+ msyslog(LOG_ERR, "getconfig: Maximum include file level exceeded.");
+ } else {
+- const char * path = FindConfig((yyvsp[-1].String)); /* might return $2! */
++ const char * path = FindConfig((yyvsp[(2) - (3)].String)); /* might return $2! */
+ if (!lex_push_file(path, "r")) {
+ fprintf(stderr, "getconfig: Couldn't open <%s>\n", path);
+ msyslog(LOG_ERR, "getconfig: Couldn't open <%s>", path);
+ }
+ }
+- YYFREE((yyvsp[-1].String)); /* avoid leak */
++ YYFREE((yyvsp[(2) - (3)].String)); /* avoid leak */
+ }
+-#line 2898 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 224:
+-#line 1193 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 227:
++/* Line 1787 of yacc.c */
++#line 1199 "../../ntpd/ntp_parser.y"
+ { lex_flush_stack(); }
+-#line 2904 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 225:
+-#line 1195 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 228:
++/* Line 1787 of yacc.c */
++#line 1201 "../../ntpd/ntp_parser.y"
+ { /* see drift_parm below for actions */ }
+-#line 2910 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 226:
+-#line 1197 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[0].Attr_val_fifo)); }
+-#line 2916 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 229:
++/* Line 1787 of yacc.c */
++#line 1203 "../../ntpd/ntp_parser.y"
++ { CONCAT_G_FIFOS(cfgt.logconfig, (yyvsp[(2) - (2)].Attr_val_fifo)); }
+ break;
+
+- case 227:
+-#line 1199 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[0].String_fifo)); }
+-#line 2922 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 230:
++/* Line 1787 of yacc.c */
++#line 1205 "../../ntpd/ntp_parser.y"
++ { CONCAT_G_FIFOS(cfgt.phone, (yyvsp[(2) - (2)].String_fifo)); }
+ break;
+
+- case 228:
+-#line 1201 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { APPEND_G_FIFO(cfgt.setvar, (yyvsp[0].Set_var)); }
+-#line 2928 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 231:
++/* Line 1787 of yacc.c */
++#line 1207 "../../ntpd/ntp_parser.y"
++ { APPEND_G_FIFO(cfgt.setvar, (yyvsp[(2) - (2)].Set_var)); }
+ break;
+
+- case 229:
+-#line 1203 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 232:
++/* Line 1787 of yacc.c */
++#line 1209 "../../ntpd/ntp_parser.y"
+ {
+ addr_opts_node *aon;
+
+- aon = create_addr_opts_node((yyvsp[-1].Address_node), (yyvsp[0].Attr_val_fifo));
++ aon = create_addr_opts_node((yyvsp[(2) - (3)].Address_node), (yyvsp[(3) - (3)].Attr_val_fifo));
+ APPEND_G_FIFO(cfgt.trap, aon);
+ }
+-#line 2939 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 230:
+-#line 1210 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[0].Attr_val_fifo)); }
+-#line 2945 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 233:
++/* Line 1787 of yacc.c */
++#line 1216 "../../ntpd/ntp_parser.y"
++ { CONCAT_G_FIFOS(cfgt.ttl, (yyvsp[(2) - (2)].Attr_val_fifo)); }
+ break;
+
+- case 235:
+-#line 1225 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 238:
++/* Line 1787 of yacc.c */
++#line 1231 "../../ntpd/ntp_parser.y"
+ {
+ #ifndef LEAP_SMEAR
+ yyerror("Built without LEAP_SMEAR support.");
+ #endif
+ }
+-#line 2955 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 241:
+-#line 1245 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 244:
++/* Line 1787 of yacc.c */
++#line 1251 "../../ntpd/ntp_parser.y"
+ {
+ if (lex_from_file()) {
+ attr_val *av;
+- av = create_attr_sval(T_Driftfile, (yyvsp[0].String));
++ av = create_attr_sval(T_Driftfile, (yyvsp[(1) - (1)].String));
+ APPEND_G_FIFO(cfgt.vars, av);
+ } else {
+- YYFREE((yyvsp[0].String));
++ YYFREE((yyvsp[(1) - (1)].String));
+ yyerror("driftfile remote configuration ignored");
+ }
+ }
+-#line 2970 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 242:
+-#line 1256 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 245:
++/* Line 1787 of yacc.c */
++#line 1262 "../../ntpd/ntp_parser.y"
+ {
+ if (lex_from_file()) {
+ attr_val *av;
+- av = create_attr_sval(T_Driftfile, (yyvsp[-1].String));
++ av = create_attr_sval(T_Driftfile, (yyvsp[(1) - (2)].String));
+ APPEND_G_FIFO(cfgt.vars, av);
+- av = create_attr_dval(T_WanderThreshold, (yyvsp[0].Double));
++ av = create_attr_dval(T_WanderThreshold, (yyvsp[(2) - (2)].Double));
+ APPEND_G_FIFO(cfgt.vars, av);
+ } else {
+- YYFREE((yyvsp[-1].String));
++ YYFREE((yyvsp[(1) - (2)].String));
+ yyerror("driftfile remote configuration ignored");
+ }
+ }
+-#line 2987 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 243:
+-#line 1269 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 246:
++/* Line 1787 of yacc.c */
++#line 1275 "../../ntpd/ntp_parser.y"
+ {
+ if (lex_from_file()) {
+ attr_val *av;
+@@ -2997,386 +3242,386 @@ yyreduce:
+ yyerror("driftfile remote configuration ignored");
+ }
+ }
+-#line 3001 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 244:
+-#line 1282 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Set_var) = create_setvar_node((yyvsp[-3].String), (yyvsp[-1].String), (yyvsp[0].Integer)); }
+-#line 3007 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 247:
++/* Line 1787 of yacc.c */
++#line 1288 "../../ntpd/ntp_parser.y"
++ { (yyval.Set_var) = create_setvar_node((yyvsp[(1) - (4)].String), (yyvsp[(3) - (4)].String), (yyvsp[(4) - (4)].Integer)); }
+ break;
+
+- case 246:
+-#line 1288 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 249:
++/* Line 1787 of yacc.c */
++#line 1294 "../../ntpd/ntp_parser.y"
+ { (yyval.Integer) = 0; }
+-#line 3013 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 247:
+-#line 1293 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 250:
++/* Line 1787 of yacc.c */
++#line 1299 "../../ntpd/ntp_parser.y"
+ { (yyval.Attr_val_fifo) = NULL; }
+-#line 3019 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 248:
+-#line 1295 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 251:
++/* Line 1787 of yacc.c */
++#line 1301 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
+ }
+-#line 3028 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 249:
+-#line 1303 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_ival((yyvsp[-1].Integer), (yyvsp[0].Integer)); }
+-#line 3034 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 252:
++/* Line 1787 of yacc.c */
++#line 1309 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_ival((yyvsp[(1) - (2)].Integer), (yyvsp[(2) - (2)].Integer)); }
+ break;
+
+- case 250:
+-#line 1305 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 253:
++/* Line 1787 of yacc.c */
++#line 1311 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val) = create_attr_sval((yyvsp[-1].Integer), estrdup((yyvsp[0].Address_node)->address));
+- destroy_address_node((yyvsp[0].Address_node));
++ (yyval.Attr_val) = create_attr_sval((yyvsp[(1) - (2)].Integer), estrdup((yyvsp[(2) - (2)].Address_node)->address));
++ destroy_address_node((yyvsp[(2) - (2)].Address_node));
+ }
+-#line 3043 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 251:
+-#line 1313 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 254:
++/* Line 1787 of yacc.c */
++#line 1319 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
+ }
+-#line 3052 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 252:
+-#line 1318 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 255:
++/* Line 1787 of yacc.c */
++#line 1324 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Attr_val_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
+ }
+-#line 3061 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 253:
+-#line 1326 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 256:
++/* Line 1787 of yacc.c */
++#line 1332 "../../ntpd/ntp_parser.y"
+ {
+ char prefix;
+ char * type;
+
+- switch ((yyvsp[0].String)[0]) {
++ switch ((yyvsp[(1) - (1)].String)[0]) {
+
+ case '+':
+ case '-':
+ case '=':
+- prefix = (yyvsp[0].String)[0];
+- type = (yyvsp[0].String) + 1;
++ prefix = (yyvsp[(1) - (1)].String)[0];
++ type = (yyvsp[(1) - (1)].String) + 1;
+ break;
+
+ default:
+ prefix = '=';
+- type = (yyvsp[0].String);
++ type = (yyvsp[(1) - (1)].String);
+ }
+
+ (yyval.Attr_val) = create_attr_sval(prefix, estrdup(type));
+- YYFREE((yyvsp[0].String));
++ YYFREE((yyvsp[(1) - (1)].String));
+ }
+-#line 3087 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 254:
+-#line 1351 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 257:
++/* Line 1787 of yacc.c */
++#line 1357 "../../ntpd/ntp_parser.y"
+ {
+ nic_rule_node *nrn;
+
+- nrn = create_nic_rule_node((yyvsp[0].Integer), NULL, (yyvsp[-1].Integer));
++ nrn = create_nic_rule_node((yyvsp[(3) - (3)].Integer), NULL, (yyvsp[(2) - (3)].Integer));
+ APPEND_G_FIFO(cfgt.nic_rules, nrn);
+ }
+-#line 3098 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 255:
+-#line 1358 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 258:
++/* Line 1787 of yacc.c */
++#line 1364 "../../ntpd/ntp_parser.y"
+ {
+ nic_rule_node *nrn;
+
+- nrn = create_nic_rule_node(0, (yyvsp[0].String), (yyvsp[-1].Integer));
++ nrn = create_nic_rule_node(0, (yyvsp[(3) - (3)].String), (yyvsp[(2) - (3)].Integer));
+ APPEND_G_FIFO(cfgt.nic_rules, nrn);
+ }
+-#line 3109 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 265:
+-#line 1386 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { CONCAT_G_FIFOS(cfgt.reset_counters, (yyvsp[0].Int_fifo)); }
+-#line 3115 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 268:
++/* Line 1787 of yacc.c */
++#line 1392 "../../ntpd/ntp_parser.y"
++ { CONCAT_G_FIFOS(cfgt.reset_counters, (yyvsp[(2) - (2)].Int_fifo)); }
+ break;
+
+- case 266:
+-#line 1391 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 269:
++/* Line 1787 of yacc.c */
++#line 1397 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Int_fifo) = (yyvsp[-1].Int_fifo);
+- APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
++ (yyval.Int_fifo) = (yyvsp[(1) - (2)].Int_fifo);
++ APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(2) - (2)].Integer)));
+ }
+-#line 3124 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 267:
+-#line 1396 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 270:
++/* Line 1787 of yacc.c */
++#line 1402 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Int_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[0].Integer)));
++ APPEND_G_FIFO((yyval.Int_fifo), create_int_node((yyvsp[(1) - (1)].Integer)));
+ }
+-#line 3133 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 275:
+-#line 1420 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 278:
++/* Line 1787 of yacc.c */
++#line 1426 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+- APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
++ (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
++ APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[(2) - (2)].Integer)));
+ }
+-#line 3142 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 276:
+-#line 1425 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 279:
++/* Line 1787 of yacc.c */
++#line 1431 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Attr_val_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[0].Integer)));
++ APPEND_G_FIFO((yyval.Attr_val_fifo), create_int_node((yyvsp[(1) - (1)].Integer)));
+ }
+-#line 3151 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 277:
+-#line 1433 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 280:
++/* Line 1787 of yacc.c */
++#line 1439 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val_fifo) = (yyvsp[-1].Attr_val_fifo);
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ (yyval.Attr_val_fifo) = (yyvsp[(1) - (2)].Attr_val_fifo);
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (2)].Attr_val));
+ }
+-#line 3160 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 278:
+-#line 1438 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 281:
++/* Line 1787 of yacc.c */
++#line 1444 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Attr_val_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[0].Attr_val));
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (1)].Attr_val));
+ }
+-#line 3169 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 279:
+-#line 1446 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[0].Integer)); }
+-#line 3175 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 282:
++/* Line 1787 of yacc.c */
++#line 1452 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_ival('i', (yyvsp[(1) - (1)].Integer)); }
+ break;
+
+- case 281:
+-#line 1452 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_rangeval('-', (yyvsp[-3].Integer), (yyvsp[-1].Integer)); }
+-#line 3181 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 284:
++/* Line 1787 of yacc.c */
++#line 1458 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_rangeval('-', (yyvsp[(2) - (5)].Integer), (yyvsp[(4) - (5)].Integer)); }
+ break;
+
+- case 282:
+-#line 1457 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 285:
++/* Line 1787 of yacc.c */
++#line 1463 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.String_fifo) = (yyvsp[-1].String_fifo);
+- APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
++ (yyval.String_fifo) = (yyvsp[(1) - (2)].String_fifo);
++ APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[(2) - (2)].String)));
+ }
+-#line 3190 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 283:
+-#line 1462 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 286:
++/* Line 1787 of yacc.c */
++#line 1468 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.String_fifo) = NULL;
+- APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[0].String)));
++ APPEND_G_FIFO((yyval.String_fifo), create_string_node((yyvsp[(1) - (1)].String)));
+ }
+-#line 3199 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 284:
+-#line 1470 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 287:
++/* Line 1787 of yacc.c */
++#line 1476 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Address_fifo) = (yyvsp[-1].Address_fifo);
+- APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
++ (yyval.Address_fifo) = (yyvsp[(1) - (2)].Address_fifo);
++ APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[(2) - (2)].Address_node));
+ }
+-#line 3208 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 285:
+-#line 1475 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 288:
++/* Line 1787 of yacc.c */
++#line 1481 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Address_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[0].Address_node));
++ APPEND_G_FIFO((yyval.Address_fifo), (yyvsp[(1) - (1)].Address_node));
+ }
+-#line 3217 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 286:
+-#line 1483 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 289:
++/* Line 1787 of yacc.c */
++#line 1489 "../../ntpd/ntp_parser.y"
+ {
+- if ((yyvsp[0].Integer) != 0 && (yyvsp[0].Integer) != 1) {
++ if ((yyvsp[(1) - (1)].Integer) != 0 && (yyvsp[(1) - (1)].Integer) != 1) {
+ yyerror("Integer value is not boolean (0 or 1). Assuming 1");
+ (yyval.Integer) = 1;
+ } else {
+- (yyval.Integer) = (yyvsp[0].Integer);
++ (yyval.Integer) = (yyvsp[(1) - (1)].Integer);
+ }
+ }
+-#line 3230 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 287:
+-#line 1491 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 290:
++/* Line 1787 of yacc.c */
++#line 1497 "../../ntpd/ntp_parser.y"
+ { (yyval.Integer) = 1; }
+-#line 3236 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 288:
+-#line 1492 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 291:
++/* Line 1787 of yacc.c */
++#line 1498 "../../ntpd/ntp_parser.y"
+ { (yyval.Integer) = 0; }
+-#line 3242 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 289:
+-#line 1496 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Double) = (double)(yyvsp[0].Integer); }
+-#line 3248 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 292:
++/* Line 1787 of yacc.c */
++#line 1502 "../../ntpd/ntp_parser.y"
++ { (yyval.Double) = (double)(yyvsp[(1) - (1)].Integer); }
+ break;
+
+- case 291:
+-#line 1507 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 294:
++/* Line 1787 of yacc.c */
++#line 1513 "../../ntpd/ntp_parser.y"
+ {
+ sim_node *sn;
+
+- sn = create_sim_node((yyvsp[-2].Attr_val_fifo), (yyvsp[-1].Sim_server_fifo));
++ sn = create_sim_node((yyvsp[(3) - (5)].Attr_val_fifo), (yyvsp[(4) - (5)].Sim_server_fifo));
+ APPEND_G_FIFO(cfgt.sim_details, sn);
+
+ /* Revert from ; to \n for end-of-command */
+ old_config_style = 1;
+ }
+-#line 3262 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 292:
+-#line 1524 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 295:
++/* Line 1787 of yacc.c */
++#line 1530 "../../ntpd/ntp_parser.y"
+ { old_config_style = 0; }
+-#line 3268 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 293:
+-#line 1529 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 296:
++/* Line 1787 of yacc.c */
++#line 1535 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
++ (yyval.Attr_val_fifo) = (yyvsp[(1) - (3)].Attr_val_fifo);
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (3)].Attr_val));
+ }
+-#line 3277 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 294:
+-#line 1534 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 297:
++/* Line 1787 of yacc.c */
++#line 1540 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Attr_val_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (2)].Attr_val));
+ }
+-#line 3286 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 295:
+-#line 1542 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
+-#line 3292 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 298:
++/* Line 1787 of yacc.c */
++#line 1548 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
+ break;
+
+- case 298:
+-#line 1552 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 301:
++/* Line 1787 of yacc.c */
++#line 1558 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Sim_server_fifo) = (yyvsp[-1].Sim_server_fifo);
+- APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
++ (yyval.Sim_server_fifo) = (yyvsp[(1) - (2)].Sim_server_fifo);
++ APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[(2) - (2)].Sim_server));
+ }
+-#line 3301 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 299:
+-#line 1557 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 302:
++/* Line 1787 of yacc.c */
++#line 1563 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Sim_server_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[0].Sim_server));
++ APPEND_G_FIFO((yyval.Sim_server_fifo), (yyvsp[(1) - (1)].Sim_server));
+ }
+-#line 3310 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 300:
+-#line 1565 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Sim_server) = ONLY_SIM(create_sim_server((yyvsp[-4].Address_node), (yyvsp[-2].Double), (yyvsp[-1].Sim_script_fifo))); }
+-#line 3316 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 303:
++/* Line 1787 of yacc.c */
++#line 1571 "../../ntpd/ntp_parser.y"
++ { (yyval.Sim_server) = ONLY_SIM(create_sim_server((yyvsp[(1) - (5)].Address_node), (yyvsp[(3) - (5)].Double), (yyvsp[(4) - (5)].Sim_script_fifo))); }
+ break;
+
+- case 301:
+-#line 1570 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Double) = (yyvsp[-1].Double); }
+-#line 3322 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 304:
++/* Line 1787 of yacc.c */
++#line 1576 "../../ntpd/ntp_parser.y"
++ { (yyval.Double) = (yyvsp[(3) - (4)].Double); }
+ break;
+
+- case 302:
+-#line 1575 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Address_node) = (yyvsp[0].Address_node); }
+-#line 3328 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 305:
++/* Line 1787 of yacc.c */
++#line 1581 "../../ntpd/ntp_parser.y"
++ { (yyval.Address_node) = (yyvsp[(3) - (3)].Address_node); }
+ break;
+
+- case 303:
+-#line 1580 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 306:
++/* Line 1787 of yacc.c */
++#line 1586 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Sim_script_fifo) = (yyvsp[-1].Sim_script_fifo);
+- APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
++ (yyval.Sim_script_fifo) = (yyvsp[(1) - (2)].Sim_script_fifo);
++ APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[(2) - (2)].Sim_script));
+ }
+-#line 3337 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 304:
+-#line 1585 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 307:
++/* Line 1787 of yacc.c */
++#line 1591 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Sim_script_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[0].Sim_script));
++ APPEND_G_FIFO((yyval.Sim_script_fifo), (yyvsp[(1) - (1)].Sim_script));
+ }
+-#line 3346 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 305:
+-#line 1593 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Sim_script) = ONLY_SIM(create_sim_script_info((yyvsp[-3].Double), (yyvsp[-1].Attr_val_fifo))); }
+-#line 3352 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 308:
++/* Line 1787 of yacc.c */
++#line 1599 "../../ntpd/ntp_parser.y"
++ { (yyval.Sim_script) = ONLY_SIM(create_sim_script_info((yyvsp[(3) - (6)].Double), (yyvsp[(5) - (6)].Attr_val_fifo))); }
+ break;
+
+- case 306:
+-#line 1598 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 309:
++/* Line 1787 of yacc.c */
++#line 1604 "../../ntpd/ntp_parser.y"
+ {
+- (yyval.Attr_val_fifo) = (yyvsp[-2].Attr_val_fifo);
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
++ (yyval.Attr_val_fifo) = (yyvsp[(1) - (3)].Attr_val_fifo);
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(2) - (3)].Attr_val));
+ }
+-#line 3361 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 307:
+-#line 1603 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
++ case 310:
++/* Line 1787 of yacc.c */
++#line 1609 "../../ntpd/ntp_parser.y"
+ {
+ (yyval.Attr_val_fifo) = NULL;
+- APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[-1].Attr_val));
++ APPEND_G_FIFO((yyval.Attr_val_fifo), (yyvsp[(1) - (2)].Attr_val));
+ }
+-#line 3370 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
+ break;
+
+- case 308:
+-#line 1611 "../../ntpd/ntp_parser.y" /* yacc.c:1646 */
+- { (yyval.Attr_val) = create_attr_dval((yyvsp[-2].Integer), (yyvsp[0].Double)); }
+-#line 3376 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++ case 311:
++/* Line 1787 of yacc.c */
++#line 1617 "../../ntpd/ntp_parser.y"
++ { (yyval.Attr_val) = create_attr_dval((yyvsp[(1) - (3)].Integer), (yyvsp[(3) - (3)].Double)); }
+ break;
+
+
+-#line 3380 "../../ntpd/ntp_parser.c" /* yacc.c:1646 */
++/* Line 1787 of yacc.c */
++#line 3625 "ntp_parser.c"
+ default: break;
+ }
+ /* User semantic actions sometimes alter yychar, and that requires
+@@ -3398,7 +3643,7 @@ yyreduce:
+
+ *++yyvsp = yyval;
+
+- /* Now 'shift' the result of the reduction. Determine what state
++ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+@@ -3413,9 +3658,9 @@ yyreduce:
+ goto yynewstate;
+
+
+-/*--------------------------------------.
+-| yyerrlab -- here on detecting error. |
+-`--------------------------------------*/
++/*------------------------------------.
++| yyerrlab -- here on detecting error |
++`------------------------------------*/
+ yyerrlab:
+ /* Make sure we have latest lookahead translation. See comments at
+ user semantic actions for why this is necessary. */
+@@ -3466,20 +3711,20 @@ yyerrlab:
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse lookahead token after an
+- error, discard it. */
++ error, discard it. */
+
+ if (yychar <= YYEOF)
+- {
+- /* Return failure if at end of input. */
+- if (yychar == YYEOF)
+- YYABORT;
+- }
++ {
++ /* Return failure if at end of input. */
++ if (yychar == YYEOF)
++ YYABORT;
++ }
+ else
+- {
+- yydestruct ("Error: discarding",
+- yytoken, &yylval);
+- yychar = YYEMPTY;
+- }
++ {
++ yydestruct ("Error: discarding",
++ yytoken, &yylval);
++ yychar = YYEMPTY;
++ }
+ }
+
+ /* Else will try to reuse lookahead token after shifting the error
+@@ -3498,7 +3743,7 @@ yyerrorlab:
+ if (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+- /* Do not reclaim the symbols of the rule whose action triggered
++ /* Do not reclaim the symbols of the rule which action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+@@ -3511,29 +3756,29 @@ yyerrorlab:
+ | yyerrlab1 -- common code for both syntax error and YYERROR. |
+ `-------------------------------------------------------------*/
+ yyerrlab1:
+- yyerrstatus = 3; /* Each real token shifted decrements this. */
++ yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (!yypact_value_is_default (yyn))
+- {
+- yyn += YYTERROR;
+- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+- {
+- yyn = yytable[yyn];
+- if (0 < yyn)
+- break;
+- }
+- }
++ {
++ yyn += YYTERROR;
++ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
++ {
++ yyn = yytable[yyn];
++ if (0 < yyn)
++ break;
++ }
++ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+- YYABORT;
++ YYABORT;
+
+
+ yydestruct ("Error: popping",
+- yystos[yystate], yyvsp);
++ yystos[yystate], yyvsp);
+ YYPOPSTACK (1);
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+@@ -3584,7 +3829,7 @@ yyreturn:
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
+ }
+- /* Do not reclaim the symbols of the rule whose action triggered
++ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+@@ -3591,7 +3836,7 @@ yyreturn:
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+- yystos[*yyssp], yyvsp);
++ yystos[*yyssp], yyvsp);
+ YYPOPSTACK (1);
+ }
+ #ifndef yyoverflow
+@@ -3602,11 +3847,15 @@ yyreturn:
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ #endif
+- return yyresult;
++ /* Make sure YYID is used. */
++ return YYID (yyresult);
+ }
+-#line 1622 "../../ntpd/ntp_parser.y" /* yacc.c:1906 */
+
+
++/* Line 2050 of yacc.c */
++#line 1628 "../../ntpd/ntp_parser.y"
++
++
+ void
+ yyerror(
+ const char *msg
+Index: contrib/ntp/ntpd/ntp_parser.h
+===================================================================
+--- contrib/ntp/ntpd/ntp_parser.h (revision 294707)
++++ contrib/ntp/ntpd/ntp_parser.h (working copy)
+@@ -1,19 +1,19 @@
+-/* A Bison parser, made by GNU Bison 3.0.2. */
++/* A Bison parser, made by GNU Bison 2.7.12-4996. */
+
+ /* Bison interface for Yacc-like parsers in C
+-
+- Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+-
++
++ Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
++
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+-
++
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+-
++
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see . */
+
+@@ -26,13 +26,13 @@
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+-
++
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+-#ifndef YY_YY__NTPD_NTP_PARSER_H_INCLUDED
+-# define YY_YY__NTPD_NTP_PARSER_H_INCLUDED
+-/* Debug traces. */
++#ifndef YY_YY_NTP_PARSER_H_INCLUDED
++# define YY_YY_NTP_PARSER_H_INCLUDED
++/* Enabling traces. */
+ #ifndef YYDEBUG
+ # define YYDEBUG 1
+ #endif
+@@ -40,203 +40,207 @@
+ extern int yydebug;
+ #endif
+
+-/* Token type. */
++/* Tokens. */
+ #ifndef YYTOKENTYPE
+ # define YYTOKENTYPE
+- enum yytokentype
+- {
+- T_Abbrev = 258,
+- T_Age = 259,
+- T_All = 260,
+- T_Allan = 261,
+- T_Allpeers = 262,
+- T_Auth = 263,
+- T_Autokey = 264,
+- T_Automax = 265,
+- T_Average = 266,
+- T_Bclient = 267,
+- T_Beacon = 268,
+- T_Broadcast = 269,
+- T_Broadcastclient = 270,
+- T_Broadcastdelay = 271,
+- T_Burst = 272,
+- T_Calibrate = 273,
+- T_Ceiling = 274,
+- T_Clockstats = 275,
+- T_Cohort = 276,
+- T_ControlKey = 277,
+- T_Crypto = 278,
+- T_Cryptostats = 279,
+- T_Ctl = 280,
+- T_Day = 281,
+- T_Default = 282,
+- T_Digest = 283,
+- T_Disable = 284,
+- T_Discard = 285,
+- T_Dispersion = 286,
+- T_Double = 287,
+- T_Driftfile = 288,
+- T_Drop = 289,
+- T_Dscp = 290,
+- T_Ellipsis = 291,
+- T_Enable = 292,
+- T_End = 293,
+- T_False = 294,
+- T_File = 295,
+- T_Filegen = 296,
+- T_Filenum = 297,
+- T_Flag1 = 298,
+- T_Flag2 = 299,
+- T_Flag3 = 300,
+- T_Flag4 = 301,
+- T_Flake = 302,
+- T_Floor = 303,
+- T_Freq = 304,
+- T_Fudge = 305,
+- T_Host = 306,
+- T_Huffpuff = 307,
+- T_Iburst = 308,
+- T_Ident = 309,
+- T_Ignore = 310,
+- T_Incalloc = 311,
+- T_Incmem = 312,
+- T_Initalloc = 313,
+- T_Initmem = 314,
+- T_Includefile = 315,
+- T_Integer = 316,
+- T_Interface = 317,
+- T_Intrange = 318,
+- T_Io = 319,
+- T_Ipv4 = 320,
+- T_Ipv4_flag = 321,
+- T_Ipv6 = 322,
+- T_Ipv6_flag = 323,
+- T_Kernel = 324,
+- T_Key = 325,
+- T_Keys = 326,
+- T_Keysdir = 327,
+- T_Kod = 328,
+- T_Mssntp = 329,
+- T_Leapfile = 330,
+- T_Leapsmearinterval = 331,
+- T_Limited = 332,
+- T_Link = 333,
+- T_Listen = 334,
+- T_Logconfig = 335,
+- T_Logfile = 336,
+- T_Loopstats = 337,
+- T_Lowpriotrap = 338,
+- T_Manycastclient = 339,
+- T_Manycastserver = 340,
+- T_Mask = 341,
+- T_Maxage = 342,
+- T_Maxclock = 343,
+- T_Maxdepth = 344,
+- T_Maxdist = 345,
+- T_Maxmem = 346,
+- T_Maxpoll = 347,
+- T_Mdnstries = 348,
+- T_Mem = 349,
+- T_Memlock = 350,
+- T_Minclock = 351,
+- T_Mindepth = 352,
+- T_Mindist = 353,
+- T_Minimum = 354,
+- T_Minpoll = 355,
+- T_Minsane = 356,
+- T_Mode = 357,
+- T_Mode7 = 358,
+- T_Monitor = 359,
+- T_Month = 360,
+- T_Mru = 361,
+- T_Multicastclient = 362,
+- T_Nic = 363,
+- T_Nolink = 364,
+- T_Nomodify = 365,
+- T_Nomrulist = 366,
+- T_None = 367,
+- T_Nonvolatile = 368,
+- T_Nopeer = 369,
+- T_Noquery = 370,
+- T_Noselect = 371,
+- T_Noserve = 372,
+- T_Notrap = 373,
+- T_Notrust = 374,
+- T_Ntp = 375,
+- T_Ntpport = 376,
+- T_NtpSignDsocket = 377,
+- T_Orphan = 378,
+- T_Orphanwait = 379,
+- T_Panic = 380,
+- T_Peer = 381,
+- T_Peerstats = 382,
+- T_Phone = 383,
+- T_Pid = 384,
+- T_Pidfile = 385,
+- T_Pool = 386,
+- T_Port = 387,
+- T_Preempt = 388,
+- T_Prefer = 389,
+- T_Protostats = 390,
+- T_Pw = 391,
+- T_Randfile = 392,
+- T_Rawstats = 393,
+- T_Refid = 394,
+- T_Requestkey = 395,
+- T_Reset = 396,
+- T_Restrict = 397,
+- T_Revoke = 398,
+- T_Rlimit = 399,
+- T_Saveconfigdir = 400,
+- T_Server = 401,
+- T_Setvar = 402,
+- T_Source = 403,
+- T_Stacksize = 404,
+- T_Statistics = 405,
+- T_Stats = 406,
+- T_Statsdir = 407,
+- T_Step = 408,
+- T_Stepback = 409,
+- T_Stepfwd = 410,
+- T_Stepout = 411,
+- T_Stratum = 412,
+- T_String = 413,
+- T_Sys = 414,
+- T_Sysstats = 415,
+- T_Tick = 416,
+- T_Time1 = 417,
+- T_Time2 = 418,
+- T_Timer = 419,
+- T_Timingstats = 420,
+- T_Tinker = 421,
+- T_Tos = 422,
+- T_Trap = 423,
+- T_True = 424,
+- T_Trustedkey = 425,
+- T_Ttl = 426,
+- T_Type = 427,
+- T_U_int = 428,
+- T_Unconfig = 429,
+- T_Unpeer = 430,
+- T_Version = 431,
+- T_WanderThreshold = 432,
+- T_Week = 433,
+- T_Wildcard = 434,
+- T_Xleave = 435,
+- T_Year = 436,
+- T_Flag = 437,
+- T_EOC = 438,
+- T_Simulate = 439,
+- T_Beep_Delay = 440,
+- T_Sim_Duration = 441,
+- T_Server_Offset = 442,
+- T_Duration = 443,
+- T_Freq_Offset = 444,
+- T_Wander = 445,
+- T_Jitter = 446,
+- T_Prop_Delay = 447,
+- T_Proc_Delay = 448
+- };
++ /* Put the tokens into the symbol table, so that GDB and other debuggers
++ know about them. */
++ enum yytokentype {
++ T_Abbrev = 258,
++ T_Age = 259,
++ T_All = 260,
++ T_Allan = 261,
++ T_Allpeers = 262,
++ T_Auth = 263,
++ T_Autokey = 264,
++ T_Automax = 265,
++ T_Average = 266,
++ T_Bclient = 267,
++ T_Beacon = 268,
++ T_Broadcast = 269,
++ T_Broadcastclient = 270,
++ T_Broadcastdelay = 271,
++ T_Burst = 272,
++ T_Calibrate = 273,
++ T_Ceiling = 274,
++ T_Clockstats = 275,
++ T_Cohort = 276,
++ T_ControlKey = 277,
++ T_Crypto = 278,
++ T_Cryptostats = 279,
++ T_Ctl = 280,
++ T_Day = 281,
++ T_Default = 282,
++ T_Digest = 283,
++ T_Disable = 284,
++ T_Discard = 285,
++ T_Dispersion = 286,
++ T_Double = 287,
++ T_Driftfile = 288,
++ T_Drop = 289,
++ T_Dscp = 290,
++ T_Ellipsis = 291,
++ T_Enable = 292,
++ T_End = 293,
++ T_False = 294,
++ T_File = 295,
++ T_Filegen = 296,
++ T_Filenum = 297,
++ T_Flag1 = 298,
++ T_Flag2 = 299,
++ T_Flag3 = 300,
++ T_Flag4 = 301,
++ T_Flake = 302,
++ T_Floor = 303,
++ T_Freq = 304,
++ T_Fudge = 305,
++ T_Host = 306,
++ T_Huffpuff = 307,
++ T_Iburst = 308,
++ T_Ident = 309,
++ T_Ignore = 310,
++ T_Incalloc = 311,
++ T_Incmem = 312,
++ T_Initalloc = 313,
++ T_Initmem = 314,
++ T_Includefile = 315,
++ T_Integer = 316,
++ T_Interface = 317,
++ T_Intrange = 318,
++ T_Io = 319,
++ T_Ipv4 = 320,
++ T_Ipv4_flag = 321,
++ T_Ipv6 = 322,
++ T_Ipv6_flag = 323,
++ T_Kernel = 324,
++ T_Key = 325,
++ T_Keys = 326,
++ T_Keysdir = 327,
++ T_Kod = 328,
++ T_Mssntp = 329,
++ T_Leapfile = 330,
++ T_Leapsmearinterval = 331,
++ T_Limited = 332,
++ T_Link = 333,
++ T_Listen = 334,
++ T_Logconfig = 335,
++ T_Logfile = 336,
++ T_Loopstats = 337,
++ T_Lowpriotrap = 338,
++ T_Manycastclient = 339,
++ T_Manycastserver = 340,
++ T_Mask = 341,
++ T_Maxage = 342,
++ T_Maxclock = 343,
++ T_Maxdepth = 344,
++ T_Maxdist = 345,
++ T_Maxmem = 346,
++ T_Maxpoll = 347,
++ T_Mdnstries = 348,
++ T_Mem = 349,
++ T_Memlock = 350,
++ T_Minclock = 351,
++ T_Mindepth = 352,
++ T_Mindist = 353,
++ T_Minimum = 354,
++ T_Minpoll = 355,
++ T_Minsane = 356,
++ T_Mode = 357,
++ T_Mode7 = 358,
++ T_Monitor = 359,
++ T_Month = 360,
++ T_Mru = 361,
++ T_Multicastclient = 362,
++ T_Nic = 363,
++ T_Nolink = 364,
++ T_Nomodify = 365,
++ T_Nomrulist = 366,
++ T_None = 367,
++ T_Nonvolatile = 368,
++ T_Nopeer = 369,
++ T_Noquery = 370,
++ T_Noselect = 371,
++ T_Noserve = 372,
++ T_Notrap = 373,
++ T_Notrust = 374,
++ T_Ntp = 375,
++ T_Ntpport = 376,
++ T_NtpSignDsocket = 377,
++ T_Orphan = 378,
++ T_Orphanwait = 379,
++ T_Panic = 380,
++ T_Peer = 381,
++ T_Peerstats = 382,
++ T_Phone = 383,
++ T_Pid = 384,
++ T_Pidfile = 385,
++ T_Pool = 386,
++ T_Port = 387,
++ T_Preempt = 388,
++ T_Prefer = 389,
++ T_Protostats = 390,
++ T_Pw = 391,
++ T_Randfile = 392,
++ T_Rawstats = 393,
++ T_Refid = 394,
++ T_Requestkey = 395,
++ T_Reset = 396,
++ T_Restrict = 397,
++ T_Revoke = 398,
++ T_Rlimit = 399,
++ T_Saveconfigdir = 400,
++ T_Server = 401,
++ T_Setvar = 402,
++ T_Source = 403,
++ T_Stacksize = 404,
++ T_Statistics = 405,
++ T_Stats = 406,
++ T_Statsdir = 407,
++ T_Step = 408,
++ T_Stepback = 409,
++ T_Stepfwd = 410,
++ T_Stepout = 411,
++ T_Stratum = 412,
++ T_String = 413,
++ T_Sys = 414,
++ T_Sysstats = 415,
++ T_Tick = 416,
++ T_Time1 = 417,
++ T_Time2 = 418,
++ T_Timer = 419,
++ T_Timingstats = 420,
++ T_Tinker = 421,
++ T_Tos = 422,
++ T_Trap = 423,
++ T_True = 424,
++ T_Trustedkey = 425,
++ T_Ttl = 426,
++ T_Type = 427,
++ T_U_int = 428,
++ T_UEcrypto = 429,
++ T_UEcryptonak = 430,
++ T_UEdigest = 431,
++ T_Unconfig = 432,
++ T_Unpeer = 433,
++ T_Version = 434,
++ T_WanderThreshold = 435,
++ T_Week = 436,
++ T_Wildcard = 437,
++ T_Xleave = 438,
++ T_Year = 439,
++ T_Flag = 440,
++ T_EOC = 441,
++ T_Simulate = 442,
++ T_Beep_Delay = 443,
++ T_Sim_Duration = 444,
++ T_Server_Offset = 445,
++ T_Duration = 446,
++ T_Freq_Offset = 447,
++ T_Wander = 448,
++ T_Jitter = 449,
++ T_Prop_Delay = 450,
++ T_Proc_Delay = 451
++ };
+ #endif
+ /* Tokens. */
+ #define T_Abbrev 258
+@@ -410,33 +414,37 @@ extern int yydebug;
+ #define T_Ttl 426
+ #define T_Type 427
+ #define T_U_int 428
+-#define T_Unconfig 429
+-#define T_Unpeer 430
+-#define T_Version 431
+-#define T_WanderThreshold 432
+-#define T_Week 433
+-#define T_Wildcard 434
+-#define T_Xleave 435
+-#define T_Year 436
+-#define T_Flag 437
+-#define T_EOC 438
+-#define T_Simulate 439
+-#define T_Beep_Delay 440
+-#define T_Sim_Duration 441
+-#define T_Server_Offset 442
+-#define T_Duration 443
+-#define T_Freq_Offset 444
+-#define T_Wander 445
+-#define T_Jitter 446
+-#define T_Prop_Delay 447
+-#define T_Proc_Delay 448
++#define T_UEcrypto 429
++#define T_UEcryptonak 430
++#define T_UEdigest 431
++#define T_Unconfig 432
++#define T_Unpeer 433
++#define T_Version 434
++#define T_WanderThreshold 435
++#define T_Week 436
++#define T_Wildcard 437
++#define T_Xleave 438
++#define T_Year 439
++#define T_Flag 440
++#define T_EOC 441
++#define T_Simulate 442
++#define T_Beep_Delay 443
++#define T_Sim_Duration 444
++#define T_Server_Offset 445
++#define T_Duration 446
++#define T_Freq_Offset 447
++#define T_Wander 448
++#define T_Jitter 449
++#define T_Prop_Delay 450
++#define T_Proc_Delay 451
+
+-/* Value type. */
++
++
+ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+-typedef union YYSTYPE YYSTYPE;
+-union YYSTYPE
++typedef union YYSTYPE
+ {
+-#line 51 "../../ntpd/ntp_parser.y" /* yacc.c:1909 */
++/* Line 2053 of yacc.c */
++#line 51 "../../ntpd/ntp_parser.y"
+
+ char * String;
+ double Double;
+@@ -455,15 +463,29 @@ extern int yydebug;
+ script_info * Sim_script;
+ script_info_fifo * Sim_script_fifo;
+
+-#line 459 "../../ntpd/ntp_parser.h" /* yacc.c:1909 */
+-};
++
++/* Line 2053 of yacc.c */
++#line 469 "ntp_parser.h"
++} YYSTYPE;
+ # define YYSTYPE_IS_TRIVIAL 1
++# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+ # define YYSTYPE_IS_DECLARED 1
+ #endif
+
+-
+ extern YYSTYPE yylval;
+
++#ifdef YYPARSE_PARAM
++#if defined __STDC__ || defined __cplusplus
++int yyparse (void *YYPARSE_PARAM);
++#else
++int yyparse ();
++#endif
++#else /* ! YYPARSE_PARAM */
++#if defined __STDC__ || defined __cplusplus
+ int yyparse (void);
++#else
++int yyparse ();
++#endif
++#endif /* ! YYPARSE_PARAM */
+
+-#endif /* !YY_YY__NTPD_NTP_PARSER_H_INCLUDED */
++#endif /* !YY_YY_NTP_PARSER_H_INCLUDED */
+Index: contrib/ntp/ntpd/ntp_proto.c
+===================================================================
+--- contrib/ntp/ntpd/ntp_proto.c (revision 294707)
++++ contrib/ntp/ntpd/ntp_proto.c (working copy)
+@@ -153,6 +153,19 @@ u_long sys_declined; /* declined */
+ u_long sys_limitrejected; /* rate exceeded */
+ u_long sys_kodsent; /* KoD sent */
+
++/*
++ * Mechanism knobs: how soon do we unpeer()?
++ *
++ * The default way is "on-receipt". If this was a packet from a
++ * well-behaved source, on-receipt will offer the fastest recovery.
++ * If this was from a DoS attack, the default way makes it easier
++ * for a bad-guy to DoS us. So look and see what bites you harder
++ * and choose according to your environment.
++ */
++int unpeer_crypto_early = 1; /* bad crypto (TEST9) */
++int unpeer_crypto_nak_early = 1; /* crypto_NAK (TEST5) */
++int unpeer_digest_early = 1; /* bad digest (TEST5) */
++
+ static int kiss_code_check(u_char hisleap, u_char hisstratum, u_char hismode, u_int32 refid);
+ static double root_distance (struct peer *);
+ static void clock_combine (peer_select *, int, int);
+@@ -1157,6 +1170,7 @@ receive(
+
+ } else {
+ peer->delay = sys_bdelay;
++ peer->bxmt = p_xmt;
+ }
+ break;
+ }
+@@ -1177,6 +1191,7 @@ receive(
+ sys_restricted++;
+ return; /* ignore duplicate */
+ }
++ peer->bxmt = p_xmt;
+ #ifdef AUTOKEY
+ if (skeyid > NTP_MAXKEY)
+ crypto_recv(peer, rbufp);
+@@ -1286,6 +1301,73 @@ receive(
+ return;
+ }
+ #endif /* AUTOKEY */
++
++ if (MODE_BROADCAST == hismode) {
++ u_char poll;
++ int bail = 0;
++ l_fp tdiff;
++
++ DPRINTF(2, ("receive: PROCPKT/BROADCAST: prev pkt %ld seconds ago, ppoll: %d, %d secs\n",
++ (current_time - peer->timelastrec),
++ peer->ppoll, (1 << peer->ppoll)
++ ));
++ /* Things we can check:
++ *
++ * Did the poll interval change?
++ * Is the poll interval in the packet in-range?
++ * Did this packet arrive too soon?
++ * Is the timestamp in this packet monotonic
++ * with respect to the previous packet?
++ */
++
++ /* This is noteworthy, not error-worthy */
++ if (pkt->ppoll != peer->ppoll) {
++ msyslog(LOG_INFO, "receive: broadcast poll from %s changed from %ud to %ud",
++ stoa(&rbufp->recv_srcadr),
++ peer->ppoll, pkt->ppoll);
++ }
++
++ poll = min(peer->maxpoll,
++ max(peer->minpoll, pkt->ppoll));
++
++ /* This is error-worthy */
++ if (pkt->ppoll != poll) {
++ msyslog(LOG_INFO, "receive: broadcast poll of %ud from %s is out-of-range (%d to %d)!",
++ pkt->ppoll, stoa(&rbufp->recv_srcadr),
++ peer->minpoll, peer->maxpoll);
++ ++bail;
++ }
++
++ if ( (current_time - peer->timelastrec)
++ < (1 << pkt->ppoll)) {
++ msyslog(LOG_INFO, "receive: broadcast packet from %s arrived after %ld, not %d seconds!",
++ stoa(&rbufp->recv_srcadr),
++ (current_time - peer->timelastrec),
++ (1 << pkt->ppoll)
++ );
++ ++bail;
++ }
++
++ tdiff = p_xmt;
++ L_SUB(&tdiff, &peer->bxmt);
++ if (tdiff.l_i < 0) {
++ msyslog(LOG_INFO, "receive: broadcast packet from %s contains non-monotonic timestamp: %#010x.%08x -> %#010x.%08x",
++ stoa(&rbufp->recv_srcadr),
++ peer->bxmt.l_ui, peer->bxmt.l_uf,
++ p_xmt.l_ui, p_xmt.l_uf
++ );
++ ++bail;
++ }
++
++ peer->bxmt = p_xmt;
++
++ if (bail) {
++ peer->timelastrec = current_time;
++ sys_declined++;
++ return;
++ }
++ }
++
+ break;
+
+ /*
+@@ -1362,7 +1444,12 @@ receive(
+ /*
+ * Basic mode checks:
+ *
+- * If there is no origin timestamp, it's an initial packet.
++ * If there is no origin timestamp, it's either an initial packet
++ * or we've already received a response to our query. Of course,
++ * should 'aorg' be all-zero because this really was the original
++ * transmit timestamp, we'll drop the reply. There is a window of
++ * one nanosecond once every 136 years' time where this is possible.
++ * We currently ignore this situation.
+ *
+ * Otherwise, check for bogus packet in basic mode.
+ * If it is bogus, switch to interleaved mode and resynchronize,
+@@ -1375,7 +1462,8 @@ receive(
+ } else if (peer->flip == 0) {
+ if (0 < hisstratum && L_ISZERO(&p_org)) {
+ L_CLR(&peer->aorg);
+- } else if (!L_ISEQU(&p_org, &peer->aorg)) {
++ } else if ( L_ISZERO(&peer->aorg)
++ || !L_ISEQU(&p_org, &peer->aorg)) {
+ peer->bogusorg++;
+ peer->flash |= TEST2; /* bogus */
+ msyslog(LOG_INFO,
+@@ -1424,7 +1512,9 @@ receive(
+ peer->flash |= TEST5; /* bad auth */
+ peer->badauth++;
+ if (peer->flags & FLAG_PREEMPT) {
+- unpeer(peer);
++ if (unpeer_crypto_nak_early) {
++ unpeer(peer);
++ }
+ return;
+ }
+ #ifdef AUTOKEY
+@@ -1450,7 +1540,9 @@ receive(
+ && (hismode == MODE_ACTIVE || hismode == MODE_PASSIVE))
+ fast_xmit(rbufp, MODE_ACTIVE, 0, restrict_mask);
+ if (peer->flags & FLAG_PREEMPT) {
+- unpeer(peer);
++ if (unpeer_digest_early) {
++ unpeer(peer);
++ }
+ return;
+ }
+ #ifdef AUTOKEY
+@@ -1505,12 +1597,47 @@ receive(
+ return; /* Drop any other kiss code packets */
+ }
+
++ /*
++ * If:
++ * - this is a *cast (uni-, broad-, or m-) server packet
++ * - and it's authenticated
++ * then see if the sender's IP is trusted for this keyid.
++ * If it is, great - nothing special to do here.
++ * Otherwise, we should report and bail.
++ */
+
++ switch (hismode) {
++ case MODE_SERVER: /* server mode */
++ case MODE_BROADCAST: /* broadcast mode */
++ case MODE_ACTIVE: /* symmetric active mode */
++ if ( is_authentic == AUTH_OK
++ && !authistrustedip(skeyid, &peer->srcadr)) {
++ report_event(PEVNT_AUTH, peer, "authIP");
++ peer->badauth++;
++ return;
++ }
++ break;
++
++ case MODE_UNSPEC: /* unspecified (old version) */
++ case MODE_PASSIVE: /* symmetric passive mode */
++ case MODE_CLIENT: /* client mode */
++#if 0 /* At this point, MODE_CONTROL is overloaded by MODE_BCLIENT */
++ case MODE_CONTROL: /* control mode */
++#endif
++ case MODE_PRIVATE: /* private mode */
++ case MODE_BCLIENT: /* broadcast client mode */
++ break;
++ default:
++ break;
++ }
++
++
+ /*
+ * That was hard and I am sweaty, but the packet is squeaky
+ * clean. Get on with real work.
+ */
+ peer->timereceived = current_time;
++ peer->timelastrec = current_time;
+ if (is_authentic == AUTH_OK)
+ peer->flags |= FLAG_AUTHENTIC;
+ else
+@@ -1560,8 +1687,11 @@ receive(
+ "crypto error");
+ peer_clear(peer, "CRYP");
+ peer->flash |= TEST9; /* bad crypt */
+- if (peer->flags & FLAG_PREEMPT)
+- unpeer(peer);
++ if (peer->flags & FLAG_PREEMPT) {
++ if (unpeer_crypto_early) {
++ unpeer(peer);
++ }
++ }
+ }
+ return;
+ }
+@@ -4358,6 +4488,22 @@ proto_config(
+ io_multicast_del(svalue);
+ break;
+
++ /*
++ * Unpeer Early policy choices
++ */
++
++ case PROTO_UECRYPTO: /* Crypto */
++ unpeer_crypto_early = value;
++ break;
++
++ case PROTO_UECRYPTONAK: /* Crypto_NAK */
++ unpeer_crypto_nak_early = value;
++ break;
++
++ case PROTO_UEDIGEST: /* Digest */
++ unpeer_digest_early = value;
++ break;
++
+ default:
+ msyslog(LOG_NOTICE,
+ "proto: unsupported option %d", item);
+Index: contrib/ntp/ntpd/ntp_request.c
+===================================================================
+--- contrib/ntp/ntpd/ntp_request.c (revision 294707)
++++ contrib/ntp/ntpd/ntp_request.c (working copy)
+@@ -81,8 +81,8 @@ static void do_unconf (sockaddr_u *, endpt *, stru
+ static void set_sys_flag (sockaddr_u *, endpt *, struct req_pkt *);
+ static void clr_sys_flag (sockaddr_u *, endpt *, struct req_pkt *);
+ static void setclr_flags (sockaddr_u *, endpt *, struct req_pkt *, u_long);
+-static void list_restrict4 (restrict_u *, struct info_restrict **);
+-static void list_restrict6 (restrict_u *, struct info_restrict **);
++static void list_restrict4 (const restrict_u *, struct info_restrict **);
++static void list_restrict6 (const restrict_u *, struct info_restrict **);
+ static void list_restrict (sockaddr_u *, endpt *, struct req_pkt *);
+ static void do_resaddflags (sockaddr_u *, endpt *, struct req_pkt *);
+ static void do_ressubflags (sockaddr_u *, endpt *, struct req_pkt *);
+@@ -667,43 +667,35 @@ list_peers(
+ struct req_pkt *inpkt
+ )
+ {
+- struct info_peer_list *ip;
+- struct peer *pp;
+- int skip = 0;
++ struct info_peer_list * ip;
++ const struct peer * pp;
+
+ ip = (struct info_peer_list *)prepare_pkt(srcadr, inter, inpkt,
+ v6sizeof(struct info_peer_list));
+ for (pp = peer_list; pp != NULL && ip != NULL; pp = pp->p_link) {
+ if (IS_IPV6(&pp->srcadr)) {
+- if (client_v6_capable) {
+- ip->addr6 = SOCK_ADDR6(&pp->srcadr);
+- ip->v6_flag = 1;
+- skip = 0;
+- } else {
+- skip = 1;
+- break;
+- }
++ if (!client_v6_capable)
++ continue;
++ ip->addr6 = SOCK_ADDR6(&pp->srcadr);
++ ip->v6_flag = 1;
+ } else {
+ ip->addr = NSRCADR(&pp->srcadr);
+ if (client_v6_capable)
+ ip->v6_flag = 0;
+- skip = 0;
+ }
+
+- if (!skip) {
+- ip->port = NSRCPORT(&pp->srcadr);
+- ip->hmode = pp->hmode;
+- ip->flags = 0;
+- if (pp->flags & FLAG_CONFIG)
+- ip->flags |= INFO_FLAG_CONFIG;
+- if (pp == sys_peer)
+- ip->flags |= INFO_FLAG_SYSPEER;
+- if (pp->status == CTL_PST_SEL_SYNCCAND)
+- ip->flags |= INFO_FLAG_SEL_CANDIDATE;
+- if (pp->status >= CTL_PST_SEL_SYSPEER)
+- ip->flags |= INFO_FLAG_SHORTLIST;
+- ip = (struct info_peer_list *)more_pkt();
+- }
++ ip->port = NSRCPORT(&pp->srcadr);
++ ip->hmode = pp->hmode;
++ ip->flags = 0;
++ if (pp->flags & FLAG_CONFIG)
++ ip->flags |= INFO_FLAG_CONFIG;
++ if (pp == sys_peer)
++ ip->flags |= INFO_FLAG_SYSPEER;
++ if (pp->status == CTL_PST_SEL_SYNCCAND)
++ ip->flags |= INFO_FLAG_SEL_CANDIDATE;
++ if (pp->status >= CTL_PST_SEL_SYSPEER)
++ ip->flags |= INFO_FLAG_SHORTLIST;
++ ip = (struct info_peer_list *)more_pkt();
+ } /* for pp */
+
+ flush_pkt();
+@@ -720,10 +712,9 @@ list_peers_sum(
+ struct req_pkt *inpkt
+ )
+ {
+- register struct info_peer_summary *ips;
+- register struct peer *pp;
+- l_fp ltmp;
+- register int skip;
++ struct info_peer_summary * ips;
++ const struct peer * pp;
++ l_fp ltmp;
+
+ DPRINTF(3, ("wants peer list summary\n"));
+
+@@ -736,18 +727,14 @@ list_peers_sum(
+ * want only v4.
+ */
+ if (IS_IPV6(&pp->srcadr)) {
+- if (client_v6_capable) {
+- ips->srcadr6 = SOCK_ADDR6(&pp->srcadr);
+- ips->v6_flag = 1;
+- if (pp->dstadr)
+- ips->dstadr6 = SOCK_ADDR6(&pp->dstadr->sin);
+- else
+- ZERO(ips->dstadr6);
+- skip = 0;
+- } else {
+- skip = 1;
+- break;
+- }
++ if (!client_v6_capable)
++ continue;
++ ips->srcadr6 = SOCK_ADDR6(&pp->srcadr);
++ ips->v6_flag = 1;
++ if (pp->dstadr)
++ ips->dstadr6 = SOCK_ADDR6(&pp->dstadr->sin);
++ else
++ ZERO(ips->dstadr6);
+ } else {
+ ips->srcadr = NSRCADR(&pp->srcadr);
+ if (client_v6_capable)
+@@ -765,39 +752,37 @@ list_peers_sum(
+ ips->dstadr = NSRCADR(&pp->dstadr->bcast);
+ }
+ }
+- } else
++ } else {
+ ips->dstadr = 0;
+-
+- skip = 0;
++ }
+ }
+
+- if (!skip) {
+- ips->srcport = NSRCPORT(&pp->srcadr);
+- ips->stratum = pp->stratum;
+- ips->hpoll = pp->hpoll;
+- ips->ppoll = pp->ppoll;
+- ips->reach = pp->reach;
+- ips->flags = 0;
+- if (pp == sys_peer)
+- ips->flags |= INFO_FLAG_SYSPEER;
+- if (pp->flags & FLAG_CONFIG)
+- ips->flags |= INFO_FLAG_CONFIG;
+- if (pp->flags & FLAG_REFCLOCK)
+- ips->flags |= INFO_FLAG_REFCLOCK;
+- if (pp->flags & FLAG_PREFER)
+- ips->flags |= INFO_FLAG_PREFER;
+- if (pp->flags & FLAG_BURST)
+- ips->flags |= INFO_FLAG_BURST;
+- if (pp->status == CTL_PST_SEL_SYNCCAND)
+- ips->flags |= INFO_FLAG_SEL_CANDIDATE;
+- if (pp->status >= CTL_PST_SEL_SYSPEER)
+- ips->flags |= INFO_FLAG_SHORTLIST;
+- ips->hmode = pp->hmode;
+- ips->delay = HTONS_FP(DTOFP(pp->delay));
+- DTOLFP(pp->offset, <mp);
+- HTONL_FP(<mp, &ips->offset);
+- ips->dispersion = HTONS_FP(DTOUFP(SQRT(pp->disp)));
+- }
++ ips->srcport = NSRCPORT(&pp->srcadr);
++ ips->stratum = pp->stratum;
++ ips->hpoll = pp->hpoll;
++ ips->ppoll = pp->ppoll;
++ ips->reach = pp->reach;
++ ips->flags = 0;
++ if (pp == sys_peer)
++ ips->flags |= INFO_FLAG_SYSPEER;
++ if (pp->flags & FLAG_CONFIG)
++ ips->flags |= INFO_FLAG_CONFIG;
++ if (pp->flags & FLAG_REFCLOCK)
++ ips->flags |= INFO_FLAG_REFCLOCK;
++ if (pp->flags & FLAG_PREFER)
++ ips->flags |= INFO_FLAG_PREFER;
++ if (pp->flags & FLAG_BURST)
++ ips->flags |= INFO_FLAG_BURST;
++ if (pp->status == CTL_PST_SEL_SYNCCAND)
++ ips->flags |= INFO_FLAG_SEL_CANDIDATE;
++ if (pp->status >= CTL_PST_SEL_SYSPEER)
++ ips->flags |= INFO_FLAG_SHORTLIST;
++ ips->hmode = pp->hmode;
++ ips->delay = HTONS_FP(DTOFP(pp->delay));
++ DTOLFP(pp->offset, <mp);
++ HTONL_FP(<mp, &ips->offset);
++ ips->dispersion = HTONS_FP(DTOUFP(SQRT(pp->disp)));
++
+ ips = (struct info_peer_summary *)more_pkt();
+ } /* for pp */
+
+@@ -1197,7 +1182,7 @@ mem_stats(
+ ms->hashcount[i] = (u_char)
+ max((u_int)peer_hash_count[i], UCHAR_MAX);
+
+- more_pkt();
++ (void) more_pkt();
+ flush_pkt();
+ }
+
+@@ -1285,7 +1270,7 @@ loop_info(
+ li->compliance = htonl((u_int32)(tc_counter));
+ li->watchdog_timer = htonl((u_int32)(current_time - sys_epoch));
+
+- more_pkt();
++ (void) more_pkt();
+ flush_pkt();
+ }
+
+@@ -1571,56 +1556,143 @@ setclr_flags(
+ req_ack(srcadr, inter, inpkt, INFO_OKAY);
+ }
+
++/* There have been some issues with the restrict list processing,
++ * ranging from problems with deep recursion (resulting in stack
++ * overflows) and overfull reply buffers.
++ *
++ * To avoid this trouble the list reversal is done iteratively using a
++ * scratch pad.
++ */
++typedef struct RestrictStack RestrictStackT;
++struct RestrictStack {
++ RestrictStackT *link;
++ size_t fcnt;
++ const restrict_u *pres[63];
++};
++
++static size_t
++getStackSheetSize(
++ RestrictStackT *sp
++ )
++{
++ if (sp)
++ return sizeof(sp->pres)/sizeof(sp->pres[0]);
++ return 0u;
++}
++
++static int/*BOOL*/
++pushRestriction(
++ RestrictStackT **spp,
++ const restrict_u *ptr
++ )
++{
++ RestrictStackT *sp;
++
++ if (NULL == (sp = *spp) || 0 == sp->fcnt) {
++ /* need another sheet in the scratch pad */
++ sp = emalloc(sizeof(*sp));
++ sp->link = *spp;
++ sp->fcnt = getStackSheetSize(sp);
++ *spp = sp;
++ }
++ sp->pres[--sp->fcnt] = ptr;
++ return TRUE;
++}
++
++static int/*BOOL*/
++popRestriction(
++ RestrictStackT **spp,
++ const restrict_u **opp
++ )
++{
++ RestrictStackT *sp;
++
++ if (NULL == (sp = *spp) || sp->fcnt >= getStackSheetSize(sp))
++ return FALSE;
++
++ *opp = sp->pres[sp->fcnt++];
++ if (sp->fcnt >= getStackSheetSize(sp)) {
++ /* discard sheet from scratch pad */
++ *spp = sp->link;
++ free(sp);
++ }
++ return TRUE;
++}
++
++static void
++flushRestrictionStack(
++ RestrictStackT **spp
++ )
++{
++ RestrictStackT *sp;
++
++ while (NULL != (sp = *spp)) {
++ *spp = sp->link;
++ free(sp);
++ }
++}
++
+ /*
+- * list_restrict4 - recursive helper for list_restrict dumps IPv4
++ * list_restrict4 - iterative helper for list_restrict dumps IPv4
+ * restriction list in reverse order.
+ */
+ static void
+ list_restrict4(
+- restrict_u * res,
++ const restrict_u * res,
+ struct info_restrict ** ppir
+ )
+ {
++ RestrictStackT * rpad;
+ struct info_restrict * pir;
+
+- if (res->link != NULL)
+- list_restrict4(res->link, ppir);
+-
+ pir = *ppir;
+- pir->addr = htonl(res->u.v4.addr);
+- if (client_v6_capable)
+- pir->v6_flag = 0;
+- pir->mask = htonl(res->u.v4.mask);
+- pir->count = htonl(res->count);
+- pir->flags = htons(res->flags);
+- pir->mflags = htons(res->mflags);
+- *ppir = (struct info_restrict *)more_pkt();
++ for (rpad = NULL; res; res = res->link)
++ if (!pushRestriction(&rpad, res))
++ break;
++
++ while (pir && popRestriction(&rpad, &res)) {
++ pir->addr = htonl(res->u.v4.addr);
++ if (client_v6_capable)
++ pir->v6_flag = 0;
++ pir->mask = htonl(res->u.v4.mask);
++ pir->count = htonl(res->count);
++ pir->flags = htons(res->flags);
++ pir->mflags = htons(res->mflags);
++ pir = (struct info_restrict *)more_pkt();
++ }
++ flushRestrictionStack(&rpad);
++ *ppir = pir;
+ }
+
+-
+ /*
+- * list_restrict6 - recursive helper for list_restrict dumps IPv6
++ * list_restrict6 - iterative helper for list_restrict dumps IPv6
+ * restriction list in reverse order.
+ */
+ static void
+ list_restrict6(
+- restrict_u * res,
++ const restrict_u * res,
+ struct info_restrict ** ppir
+ )
+ {
++ RestrictStackT * rpad;
+ struct info_restrict * pir;
+
+- if (res->link != NULL)
+- list_restrict6(res->link, ppir);
++ pir = *ppir;
++ for (rpad = NULL; res; res = res->link)
++ if (!pushRestriction(&rpad, res))
++ break;
+
+- pir = *ppir;
+- pir->addr6 = res->u.v6.addr;
+- pir->mask6 = res->u.v6.mask;
+- pir->v6_flag = 1;
+- pir->count = htonl(res->count);
+- pir->flags = htons(res->flags);
+- pir->mflags = htons(res->mflags);
+- *ppir = (struct info_restrict *)more_pkt();
++ while (pir && popRestriction(&rpad, &res)) {
++ pir->addr6 = res->u.v6.addr;
++ pir->mask6 = res->u.v6.mask;
++ pir->v6_flag = 1;
++ pir->count = htonl(res->count);
++ pir->flags = htons(res->flags);
++ pir->mflags = htons(res->mflags);
++ pir = (struct info_restrict *)more_pkt();
++ }
++ flushRestrictionStack(&rpad);
++ *ppir = pir;
+ }
+
+
+@@ -1644,8 +1716,7 @@ list_restrict(
+ /*
+ * The restriction lists are kept sorted in the reverse order
+ * than they were originally. To preserve the output semantics,
+- * dump each list in reverse order. A recursive helper function
+- * achieves that.
++ * dump each list in reverse order. The workers take care of that.
+ */
+ list_restrict4(restrictlist4, &ir);
+ if (client_v6_capable)
+@@ -2010,7 +2081,7 @@ do_trustkey(
+ register int items;
+
+ items = INFO_NITEMS(inpkt->err_nitems);
+- kp = (uint32_t*)&inpkt->u;
++ kp = (uint32_t *)&inpkt->u;
+ while (items-- > 0) {
+ authtrust(*kp, trust);
+ kp++;
+@@ -2089,7 +2160,7 @@ req_get_traps(
+ it = (struct info_trap *)prepare_pkt(srcadr, inter, inpkt,
+ v6sizeof(struct info_trap));
+
+- for (i = 0, tr = ctl_traps; i < COUNTOF(ctl_traps); i++, tr++) {
++ for (i = 0, tr = ctl_traps; it && i < COUNTOF(ctl_traps); i++, tr++) {
+ if (tr->tr_flags & TRAP_INUSE) {
+ if (IS_IPV4(&tr->tr_addr)) {
+ if (tr->tr_localaddr == any_interface)
+@@ -2405,7 +2476,7 @@ get_clock_info(
+ ic = (struct info_clock *)prepare_pkt(srcadr, inter, inpkt,
+ sizeof(struct info_clock));
+
+- while (items-- > 0) {
++ while (items-- > 0 && ic) {
+ NSRCADR(&addr) = *clkaddr++;
+ if (!ISREFCLOCKADR(&addr) || NULL ==
+ findexistingpeer(&addr, NULL, NULL, -1, 0)) {
+@@ -2544,7 +2615,7 @@ get_clkbug_info(
+ ic = (struct info_clkbug *)prepare_pkt(srcadr, inter, inpkt,
+ sizeof(struct info_clkbug));
+
+- while (items-- > 0) {
++ while (items-- > 0 && ic) {
+ NSRCADR(&addr) = *clkaddr++;
+ if (!ISREFCLOCKADR(&addr) || NULL ==
+ findexistingpeer(&addr, NULL, NULL, -1, 0)) {
+@@ -2592,13 +2663,15 @@ fill_info_if_stats(void *data, interface_info_t *i
+ struct info_if_stats **ifsp = (struct info_if_stats **)data;
+ struct info_if_stats *ifs = *ifsp;
+ endpt *ep = interface_info->ep;
++
++ if (NULL == ifs)
++ return;
+
+ ZERO(*ifs);
+
+ if (IS_IPV6(&ep->sin)) {
+- if (!client_v6_capable) {
++ if (!client_v6_capable)
+ return;
+- }
+ ifs->v6_flag = 1;
+ ifs->unaddr.addr6 = SOCK_ADDR6(&ep->sin);
+ ifs->unbcast.addr6 = SOCK_ADDR6(&ep->bcast);
+Index: contrib/ntp/ntpd/ntp_scanner.c
+===================================================================
+--- contrib/ntp/ntpd/ntp_scanner.c (revision 294707)
++++ contrib/ntp/ntpd/ntp_scanner.c (working copy)
+@@ -669,7 +669,7 @@ int
+ yylex(void)
+ {
+ static follby followedby = FOLLBY_TOKEN;
+- int i;
++ size_t i;
+ int instring;
+ int yylval_was_set;
+ int converted;
+Index: contrib/ntp/ntpd/ntp_timer.c
+===================================================================
+--- contrib/ntp/ntpd/ntp_timer.c (revision 294707)
++++ contrib/ntp/ntpd/ntp_timer.c (working copy)
+@@ -549,14 +549,16 @@ check_leapsec(
+ #ifdef LEAP_SMEAR
+ leap_smear.enabled = leap_smear_intv != 0;
+ #endif
+- if (reset) {
++ if (reset) {
+ lsprox = LSPROX_NOWARN;
+ leapsec_reset_frame();
+ memset(&lsdata, 0, sizeof(lsdata));
+ } else {
+- int fired = leapsec_query(&lsdata, now, tpiv);
++ int fired;
+
+- DPRINTF(1, ("*** leapsec_query: fired %i, now %u (0x%08X), tai_diff %i, ddist %u\n",
++ fired = leapsec_query(&lsdata, now, tpiv);
++
++ DPRINTF(3, ("*** leapsec_query: fired %i, now %u (0x%08X), tai_diff %i, ddist %u\n",
+ fired, now, now, lsdata.tai_diff, lsdata.ddist));
+
+ #ifdef LEAP_SMEAR
+@@ -572,8 +574,7 @@ check_leapsec(
+ DPRINTF(1, ("*** leapsec_query: setting leap_smear interval %li, begin %.0f, end %.0f\n",
+ leap_smear.interval, leap_smear.intv_start, leap_smear.intv_end));
+ }
+- }
+- else {
++ } else {
+ if (leap_smear.interval)
+ DPRINTF(1, ("*** leapsec_query: clearing leap_smear interval\n"));
+ leap_smear.interval = 0;
+@@ -655,10 +656,10 @@ check_leapsec(
+ sys_tai = lsdata.tai_offs;
+ } else {
+ #ifdef AUTOKEY
+- update_autokey = (sys_tai != lsdata.tai_offs);
++ update_autokey = (sys_tai != (u_int)lsdata.tai_offs);
+ #endif
+- lsprox = lsdata.proximity;
+- sys_tai = lsdata.tai_offs;
++ lsprox = lsdata.proximity;
++ sys_tai = lsdata.tai_offs;
+ }
+ }
+
+Index: contrib/ntp/ntpd/ntpd-opts.c
+===================================================================
+--- contrib/ntp/ntpd/ntpd-opts.c (revision 294707)
++++ contrib/ntp/ntpd/ntpd-opts.c (working copy)
+@@ -1,7 +1,7 @@
+ /*
+ * EDIT THIS FILE WITH CAUTION (ntpd-opts.c)
+ *
+- * It has been AutoGen-ed January 7, 2016 at 11:28:29 PM by AutoGen 5.18.5
++ * It has been AutoGen-ed January 20, 2016 at 04:15:45 AM by AutoGen 5.18.5
+ * From the definitions ntpd-opts.def
+ * and the template file options
+ *
+@@ -18,7 +18,7 @@
+ * The ntpd program is copyrighted and licensed
+ * under the following terms:
+ *
+- * Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation, all rights reserved.
++ * Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.
+ * This is free software. It is licensed for use, modification and
+ * redistribution under the terms of the NTP License, copies of which
+ * can be seen at:
+@@ -75,8 +75,8 @@ extern FILE * option_usage_fp;
+ * static const strings for ntpd options
+ */
+ static char const ntpd_opt_strs[3129] =
+-/* 0 */ "ntpd 4.2.8p5\n"
+- "Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation, all rights reserved.\n"
++/* 0 */ "ntpd 4.2.8p6\n"
++ "Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n"
+ "This is free software. It is licensed for use, modification and\n"
+ "redistribution under the terms of the NTP License, copies of which\n"
+ "can be seen at:\n"
+@@ -205,12 +205,12 @@ static char const ntpd_opt_strs[3129] =
+ /* 2900 */ "output version information and exit\0"
+ /* 2936 */ "version\0"
+ /* 2944 */ "NTPD\0"
+-/* 2949 */ "ntpd - NTP daemon program - Ver. 4.2.8p5\n"
++/* 2949 */ "ntpd - NTP daemon program - Ver. 4.2.8p6\n"
+ "Usage: %s [ - [] | --[{=| }] ]... \\\n"
+ "\t\t[ ... ]\n\0"
+ /* 3080 */ "http://bugs.ntp.org, bugs@ntp.org\0"
+ /* 3114 */ "\n\0"
+-/* 3116 */ "ntpd 4.2.8p5";
++/* 3116 */ "ntpd 4.2.8p6";
+
+ /**
+ * ipv4 option description with
+@@ -1529,8 +1529,8 @@ static void bogus_function(void) {
+ translate option names.
+ */
+ /* referenced via ntpdOptions.pzCopyright */
+- puts(_("ntpd 4.2.8p5\n\
+-Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation, all rights reserved.\n\
++ puts(_("ntpd 4.2.8p6\n\
++Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.\n\
+ This is free software. It is licensed for use, modification and\n\
+ redistribution under the terms of the NTP License, copies of which\n\
+ can be seen at:\n"));
+@@ -1670,7 +1670,7 @@ implied warranty.\n"));
+ puts(_("output version information and exit"));
+
+ /* referenced via ntpdOptions.pzUsageTitle */
+- puts(_("ntpd - NTP daemon program - Ver. 4.2.8p5\n\
++ puts(_("ntpd - NTP daemon program - Ver. 4.2.8p6\n\
+ Usage: %s [ - [] | --[{=| }] ]... \\\n\
+ \t\t[ ... ]\n"));
+
+@@ -1678,7 +1678,7 @@ Usage: %s [ - [] | --[{=| }
+ puts(_("\n"));
+
+ /* referenced via ntpdOptions.pzFullVersion */
+- puts(_("ntpd 4.2.8p5"));
++ puts(_("ntpd 4.2.8p6"));
+
+ /* referenced via ntpdOptions.pzFullUsage */
+ puts(_("<<>>"));
+Index: contrib/ntp/ntpd/ntpd-opts.h
+===================================================================
+--- contrib/ntp/ntpd/ntpd-opts.h (revision 294707)
++++ contrib/ntp/ntpd/ntpd-opts.h (working copy)
+@@ -1,7 +1,7 @@
+ /*
+ * EDIT THIS FILE WITH CAUTION (ntpd-opts.h)
+ *
+- * It has been AutoGen-ed January 7, 2016 at 11:28:28 PM by AutoGen 5.18.5
++ * It has been AutoGen-ed January 20, 2016 at 04:15:43 AM by AutoGen 5.18.5
+ * From the definitions ntpd-opts.def
+ * and the template file options
+ *
+@@ -18,7 +18,7 @@
+ * The ntpd program is copyrighted and licensed
+ * under the following terms:
+ *
+- * Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation, all rights reserved.
++ * Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation, all rights reserved.
+ * This is free software. It is licensed for use, modification and
+ * redistribution under the terms of the NTP License, copies of which
+ * can be seen at:
+@@ -106,9 +106,9 @@ typedef enum {
+ /** count of all options for ntpd */
+ #define OPTION_CT 38
+ /** ntpd version */
+-#define NTPD_VERSION "4.2.8p5"
++#define NTPD_VERSION "4.2.8p6"
+ /** Full ntpd version text */
+-#define NTPD_FULL_VERSION "ntpd 4.2.8p5"
++#define NTPD_FULL_VERSION "ntpd 4.2.8p6"
+
+ /**
+ * Interface defines for all options. Replace "n" with the UPPER_CASED
+Index: contrib/ntp/ntpd/ntpd.1ntpdman
+===================================================================
+--- contrib/ntp/ntpd/ntpd.1ntpdman (revision 294707)
++++ contrib/ntp/ntpd/ntpd.1ntpdman (working copy)
+@@ -10,11 +10,11 @@
+ .ds B-Font B
+ .ds I-Font I
+ .ds R-Font R
+-.TH ntpd 1ntpdman "07 Jan 2016" "4.2.8p5" "User Commands"
++.TH ntpd 1ntpdman "20 Jan 2016" "4.2.8p6" "User Commands"
+ .\"
+-.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-KDaWJq/ag-WDaOIq)
++.\" EDIT THIS FILE WITH CAUTION (/tmp/.ag-9JaiRS/ag-jKaaQS)
+ .\"
+-.\" It has been AutoGen-ed January 7, 2016 at 11:30:44 PM by AutoGen 5.18.5
++.\" It has been AutoGen-ed January 20, 2016 at 04:17:54 AM by AutoGen 5.18.5
+ .\" From the definitions ntpd-opts.def
+ .\" and the template file agman-cmd.tpl
+ .SH NAME
+@@ -979,7 +979,7 @@ RFC5908
+ .SH "AUTHORS"
+ The University of Delaware and Network Time Foundation
+ .SH "COPYRIGHT"
+-Copyright (C) 1992-2015 The University of Delaware and Network Time Foundation all rights reserved.
++Copyright (C) 1992-2016 The University of Delaware and Network Time Foundation all rights reserved.
+ This program is released under the terms of the NTP license, .
+ .SH BUGS
+ The
+Index: contrib/ntp/ntpd/ntpd.1ntpdmdoc
+===================================================================
+--- contrib/ntp/ntpd/ntpd.1ntpdmdoc (revision 294707)
++++ contrib/ntp/ntpd/ntpd.1ntpdmdoc (working copy)
+@@ -1,9 +1,9 @@
+-.Dd January 7 2016
++.Dd January 20 2016
+ .Dt NTPD 1ntpdmdoc User Commands
+ .Os
+ .\" EDIT THIS FILE WITH CAUTION (ntpd-opts.mdoc)
+ .\"
+-.\" It has been AutoGen-ed January 7, 2016 at 11:31:02 PM by AutoGen 5.18.5
++.\" It has been AutoGen-ed January 20, 2016 at 04:18:12 AM by AutoGen 5.18.5
+ .\" From the definitions ntpd-opts.def
+ .\" and the template file agmdoc-cmd.tpl
+ .Sh NAME
+@@ -886,7 +886,7 @@ A snapshot of this documentation is available in H
+ .Sh "AUTHORS"
+ The University of Delaware and Network Time Foundation
+ .Sh "COPYRIGHT"
+-Copyright (C) 1992\-2015 The University of Delaware and Network Time Foundation all rights reserved.
++Copyright (C) 1992\-2016 The University of Delaware and Network Time Foundation all rights reserved.
+ This program is released under the terms of the NTP license, .
+ .Sh BUGS
+ The
+Index: contrib/ntp/ntpd/ntpd.c
+===================================================================
+--- contrib/ntp/ntpd/ntpd.c (revision 294707)
++++ contrib/ntp/ntpd/ntpd.c (working copy)
+@@ -209,6 +209,11 @@ extern int syscall (int, ...);
+
+
+ #if !defined(SIM) && defined(SIGDIE1)
++static volatile int signalled = 0;
++static volatile int signo = 0;
++
++/* In an ideal world, 'finish_safe()' would declared as noreturn... */
++static void finish_safe (int);
+ static RETSIGTYPE finish (int);
+ #endif
+
+@@ -298,11 +303,28 @@ my_pthread_warmup_worker(
+ static void
+ my_pthread_warmup(void)
+ {
+- pthread_t thread;
+- int rc;
++ pthread_t thread;
++ pthread_attr_t thr_attr;
++ int rc;
++
++ pthread_attr_init(&thr_attr);
++#if defined(HAVE_PTHREAD_ATTR_GETSTACKSIZE) && \
++ defined(HAVE_PTHREAD_ATTR_SETSTACKSIZE) && \
++ defined(PTHREAD_STACK_MIN)
++ rc = pthread_attr_setstacksize(&thr_attr, PTHREAD_STACK_MIN);
++ if (0 != rc)
++ msyslog(LOG_ERR,
++ "my_pthread_warmup: pthread_attr_setstacksize() -> %s",
++ strerror(rc));
++#endif
+ rc = pthread_create(
+- &thread, NULL, my_pthread_warmup_worker, NULL);
+- if (0 == rc) {
++ &thread, &thr_attr, my_pthread_warmup_worker, NULL);
++ pthread_attr_destroy(&thr_attr);
++ if (0 != rc) {
++ msyslog(LOG_ERR,
++ "my_pthread_warmup: pthread_create() -> %s",
++ strerror(rc));
++ } else {
+ pthread_cancel(thread);
+ pthread_join(thread, NULL);
+ }
+@@ -1204,6 +1226,10 @@ int scmp_sc[] = {
+ # ifdef HAVE_IO_COMPLETION_PORT
+
+ for (;;) {
++#if !defined(SIM) && defined(SIGDIE1)
++ if (signalled)
++ finish_safe(signo);
++#endif
+ GetReceivedBuffers();
+ # else /* normal I/O */
+
+@@ -1211,11 +1237,19 @@ int scmp_sc[] = {
+ was_alarmed = FALSE;
+
+ for (;;) {
++#if !defined(SIM) && defined(SIGDIE1)
++ if (signalled)
++ finish_safe(signo);
++#endif
+ if (alarm_flag) { /* alarmed? */
+ was_alarmed = TRUE;
+ alarm_flag = FALSE;
+ }
+
++ /* collect async name/addr results */
++ if (!was_alarmed)
++ harvest_blocking_responses();
++
+ if (!was_alarmed && !has_full_recv_buffer()) {
+ /*
+ * Nothing to do. Wait for something.
+@@ -1330,9 +1364,9 @@ int scmp_sc[] = {
+ /*
+ * finish - exit gracefully
+ */
+-static RETSIGTYPE
+-finish(
+- int sig
++static void
++finish_safe(
++ int sig
+ )
+ {
+ const char *sig_desc;
+@@ -1353,6 +1387,16 @@ int scmp_sc[] = {
+ peer_cleanup();
+ exit(0);
+ }
++
++static RETSIGTYPE
++finish(
++ int sig
++ )
++{
++ signalled = 1;
++ signo = sig;
++}
++
+ #endif /* !SIM && SIGDIE1 */
+
+
+Index: contrib/ntp/ntpd/ntpd.html
+===================================================================
+--- contrib/ntp/ntpd/ntpd.html (revision 294707)
++++ contrib/ntp/ntpd/ntpd.html (working copy)
+@@ -39,7 +39,7 @@ The program can operate in any of several modes, i
+ symmetric and broadcast modes, and with both symmetric-key and public-key
+ cryptography.
+
+- This document applies to version 4.2.8p5 of ntpd
.
++
This document applies to version 4.2.8p6 of ntpd
.
+
+