This patch will upgrade Sudo version 1.7.4 patchlevel 4 to Sudo version 1.7.4 patchlevel 5. To apply: $ cd sudo-1.7.4p4 $ patch -p1 < sudo-1.7.4p5.patch diff -ura sudo-1.7.4p4/ChangeLog sudo-1.7.4p5/ChangeLog --- sudo-1.7.4p4/ChangeLog Mon Sep 6 08:14:27 2010 +++ sudo-1.7.4p5/ChangeLog Wed Jan 12 09:42:36 2011 @@ -1,3 +1,102 @@ +2011-01-11 Todd C. Miller + + * check.c: + If the user is running sudo as himself but as a different group we + need to prompt for a password. + [fe8a94f96542] + +2011-01-10 Todd C. Miller + + * pwutil.c: + If user has no supplementary groups, fall back on checking the group + file explicitly. + [c536ddb16bb6] + +2011-01-04 Todd C. Miller + + * match.c: + Fix NULL dereference with "sudo -g group" when the sudoers rule has + no runas user or group listed. Fixes RedHat bug Bug 667103. + [c51e2be737b2] + +2010-12-21 Todd C. Miller + + * term.c: + Clear OPOST from c_oflag like we used to. Fixes screen-based + editors such as vi. + [e26055d17b72] + + * sudoers.pod: + Clarify umask option description. From Reuben Thomas. + [fb8bdcb54feb] + +2010-11-24 Todd C. Miller + + * pp: + Add support for RHEL 6 file modes that include a trailing dot on + files with an SELinux security context + [fcc1daaf4df0] + +2010-11-22 Todd C. Miller + + * sudoers.pod: + fix typo; from Michael T Hunter + [46e70e2063af] + +2010-10-07 Todd C. Miller + + * check.c: + Having a timestamp file defined is no longer indicative of tty + tickets being enabled. Check def_tty_tickets directly. + [6c3803c239d9] + +2010-10-01 Todd C. Miller + + * set_perms.c: + Sync set_project() with trunk. + [646fd9bc0537] + + * set_perms.c, sudo.c: + Move set_project() into runas_setup(). Fixes a NULL deref when + project support is enabled and sudo's -g flag is used without the + -u flag. + [6ffd892243ab] + +2010-09-21 Todd C. Miller + + * linux_audit.c: + Ignore ECONNREFUSED from audit_log_user_command() which will occur + if auditd is not running. + [a686884684ca] + +2010-09-13 Todd C. Miller + + * install-sh: + Use sed instead of expr to split a flag from its argument. Fixes a + problem with expr interpreting its arguments as a flag when they + start with a dash. + [16372da8a286] + +2010-09-08 Todd C. Miller + + * bsm_audit.c: + Solaris BSM audit return EINVAL when auditing is not enabled, + whereas OpenBSM returns ENOSYS. + [bb9c94a8fa7d] + +2010-09-07 Todd C. Miller + + * toke.c, toke.l: + Add missing LOG_INPUT/LOG_OUTPUT support in the lexer. + [0a5519756bf1] + + * sudo.c: + Set NewArgv[0] to the name of the pseudo-command we are running. + Fixes a problem with "sudo -l" when auditing is enabled and the user + is not allowed to run any commands on the host. Adapted from a patch + from Daniel Kopecek. + [694ed1a75a4a] + 2010-09-06 Todd C. Miller * match.c: diff -ura sudo-1.7.4p4/NEWS sudo-1.7.4p5/NEWS --- sudo-1.7.4p4/NEWS Fri Jul 30 11:58:54 2010 +++ sudo-1.7.4p5/NEWS Wed Jan 12 13:36:18 2011 @@ -1,3 +1,85 @@ +What's new in Sudo 1.7.4p5? + + * A bug has been fixed that would allow a command to be run without the + user entering a password when sudo's -g flag is used without the -u flag. + + * If user has no supplementary groups, sudo will now fall back on checking + the group file explicitly, which restores historic sudo behavior. + + * A crash has been fixed when sudo's -g flag is used without the -u flag + and the sudoers file contains an entry with no runas user or group listed. + + * A bug has been fixed in the I/O logging support that could cause + visual artifacts in full-screen programs such as text editors,. + + * A crash has been fixed when the Solaris project support is enabled + and sudo's -g flag is used without the -u flag. + + * Sudo no longer exits with an error when support for auditing is + compiled in but auditing is not enabled. + + * Fixed a bug introduced in sudo 1.7.3 where the ticket file was not + being honored when the "targetpw" sudoers Defaults option was enabled. + + * The LOG_INPUT and LOG_OUTPUT tags in sudoers are now parsed correctly. + + * A crash has been fixed in "sudo -l" when sudo is built with auditing + support and the user is not allowed to run any commands on the host. + +What's new in Sudo 1.7.4p4? + + * A potential security issue has been fixed with respect to the handling + of sudo's -g command line option when -u is also specified. The flaw + may allow an attacker to run commands as a user that is not authorized + by the sudoers file. + + * A bug has been fixed where "sudo -l" output was incomplete if multiple + sudoers sources were defined in nsswitch.conf and there was an error + querying one of the sources. + + * The log_input, log_output, and use_pty sudoers options now work correctly + on AIX. Previously, sudo would hang if they were enabled. + + * The "make install" target now works correctly when sudo is built in a + directory other than the source directory. + + * The "runas_default" sudoers setting now works properly in a per-command + Defaults line. + + * Suspending and resuming the bash shell when PAM is in use now works + correctly. The SIGCONT signal was not propagated to the child process. + +What's new in Sudo 1.7.4p3? + + * A bug has been fixed where duplicate HOME environment variables could be + present when the env_reset setting was disabled and the always_set_home + setting was enabled in sudoers. + + * The value of sysconfdir is now substituted into the path to the sudoers.d + directory in the installed sudoers file. + + * Compilation problems on IRIX and other platforms have been fixed. + + * If multiple PAM "auth" actions are specified and the user enters ^C at + the password prompt, sudo will no longer prompt for a password for any + subsequent "auth" actions. Previously it was necessary to enter ^C for + each "auth" action. + +What's new in Sudo 1.7.4p2? + + * A bug where sudo could spin in a busy loop waiting for the child process + has been fixed. + +What's new in Sudo 1.7.4p1? + + * A bug introduced in sudo 1.7.3 that prevented the -k and -K options from + functioning when the tty_tickets sudoers option is enabled has been fixed. + + * Sudo no longer prints a warning when the -k or -K options are specified + and the ticket file does not exist. + + * It is now easier to cross-compile sudo. + What's new in Sudo 1.7.4? * Sudoedit will now preserve the file extension in the name of the diff -ura sudo-1.7.4p4/bsm_audit.c sudo-1.7.4p5/bsm_audit.c --- sudo-1.7.4p4/bsm_audit.c Fri Jul 30 11:58:54 2010 +++ sudo-1.7.4p5/bsm_audit.c Wed Jan 12 09:46:55 2011 @@ -31,6 +31,16 @@ #include "bsm_audit.h" +/* + * Solaris auditon() returns EINVAL if BSM audit not configured. + * OpenBSM returns ENOSYS for unimplemented options. + */ +#ifdef __sun__ +# define AUDIT_NOT_CONFIGURED EINVAL +#else +# define AUDIT_NOT_CONFIGURED ENOSYS +#endif + void log_error(int flags, const char *fmt, ...) __attribute__((__noreturn__)); static int @@ -71,7 +81,7 @@ * If we are not auditing, don't cut an audit record; just return. */ if (auditon(A_GETCOND, (caddr_t)&au_cond, sizeof(long)) < 0) { - if (errno == ENOSYS) + if (errno == AUDIT_NOT_CONFIGURED) return; log_error(0, "Could not determine audit condition"); } @@ -132,7 +142,7 @@ * If we are not auditing, don't cut an audit record; just return. */ if (auditon(A_GETCOND, &au_cond, sizeof(long)) < 0) { - if (errno == ENOSYS) + if (errno == AUDIT_NOT_CONFIGURED) return; log_error(0, "Could not determine audit condition"); } diff -ura sudo-1.7.4p4/check.c sudo-1.7.4p5/check.c --- sudo-1.7.4p4/check.c Fri Aug 6 09:45:15 2010 +++ sudo-1.7.4p5/check.c Wed Jan 12 09:46:58 2011 @@ -119,7 +119,13 @@ if (ISSET(mode, MODE_INVALIDATE)) { SET(validated, FLAG_CHECK_USER); } else { - if (user_uid == 0 || user_uid == runas_pw->pw_uid || user_is_exempt()) + /* + * Don't prompt for the root passwd or if the user is exempt. + * If the user is not changing uid/gid, no need for a password. + */ + if (user_uid == 0 || (user_uid == runas_pw->pw_uid && + (!runas_gr || user_in_group(sudo_user.pw, runas_gr->gr_name))) || + user_is_exempt()) return; } @@ -205,7 +211,7 @@ char *timestampfile; { /* If using tty timestamps but we have no tty there is nothing to do. */ - if (timestampfile && !user_ttypath) + if (def_tty_tickets && !user_ttypath) return; if (timestamp_uid != 0) @@ -528,7 +534,7 @@ if (timestampfile && status != TS_ERROR) { if (status != TS_MISSING) status = TS_NOFILE; /* dir there, file missing */ - if (!user_ttypath) + if (def_tty_tickets && !user_ttypath) goto done; /* no tty, always prompt */ if (lstat(timestampfile, &sb) == 0) { if (!S_ISREG(sb.st_mode)) { diff -ura sudo-1.7.4p4/configure sudo-1.7.4p5/configure --- sudo-1.7.4p4/configure Mon Sep 6 08:03:39 2010 +++ sudo-1.7.4p5/configure Wed Jan 12 09:46:24 2011 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.65 for sudo 1.7.4p4. +# Generated by GNU Autoconf 2.65 for sudo 1.7.4p5. # # Report bugs to . # @@ -701,8 +701,8 @@ # Identity of this package. PACKAGE_NAME='sudo' PACKAGE_TARNAME='sudo' -PACKAGE_VERSION='1.7.4p4' -PACKAGE_STRING='sudo 1.7.4p4' +PACKAGE_VERSION='1.7.4p5' +PACKAGE_STRING='sudo 1.7.4p5' PACKAGE_BUGREPORT='http://www.sudo.ws/bugs/' PACKAGE_URL='' @@ -1552,7 +1552,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures sudo 1.7.4p4 to adapt to many kinds of systems. +\`configure' configures sudo 1.7.4p5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1617,7 +1617,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of sudo 1.7.4p4:";; + short | recursive ) echo "Configuration of sudo 1.7.4p5:";; esac cat <<\_ACEOF @@ -1828,7 +1828,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -sudo configure 1.7.4p4 +sudo configure 1.7.4p5 generated by GNU Autoconf 2.65 Copyright (C) 2009 Free Software Foundation, Inc. @@ -2527,7 +2527,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by sudo $as_me 1.7.4p4, which was +It was created by sudo $as_me 1.7.4p5, which was generated by GNU Autoconf 2.65. Invocation command line was $ $0 $@ @@ -18977,7 +18977,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by sudo $as_me 1.7.4p4, which was +This file was extended by sudo $as_me 1.7.4p5, which was generated by GNU Autoconf 2.65. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -19043,7 +19043,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -sudo config.status 1.7.4p4 +sudo config.status 1.7.4p5 configured by $0, generated by GNU Autoconf 2.65, with options \\"\$ac_cs_config\\" diff -ura sudo-1.7.4p4/configure.in sudo-1.7.4p5/configure.in --- sudo-1.7.4p4/configure.in Mon Sep 6 08:03:33 2010 +++ sudo-1.7.4p5/configure.in Wed Jan 12 09:46:21 2011 @@ -3,7 +3,7 @@ dnl dnl Copyright (c) 1994-1996,1998-2010 Todd C. Miller dnl -AC_INIT([sudo], [1.7.4p4], [http://www.sudo.ws/bugs/], [sudo]) +AC_INIT([sudo], [1.7.4p5], [http://www.sudo.ws/bugs/], [sudo]) AC_CONFIG_HEADER(config.h pathnames.h) dnl dnl This won't work before AC_INIT diff -ura sudo-1.7.4p4/install-sh sudo-1.7.4p5/install-sh --- sudo-1.7.4p4/install-sh Fri Jul 30 11:58:54 2010 +++ sudo-1.7.4p5/install-sh Wed Jan 12 09:46:56 2011 @@ -71,7 +71,7 @@ ;; X-b*) BACKIT=true - BACKUP=`expr "$1" : '-b\(.*\)'` + BACKUP="`echo \"$1\" | sed 's/^..//'`" ;; X-c) # backwards compatibility @@ -85,7 +85,7 @@ shift ;; X-g*) - GROUP=`expr "$1" : '-g\(.*\)'` + GROUP="`echo \"$1\" | sed 's/^..//'`" CHGROUPIT=true ;; X-G) @@ -95,7 +95,7 @@ ;; X-G*) if ${ROOT} ; then - GROUP=`expr "$1" : '-g\(.*\)'` + GROUP="`echo \"$1\" | sed 's/^..//'`" CHGROUPIT=true fi ;; @@ -105,7 +105,7 @@ shift ;; X-m*) - MODE=`expr "$1" : '-m\(.*\)'` + MODE="`echo \"$1\" | sed 's/^..//'`" CHMODIT=true ;; X-M) @@ -114,7 +114,7 @@ shift ;; X-M*) - MODE=`expr "$1" : '-m\(.*\)'` + MODE="`echo \"$1\" | sed 's/^..//'`" ${ROOT} && CHMODIT=true ;; X-n) @@ -126,7 +126,7 @@ shift ;; X-o*) - OWNER=`expr "$1" : '-o\(.*\)'` + OWNER="`echo \"$1\" | sed 's/^..//'`" CHOWNIT=true ;; X-O) @@ -136,7 +136,7 @@ ;; X-O*) if ${ROOT} ; then - OWNER=`expr "$1" : '-o\(.*\)'` + OWNER="`echo \"$1\" | sed 's/^..//'`" CHOWNIT=true fi ;; diff -ura sudo-1.7.4p4/linux_audit.c sudo-1.7.4p5/linux_audit.c --- sudo-1.7.4p4/linux_audit.c Fri Jul 30 11:58:54 2010 +++ sudo-1.7.4p5/linux_audit.c Wed Jan 12 09:46:56 2011 @@ -82,9 +82,9 @@ } *--cp = '\0'; - /* Log command, ignoring EPERM on error. */ + /* Log command, ignoring ECONNREFUSED on error. */ rc = audit_log_user_command(au_fd, AUDIT_USER_CMD, command, NULL, result); - if (rc <= 0) + if (rc <= 0 && errno != ECONNREFUSED) warning("unable to send audit message"); efree(command); diff -ura sudo-1.7.4p4/match.c sudo-1.7.4p5/match.c --- sudo-1.7.4p4/match.c Fri Sep 3 17:40:19 2010 +++ sudo-1.7.4p5/match.c Wed Jan 12 09:46:58 2011 @@ -174,10 +174,11 @@ int user_matched = UNSPEC; int group_matched = UNSPEC; - if (tq_empty(user_list) && tq_empty(group_list)) - return(userpw_matches(def_runas_default, runas_pw->pw_name, runas_pw)); - if (runas_pw != NULL) { + /* If no runas user or runas group listed in sudoers, use default. */ + if (tq_empty(user_list) && tq_empty(group_list)) + return(userpw_matches(def_runas_default, runas_pw->pw_name, runas_pw)); + tq_foreach_rev(user_list, m) { switch (m->type) { case ALL: diff -ura sudo-1.7.4p4/pp sudo-1.7.4p5/pp --- sudo-1.7.4p4/pp Fri Jul 30 11:58:54 2010 +++ sudo-1.7.4p5/pp Wed Jan 12 09:46:57 2011 @@ -438,7 +438,7 @@ pp_mode_strip_altaccess () { case "$1" in - ??????????+) + ??????????[+.]) echo `echo "$1" | cut -b -10`;; *) echo "$1";; diff -ura sudo-1.7.4p4/pwutil.c sudo-1.7.4p5/pwutil.c --- sudo-1.7.4p4/pwutil.c Fri Aug 6 09:44:30 2010 +++ sudo-1.7.4p5/pwutil.c Wed Jan 12 09:46:58 2011 @@ -610,7 +610,7 @@ * If we are matching the invoking or list user and that user has a * supplementary group vector, check it. */ - if (user_ngroups >= 0 && + if (user_ngroups > 0 && strcmp(pw->pw_name, list_pw ? list_pw->pw_name : user_name) == 0) { for (i = 0; i < user_ngroups; i++) { if (grp->gr_gid == user_groups[i]) diff -ura sudo-1.7.4p4/set_perms.c sudo-1.7.4p5/set_perms.c --- sudo-1.7.4p4/set_perms.c Fri Sep 3 17:40:19 2010 +++ sudo-1.7.4p5/set_perms.c Wed Jan 12 09:46:56 2011 @@ -47,6 +47,10 @@ #ifdef HAVE_LOGIN_CAP_H # include #endif +#ifdef HAVE_PROJECT_H +# include +# include +#endif #include "sudo.h" @@ -547,7 +551,70 @@ #endif /* HAVE_INITGROUPS */ +#ifdef HAVE_PROJECT_H static void +set_project(pw) + struct passwd *pw; +{ + struct project proj; + char buf[PROJECT_BUFSZ]; + int errval; + + /* + * Collect the default project for the user and settaskid + */ + setprojent(); + if (getdefaultproj(pw->pw_name, &proj, buf, sizeof(buf)) != NULL) { + errval = setproject(proj.pj_name, pw->pw_name, TASK_NORMAL); + switch(errval) { + case 0: + break; + case SETPROJ_ERR_TASK: + switch (errno) { + case EAGAIN: + warningx("resource control limit has been reached"); + break; + case ESRCH: + warningx("user \"%s\" is not a member of project \"%s\"", + pw->pw_name, proj.pj_name); + break; + case EACCES: + warningx("the invoking task is final"); + break; + default: + warningx("could not join project \"%s\"", proj.pj_name); + } + case SETPROJ_ERR_POOL: + switch (errno) { + case EACCES: + warningx("no resource pool accepting default bindings " + "exists for project \"%s\"", proj.pj_name); + break; + case ESRCH: + warningx("specified resource pool does not exist for " + "project \"%s\"", proj.pj_name); + break; + default: + warningx("could not bind to default resource pool for " + "project \"%s\"", proj.pj_name); + } + break; + default: + if (errval <= 0) { + warningx("setproject failed for project \"%s\"", proj.pj_name); + } else { + warningx("warning, resource control assignment failed for " + "project \"%s\"", proj.pj_name); + } + } + } else { + warning("getdefaultproj"); + } + endprojent(); +} +#endif /* HAVE_PROJECT_H */ + +static void runas_setup() { gid_t gid; @@ -558,6 +625,9 @@ if (runas_pw->pw_name != NULL) { gid = runas_gr ? runas_gr->gr_gid : runas_pw->pw_gid; +#ifdef HAVE_PROJECT_H + set_project(runas_pw); +#endif #ifdef HAVE_GETUSERATTR aix_prep_user(runas_pw->pw_name, user_ttypath); #endif diff -ura sudo-1.7.4p4/sudo.c sudo-1.7.4p5/sudo.c --- sudo-1.7.4p4/sudo.c Mon Sep 6 08:16:09 2010 +++ sudo-1.7.4p5/sudo.c Wed Jan 12 09:46:56 2011 @@ -88,10 +88,6 @@ # define LOGIN_DEFROOTCLASS "daemon" # endif #endif -#ifdef HAVE_PROJECT_H -# include -# include -#endif #ifdef HAVE_MBR_CHECK_MEMBERSHIP # include #endif @@ -118,7 +114,6 @@ static int set_cmnd __P((int)); static void initial_setup __P((void)); static void set_loginclass __P((struct passwd *)); -static void set_project __P((struct passwd *)); static void set_runasgr __P((char *)); static void set_runaspw __P((char *)); static void show_version __P((void)); @@ -701,14 +696,10 @@ set_perms(PERM_ROOT); /* - * If we were given the '-e', '-i' or '-s' options we need to redo - * NewArgv and NewArgc. + * If in shell or edit mode, or if running a pseudo-command + * such as "list", we need to redo NewArgv and NewArgc. */ - if (ISSET(sudo_mode, MODE_EDIT)) { - NewArgv--; - NewArgc++; - NewArgv[0] = "sudoedit"; - } else if (ISSET(sudo_mode, MODE_SHELL)) { + if (ISSET(sudo_mode, MODE_SHELL)) { char **av; /* Allocate an extra slot for execve() failure (ENOEXEC). */ @@ -750,6 +741,10 @@ } av[++NewArgc] = NULL; NewArgv = av; + } else if (ISSET(sudo_mode, MODE_EDIT) || NewArgc == 0) { + NewArgv--; + NewArgc++; + NewArgv[0] = user_cmnd; } } @@ -764,9 +759,6 @@ int rval; char *path = user_path; - /* Set project if applicable. */ - set_project(runas_pw); - /* Resolve the path and return. */ rval = FOUND; user_stat = emalloc(sizeof(struct stat)); @@ -1141,72 +1133,6 @@ { } #endif /* HAVE_LOGIN_CAP_H */ - -#ifdef HAVE_PROJECT_H -static void -set_project(pw) - struct passwd *pw; -{ - int errflags = NO_MAIL|MSG_ONLY|NO_EXIT; - int errval; - struct project proj; - struct project *resultp = '\0'; - char buf[1024]; - - /* - * Collect the default project for the user and settaskid - */ - setprojent(); - if (resultp = getdefaultproj(pw->pw_name, &proj, buf, sizeof(buf))) { - errval = setproject(resultp->pj_name, pw->pw_name, TASK_NORMAL); - if (errval != 0) { - switch(errval) { - case SETPROJ_ERR_TASK: - if (errno == EAGAIN) - log_error(errflags, "resource control limit has been reached"); - else if (errno == ESRCH) - log_error(errflags, "user \"%s\" is not a member of " - "project \"%s\"", pw->pw_name, resultp->pj_name); - else if (errno == EACCES) - log_error(errflags, "the invoking task is final"); - else - log_error(errflags, "could not join project \"%s\"", - resultp->pj_name); - break; - case SETPROJ_ERR_POOL: - if (errno == EACCES) - log_error(errflags, "no resource pool accepting " - "default bindings exists for project \"%s\"", - resultp->pj_name); - else if (errno == ESRCH) - log_error(errflags, "specified resource pool does " - "not exist for project \"%s\"", resultp->pj_name); - else - log_error(errflags, "could not bind to default " - "resource pool for project \"%s\"", resultp->pj_name); - break; - default: - if (errval <= 0) { - log_error(errflags, "setproject failed for project \"%s\"", - resultp->pj_name); - } else { - log_error(errflags, "warning, resource control assignment " - "failed for project \"%s\"", resultp->pj_name); - } - } - } - } else { - log_error(errflags, "getdefaultproj() error: %s", strerror(errno)); - } - endprojent(); -} -#else -static void -set_project(pw) - struct passwd *pw; -{ -} -#endif /* HAVE_PROJECT_H */ /* * Look up the fully qualified domain name and set user_host and user_shost. diff -ura sudo-1.7.4p4/sudoers.cat sudo-1.7.4p5/sudoers.cat --- sudo-1.7.4p4/sudoers.cat Fri Jul 30 11:58:55 2010 +++ sudo-1.7.4p5/sudoers.cat Wed Jan 12 09:51:12 2011 @@ -61,7 +61,7 @@ -1.7.4 July 21, 2010 1 +1.7.4 January 12, 2011 1 @@ -127,7 +127,7 @@ -1.7.4 July 21, 2010 2 +1.7.4 January 12, 2011 2 @@ -193,7 +193,7 @@ -1.7.4 July 21, 2010 3 +1.7.4 January 12, 2011 3 @@ -259,7 +259,7 @@ -1.7.4 July 21, 2010 4 +1.7.4 January 12, 2011 4 @@ -325,7 +325,7 @@ -1.7.4 July 21, 2010 5 +1.7.4 January 12, 2011 5 @@ -391,7 +391,7 @@ -1.7.4 July 21, 2010 6 +1.7.4 January 12, 2011 6 @@ -457,7 +457,7 @@ -1.7.4 July 21, 2010 7 +1.7.4 January 12, 2011 7 @@ -523,7 +523,7 @@ -1.7.4 July 21, 2010 8 +1.7.4 January 12, 2011 8 @@ -589,7 +589,7 @@ -1.7.4 July 21, 2010 9 +1.7.4 January 12, 2011 9 @@ -655,7 +655,7 @@ -1.7.4 July 21, 2010 10 +1.7.4 January 12, 2011 10 @@ -721,7 +721,7 @@ -1.7.4 July 21, 2010 11 +1.7.4 January 12, 2011 11 @@ -787,7 +787,7 @@ -1.7.4 July 21, 2010 12 +1.7.4 January 12, 2011 12 @@ -853,7 +853,7 @@ -1.7.4 July 21, 2010 13 +1.7.4 January 12, 2011 13 @@ -919,7 +919,7 @@ -1.7.4 July 21, 2010 14 +1.7.4 January 12, 2011 14 @@ -985,7 +985,7 @@ -1.7.4 July 21, 2010 15 +1.7.4 January 12, 2011 15 @@ -1030,7 +1030,8 @@ umask Umask to use when running the command. Negate this option or set it to 0777 to preserve the user's umask. The actual umask that is used will be the union of the - user's umask and 0022. This guarantees that ssuuddoo never + user's umask and the value of the _u_m_a_s_k option, which + defaults to 0022. This guarantees that ssuuddoo never lowers the umask when running a command. Note on systems that use PAM, the default PAM configuration may specify its own umask which will override the value set @@ -1050,13 +1051,12 @@ +1.7.4 January 12, 2011 16 -1.7.4 July 21, 2010 16 - SUDOERS(4) MAINTENANCE COMMANDS SUDOERS(4) @@ -1117,7 +1117,7 @@ -1.7.4 July 21, 2010 17 +1.7.4 January 12, 2011 17 @@ -1183,7 +1183,7 @@ -1.7.4 July 21, 2010 18 +1.7.4 January 12, 2011 18 @@ -1249,7 +1249,7 @@ -1.7.4 July 21, 2010 19 +1.7.4 January 12, 2011 19 @@ -1315,7 +1315,7 @@ -1.7.4 July 21, 2010 20 +1.7.4 January 12, 2011 20 @@ -1381,7 +1381,7 @@ -1.7.4 July 21, 2010 21 +1.7.4 January 12, 2011 21 @@ -1447,7 +1447,7 @@ -1.7.4 July 21, 2010 22 +1.7.4 January 12, 2011 22 @@ -1513,7 +1513,7 @@ -1.7.4 July 21, 2010 23 +1.7.4 January 12, 2011 23 @@ -1579,7 +1579,7 @@ -1.7.4 July 21, 2010 24 +1.7.4 January 12, 2011 24 @@ -1621,7 +1621,7 @@ where shell escapes are disabled, though ssuuddooeeddiitt is a better solution to running editors via ssuuddoo. Due to the large number of programs that offer shell escapes, restricting - users to the set of programs that do not if often unworkable. + users to the set of programs that do not is often unworkable. noexec Many systems that support shared libraries have the ability to override default library functions by pointing an @@ -1645,7 +1645,7 @@ -1.7.4 July 21, 2010 25 +1.7.4 January 12, 2011 25 @@ -1711,7 +1711,7 @@ -1.7.4 July 21, 2010 26 +1.7.4 January 12, 2011 26 @@ -1777,6 +1777,6 @@ -1.7.4 July 21, 2010 27 +1.7.4 January 12, 2011 27 diff -ura sudo-1.7.4p4/sudoers.man.in sudo-1.7.4p5/sudoers.man.in --- sudo-1.7.4p4/sudoers.man.in Fri Jul 30 11:58:55 2010 +++ sudo-1.7.4p5/sudoers.man.in Wed Jan 12 09:50:48 2011 @@ -22,7 +22,7 @@ .nr BA @BAMAN@ .nr LC @LCMAN@ .\" -.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.07) +.\" Automatically generated by Pod::Man 2.23 (Pod::Simple 3.14) .\" .\" Standard preamble: .\" ======================================================================== @@ -148,7 +148,7 @@ .\" ======================================================================== .\" .IX Title "SUDOERS @mansectform@" -.TH SUDOERS @mansectform@ "July 21, 2010" "1.7.4" "MAINTENANCE COMMANDS" +.TH SUDOERS @mansectform@ "January 12, 2011" "1.7.4" "MAINTENANCE COMMANDS" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -1085,11 +1085,11 @@ .IX Item "umask" Umask to use when running the command. Negate this option or set it to 0777 to preserve the user's umask. The actual umask that is -used will be the union of the user's umask and \f(CW\*(C`@sudo_umask@\*(C'\fR. -This guarantees that \fBsudo\fR never lowers the umask when running a -command. Note on systems that use \s-1PAM\s0, the default \s-1PAM\s0 configuration -may specify its own umask which will override the value set in -\&\fIsudoers\fR. +used will be the union of the user's umask and the value of the +\&\fIumask\fR option, which defaults to \f(CW\*(C`@sudo_umask@\*(C'\fR. This guarantees +that \fBsudo\fR never lowers the umask when running a command. Note +on systems that use \s-1PAM\s0, the default \s-1PAM\s0 configuration may specify +its own umask which will override the value set in \fIsudoers\fR. .PP \&\fBStrings\fR: .IP "badpass_message" 16 @@ -1670,7 +1670,7 @@ escapes are disabled, though \fBsudoedit\fR is a better solution to running editors via \fBsudo\fR. Due to the large number of programs that offer shell escapes, restricting users to the set of programs that -do not if often unworkable. +do not is often unworkable. .IP "noexec" 10 .IX Item "noexec" Many systems that support shared libraries have the ability to diff -ura sudo-1.7.4p4/sudoers.pod sudo-1.7.4p5/sudoers.pod --- sudo-1.7.4p4/sudoers.pod Fri Jul 30 11:58:55 2010 +++ sudo-1.7.4p5/sudoers.pod Wed Jan 12 09:46:57 2011 @@ -995,11 +995,11 @@ Umask to use when running the command. Negate this option or set it to 0777 to preserve the user's umask. The actual umask that is -used will be the union of the user's umask and C<@sudo_umask@>. -This guarantees that B never lowers the umask when running a -command. Note on systems that use PAM, the default PAM configuration -may specify its own umask which will override the value set in -I. +used will be the union of the user's umask and the value of the +I option, which defaults to C<@sudo_umask@>. This guarantees +that B never lowers the umask when running a command. Note +on systems that use PAM, the default PAM configuration may specify +its own umask which will override the value set in I. =back @@ -1598,7 +1598,7 @@ escapes are disabled, though B is a better solution to running editors via B. Due to the large number of programs that offer shell escapes, restricting users to the set of programs that -do not if often unworkable. +do not is often unworkable. =item noexec diff -ura sudo-1.7.4p4/term.c sudo-1.7.4p5/term.c --- sudo-1.7.4p4/term.c Fri Jul 30 11:58:55 2010 +++ sudo-1.7.4p5/term.c Wed Jan 12 09:46:58 2011 @@ -151,10 +151,11 @@ /* Set terminal to raw mode */ term.c_cc[VMIN] = 1; term.c_cc[VTIME] = 0; - CLR(term.c_lflag, ECHO | ECHONL | ICANON | ISIG | IEXTEN); + CLR(term.c_iflag, ICRNL | IGNCR | INLCR | IUCLC | IXON); + SET(term.c_oflag, OPOST); + CLR(term.c_lflag, ECHO | ICANON | ISIG | IEXTEN); if (isig) SET(term.c_lflag, ISIG); - CLR(term.c_iflag, ICRNL | IGNCR | INLCR | IUCLC | IXON); if (tcsetattr(fd, TCSADRAIN|TCSASOFT, &term) == 0) { changed = 1; return(1); diff -ura sudo-1.7.4p4/toke.c sudo-1.7.4p5/toke.c --- sudo-1.7.4p4/toke.c Fri Aug 6 09:44:30 2010 +++ sudo-1.7.4p5/toke.c Wed Jan 12 09:47:11 2011 @@ -1,9 +1,9 @@ -/* $OpenBSD: flex.skl,v 1.10 2007/01/26 14:38:19 tsi Exp $ */ +/* $OpenBSD: flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $ */ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /home/cvs/openbsd/src/usr.bin/lex/flex.skl,v 1.10 2007/01/26 14:38:19 tsi Exp $ + * $Header: /home/cvs/openbsd/src/usr.bin/lex/flex.skl,v 1.11 2010/08/04 18:24:50 millert Exp $ */ #define FLEX_SCANNER @@ -288,71 +288,76 @@ *yy_cp = '\0'; \ yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 50 -#define YY_END_OF_BUFFER 51 -static yyconst short int yy_accept[555] = +#define YY_NUM_RULES 54 +#define YY_END_OF_BUFFER 55 +static yyconst short int yy_accept[593] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 38, 46, 45, 44, 38, 49, 38, - 39, 40, 38, 41, 38, 38, 38, 38, 43, 42, - 49, 33, 33, 33, 33, 33, 33, 49, 38, 38, - 46, 49, 33, 33, 33, 33, 33, 1, 49, 38, - 38, 16, 15, 16, 15, 15, 49, 49, 49, 2, - 8, 7, 8, 3, 8, 4, 49, 12, 12, 12, - 10, 11, 38, 0, 46, 44, 38, 0, 0, 0, - 48, 0, 38, 28, 0, 0, 27, 0, 36, 36, - 0, 38, 38, 0, 38, 38, 38, 38, 0, 31, + 0, 0, 55, 42, 50, 49, 48, 42, 53, 42, + 43, 44, 42, 45, 42, 42, 42, 42, 47, 46, + 53, 37, 37, 37, 37, 37, 37, 37, 53, 42, + 42, 50, 53, 37, 37, 37, 37, 37, 1, 53, + 42, 42, 16, 15, 16, 15, 15, 53, 53, 53, + 2, 8, 7, 8, 3, 8, 4, 53, 12, 12, + 12, 10, 11, 42, 0, 50, 48, 42, 0, 0, + 0, 52, 0, 42, 32, 0, 0, 31, 0, 40, + 40, 0, 42, 42, 0, 42, 42, 42, 42, 0, - 33, 33, 33, 33, 33, 33, 38, 47, 38, 46, - 0, 0, 0, 0, 0, 0, 38, 38, 38, 38, - 38, 1, 0, 34, 34, 0, 38, 16, 16, 14, - 13, 14, 0, 0, 2, 8, 0, 5, 6, 8, - 8, 12, 0, 12, 12, 0, 9, 37, 37, 0, - 0, 28, 0, 0, 38, 38, 38, 38, 38, 0, - 0, 31, 31, 33, 33, 33, 33, 33, 33, 33, - 38, 0, 0, 0, 0, 0, 0, 38, 38, 38, - 38, 38, 0, 38, 9, 0, 38, 38, 38, 38, - 38, 38, 0, 32, 32, 32, 0, 0, 31, 31, + 35, 37, 37, 37, 37, 37, 37, 37, 42, 51, + 42, 50, 0, 0, 0, 0, 0, 0, 42, 42, + 42, 42, 42, 1, 0, 38, 38, 0, 42, 16, + 16, 14, 13, 14, 0, 0, 2, 8, 0, 5, + 6, 8, 8, 12, 0, 12, 12, 0, 9, 41, + 41, 0, 0, 32, 0, 0, 42, 42, 42, 42, + 42, 0, 0, 35, 35, 37, 37, 37, 37, 37, + 37, 37, 37, 37, 42, 0, 0, 0, 0, 0, + 0, 42, 42, 42, 42, 42, 0, 42, 9, 0, + 42, 42, 42, 42, 42, 42, 0, 36, 36, 36, - 31, 31, 31, 31, 31, 33, 33, 33, 33, 33, - 33, 33, 38, 0, 0, 0, 0, 0, 0, 38, - 38, 38, 38, 38, 38, 38, 0, 0, 32, 32, - 32, 0, 31, 31, 0, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 0, 24, 33, 33, - 33, 33, 33, 38, 0, 0, 0, 0, 38, 38, - 38, 38, 38, 38, 38, 38, 0, 32, 0, 31, - 31, 31, 0, 0, 0, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 33, 33, - 33, 33, 33, 38, 0, 0, 0, 38, 38, 38, + 0, 0, 35, 35, 35, 35, 35, 35, 35, 37, + 37, 37, 37, 37, 37, 37, 37, 37, 42, 0, + 0, 0, 0, 0, 0, 42, 42, 42, 42, 42, + 42, 42, 0, 0, 36, 36, 36, 0, 35, 35, + 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 0, 24, 37, 37, 37, 37, 37, 37, + 37, 37, 42, 0, 0, 0, 0, 42, 42, 42, + 42, 42, 42, 42, 42, 0, 36, 0, 35, 35, + 35, 0, 0, 0, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 37, 37, 37, - 29, 29, 29, 0, 0, 31, 31, 31, 31, 31, - 31, 31, 0, 0, 0, 0, 0, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 0, 23, 33, 33, 0, 22, 0, 25, 38, - 0, 0, 0, 38, 38, 38, 38, 29, 29, 29, - 29, 0, 31, 0, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 0, 0, 0, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 33, 33, 35, 0, 0, 0, 38, 19, 34, - 38, 30, 30, 30, 31, 0, 0, 0, 31, 31, + 37, 37, 37, 37, 37, 42, 0, 0, 0, 42, + 42, 42, 33, 33, 33, 0, 0, 35, 35, 35, + 35, 35, 35, 35, 0, 0, 0, 0, 0, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 37, 37, 0, 23, 37, 37, 37, + 37, 0, 22, 0, 25, 42, 0, 0, 0, 42, + 42, 42, 42, 33, 33, 33, 33, 0, 35, 0, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 0, 0, 0, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 37, 37, 37, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 0, 0, 0, 0, 0, 31, 31, 31, 31, - 31, 31, 31, 31, 0, 21, 0, 26, 0, 19, - 0, 0, 38, 0, 38, 38, 38, 30, 30, 30, - 30, 30, 0, 0, 0, 0, 0, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 0, 0, 0, - 20, 19, 0, 0, 19, 0, 38, 38, 38, 30, - 30, 0, 0, 0, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 37, 37, 37, 39, 0, 0, 0, 42, 19, 38, + 42, 34, 34, 34, 35, 0, 0, 0, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 0, 0, 0, 0, 0, 35, 35, 35, 35, + 35, 35, 35, 35, 37, 37, 37, 37, 0, 21, + 0, 26, 0, 19, 0, 0, 42, 0, 42, 42, + 42, 34, 34, 34, 34, 34, 0, 0, 0, 0, + 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 0, 29, 37, 37, 37, 0, 0, 0, 20, - 31, 31, 20, 0, 17, 0, 38, 38, 38, 38, - 38, 0, 0, 0, 0, 0, 31, 31, 31, 31, - 31, 31, 31, 31, 0, 38, 38, 38, 31, 31, - 31, 31, 31, 31, 0, 38, 38, 38, 38, 38, - 31, 31, 31, 31, 31, 0, 18, 29, 29, 29, - 29, 29, 29, 0 + 19, 0, 0, 19, 0, 42, 42, 42, 34, 34, + 0, 0, 0, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, + 35, 0, 27, 37, 37, 20, 0, 17, 0, 42, + 42, 42, 42, 42, 0, 0, 0, 0, 0, 35, + 35, 35, 35, 35, 35, 35, 35, 0, 30, 37, + 0, 42, 42, 42, 35, 35, 35, 35, 35, 35, + 0, 28, 0, 42, 42, 42, 42, 42, 35, 35, + 35, 35, 35, 0, 18, 33, 33, 33, 33, 33, + 33, 0 + } ; static yyconst int yy_ec[256] = @@ -364,13 +369,13 @@ 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 22, 22, 23, 24, 1, 1, 25, 26, 10, 27, 28, 29, 30, 31, 32, 29, - 33, 34, 33, 33, 33, 33, 33, 35, 36, 37, - 33, 38, 39, 40, 41, 42, 43, 44, 33, 33, - 10, 45, 10, 1, 46, 1, 47, 48, 49, 50, + 33, 34, 35, 36, 36, 37, 36, 38, 39, 40, + 36, 41, 42, 43, 44, 45, 46, 47, 36, 36, + 10, 48, 10, 1, 49, 1, 50, 51, 52, 53, - 51, 52, 53, 53, 54, 53, 53, 55, 56, 57, - 58, 53, 53, 59, 60, 61, 62, 53, 53, 53, - 53, 53, 1, 1, 1, 1, 1, 1, 1, 1, + 54, 55, 56, 56, 57, 56, 56, 58, 59, 60, + 61, 56, 56, 62, 63, 64, 65, 56, 56, 56, + 56, 56, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -387,563 +392,579 @@ 1, 1, 1, 1, 1 } ; -static yyconst int yy_meta[63] = +static yyconst int yy_meta[66] = { 0, 1, 2, 3, 4, 5, 2, 1, 6, 6, 1, 1, 2, 1, 7, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 11, 6, 1, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 12, 13, 14, 14, 14, 14, - 14, 14, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13 + 1, 1, 1, 1, 1, 1, 1, 12, 13, 14, + 14, 14, 14, 14, 14, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13 } ; -static yyconst short int yy_base[621] = +static yyconst short int yy_base[659] = { 0, - 0, 61, 62, 63, 69, 84, 128, 189, 250, 294, - 80, 101, 2394, 2348, 2390, 3541, 2387, 338, 381, 52, - 3541, 3541, 2345, 3541, 107, 391, 119, 137, 2351, 3541, - 3541, 443, 2330, 490, 2337, 2335, 2320, 541, 145, 55, - 167, 565, 2293, 2297, 2289, 2258, 2257, 2314, 193, 256, - 56, 0, 3541, 2311, 3541, 0, 264, 617, 77, 0, - 2261, 3541, 82, 3541, 99, 3541, 110, 2243, 126, 106, - 3541, 145, 2240, 306, 2282, 2279, 639, 2277, 2276, 2263, - 3541, 201, 209, 74, 2211, 347, 2208, 550, 276, 2199, - 587, 410, 669, 2210, 2210, 306, 358, 317, 2163, 179, + 0, 64, 65, 66, 72, 87, 134, 198, 262, 309, + 83, 98, 2616, 2548, 2586, 3619, 2562, 356, 402, 58, + 3619, 3619, 2517, 3619, 106, 412, 139, 105, 2540, 3619, + 3619, 467, 2516, 517, 2487, 2486, 2496, 2482, 571, 149, + 44, 175, 595, 2444, 2446, 2438, 2433, 2434, 2494, 204, + 268, 65, 0, 3619, 2474, 3619, 0, 276, 650, 114, + 0, 2420, 3619, 79, 3619, 93, 3619, 131, 2417, 71, + 103, 3619, 140, 2416, 206, 2461, 2458, 672, 2456, 2428, + 2426, 3619, 217, 286, 125, 2380, 321, 2377, 347, 328, + 2375, 382, 322, 705, 2398, 2407, 379, 429, 393, 2387, - 706, 0, 2154, 240, 2111, 2109, 389, 3541, 76, 355, - 2082, 2076, 2066, 2061, 2062, 63, 115, 219, 29, 212, - 98, 2116, 507, 361, 2071, 598, 154, 0, 2111, 256, - 3541, 3541, 636, 284, 0, 2069, 567, 3541, 3541, 2066, - 532, 2050, 2087, 271, 300, 288, 2089, 2038, 3541, 2057, - 2055, 1986, 669, 603, 745, 777, 809, 841, 2014, 2003, - 878, 268, 916, 953, 1996, 1980, 1971, 1945, 1911, 1915, - 236, 1862, 1866, 1856, 1843, 1848, 317, 157, 1851, 307, - 266, 258, 777, 296, 1880, 1877, 686, 402, 992, 1024, - 725, 337, 1839, 1838, 787, 499, 1782, 1781, 343, 755, + 124, 745, 0, 2366, 2361, 253, 2351, 2347, 241, 3619, + 99, 558, 2329, 2333, 2325, 2319, 2320, 147, 116, 214, + 233, 181, 29, 2380, 534, 555, 2325, 617, 126, 0, + 2359, 178, 3619, 3619, 614, 268, 0, 2297, 677, 3619, + 3619, 2296, 315, 2295, 2337, 243, 280, 295, 2339, 2292, + 3619, 2336, 2320, 2274, 705, 777, 789, 824, 859, 894, + 2307, 2259, 934, 129, 975, 1015, 2252, 2232, 2224, 2221, + 2229, 2224, 2213, 2222, 287, 2193, 2197, 2162, 2162, 2167, + 323, 321, 2170, 235, 163, 304, 811, 331, 2217, 2215, + 638, 369, 1057, 1092, 724, 379, 2193, 2184, 730, 421, - 1056, 796, 694, 1094, 819, 1745, 393, 1736, 1728, 1711, - 1707, 1697, 373, 1681, 1666, 1651, 1664, 1623, 543, 400, - 556, 233, 506, 1133, 1165, 1197, 1657, 1655, 827, 1640, - 1638, 1637, 1621, 540, 858, 546, 895, 602, 1229, 0, - 935, 1240, 970, 731, 1278, 1002, 601, 3541, 1614, 1604, - 1610, 1595, 1583, 486, 1565, 1548, 1548, 387, 343, 380, - 616, 1010, 423, 1317, 1349, 1044, 1555, 1554, 1553, 1506, - 1379, 645, 1076, 1113, 1143, 652, 983, 1035, 1151, 1042, - 1418, 0, 1175, 1429, 1184, 866, 1467, 1207, 644, 1451, - 1458, 648, 672, 625, 1447, 1419, 680, 576, 487, 715, + 2166, 2163, 363, 628, 1127, 808, 437, 1168, 834, 2162, + 365, 434, 2153, 2151, 2141, 2139, 2119, 2117, 422, 2099, + 2095, 2069, 2082, 2069, 413, 444, 542, 495, 528, 1210, + 1245, 1280, 2106, 2105, 842, 2097, 2074, 2072, 2035, 563, + 867, 570, 875, 586, 1315, 0, 885, 1326, 911, 674, + 1367, 953, 603, 3619, 2006, 1993, 2006, 1986, 1962, 1965, + 1965, 1929, 538, 1922, 1905, 1906, 328, 431, 21, 556, + 920, 592, 1409, 1444, 994, 1944, 1942, 1874, 1872, 1477, + 684, 1034, 1067, 1077, 686, 691, 756, 1000, 767, 1519, + 0, 1102, 1530, 1111, 961, 1571, 1146, 1854, 1831, 663, - 1505, 1536, 1567, 1449, 1447, 1432, 1215, 1599, 1257, 903, - 1636, 1297, 1325, 1441, 1335, 1359, 1369, 841, 1024, 1067, - 1124, 1396, 1308, 1675, 0, 1448, 1686, 1484, 1265, 1724, - 1515, 955, 3541, 1423, 1364, 956, 3541, 975, 3541, 807, - 1350, 1300, 591, 1074, 569, 917, 1523, 155, 1762, 1793, - 1546, 1336, 1300, 1553, 768, 1576, 810, 1825, 0, 429, - 1836, 1584, 1404, 1873, 1618, 1655, 1705, 1743, 1288, 1335, - 1734, 1772, 1772, 1803, 1912, 0, 1805, 1923, 1781, 1492, - 1814, 993, 1156, 1276, 1251, 1244, 730, 635, 1952, 1222, - 1984, 2016, 2048, 2080, 1242, 1855, 1892, 1943, 1241, 1184, + 526, 1809, 1816, 790, 791, 655, 1823, 1742, 239, 580, + 640, 721, 1612, 1646, 1680, 1774, 1765, 1757, 1185, 1715, + 1193, 1042, 1755, 1220, 1228, 1766, 1255, 1265, 1290, 770, + 985, 1025, 1298, 1298, 1337, 1797, 0, 1348, 1808, 1384, + 1154, 1849, 1419, 1697, 1690, 847, 3619, 1689, 1682, 1693, + 1632, 959, 3619, 1000, 3619, 652, 1618, 1595, 539, 1044, + 576, 740, 1427, 670, 1890, 1924, 1462, 1634, 1633, 1392, + 808, 1468, 1058, 1959, 0, 764, 1970, 1495, 1236, 2010, + 1549, 1590, 1622, 1632, 1137, 1265, 1656, 1658, 1503, 1660, + 2052, 0, 1690, 2063, 1669, 1435, 1699, 1534, 1531, 1534, - 1198, 1964, 1350, 2112, 0, 762, 2123, 1972, 1992, 2160, - 2000, 2024, 1227, 2034, 2058, 2068, 1369, 1609, 1934, 772, - 806, 2199, 0, 844, 1173, 3541, 1468, 3541, 1192, 2086, - 1389, 142, 991, 604, 736, 2140, 1038, 2209, 2241, 2273, - 2305, 2103, 2177, 1163, 2219, 2229, 2251, 1152, 1116, 1656, - 1706, 2257, 1837, 2337, 0, 881, 2348, 2281, 2088, 2385, - 2291, 2314, 2323, 2366, 1855, 1122, 927, 1042, 1031, 902, - 951, 990, 1725, 2416, 1836, 2437, 2450, 2482, 2514, 2434, - 1951, 2464, 2492, 2502, 936, 919, 1893, 2001, 2522, 2035, - 2546, 0, 1031, 2557, 2530, 2148, 2576, 838, 2595, 2604, + 1530, 1100, 1101, 1509, 1447, 1439, 816, 572, 1849, 1428, + 2105, 2140, 2175, 2210, 1450, 1734, 1774, 1827, 1368, 1211, + 1246, 1866, 1281, 2245, 0, 798, 2256, 1898, 1452, 2296, + 1908, 1932, 1346, 1942, 1989, 2029, 1540, 1581, 2073, 819, + 853, 2338, 0, 896, 1152, 1284, 1248, 1113, 1193, 3619, + 1351, 3619, 1089, 1552, 2087, 813, 872, 671, 1322, 2087, + 1090, 2348, 2383, 2418, 2453, 1785, 2035, 1123, 2120, 2150, + 2130, 1083, 1040, 1410, 1623, 2158, 1669, 2488, 0, 937, + 2499, 2183, 1598, 2539, 2193, 2219, 2228, 2274, 1725, 1026, + 1121, 1369, 3619, 1392, 958, 877, 811, 836, 1594, 742, - 2473, 773, 3541, 659, 3541, 1065, 2612, 1195, 2644, 2676, - 2623, 2629, 618, 2655, 2665, 2686, 573, 566, 2049, 557, - 549, 2694, 0, 1078, 1545, 2708, 2740, 2772, 2716, 2724, - 2748, 509, 0, 455, 357, 2756, 1535, 2804, 2836, 2786, - 3541, 2792, 2816, 2185, 3541, 345, 3541, 2824, 2844, 2854, - 25, 2874, 2866, 3541, 2919, 2933, 2947, 2961, 2975, 2989, - 3003, 3017, 3031, 3045, 3051, 3065, 3079, 1107, 3093, 3107, - 3121, 3135, 3149, 3163, 3177, 3191, 3197, 3204, 3218, 3232, - 3238, 3245, 3251, 3257, 3263, 3270, 3276, 3282, 3288, 3295, - 3303, 3309, 3315, 3321, 3328, 3336, 3342, 3348, 3355, 3363, + 1455, 1675, 2383, 1677, 2418, 2581, 2616, 2651, 2282, 1875, + 2315, 2358, 2396, 760, 715, 1828, 1943, 2429, 1971, 2686, + 0, 1171, 2697, 2437, 1742, 2463, 717, 2472, 2517, 1998, + 649, 1596, 3619, 1740, 619, 3619, 559, 3619, 1288, 2525, + 1311, 2739, 2774, 2558, 2564, 530, 2591, 2601, 2626, 451, + 437, 2087, 371, 363, 2634, 0, 1301, 1780, 3619, 1832, + 2097, 2809, 2844, 2879, 2659, 2667, 2675, 326, 0, 305, + 1833, 3619, 200, 2715, 1664, 2914, 2949, 2725, 3619, 2748, + 2758, 1916, 3619, 175, 3619, 2785, 2793, 2826, 127, 2859, + 2835, 3619, 2997, 3011, 3025, 3039, 3053, 3067, 3081, 3095, - 3369, 3377, 3384, 3392, 3398, 3406, 3413, 3421, 3435, 3449, - 3455, 3463, 3470, 3484, 3490, 3498, 3504, 3512, 1600, 3526 + 3109, 3123, 3129, 3143, 3157, 1360, 3171, 3185, 3199, 3213, + 3227, 3241, 3255, 3269, 3275, 3282, 3296, 3310, 3316, 3323, + 3329, 3335, 3341, 3348, 3354, 3360, 3366, 3373, 3381, 3387, + 3393, 3399, 3406, 3414, 3420, 3426, 3433, 3441, 3447, 3455, + 3462, 3470, 3476, 3484, 3491, 3499, 3513, 3527, 3533, 3541, + 3548, 3562, 3568, 3576, 3582, 3590, 1881, 3604 } ; -static yyconst short int yy_def[621] = +static yyconst short int yy_def[659] = { 0, - 554, 1, 1, 1, 555, 555, 556, 556, 557, 557, - 558, 558, 554, 559, 554, 554, 554, 560, 561, 562, - 554, 554, 563, 554, 564, 559, 26, 26, 565, 554, - 554, 554, 32, 32, 34, 34, 34, 559, 26, 559, - 554, 561, 32, 32, 34, 34, 34, 554, 554, 566, - 559, 567, 554, 567, 554, 567, 554, 561, 554, 568, - 569, 554, 569, 554, 569, 554, 570, 571, 571, 571, - 554, 554, 559, 559, 554, 554, 560, 572, 560, 573, - 554, 574, 554, 562, 575, 562, 563, 563, 564, 576, - 559, 559, 26, 565, 93, 93, 93, 93, 577, 578, + 592, 1, 1, 1, 593, 593, 594, 594, 595, 595, + 596, 596, 592, 597, 592, 592, 592, 598, 599, 600, + 592, 592, 601, 592, 602, 597, 26, 26, 603, 592, + 592, 592, 32, 32, 34, 34, 34, 34, 597, 26, + 597, 592, 599, 32, 32, 34, 34, 34, 592, 592, + 604, 597, 605, 592, 605, 592, 605, 592, 599, 592, + 606, 607, 592, 607, 592, 607, 592, 608, 609, 609, + 609, 592, 592, 597, 597, 592, 592, 598, 610, 598, + 611, 592, 612, 592, 600, 613, 600, 601, 601, 602, + 614, 597, 597, 26, 603, 94, 94, 94, 94, 615, - 32, 34, 34, 34, 34, 34, 559, 554, 559, 554, - 554, 554, 554, 554, 554, 573, 559, 93, 559, 559, - 559, 554, 554, 566, 579, 559, 559, 567, 567, 554, - 554, 554, 574, 554, 568, 569, 569, 554, 554, 569, - 569, 571, 554, 571, 571, 554, 554, 559, 554, 573, - 580, 575, 575, 554, 559, 559, 559, 93, 158, 581, - 554, 582, 554, 32, 34, 34, 34, 34, 34, 34, - 559, 554, 554, 554, 554, 554, 573, 559, 158, 559, - 559, 559, 554, 559, 554, 580, 559, 559, 559, 559, - 559, 559, 583, 584, 584, 195, 585, 584, 586, 163, + 616, 32, 34, 34, 34, 34, 34, 34, 597, 592, + 597, 592, 592, 592, 592, 592, 592, 611, 597, 94, + 597, 597, 597, 592, 592, 604, 617, 597, 597, 605, + 605, 592, 592, 592, 612, 592, 606, 607, 607, 592, + 592, 607, 607, 609, 592, 609, 609, 592, 592, 597, + 592, 611, 618, 613, 613, 592, 597, 597, 597, 94, + 160, 619, 592, 620, 592, 32, 34, 34, 34, 34, + 34, 34, 34, 34, 597, 592, 592, 592, 592, 592, + 611, 597, 160, 597, 597, 597, 592, 597, 592, 618, + 597, 597, 597, 597, 597, 597, 621, 622, 622, 199, - 554, 201, 201, 554, 201, 34, 34, 34, 34, 34, - 34, 34, 559, 554, 554, 554, 554, 554, 573, 559, - 559, 559, 559, 559, 559, 559, 554, 587, 587, 229, - 587, 588, 589, 590, 554, 591, 204, 591, 591, 239, - 591, 554, 242, 242, 554, 242, 554, 554, 34, 34, - 34, 34, 34, 559, 554, 554, 554, 573, 559, 559, - 559, 559, 559, 559, 559, 559, 592, 592, 593, 594, - 554, 554, 554, 554, 554, 595, 595, 596, 245, 596, - 596, 281, 596, 554, 284, 284, 554, 284, 34, 34, - 34, 34, 34, 559, 554, 554, 573, 559, 559, 559, + 623, 622, 624, 165, 592, 205, 205, 592, 205, 34, + 34, 34, 34, 34, 34, 34, 34, 34, 597, 592, + 592, 592, 592, 592, 611, 597, 597, 597, 597, 597, + 597, 597, 592, 625, 625, 235, 625, 626, 627, 628, + 592, 629, 208, 629, 629, 245, 629, 592, 248, 248, + 592, 248, 592, 592, 34, 34, 34, 34, 34, 34, + 34, 34, 597, 592, 592, 592, 611, 597, 597, 597, + 597, 597, 597, 597, 597, 630, 630, 631, 632, 592, + 592, 592, 592, 592, 633, 633, 634, 251, 634, 634, + 290, 634, 592, 293, 293, 592, 293, 34, 34, 34, - 559, 559, 559, 554, 597, 598, 271, 554, 308, 308, - 554, 308, 554, 554, 554, 554, 554, 554, 599, 599, - 600, 287, 600, 600, 324, 600, 554, 327, 327, 554, - 327, 554, 554, 34, 34, 554, 554, 554, 554, 559, - 554, 554, 573, 559, 559, 559, 559, 559, 559, 559, - 559, 554, 601, 554, 602, 311, 602, 602, 358, 358, - 554, 361, 361, 554, 361, 554, 554, 554, 554, 603, - 603, 604, 330, 604, 604, 375, 604, 554, 378, 378, - 378, 34, 34, 559, 554, 554, 573, 559, 559, 559, - 559, 559, 559, 559, 554, 554, 554, 554, 605, 605, + 34, 34, 34, 34, 34, 597, 592, 592, 611, 597, + 597, 597, 597, 597, 597, 592, 635, 636, 280, 592, + 320, 320, 592, 320, 592, 592, 592, 592, 592, 592, + 637, 637, 638, 296, 638, 638, 336, 638, 592, 339, + 339, 592, 339, 34, 34, 592, 592, 34, 34, 34, + 34, 592, 592, 592, 592, 597, 592, 592, 611, 597, + 597, 597, 597, 597, 597, 597, 597, 592, 639, 592, + 640, 323, 640, 640, 374, 374, 592, 377, 377, 592, + 377, 592, 592, 592, 592, 641, 641, 642, 342, 642, + 642, 391, 642, 592, 394, 394, 394, 34, 34, 34, - 606, 364, 606, 606, 404, 404, 554, 407, 407, 554, - 407, 554, 554, 554, 554, 554, 554, 607, 607, 608, - 608, 608, 422, 422, 554, 554, 554, 554, 554, 554, - 573, 573, 559, 609, 610, 559, 559, 559, 559, 559, - 559, 559, 554, 554, 554, 554, 554, 554, 611, 611, - 612, 410, 612, 612, 454, 454, 554, 457, 457, 554, - 457, 554, 554, 554, 554, 613, 613, 554, 614, 573, - 559, 609, 609, 609, 610, 610, 559, 559, 559, 559, - 559, 554, 554, 554, 554, 615, 615, 616, 460, 616, - 616, 491, 491, 554, 494, 494, 494, 554, 554, 554, + 34, 34, 34, 597, 592, 592, 611, 597, 597, 597, + 597, 597, 597, 597, 592, 592, 592, 592, 643, 643, + 644, 380, 644, 644, 424, 424, 592, 427, 427, 592, + 427, 592, 592, 592, 592, 592, 592, 645, 645, 646, + 646, 646, 442, 442, 34, 34, 34, 34, 592, 592, + 592, 592, 592, 592, 611, 611, 597, 647, 648, 597, + 597, 597, 597, 597, 597, 597, 592, 592, 592, 592, + 592, 592, 649, 649, 650, 430, 650, 650, 478, 478, + 592, 481, 481, 592, 481, 592, 592, 592, 592, 651, + 651, 592, 592, 34, 34, 34, 592, 652, 611, 597, - 554, 554, 554, 614, 554, 573, 559, 559, 559, 559, - 559, 554, 554, 554, 554, 554, 554, 617, 617, 618, - 618, 618, 522, 522, 573, 559, 559, 559, 554, 554, - 554, 554, 619, 619, 620, 559, 559, 559, 559, 559, - 554, 554, 554, 554, 554, 620, 554, 559, 559, 559, - 559, 559, 559, 0, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, + 647, 647, 647, 648, 648, 597, 597, 597, 597, 597, + 592, 592, 592, 592, 653, 653, 654, 484, 654, 654, + 520, 520, 592, 523, 523, 523, 592, 592, 592, 592, + 592, 592, 592, 34, 34, 592, 652, 592, 611, 597, + 597, 597, 597, 597, 592, 592, 592, 592, 592, 592, + 655, 655, 656, 656, 656, 555, 555, 592, 592, 34, + 611, 597, 597, 597, 592, 592, 592, 592, 657, 657, + 592, 592, 658, 597, 597, 597, 597, 597, 592, 592, + 592, 592, 592, 658, 592, 597, 597, 597, 597, 597, + 597, 0, 592, 592, 592, 592, 592, 592, 592, 592, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554 + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592 } ; -static yyconst short int yy_nxt[3604] = +static yyconst short int yy_nxt[3685] = { 0, 14, 15, 16, 17, 18, 19, 20, 21, 22, 14, 23, 24, 14, 14, 25, 26, 27, 28, 26, 26, 26, 26, 26, 29, 30, 31, 14, 32, 32, 32, - 32, 33, 34, 34, 35, 34, 36, 34, 37, 34, - 34, 34, 34, 34, 38, 14, 39, 39, 39, 39, - 39, 39, 14, 14, 14, 14, 14, 14, 14, 40, - 14, 14, 41, 48, 48, 81, 42, 49, 49, 74, - 15, 53, 54, 74, 55, 85, 50, 50, 134, 108, - 55, 69, 16, 70, 71, 15, 53, 54, 180, 55, - 43, 44, 55, 56, 45, 55, 86, 554, 46, 74, + 32, 33, 34, 34, 34, 34, 35, 36, 34, 37, + 34, 38, 34, 34, 34, 34, 34, 39, 14, 40, + 40, 40, 40, 40, 40, 14, 14, 14, 14, 14, + 14, 14, 41, 14, 14, 42, 49, 49, 75, 43, + 50, 50, 146, 15, 54, 55, 75, 56, 311, 51, + 51, 86, 186, 56, 70, 16, 71, 72, 15, 54, + 55, 75, 56, 44, 45, 56, 57, 46, 56, 70, - 74, 47, 69, 16, 70, 71, 138, 55, 56, 145, - 90, 141, 108, 57, 90, 90, 109, 127, 86, 177, - 74, 51, 51, 139, 72, 171, 137, 144, 57, 15, - 16, 17, 90, 58, 96, 96, 96, 96, 96, 96, - 96, 96, 74, 137, 81, 72, 146, 147, 182, 142, - 143, 91, 97, 97, 97, 97, 97, 98, 73, 74, - 95, 95, 95, 95, 95, 95, 95, 95, 110, 347, - 143, 178, 59, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 15, 16, 17, 161, 58, 470, 111, 112, 74, 74, + 16, 71, 72, 140, 47, 87, 147, 48, 111, 91, + 56, 57, 75, 91, 91, 136, 110, 141, 145, 58, + 98, 98, 98, 98, 98, 99, 139, 52, 52, 129, + 73, 91, 143, 110, 58, 15, 16, 17, 163, 59, + 139, 148, 149, 163, 144, 73, 75, 165, 592, 82, + 145, 175, 204, 92, 97, 97, 97, 97, 97, 97, + 97, 97, 74, 75, 96, 96, 96, 96, 96, 96, + 96, 96, 87, 75, 75, 182, 112, 585, 188, 136, + 110, 60, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 15, - 113, 74, 163, 184, 114, 123, 220, 115, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - 83, 83, 73, 59, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 15, 16, 17, 62, 58, 74, 134, 108, 125, - 63, 64, 65, 125, 125, 130, 108, 131, 181, 132, - 179, 166, 144, 131, 66, 132, 167, 74, 168, 90, - 74, 125, 161, 90, 90, 134, 108, 132, 132, 146, - 147, 200, 220, 213, 67, 15, 16, 17, 62, 58, + 16, 17, 585, 59, 113, 114, 181, 74, 115, 74, + 75, 74, 228, 74, 74, 116, 125, 74, 117, 84, + 84, 84, 84, 84, 84, 84, 84, 74, 75, 74, + 74, 74, 84, 84, 84, 84, 84, 84, 84, 84, + 185, 82, 136, 110, 146, 60, 61, 61, 61, 61, + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, + 61, 61, 61, 15, 16, 17, 63, 59, 183, 136, + 110, 127, 64, 65, 66, 127, 127, 132, 110, 133, + 75, 134, 75, 147, 169, 133, 67, 134, 75, 170, + 145, 359, 171, 127, 172, 184, 148, 149, 226, 134, - 126, 90, 74, 145, 63, 64, 65, 73, 132, 73, - 74, 73, 222, 73, 73, 143, 220, 73, 66, 81, - 91, 159, 159, 159, 159, 159, 159, 159, 159, 73, - 73, 73, 159, 159, 159, 159, 159, 159, 67, 78, - 74, 78, 73, 78, 143, 78, 78, 547, 84, 78, - 84, 74, 84, 223, 84, 84, 110, 161, 84, 547, - 94, 78, 78, 78, 125, 219, 200, 220, 125, 125, - 298, 84, 84, 159, 159, 159, 159, 159, 159, 159, - 159, 74, 79, 81, 111, 112, 125, 74, 113, 81, - 134, 108, 114, 82, 247, 115, 83, 83, 83, 83, + 134, 84, 84, 84, 84, 84, 84, 84, 84, 68, + 15, 16, 17, 63, 59, 128, 136, 110, 370, 64, + 65, 66, 85, 134, 85, 82, 85, 145, 85, 85, + 82, 91, 85, 67, 75, 91, 91, 157, 158, 159, + 157, 157, 157, 157, 157, 85, 85, 219, 88, 518, + 88, 75, 88, 91, 88, 88, 68, 79, 88, 79, + 74, 79, 139, 79, 79, 226, 253, 79, 75, 75, + 88, 88, 88, 226, 225, 92, 592, 163, 75, 79, + 79, 79, 191, 90, 370, 74, 204, 90, 254, 74, + 74, 229, 309, 90, 161, 161, 161, 161, 161, 161, - 83, 83, 83, 83, 92, 126, 93, 93, 93, 93, - 93, 93, 93, 93, 94, 187, 248, 74, 95, 95, - 95, 95, 95, 254, 74, 155, 156, 157, 155, 155, - 155, 155, 155, 74, 299, 74, 262, 95, 95, 95, - 95, 95, 95, 73, 74, 259, 74, 73, 297, 73, - 399, 399, 73, 73, 74, 73, 73, 73, 101, 101, - 101, 101, 101, 101, 101, 101, 94, 74, 354, 73, - 101, 101, 101, 101, 101, 102, 102, 102, 102, 102, - 102, 102, 102, 102, 102, 102, 102, 74, 102, 95, - 95, 95, 95, 95, 95, 73, 73, 73, 73, 73, + 161, 161, 95, 80, 82, 90, 90, 74, 161, 161, + 161, 161, 161, 161, 83, 82, 75, 84, 84, 84, + 84, 84, 84, 84, 84, 93, 75, 94, 94, 94, + 94, 94, 94, 94, 94, 95, 237, 237, 237, 96, + 96, 96, 96, 96, 161, 161, 161, 161, 161, 161, + 161, 161, 246, 246, 246, 246, 246, 247, 310, 75, + 518, 96, 96, 96, 96, 96, 96, 74, 255, 75, + 267, 74, 256, 74, 476, 263, 74, 74, 75, 74, + 74, 74, 102, 102, 102, 102, 102, 102, 102, 102, + 95, 75, 268, 74, 102, 102, 102, 102, 102, 103, - 73, 73, 73, 73, 73, 102, 102, 102, 102, 102, - 102, 102, 102, 554, 231, 231, 231, 102, 102, 102, - 102, 102, 83, 83, 83, 83, 83, 83, 83, 83, - 74, 74, 489, 134, 108, 294, 73, 73, 73, 73, - 73, 73, 107, 108, 73, 81, 73, 345, 73, 73, - 74, 87, 73, 87, 161, 87, 261, 87, 87, 235, - 161, 87, 554, 200, 73, 73, 73, 81, 136, 237, - 354, 136, 136, 87, 87, 87, 137, 82, 136, 94, - 83, 83, 83, 83, 83, 83, 83, 83, 89, 489, - 73, 136, 89, 81, 73, 73, 452, 258, 89, 124, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 75, 103, 96, 96, 96, 96, + 96, 96, 74, 74, 74, 74, 74, 74, 74, 74, + 74, 74, 103, 103, 103, 103, 103, 103, 103, 103, + 592, 82, 75, 545, 103, 103, 103, 103, 103, 84, + 84, 84, 84, 84, 84, 84, 84, 226, 127, 112, + 348, 538, 127, 127, 349, 95, 74, 74, 74, 74, + 74, 74, 109, 110, 74, 75, 74, 163, 74, 74, + 127, 270, 74, 241, 163, 75, 204, 113, 114, 75, + 306, 115, 407, 243, 74, 74, 74, 82, 116, 592, - 74, 73, 247, 124, 90, 73, 73, 473, 90, 124, - 89, 89, 73, 74, 90, 554, 161, 260, 116, 81, - 74, 124, 124, 73, 248, 237, 90, 90, 389, 133, - 344, 512, 554, 554, 554, 554, 554, 554, 554, 554, - 78, 387, 78, 148, 78, 332, 78, 78, 474, 336, - 78, 554, 554, 554, 554, 554, 554, 554, 554, 161, - 74, 505, 78, 78, 78, 300, 161, 333, 200, 74, - 152, 337, 152, 338, 152, 237, 152, 152, 340, 74, - 152, 433, 81, 79, 158, 158, 158, 158, 158, 158, - 158, 158, 152, 152, 152, 339, 158, 158, 158, 158, + 163, 117, 128, 75, 253, 271, 269, 83, 312, 243, + 84, 84, 84, 84, 84, 84, 84, 84, 126, 75, + 74, 457, 126, 75, 74, 74, 254, 75, 126, 592, + 592, 592, 592, 592, 592, 592, 592, 360, 409, 75, + 126, 126, 74, 209, 209, 209, 209, 209, 209, 209, + 209, 118, 82, 230, 231, 232, 230, 230, 230, 230, + 230, 560, 135, 163, 346, 592, 592, 592, 592, 592, + 592, 592, 592, 79, 502, 79, 150, 79, 138, 79, + 79, 138, 138, 79, 363, 75, 347, 75, 138, 291, + 291, 291, 291, 291, 292, 79, 79, 79, 163, 75, - 158, 224, 225, 226, 224, 224, 224, 224, 224, 240, - 240, 240, 240, 240, 241, 158, 158, 158, 158, 158, - 158, 164, 164, 164, 164, 164, 164, 164, 164, 343, - 74, 431, 81, 164, 164, 164, 164, 164, 187, 473, - 188, 188, 188, 188, 188, 188, 282, 282, 282, 282, - 282, 283, 158, 158, 158, 158, 158, 158, 187, 74, - 188, 188, 188, 188, 188, 188, 188, 188, 346, 74, - 205, 205, 205, 205, 205, 205, 205, 205, 125, 432, - 476, 354, 125, 449, 449, 235, 161, 161, 125, 74, - 187, 356, 189, 189, 189, 189, 189, 189, 189, 189, + 163, 138, 75, 361, 241, 163, 154, 204, 154, 243, + 154, 356, 154, 154, 243, 404, 154, 75, 503, 80, + 160, 160, 160, 160, 160, 160, 160, 160, 154, 154, + 154, 163, 160, 160, 160, 160, 160, 191, 476, 192, + 192, 192, 192, 192, 192, 235, 235, 236, 237, 237, + 237, 237, 237, 201, 160, 160, 160, 160, 160, 160, + 166, 166, 166, 166, 166, 166, 166, 166, 75, 241, + 163, 75, 166, 166, 166, 166, 166, 362, 91, 288, + 592, 163, 91, 422, 163, 419, 419, 75, 91, 75, + 288, 352, 354, 243, 160, 160, 160, 160, 160, 160, - 125, 125, 229, 229, 230, 231, 231, 231, 231, 231, - 197, 239, 239, 239, 239, 239, 239, 239, 239, 554, - 161, 74, 187, 554, 190, 190, 190, 190, 190, 191, - 188, 188, 554, 356, 238, 238, 238, 238, 238, 238, - 238, 238, 268, 268, 268, 268, 268, 268, 268, 268, - 197, 74, 161, 74, 73, 161, 192, 192, 192, 192, - 192, 192, 192, 192, 237, 466, 466, 384, 192, 192, - 192, 192, 192, 273, 274, 275, 273, 273, 273, 273, - 273, 325, 325, 325, 325, 325, 326, 192, 192, 192, - 192, 192, 192, 194, 195, 196, 196, 196, 196, 196, + 91, 91, 191, 410, 192, 192, 192, 192, 192, 192, + 192, 192, 127, 353, 355, 82, 127, 455, 82, 473, + 473, 370, 127, 245, 245, 245, 245, 245, 245, 245, + 245, 372, 241, 163, 127, 127, 75, 191, 538, 193, + 193, 193, 193, 193, 193, 193, 193, 592, 346, 244, + 244, 244, 244, 244, 244, 244, 244, 277, 277, 277, + 277, 277, 277, 277, 277, 201, 592, 163, 456, 499, + 347, 75, 191, 536, 194, 194, 194, 194, 194, 195, + 192, 192, 282, 283, 284, 282, 282, 282, 282, 282, + 252, 252, 252, 252, 252, 252, 252, 252, 241, 163, - 196, 197, 486, 486, 81, 198, 198, 198, 198, 198, - 246, 246, 246, 246, 246, 246, 246, 246, 359, 359, - 359, 359, 359, 360, 198, 198, 198, 198, 198, 198, - 161, 201, 202, 203, 201, 201, 201, 201, 201, 204, - 235, 161, 452, 205, 205, 205, 205, 205, 235, 161, - 277, 277, 277, 277, 277, 277, 332, 336, 237, 402, - 506, 74, 205, 205, 205, 205, 205, 205, 206, 206, - 206, 206, 206, 206, 206, 206, 338, 390, 333, 337, - 206, 206, 206, 206, 206, 281, 281, 281, 281, 281, - 281, 281, 281, 554, 425, 74, 235, 161, 339, 192, + 286, 286, 286, 286, 286, 286, 75, 74, 243, 196, + 196, 196, 196, 196, 196, 196, 196, 490, 490, 75, + 535, 196, 196, 196, 196, 196, 290, 290, 290, 290, + 290, 290, 290, 290, 500, 313, 314, 315, 313, 313, + 313, 313, 313, 196, 196, 196, 196, 196, 196, 198, + 199, 200, 200, 200, 200, 200, 200, 201, 515, 515, + 352, 202, 202, 202, 202, 202, 592, 75, 289, 289, + 289, 289, 289, 289, 289, 289, 337, 337, 337, 337, + 337, 338, 353, 202, 202, 202, 202, 202, 202, 163, + 205, 206, 207, 205, 205, 205, 205, 205, 208, 163, - 192, 192, 192, 192, 192, 187, 237, 188, 188, 188, - 188, 188, 188, 188, 188, 554, 426, 280, 280, 280, - 280, 280, 280, 280, 280, 301, 302, 303, 301, 301, - 301, 301, 301, 505, 474, 74, 74, 187, 161, 188, - 188, 188, 188, 188, 188, 188, 188, 279, 235, 161, - 471, 436, 518, 518, 74, 554, 161, 262, 279, 263, - 263, 263, 263, 263, 263, 279, 525, 81, 74, 235, - 161, 236, 236, 236, 236, 236, 236, 236, 236, 237, - 235, 161, 74, 238, 238, 238, 238, 238, 74, 313, - 279, 314, 314, 314, 314, 314, 314, 314, 314, 533, + 534, 354, 209, 209, 209, 209, 209, 271, 288, 272, + 272, 272, 272, 272, 272, 297, 297, 297, 297, 297, + 297, 297, 297, 355, 209, 209, 209, 209, 209, 209, + 210, 210, 210, 210, 210, 210, 210, 210, 241, 163, + 163, 75, 210, 210, 210, 210, 210, 325, 288, 326, + 326, 326, 326, 326, 326, 326, 326, 375, 375, 375, + 375, 375, 376, 422, 196, 196, 196, 196, 196, 196, + 191, 592, 192, 192, 192, 192, 192, 192, 192, 192, + 325, 372, 327, 327, 327, 327, 327, 327, 327, 327, + 325, 75, 328, 328, 328, 328, 328, 329, 326, 326, - 533, 503, 238, 238, 238, 238, 238, 238, 161, 242, - 243, 244, 242, 242, 242, 242, 242, 245, 74, 135, - 135, 246, 246, 246, 246, 246, 313, 388, 315, 315, - 315, 315, 315, 315, 315, 315, 161, 235, 161, 402, - 246, 246, 246, 246, 246, 246, 262, 322, 263, 263, - 263, 263, 263, 263, 263, 263, 313, 427, 316, 316, - 316, 316, 316, 317, 314, 314, 288, 288, 288, 288, - 288, 288, 288, 288, 425, 356, 443, 74, 262, 428, - 264, 264, 264, 264, 264, 264, 264, 264, 235, 161, - 320, 320, 320, 320, 320, 320, 426, 354, 279, 324, + 408, 449, 451, 460, 75, 191, 372, 192, 192, 192, + 192, 192, 192, 192, 192, 241, 163, 332, 332, 332, + 332, 332, 332, 450, 452, 288, 336, 336, 336, 336, + 336, 336, 336, 336, 241, 163, 467, 75, 497, 75, + 241, 163, 242, 242, 242, 242, 242, 242, 242, 242, + 243, 163, 496, 492, 244, 244, 244, 244, 244, 592, + 288, 335, 335, 335, 335, 335, 335, 335, 335, 392, + 392, 392, 392, 392, 393, 493, 244, 244, 244, 244, + 244, 244, 163, 248, 249, 250, 248, 248, 248, 248, + 248, 251, 551, 551, 449, 252, 252, 252, 252, 252, - 324, 324, 324, 324, 324, 324, 324, 356, 507, 74, - 262, 354, 265, 265, 265, 265, 265, 266, 263, 263, - 554, 402, 323, 323, 323, 323, 323, 323, 323, 323, - 312, 312, 312, 312, 312, 312, 312, 312, 468, 74, - 412, 74, 235, 161, 277, 277, 277, 277, 277, 277, - 277, 277, 237, 235, 161, 278, 278, 278, 278, 278, - 278, 278, 278, 279, 356, 307, 74, 280, 280, 280, - 280, 280, 358, 358, 358, 358, 358, 358, 358, 358, - 376, 376, 376, 376, 376, 377, 280, 280, 280, 280, - 280, 280, 161, 284, 285, 286, 284, 284, 284, 284, + 324, 324, 324, 324, 324, 324, 324, 324, 374, 374, + 374, 374, 374, 374, 374, 374, 450, 252, 252, 252, + 252, 252, 252, 271, 370, 272, 272, 272, 272, 272, + 272, 272, 272, 592, 372, 373, 373, 373, 373, 373, + 373, 373, 373, 382, 383, 384, 382, 382, 382, 382, + 382, 425, 425, 425, 425, 425, 426, 75, 271, 370, + 273, 273, 273, 273, 273, 273, 273, 273, 325, 422, + 326, 326, 326, 326, 326, 326, 326, 326, 325, 163, + 326, 326, 326, 326, 326, 326, 326, 326, 334, 561, + 82, 495, 75, 271, 592, 274, 274, 274, 274, 274, - 284, 287, 161, 430, 429, 288, 288, 288, 288, 288, - 554, 279, 357, 357, 357, 357, 357, 357, 357, 357, - 74, 554, 161, 307, 288, 288, 288, 288, 288, 288, - 262, 322, 263, 263, 263, 263, 263, 263, 263, 263, - 366, 367, 368, 366, 366, 366, 366, 366, 313, 161, - 314, 314, 314, 314, 314, 314, 314, 314, 322, 233, - 386, 74, 262, 554, 263, 263, 263, 263, 263, 263, - 263, 263, 313, 402, 314, 314, 314, 314, 314, 314, - 314, 314, 313, 161, 314, 314, 314, 314, 314, 314, - 431, 81, 322, 74, 308, 309, 310, 308, 308, 308, + 275, 272, 272, 325, 422, 326, 326, 326, 326, 326, + 326, 241, 163, 343, 343, 343, 343, 343, 343, 343, + 343, 334, 569, 569, 540, 502, 494, 75, 241, 163, + 286, 286, 286, 286, 286, 286, 286, 286, 243, 241, + 163, 287, 287, 287, 287, 287, 287, 287, 287, 288, + 592, 163, 451, 289, 289, 289, 289, 289, 75, 432, + 334, 241, 163, 387, 387, 387, 387, 387, 387, 505, + 492, 334, 137, 137, 452, 289, 289, 289, 289, 289, + 289, 163, 293, 294, 295, 293, 293, 293, 293, 293, + 296, 372, 493, 532, 297, 297, 297, 297, 297, 391, - 308, 308, 311, 469, 385, 383, 312, 312, 312, 312, - 312, 331, 331, 331, 331, 331, 331, 331, 331, 405, - 405, 405, 405, 405, 406, 312, 312, 312, 312, 312, - 312, 235, 161, 320, 320, 320, 320, 320, 320, 320, - 320, 279, 235, 161, 321, 321, 321, 321, 321, 321, - 321, 321, 322, 382, 313, 307, 323, 323, 323, 323, - 323, 235, 161, 371, 371, 371, 371, 371, 371, 427, - 233, 322, 197, 342, 341, 323, 323, 323, 323, 323, - 323, 161, 327, 328, 329, 327, 327, 327, 327, 327, - 330, 428, 335, 334, 331, 331, 331, 331, 331, 375, + 391, 391, 391, 391, 391, 391, 391, 416, 417, 418, + 416, 416, 416, 416, 416, 533, 297, 297, 297, 297, + 297, 297, 271, 370, 272, 272, 272, 272, 272, 272, + 272, 272, 592, 422, 390, 390, 390, 390, 390, 390, + 390, 390, 411, 412, 413, 414, 411, 411, 411, 411, + 443, 443, 443, 443, 443, 444, 75, 271, 592, 272, + 272, 272, 272, 272, 272, 272, 272, 479, 479, 479, + 479, 479, 480, 319, 75, 75, 363, 364, 364, 364, + 364, 364, 364, 381, 381, 381, 381, 381, 381, 381, + 381, 75, 320, 321, 322, 320, 320, 320, 320, 320, - 375, 375, 375, 375, 375, 375, 375, 423, 423, 423, - 423, 423, 424, 331, 331, 331, 331, 331, 331, 347, - 348, 348, 348, 348, 348, 348, 348, 348, 554, 307, - 374, 374, 374, 374, 374, 374, 374, 374, 391, 392, - 393, 394, 391, 391, 391, 391, 525, 81, 536, 74, - 347, 349, 349, 349, 349, 349, 349, 349, 349, 535, - 347, 348, 348, 348, 348, 348, 348, 74, 396, 397, - 398, 396, 396, 396, 396, 396, 233, 197, 197, 74, - 74, 347, 350, 350, 350, 350, 350, 351, 348, 348, - 74, 365, 365, 365, 365, 365, 365, 365, 365, 404, + 323, 454, 503, 453, 324, 324, 324, 324, 324, 75, + 424, 424, 424, 424, 424, 424, 424, 424, 397, 397, + 397, 397, 397, 397, 397, 397, 324, 324, 324, 324, + 324, 324, 241, 163, 332, 332, 332, 332, 332, 332, + 332, 332, 288, 241, 163, 333, 333, 333, 333, 333, + 333, 333, 333, 334, 163, 458, 75, 335, 335, 335, + 335, 335, 592, 334, 423, 423, 423, 423, 423, 423, + 423, 423, 448, 447, 446, 458, 445, 458, 458, 335, + 335, 335, 335, 335, 335, 163, 339, 340, 341, 339, + 339, 339, 339, 339, 342, 163, 82, 532, 343, 343, - 404, 404, 404, 404, 404, 404, 404, 255, 545, 296, - 295, 74, 354, 545, 355, 355, 355, 355, 355, 355, - 355, 355, 356, 161, 293, 292, 357, 357, 357, 357, - 357, 554, 373, 403, 403, 403, 403, 403, 403, 403, - 403, 291, 290, 289, 271, 357, 357, 357, 357, 357, - 357, 361, 362, 363, 361, 361, 361, 361, 361, 364, - 233, 197, 267, 365, 365, 365, 365, 365, 412, 354, - 413, 413, 413, 413, 413, 413, 413, 413, 197, 402, - 100, 255, 365, 365, 365, 365, 365, 365, 235, 161, - 371, 371, 371, 371, 371, 371, 371, 371, 322, 235, + 343, 343, 343, 432, 389, 433, 433, 433, 433, 433, + 433, 433, 433, 521, 521, 521, 521, 521, 522, 533, + 343, 343, 343, 343, 343, 343, 363, 364, 364, 364, + 364, 364, 364, 364, 364, 432, 370, 434, 434, 434, + 434, 434, 434, 434, 434, 432, 476, 435, 435, 435, + 435, 435, 436, 433, 433, 539, 319, 239, 406, 75, + 363, 365, 365, 365, 365, 365, 365, 365, 365, 241, + 163, 241, 163, 592, 163, 405, 403, 574, 592, 334, + 592, 389, 592, 389, 442, 442, 442, 442, 442, 442, + 442, 442, 476, 75, 363, 366, 366, 366, 366, 366, - 161, 372, 372, 372, 372, 372, 372, 372, 372, 373, - 257, 255, 256, 374, 374, 374, 374, 374, 412, 354, - 414, 414, 414, 414, 414, 414, 414, 414, 554, 452, - 255, 253, 374, 374, 374, 374, 374, 374, 161, 378, - 379, 380, 378, 378, 378, 378, 378, 235, 161, 252, - 251, 381, 381, 381, 381, 381, 412, 322, 415, 415, - 415, 415, 415, 416, 413, 413, 250, 249, 94, 474, - 381, 381, 381, 381, 381, 381, 347, 348, 348, 348, - 348, 348, 348, 348, 348, 235, 161, 381, 381, 381, - 381, 381, 381, 381, 381, 373, 422, 422, 422, 422, + 367, 364, 364, 241, 163, 439, 439, 439, 439, 439, + 439, 75, 592, 389, 441, 441, 441, 441, 441, 441, + 441, 441, 503, 402, 505, 401, 400, 75, 370, 399, + 371, 371, 371, 371, 371, 371, 371, 371, 372, 163, + 398, 558, 373, 373, 373, 373, 373, 467, 389, 468, + 468, 468, 468, 468, 468, 468, 468, 556, 556, 556, + 556, 556, 557, 559, 373, 373, 373, 373, 373, 373, + 377, 378, 379, 377, 377, 377, 377, 377, 380, 325, + 319, 558, 381, 381, 381, 381, 381, 467, 239, 469, + 469, 469, 469, 469, 469, 469, 469, 201, 460, 358, - 422, 422, 422, 422, 197, 233, 74, 347, 348, 348, - 348, 348, 348, 348, 348, 348, 554, 161, 235, 161, - 419, 419, 419, 419, 419, 419, 373, 554, 373, 421, - 421, 421, 421, 421, 421, 421, 421, 74, 354, 554, - 400, 400, 400, 400, 400, 400, 400, 400, 356, 354, - 554, 401, 401, 401, 401, 401, 401, 401, 401, 402, - 452, 197, 100, 403, 403, 403, 403, 403, 443, 161, - 444, 444, 444, 444, 444, 444, 444, 444, 373, 81, - 476, 185, 403, 403, 403, 403, 403, 403, 407, 408, - 409, 407, 407, 407, 407, 407, 410, 221, 218, 217, + 510, 510, 510, 559, 381, 381, 381, 381, 381, 381, + 241, 163, 387, 387, 387, 387, 387, 387, 387, 387, + 334, 241, 163, 388, 388, 388, 388, 388, 388, 388, + 388, 389, 75, 571, 571, 390, 390, 390, 390, 390, + 467, 370, 470, 470, 470, 470, 470, 471, 468, 468, + 357, 476, 458, 351, 350, 572, 572, 390, 390, 390, + 390, 390, 390, 163, 394, 395, 396, 394, 394, 394, + 394, 394, 458, 345, 458, 459, 397, 397, 397, 397, + 397, 431, 431, 431, 431, 431, 431, 431, 431, 583, + 510, 510, 510, 344, 583, 319, 75, 239, 397, 397, - 411, 411, 411, 411, 411, 443, 354, 445, 445, 445, - 445, 445, 445, 445, 445, 216, 452, 215, 214, 411, - 411, 411, 411, 411, 411, 235, 161, 419, 419, 419, - 419, 419, 419, 419, 419, 373, 235, 161, 420, 420, - 420, 420, 420, 420, 420, 420, 212, 235, 161, 211, - 421, 421, 421, 421, 421, 434, 443, 373, 446, 446, - 446, 446, 446, 447, 444, 444, 481, 481, 481, 421, - 421, 421, 421, 421, 421, 434, 210, 434, 435, 411, - 411, 411, 411, 411, 411, 411, 411, 454, 454, 454, - 454, 454, 454, 454, 454, 74, 74, 436, 209, 437, + 397, 397, 397, 397, 363, 364, 364, 364, 364, 364, + 364, 364, 364, 478, 478, 478, 478, 478, 478, 478, + 478, 592, 75, 477, 477, 477, 477, 477, 477, 477, + 477, 579, 579, 579, 579, 579, 579, 75, 363, 364, + 364, 364, 364, 364, 364, 364, 364, 486, 487, 488, + 486, 486, 486, 486, 486, 432, 370, 433, 433, 433, + 433, 433, 433, 433, 433, 201, 518, 201, 264, 308, + 307, 75, 370, 305, 420, 420, 420, 420, 420, 420, + 420, 420, 372, 370, 592, 421, 421, 421, 421, 421, + 421, 421, 421, 422, 518, 304, 303, 423, 423, 423, - 437, 437, 437, 437, 437, 437, 437, 455, 455, 455, - 455, 455, 456, 554, 354, 453, 453, 453, 453, 453, - 453, 453, 453, 208, 489, 207, 100, 92, 74, 436, - 153, 438, 438, 438, 438, 438, 438, 438, 438, 462, - 463, 464, 462, 462, 462, 462, 462, 412, 554, 413, - 413, 413, 413, 413, 413, 413, 413, 81, 489, 81, - 74, 436, 354, 439, 439, 439, 439, 439, 440, 441, - 441, 412, 489, 413, 413, 413, 413, 413, 413, 413, - 413, 412, 74, 413, 413, 413, 413, 413, 413, 434, - 185, 142, 74, 436, 143, 442, 442, 442, 437, 437, + 423, 423, 432, 302, 433, 433, 433, 433, 433, 433, + 433, 433, 163, 527, 527, 527, 527, 527, 527, 423, + 423, 423, 423, 423, 423, 427, 428, 429, 427, 427, + 427, 427, 427, 430, 301, 300, 299, 431, 431, 431, + 431, 431, 432, 298, 433, 433, 433, 433, 433, 433, + 511, 512, 513, 511, 511, 511, 511, 511, 280, 431, + 431, 431, 431, 431, 431, 241, 163, 439, 439, 439, + 439, 439, 439, 439, 439, 389, 241, 163, 440, 440, + 440, 440, 440, 440, 440, 440, 241, 163, 455, 82, + 441, 441, 441, 441, 441, 239, 389, 201, 561, 82, - 437, 437, 437, 492, 492, 492, 492, 492, 493, 434, - 137, 434, 434, 137, 129, 183, 436, 122, 481, 481, - 481, 176, 175, 174, 74, 354, 173, 450, 450, 450, - 450, 450, 450, 450, 450, 402, 354, 172, 451, 451, - 451, 451, 451, 451, 451, 451, 452, 74, 170, 169, - 453, 453, 453, 453, 453, 477, 478, 479, 477, 477, - 477, 477, 477, 523, 523, 523, 523, 523, 524, 453, - 453, 453, 453, 453, 453, 457, 458, 459, 457, 457, - 457, 457, 457, 460, 74, 165, 100, 461, 461, 461, - 461, 461, 482, 483, 484, 482, 482, 482, 482, 482, + 370, 498, 506, 507, 508, 506, 506, 506, 506, 506, + 518, 573, 441, 441, 441, 441, 441, 441, 460, 276, + 461, 461, 461, 461, 461, 461, 461, 461, 201, 101, + 264, 266, 264, 467, 75, 468, 468, 468, 468, 468, + 468, 468, 468, 467, 265, 468, 468, 468, 468, 468, + 468, 264, 75, 460, 262, 462, 462, 462, 462, 462, + 462, 462, 462, 467, 261, 468, 468, 468, 468, 468, + 468, 468, 468, 485, 485, 485, 485, 485, 485, 485, + 485, 260, 259, 258, 257, 95, 201, 75, 460, 239, + 463, 463, 463, 463, 463, 464, 465, 465, 520, 520, - 541, 541, 541, 541, 541, 541, 461, 461, 461, 461, - 461, 461, 235, 161, 467, 467, 467, 467, 467, 467, - 467, 467, 436, 73, 441, 441, 441, 441, 441, 441, - 441, 441, 443, 100, 444, 444, 444, 444, 444, 444, - 444, 444, 443, 154, 444, 444, 444, 444, 444, 444, - 444, 444, 88, 74, 436, 153, 441, 441, 441, 441, - 441, 441, 441, 441, 443, 81, 444, 444, 444, 444, - 444, 444, 461, 461, 461, 461, 461, 461, 461, 461, - 148, 149, 76, 75, 74, 74, 436, 143, 441, 441, - 441, 441, 441, 441, 480, 480, 491, 491, 491, 491, + 520, 520, 520, 520, 520, 520, 592, 201, 519, 519, + 519, 519, 519, 519, 519, 519, 101, 82, 189, 227, + 224, 223, 75, 460, 222, 466, 466, 466, 461, 461, + 461, 461, 461, 163, 527, 527, 527, 527, 527, 527, + 527, 527, 163, 528, 528, 528, 528, 528, 528, 528, + 528, 221, 220, 218, 217, 216, 215, 75, 370, 214, + 474, 474, 474, 474, 474, 474, 474, 474, 422, 370, + 213, 475, 475, 475, 475, 475, 475, 475, 475, 476, + 212, 211, 101, 477, 477, 477, 477, 477, 163, 529, + 529, 529, 529, 529, 530, 527, 527, 509, 509, 509, - 491, 491, 491, 491, 554, 137, 490, 490, 490, 490, - 490, 490, 490, 490, 129, 122, 121, 74, 436, 120, - 480, 480, 480, 480, 480, 480, 480, 480, 161, 498, - 498, 498, 498, 498, 498, 498, 498, 161, 499, 499, - 499, 499, 499, 499, 499, 499, 119, 118, 117, 74, - 354, 106, 487, 487, 487, 487, 487, 487, 487, 487, - 452, 354, 105, 488, 488, 488, 488, 488, 488, 488, - 488, 489, 104, 103, 100, 490, 490, 490, 490, 490, - 161, 500, 500, 500, 500, 500, 501, 498, 498, 88, - 76, 75, 74, 554, 490, 490, 490, 490, 490, 490, + 509, 509, 509, 509, 509, 477, 477, 477, 477, 477, + 477, 481, 482, 483, 481, 481, 481, 481, 481, 484, + 93, 155, 82, 485, 485, 485, 485, 485, 545, 75, + 546, 546, 546, 546, 546, 546, 546, 546, 82, 75, + 189, 144, 145, 139, 139, 485, 485, 485, 485, 485, + 485, 241, 163, 491, 491, 491, 491, 491, 491, 491, + 491, 460, 131, 465, 465, 465, 465, 465, 465, 465, + 465, 545, 187, 547, 547, 547, 547, 547, 547, 547, + 547, 124, 180, 179, 501, 178, 177, 176, 501, 174, + 501, 501, 173, 168, 501, 75, 460, 167, 465, 465, - 494, 495, 496, 494, 494, 494, 494, 494, 554, 554, - 554, 554, 497, 497, 497, 497, 497, 472, 554, 554, - 554, 472, 554, 472, 472, 554, 554, 472, 554, 554, - 554, 497, 497, 497, 497, 497, 497, 554, 475, 472, - 472, 472, 475, 554, 475, 475, 554, 554, 475, 480, - 480, 480, 480, 480, 480, 480, 480, 554, 554, 554, - 475, 475, 475, 507, 554, 508, 508, 508, 508, 508, - 508, 508, 508, 554, 554, 554, 554, 512, 74, 513, - 513, 513, 513, 513, 513, 513, 513, 161, 498, 498, - 498, 498, 498, 498, 74, 507, 554, 509, 509, 509, + 465, 465, 465, 465, 465, 465, 501, 501, 501, 545, + 101, 548, 548, 548, 548, 548, 549, 546, 546, 504, + 74, 101, 156, 504, 89, 504, 504, 155, 82, 504, + 75, 460, 150, 465, 465, 465, 465, 465, 465, 509, + 509, 504, 504, 504, 526, 526, 526, 526, 526, 526, + 526, 526, 555, 555, 555, 555, 555, 555, 555, 555, + 151, 77, 76, 75, 145, 75, 460, 139, 509, 509, + 509, 509, 509, 509, 509, 509, 592, 131, 554, 554, + 554, 554, 554, 554, 554, 554, 163, 527, 527, 527, + 527, 527, 527, 527, 527, 124, 123, 122, 121, 120, - 509, 509, 509, 509, 509, 512, 554, 514, 514, 514, - 514, 514, 514, 514, 514, 512, 554, 515, 515, 515, - 515, 515, 516, 513, 513, 554, 74, 507, 554, 510, - 510, 510, 510, 510, 511, 508, 508, 497, 497, 497, - 497, 497, 497, 497, 497, 522, 522, 522, 522, 522, - 522, 522, 522, 554, 554, 554, 554, 554, 74, 354, - 554, 519, 519, 519, 519, 519, 519, 519, 519, 489, - 354, 554, 520, 520, 520, 520, 520, 520, 520, 520, - 554, 554, 554, 554, 521, 521, 521, 521, 521, 554, - 554, 521, 521, 521, 521, 521, 521, 521, 521, 554, + 75, 370, 119, 516, 516, 516, 516, 516, 516, 516, + 516, 476, 370, 108, 517, 517, 517, 517, 517, 517, + 517, 517, 518, 107, 106, 105, 519, 519, 519, 519, + 519, 163, 527, 527, 527, 527, 527, 527, 527, 527, + 562, 563, 564, 562, 562, 562, 562, 562, 519, 519, + 519, 519, 519, 519, 523, 524, 525, 523, 523, 523, + 523, 523, 104, 101, 89, 77, 526, 526, 526, 526, + 526, 540, 75, 541, 541, 541, 541, 541, 541, 565, + 566, 567, 565, 565, 565, 565, 565, 76, 526, 526, + 526, 526, 526, 526, 540, 75, 541, 541, 541, 541, - 554, 554, 554, 521, 521, 521, 521, 521, 521, 161, - 498, 498, 498, 498, 498, 498, 498, 498, 161, 498, - 498, 498, 498, 498, 498, 498, 498, 526, 527, 528, - 526, 526, 526, 526, 526, 554, 507, 554, 508, 508, - 508, 508, 508, 508, 529, 530, 531, 529, 529, 529, - 529, 529, 554, 554, 554, 554, 74, 507, 554, 508, - 508, 508, 508, 508, 508, 508, 508, 74, 512, 554, - 513, 513, 513, 513, 513, 513, 513, 513, 512, 554, - 513, 513, 513, 513, 513, 513, 513, 513, 74, 507, - 554, 508, 508, 508, 508, 508, 508, 508, 508, 512, + 541, 541, 541, 541, 545, 75, 546, 546, 546, 546, + 546, 546, 546, 546, 545, 592, 546, 546, 546, 546, + 546, 546, 546, 546, 592, 592, 592, 592, 75, 540, + 592, 542, 542, 542, 542, 542, 542, 542, 542, 545, + 592, 546, 546, 546, 546, 546, 546, 370, 592, 570, + 570, 570, 570, 570, 570, 570, 570, 592, 592, 592, + 592, 592, 592, 75, 540, 592, 543, 543, 543, 543, + 543, 544, 541, 541, 579, 579, 579, 579, 579, 579, + 579, 579, 580, 580, 580, 580, 580, 580, 580, 580, + 581, 581, 581, 581, 581, 582, 579, 579, 75, 370, - 554, 513, 513, 513, 513, 513, 513, 354, 554, 534, - 534, 534, 534, 534, 534, 534, 534, 554, 554, 554, - 74, 536, 554, 537, 537, 537, 537, 537, 537, 537, - 537, 541, 541, 541, 541, 541, 541, 541, 541, 542, - 542, 542, 542, 542, 542, 542, 542, 554, 554, 554, - 554, 554, 74, 536, 554, 538, 538, 538, 538, 538, - 538, 538, 538, 543, 543, 543, 543, 543, 544, 541, - 541, 548, 549, 550, 548, 548, 548, 548, 548, 554, - 554, 554, 554, 554, 74, 536, 554, 539, 539, 539, - 539, 539, 540, 537, 537, 554, 554, 554, 554, 536, + 592, 552, 552, 552, 552, 552, 552, 552, 552, 518, + 370, 592, 553, 553, 553, 553, 553, 553, 553, 553, + 592, 592, 592, 592, 554, 554, 554, 554, 554, 592, + 586, 587, 588, 586, 586, 586, 586, 586, 574, 592, + 575, 575, 575, 575, 575, 575, 554, 554, 554, 554, + 554, 554, 540, 592, 541, 541, 541, 541, 541, 541, + 541, 541, 75, 579, 579, 579, 579, 579, 579, 579, + 579, 592, 75, 579, 579, 579, 579, 579, 579, 579, + 579, 592, 592, 592, 592, 592, 75, 540, 592, 541, + 541, 541, 541, 541, 541, 541, 541, 592, 592, 592, - 74, 537, 537, 537, 537, 537, 537, 541, 541, 541, - 541, 541, 541, 541, 541, 554, 74, 536, 554, 537, - 537, 537, 537, 537, 537, 537, 537, 554, 554, 554, - 74, 541, 541, 541, 541, 541, 541, 541, 541, 551, - 551, 551, 551, 551, 551, 551, 551, 554, 74, 536, - 554, 537, 537, 537, 537, 537, 537, 537, 537, 548, - 548, 548, 548, 548, 548, 548, 548, 554, 74, 552, - 552, 552, 552, 552, 553, 551, 551, 554, 554, 554, - 74, 551, 551, 551, 551, 551, 551, 554, 74, 551, - 551, 551, 551, 551, 551, 551, 551, 554, 74, 554, + 589, 589, 589, 589, 589, 589, 589, 589, 586, 586, + 586, 586, 586, 586, 586, 586, 592, 592, 592, 592, + 592, 75, 574, 592, 575, 575, 575, 575, 575, 575, + 575, 575, 75, 592, 592, 592, 592, 592, 592, 592, + 75, 590, 590, 590, 590, 590, 591, 589, 589, 592, + 589, 589, 589, 589, 589, 589, 75, 574, 592, 576, + 576, 576, 576, 576, 576, 576, 576, 592, 592, 592, + 592, 592, 592, 75, 589, 589, 589, 589, 589, 589, + 589, 589, 75, 592, 592, 592, 592, 592, 592, 592, + 592, 75, 574, 592, 577, 577, 577, 577, 577, 578, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 74, 554, 554, 554, 554, 554, 554, 554, 74, 52, - 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, - 52, 52, 52, 31, 31, 31, 31, 31, 31, 31, - 31, 31, 31, 31, 31, 31, 31, 61, 61, 61, - 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, - 61, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 68, 68, 68, 68, 68, 73, 554, 554, 554, 73, - 554, 73, 73, 73, 554, 554, 73, 73, 73, 77, - 77, 554, 77, 77, 77, 77, 77, 77, 77, 77, + 575, 575, 592, 592, 592, 592, 75, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 75, 574, 592, 575, + 575, 575, 575, 575, 575, 575, 575, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 75, 574, 592, 575, 575, 575, 575, 575, 575, + 575, 575, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 75, 53, 53, 53, - 77, 77, 77, 80, 80, 80, 80, 80, 80, 80, - 80, 80, 80, 80, 80, 80, 80, 84, 554, 554, - 554, 84, 554, 84, 84, 84, 84, 554, 84, 84, - 84, 87, 554, 554, 554, 87, 554, 87, 87, 87, - 554, 554, 87, 87, 87, 89, 554, 554, 89, 89, - 89, 89, 89, 89, 554, 554, 89, 89, 89, 99, - 99, 554, 554, 554, 99, 124, 554, 554, 124, 124, - 124, 124, 124, 124, 554, 554, 124, 124, 124, 128, - 554, 554, 128, 128, 128, 128, 128, 128, 554, 128, - 554, 128, 128, 136, 554, 554, 136, 554, 136, 136, + 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, + 53, 31, 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 62, 62, 62, 62, 62, + 62, 62, 62, 62, 62, 62, 62, 62, 62, 69, + 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, + 69, 69, 69, 74, 592, 592, 592, 74, 592, 74, + 74, 74, 592, 592, 74, 74, 74, 78, 78, 592, + 78, 78, 78, 78, 78, 78, 78, 78, 78, 78, + 78, 81, 81, 81, 81, 81, 81, 81, 81, 81, + 81, 81, 81, 81, 81, 85, 592, 592, 592, 85, - 136, 136, 136, 554, 136, 136, 136, 140, 140, 140, - 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, - 140, 142, 142, 554, 142, 554, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 78, 78, 554, 78, 78, - 78, 78, 78, 78, 78, 78, 78, 78, 78, 150, - 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, - 150, 150, 150, 151, 151, 554, 151, 151, 151, 151, - 151, 151, 151, 151, 151, 151, 151, 152, 554, 554, - 554, 152, 554, 152, 152, 152, 554, 554, 152, 152, - 152, 90, 554, 554, 90, 90, 90, 90, 90, 90, + 592, 85, 85, 85, 85, 592, 85, 85, 85, 88, + 592, 592, 592, 88, 592, 88, 88, 88, 592, 592, + 88, 88, 88, 90, 592, 592, 90, 90, 90, 90, + 90, 90, 592, 592, 90, 90, 90, 100, 100, 592, + 592, 592, 100, 126, 592, 592, 126, 126, 126, 126, + 126, 126, 592, 592, 126, 126, 126, 130, 592, 592, + 130, 130, 130, 130, 130, 130, 592, 130, 592, 130, + 130, 138, 592, 592, 138, 592, 138, 138, 138, 138, + 138, 592, 138, 138, 138, 142, 142, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 142, 142, 142, 144, - 554, 554, 90, 90, 90, 160, 160, 554, 554, 554, - 160, 162, 162, 162, 554, 554, 554, 162, 125, 554, - 554, 125, 125, 125, 125, 125, 125, 554, 554, 125, - 125, 125, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 193, 193, 554, 554, - 554, 193, 199, 199, 199, 554, 554, 554, 199, 227, - 227, 554, 554, 554, 227, 228, 228, 554, 554, 554, - 228, 232, 232, 554, 554, 554, 232, 234, 234, 234, - 554, 554, 554, 234, 267, 267, 554, 554, 554, 267, - 269, 269, 554, 554, 554, 269, 270, 270, 554, 554, + 144, 592, 144, 592, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 79, 79, 592, 79, 79, 79, 79, + 79, 79, 79, 79, 79, 79, 79, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 153, 153, 592, 153, 153, 153, 153, 153, 153, + 153, 153, 153, 153, 153, 154, 592, 592, 592, 154, + 592, 154, 154, 154, 592, 592, 154, 154, 154, 91, + 592, 592, 91, 91, 91, 91, 91, 91, 592, 592, + 91, 91, 91, 162, 162, 592, 592, 592, 162, 164, + 164, 164, 592, 592, 592, 164, 127, 592, 592, 127, - 554, 270, 272, 272, 272, 554, 554, 554, 272, 276, - 276, 276, 276, 554, 554, 554, 276, 304, 304, 554, - 554, 554, 304, 305, 305, 554, 554, 554, 305, 306, - 306, 554, 554, 554, 306, 318, 318, 318, 554, 554, - 554, 318, 319, 319, 319, 319, 554, 554, 554, 319, - 352, 352, 554, 554, 554, 352, 353, 353, 554, 554, - 554, 353, 369, 369, 369, 554, 554, 554, 369, 370, - 370, 370, 370, 554, 554, 554, 370, 395, 395, 554, - 554, 554, 395, 399, 554, 399, 399, 554, 554, 554, - 399, 417, 417, 417, 554, 554, 554, 417, 418, 418, + 127, 127, 127, 127, 127, 592, 592, 127, 127, 127, + 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, + 190, 190, 190, 190, 197, 197, 592, 592, 592, 197, + 203, 203, 203, 592, 592, 592, 203, 233, 233, 592, + 592, 592, 233, 234, 234, 592, 592, 592, 234, 238, + 238, 592, 592, 592, 238, 240, 240, 240, 592, 592, + 592, 240, 276, 276, 592, 592, 592, 276, 278, 278, + 592, 592, 592, 278, 279, 279, 592, 592, 592, 279, + 281, 281, 281, 592, 592, 592, 281, 285, 285, 285, + 285, 592, 592, 592, 285, 316, 316, 592, 592, 592, - 418, 418, 554, 554, 554, 418, 448, 448, 554, 554, - 554, 448, 449, 554, 449, 449, 554, 554, 554, 449, - 465, 465, 465, 554, 554, 554, 465, 466, 466, 466, - 554, 554, 554, 554, 466, 472, 554, 554, 472, 472, - 554, 472, 472, 472, 554, 554, 472, 472, 472, 475, - 554, 554, 475, 475, 554, 475, 475, 475, 554, 554, - 475, 475, 475, 485, 485, 554, 554, 554, 485, 486, - 554, 486, 486, 554, 554, 554, 486, 502, 502, 554, - 554, 554, 554, 502, 504, 504, 504, 504, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 517, 517, + 316, 317, 317, 592, 592, 592, 317, 318, 318, 592, + 592, 592, 318, 330, 330, 330, 592, 592, 592, 330, + 331, 331, 331, 331, 592, 592, 592, 331, 368, 368, + 592, 592, 592, 368, 369, 369, 592, 592, 592, 369, + 385, 385, 385, 592, 592, 592, 385, 386, 386, 386, + 386, 592, 592, 592, 386, 415, 415, 592, 592, 592, + 415, 419, 592, 419, 419, 592, 592, 592, 419, 437, + 437, 437, 592, 592, 592, 437, 438, 438, 438, 438, + 592, 592, 592, 438, 472, 472, 592, 592, 592, 472, + 473, 592, 473, 473, 592, 592, 592, 473, 489, 489, - 554, 554, 554, 517, 518, 554, 518, 518, 554, 554, - 554, 518, 532, 532, 554, 554, 554, 532, 533, 554, - 533, 554, 554, 554, 554, 533, 546, 546, 546, 546, - 546, 546, 546, 546, 546, 546, 546, 546, 546, 546, - 13, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, + 489, 592, 592, 592, 489, 490, 490, 490, 592, 592, + 592, 592, 490, 501, 592, 592, 501, 501, 592, 501, + 501, 501, 592, 592, 501, 501, 501, 504, 592, 592, + 504, 504, 592, 504, 504, 504, 592, 592, 504, 504, + 504, 514, 514, 592, 592, 592, 514, 515, 592, 515, + 515, 592, 592, 592, 515, 531, 531, 592, 592, 592, + 592, 531, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 537, 537, 550, 550, 592, 592, + 592, 550, 551, 592, 551, 551, 592, 592, 592, 551, + 568, 568, 592, 592, 592, 568, 569, 592, 569, 592, - 554, 554, 554 + 592, 592, 592, 569, 584, 584, 584, 584, 584, 584, + 584, 584, 584, 584, 584, 584, 584, 584, 13, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592 } ; -static yyconst short int yy_chk[3604] = +static yyconst short int yy_chk[3685] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -951,397 +972,405 @@ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 3, 4, 116, 2, 3, 4, 551, - 5, 5, 5, 119, 5, 20, 3, 4, 59, 59, - 5, 11, 11, 11, 11, 6, 6, 6, 119, 6, - 2, 2, 5, 5, 2, 6, 20, 84, 2, 40, + 1, 1, 1, 1, 1, 2, 3, 4, 269, 2, + 3, 4, 70, 5, 5, 5, 123, 5, 269, 3, + 4, 20, 123, 5, 11, 11, 11, 11, 6, 6, + 6, 41, 6, 2, 2, 5, 5, 2, 6, 12, - 51, 2, 12, 12, 12, 12, 63, 6, 6, 70, - 25, 67, 67, 5, 25, 25, 40, 51, 84, 116, - 109, 3, 4, 65, 11, 109, 63, 69, 6, 7, - 7, 7, 25, 7, 27, 27, 27, 27, 27, 27, - 27, 27, 121, 65, 432, 12, 72, 72, 121, 72, - 70, 25, 28, 28, 28, 28, 28, 28, 39, 117, - 39, 39, 39, 39, 39, 39, 39, 39, 41, 348, - 69, 117, 7, 7, 7, 7, 7, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, - 8, 8, 8, 100, 8, 432, 41, 41, 127, 348, + 12, 12, 12, 64, 2, 20, 71, 2, 41, 25, + 6, 6, 52, 25, 25, 60, 60, 66, 70, 5, + 28, 28, 28, 28, 28, 28, 64, 3, 4, 52, + 11, 25, 68, 68, 6, 7, 7, 7, 101, 7, + 66, 73, 73, 164, 73, 12, 111, 101, 85, 118, + 71, 111, 164, 25, 27, 27, 27, 27, 27, 27, + 27, 27, 40, 119, 40, 40, 40, 40, 40, 40, + 40, 40, 85, 129, 589, 119, 42, 584, 129, 132, + 132, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, - 41, 178, 100, 127, 41, 49, 178, 41, 49, 49, - 49, 49, 49, 49, 49, 49, 82, 82, 82, 82, - 82, 82, 82, 82, 83, 83, 83, 83, 83, 83, - 83, 83, 118, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 573, 8, 42, 42, 118, 75, 42, 75, + 185, 75, 185, 75, 75, 42, 50, 75, 42, 50, + 50, 50, 50, 50, 50, 50, 50, 120, 122, 75, + 75, 75, 83, 83, 83, 83, 83, 83, 83, 83, + 122, 309, 109, 109, 146, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, - 8, 9, 9, 9, 9, 9, 120, 130, 130, 50, - 9, 9, 9, 50, 50, 57, 57, 57, 120, 57, - 118, 104, 144, 57, 9, 57, 104, 222, 104, 89, - 171, 50, 162, 89, 89, 134, 134, 57, 57, 146, - 146, 162, 222, 171, 9, 10, 10, 10, 10, 10, + 8, 8, 8, 9, 9, 9, 9, 9, 120, 136, + 136, 51, 9, 9, 9, 51, 51, 58, 58, 58, + 121, 58, 184, 147, 106, 58, 9, 58, 109, 106, + 146, 309, 106, 51, 106, 121, 148, 148, 184, 58, - 50, 89, 182, 145, 10, 10, 10, 74, 57, 74, - 181, 74, 181, 74, 74, 144, 182, 74, 10, 177, - 89, 96, 96, 96, 96, 96, 96, 96, 96, 74, - 74, 74, 98, 98, 98, 98, 98, 98, 10, 18, - 184, 18, 18, 18, 145, 18, 18, 546, 86, 18, - 86, 180, 86, 184, 86, 86, 110, 199, 86, 535, - 192, 18, 18, 18, 124, 177, 199, 180, 124, 124, - 259, 86, 86, 97, 97, 97, 97, 97, 97, 97, - 97, 192, 18, 19, 110, 110, 124, 259, 110, 258, - 107, 107, 110, 19, 207, 110, 19, 19, 19, 19, + 58, 84, 84, 84, 84, 84, 84, 84, 84, 9, + 10, 10, 10, 10, 10, 51, 143, 143, 570, 10, + 10, 10, 87, 58, 87, 181, 87, 147, 87, 87, + 267, 90, 87, 10, 175, 90, 90, 93, 93, 93, + 93, 93, 93, 93, 93, 87, 87, 175, 89, 568, + 89, 186, 89, 90, 89, 89, 10, 18, 89, 18, + 18, 18, 143, 18, 18, 186, 211, 18, 182, 93, + 89, 89, 89, 182, 181, 90, 554, 203, 188, 18, + 18, 18, 192, 92, 553, 92, 203, 92, 211, 92, + 92, 188, 267, 92, 97, 97, 97, 97, 97, 97, - 19, 19, 19, 19, 26, 124, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 188, 207, 213, 26, 26, - 26, 26, 26, 213, 260, 92, 92, 92, 92, 92, - 92, 92, 92, 107, 260, 26, 263, 26, 26, 26, - 26, 26, 26, 32, 220, 220, 188, 32, 258, 32, - 360, 360, 32, 32, 92, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 263, 534, 32, + 97, 97, 196, 18, 19, 92, 92, 92, 99, 99, + 99, 99, 99, 99, 19, 225, 192, 19, 19, 19, + 19, 19, 19, 19, 19, 26, 196, 26, 26, 26, + 26, 26, 26, 26, 26, 26, 200, 200, 200, 26, + 26, 26, 26, 26, 98, 98, 98, 98, 98, 98, + 98, 98, 207, 207, 207, 207, 207, 207, 268, 26, + 551, 26, 26, 26, 26, 26, 26, 32, 212, 219, + 225, 32, 212, 32, 550, 219, 32, 32, 268, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 226, 226, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 34, 34, 34, 34, 34, 34, 34, 34, + 34, 359, 228, 546, 34, 34, 34, 34, 34, 125, + 125, 125, 125, 125, 125, 125, 125, 228, 126, 112, + 301, 537, 126, 126, 301, 227, 34, 34, 34, 34, + 34, 34, 39, 39, 39, 229, 39, 240, 39, 39, + 126, 229, 39, 242, 242, 263, 240, 112, 112, 227, + 263, 112, 359, 242, 39, 39, 39, 43, 112, 244, - 32, 32, 32, 32, 32, 34, 34, 34, 34, 34, - 34, 34, 34, 34, 196, 196, 196, 34, 34, 34, - 34, 34, 123, 123, 123, 123, 123, 123, 123, 123, - 254, 299, 532, 141, 141, 254, 34, 34, 34, 34, - 34, 34, 38, 38, 38, 219, 38, 299, 38, 38, - 223, 88, 38, 88, 234, 88, 223, 88, 88, 236, - 236, 88, 521, 234, 38, 38, 38, 42, 137, 236, - 520, 137, 137, 88, 88, 88, 141, 42, 137, 221, - 42, 42, 42, 42, 42, 42, 42, 42, 91, 518, - 91, 137, 91, 343, 91, 91, 517, 219, 91, 126, + 244, 112, 126, 270, 253, 272, 227, 43, 270, 244, + 43, 43, 43, 43, 43, 43, 43, 43, 128, 408, + 128, 408, 128, 361, 128, 128, 253, 310, 128, 135, + 135, 135, 135, 135, 135, 135, 135, 310, 361, 272, + 128, 128, 128, 204, 204, 204, 204, 204, 204, 204, + 204, 43, 59, 191, 191, 191, 191, 191, 191, 191, + 191, 535, 59, 531, 300, 59, 59, 59, 59, 59, + 59, 59, 59, 78, 458, 78, 78, 78, 139, 78, + 78, 139, 139, 78, 364, 191, 300, 311, 139, 250, + 250, 250, 250, 250, 250, 78, 78, 78, 281, 356, - 221, 126, 247, 126, 154, 126, 126, 434, 154, 126, - 91, 91, 91, 345, 154, 238, 238, 221, 42, 58, - 298, 126, 126, 126, 247, 238, 154, 154, 345, 58, - 298, 513, 58, 58, 58, 58, 58, 58, 58, 58, - 77, 343, 77, 77, 77, 289, 77, 77, 434, 292, - 77, 133, 133, 133, 133, 133, 133, 133, 133, 272, - 261, 504, 77, 77, 77, 261, 276, 289, 272, 294, - 153, 292, 153, 293, 153, 276, 153, 153, 294, 388, - 153, 388, 297, 77, 93, 93, 93, 93, 93, 93, - 93, 93, 153, 153, 153, 293, 93, 93, 93, 93, + 285, 139, 306, 311, 286, 286, 155, 281, 155, 285, + 155, 306, 155, 155, 286, 356, 155, 364, 458, 78, + 94, 94, 94, 94, 94, 94, 94, 94, 155, 155, + 155, 527, 94, 94, 94, 94, 94, 195, 515, 195, + 195, 195, 195, 195, 195, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 94, 94, 94, 94, 94, 94, + 102, 102, 102, 102, 102, 102, 102, 102, 312, 287, + 287, 195, 102, 102, 102, 102, 102, 312, 156, 287, + 289, 289, 156, 514, 330, 376, 376, 362, 156, 500, + 289, 304, 305, 330, 102, 102, 102, 102, 102, 102, - 93, 187, 187, 187, 187, 187, 187, 187, 187, 203, - 203, 203, 203, 203, 203, 93, 93, 93, 93, 93, - 93, 101, 101, 101, 101, 101, 101, 101, 101, 297, - 187, 387, 387, 101, 101, 101, 101, 101, 191, 435, - 191, 191, 191, 191, 191, 191, 244, 244, 244, 244, - 244, 244, 101, 101, 101, 101, 101, 101, 155, 300, - 155, 155, 155, 155, 155, 155, 155, 155, 300, 191, - 200, 200, 200, 200, 200, 200, 200, 200, 183, 387, - 435, 355, 183, 406, 406, 420, 420, 502, 183, 155, - 156, 355, 156, 156, 156, 156, 156, 156, 156, 156, + 156, 156, 157, 362, 157, 157, 157, 157, 157, 157, + 157, 157, 187, 304, 305, 456, 187, 407, 407, 426, + 426, 371, 187, 206, 206, 206, 206, 206, 206, 206, + 206, 371, 440, 440, 187, 187, 157, 158, 498, 158, + 158, 158, 158, 158, 158, 158, 158, 209, 346, 209, + 209, 209, 209, 209, 209, 209, 209, 235, 235, 235, + 235, 235, 235, 235, 235, 235, 441, 441, 407, 456, + 346, 158, 159, 497, 159, 159, 159, 159, 159, 159, + 159, 159, 241, 241, 241, 241, 241, 241, 241, 241, + 243, 243, 243, 243, 243, 243, 243, 243, 247, 247, - 183, 183, 195, 195, 195, 195, 195, 195, 195, 195, - 195, 202, 202, 202, 202, 202, 202, 202, 202, 421, - 421, 156, 157, 357, 157, 157, 157, 157, 157, 157, - 157, 157, 205, 357, 205, 205, 205, 205, 205, 205, - 205, 205, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 340, 498, 157, 158, 318, 158, 158, 158, 158, - 158, 158, 158, 158, 318, 424, 424, 340, 158, 158, - 158, 158, 158, 235, 235, 235, 235, 235, 235, 235, - 235, 286, 286, 286, 286, 286, 286, 158, 158, 158, - 158, 158, 158, 161, 161, 161, 161, 161, 161, 161, + 247, 247, 247, 247, 247, 247, 159, 160, 247, 160, + 160, 160, 160, 160, 160, 160, 160, 444, 444, 457, + 496, 160, 160, 160, 160, 160, 249, 249, 249, 249, + 249, 249, 249, 249, 457, 271, 271, 271, 271, 271, + 271, 271, 271, 160, 160, 160, 160, 160, 160, 163, + 163, 163, 163, 163, 163, 163, 163, 163, 480, 480, + 352, 163, 163, 163, 163, 163, 252, 271, 252, 252, + 252, 252, 252, 252, 252, 252, 295, 295, 295, 295, + 295, 295, 352, 163, 163, 163, 163, 163, 163, 165, + 165, 165, 165, 165, 165, 165, 165, 165, 165, 331, - 161, 161, 456, 456, 470, 161, 161, 161, 161, 161, - 237, 237, 237, 237, 237, 237, 237, 237, 310, 310, - 310, 310, 310, 310, 161, 161, 161, 161, 161, 161, - 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, - 467, 467, 486, 163, 163, 163, 163, 163, 241, 241, - 241, 241, 241, 241, 241, 241, 332, 336, 241, 485, - 470, 346, 163, 163, 163, 163, 163, 163, 164, 164, - 164, 164, 164, 164, 164, 164, 338, 346, 332, 336, - 164, 164, 164, 164, 164, 243, 243, 243, 243, 243, - 243, 243, 243, 472, 382, 471, 277, 277, 338, 164, + 495, 354, 165, 165, 165, 165, 165, 275, 331, 275, + 275, 275, 275, 275, 275, 288, 288, 288, 288, 288, + 288, 288, 288, 354, 165, 165, 165, 165, 165, 165, + 166, 166, 166, 166, 166, 166, 166, 166, 332, 332, + 490, 275, 166, 166, 166, 166, 166, 282, 332, 282, + 282, 282, 282, 282, 282, 282, 282, 322, 322, 322, + 322, 322, 322, 473, 166, 166, 166, 166, 166, 166, + 193, 373, 193, 193, 193, 193, 193, 193, 193, 193, + 283, 373, 283, 283, 283, 283, 283, 283, 283, 283, + 284, 360, 284, 284, 284, 284, 284, 284, 284, 284, - 164, 164, 164, 164, 164, 189, 277, 189, 189, 189, - 189, 189, 189, 189, 189, 246, 382, 246, 246, 246, - 246, 246, 246, 246, 246, 262, 262, 262, 262, 262, - 262, 262, 262, 469, 472, 433, 189, 190, 319, 190, - 190, 190, 190, 190, 190, 190, 190, 319, 278, 278, - 433, 437, 493, 493, 262, 280, 280, 266, 278, 266, - 266, 266, 266, 266, 266, 280, 506, 506, 190, 201, - 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, - 320, 320, 437, 201, 201, 201, 201, 201, 266, 273, - 320, 273, 273, 273, 273, 273, 273, 273, 273, 524, + 360, 402, 403, 461, 193, 194, 472, 194, 194, 194, + 194, 194, 194, 194, 194, 292, 292, 292, 292, 292, + 292, 292, 292, 402, 403, 292, 294, 294, 294, 294, + 294, 294, 294, 294, 491, 491, 468, 461, 453, 194, + 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 385, 448, 445, 205, 205, 205, 205, 205, 297, + 385, 297, 297, 297, 297, 297, 297, 297, 297, 341, + 341, 341, 341, 341, 341, 445, 205, 205, 205, 205, + 205, 205, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 522, 522, 449, 208, 208, 208, 208, 208, - 524, 468, 201, 201, 201, 201, 201, 201, 204, 204, - 204, 204, 204, 204, 204, 204, 204, 204, 344, 568, - 568, 204, 204, 204, 204, 204, 274, 344, 274, 274, - 274, 274, 274, 274, 274, 274, 466, 321, 321, 449, - 204, 204, 204, 204, 204, 204, 224, 321, 224, 224, - 224, 224, 224, 224, 224, 224, 275, 383, 275, 275, - 275, 275, 275, 275, 275, 275, 279, 279, 279, 279, - 279, 279, 279, 279, 425, 448, 444, 224, 225, 383, - 225, 225, 225, 225, 225, 225, 225, 225, 283, 283, - 283, 283, 283, 283, 283, 283, 425, 400, 283, 285, + 319, 319, 319, 319, 319, 319, 319, 319, 321, 321, + 321, 321, 321, 321, 321, 321, 449, 208, 208, 208, + 208, 208, 208, 230, 420, 230, 230, 230, 230, 230, + 230, 230, 230, 324, 420, 324, 324, 324, 324, 324, + 324, 324, 324, 325, 325, 325, 325, 325, 325, 325, + 325, 379, 379, 379, 379, 379, 379, 230, 231, 421, + 231, 231, 231, 231, 231, 231, 231, 231, 327, 421, + 327, 327, 327, 327, 327, 327, 327, 327, 328, 386, + 328, 328, 328, 328, 328, 328, 328, 328, 386, 539, + 539, 447, 231, 232, 423, 232, 232, 232, 232, 232, - 285, 285, 285, 285, 285, 285, 285, 400, 508, 225, - 226, 401, 226, 226, 226, 226, 226, 226, 226, 226, - 288, 401, 288, 288, 288, 288, 288, 288, 288, 288, - 307, 307, 307, 307, 307, 307, 307, 307, 429, 508, - 413, 226, 239, 239, 239, 239, 239, 239, 239, 239, - 239, 239, 239, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 399, 395, 390, 242, 242, 242, - 242, 242, 309, 309, 309, 309, 309, 309, 309, 309, - 329, 329, 329, 329, 329, 329, 242, 242, 242, 242, - 242, 242, 245, 245, 245, 245, 245, 245, 245, 245, + 232, 232, 232, 329, 423, 329, 329, 329, 329, 329, + 329, 333, 333, 334, 334, 334, 334, 334, 334, 334, + 334, 333, 557, 557, 541, 459, 446, 232, 245, 245, + 245, 245, 245, 245, 245, 245, 245, 245, 245, 248, + 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, + 335, 335, 451, 248, 248, 248, 248, 248, 541, 433, + 335, 338, 338, 338, 338, 338, 338, 338, 338, 459, + 492, 338, 606, 606, 451, 248, 248, 248, 248, 248, + 248, 251, 251, 251, 251, 251, 251, 251, 251, 251, + 251, 419, 492, 494, 251, 251, 251, 251, 251, 340, - 245, 245, 369, 386, 385, 245, 245, 245, 245, 245, - 312, 369, 312, 312, 312, 312, 312, 312, 312, 312, - 384, 323, 323, 353, 245, 245, 245, 245, 245, 245, - 264, 323, 264, 264, 264, 264, 264, 264, 264, 264, - 313, 313, 313, 313, 313, 313, 313, 313, 315, 370, - 315, 315, 315, 315, 315, 315, 315, 315, 370, 352, - 342, 264, 265, 403, 265, 265, 265, 265, 265, 265, - 265, 265, 316, 403, 316, 316, 316, 316, 316, 316, - 316, 316, 317, 417, 317, 317, 317, 317, 317, 317, - 431, 431, 417, 265, 271, 271, 271, 271, 271, 271, + 340, 340, 340, 340, 340, 340, 340, 370, 370, 370, + 370, 370, 370, 370, 370, 494, 251, 251, 251, 251, + 251, 251, 273, 474, 273, 273, 273, 273, 273, 273, + 273, 273, 343, 474, 343, 343, 343, 343, 343, 343, + 343, 343, 363, 363, 363, 363, 363, 363, 363, 363, + 396, 396, 396, 396, 396, 396, 273, 274, 501, 274, + 274, 274, 274, 274, 274, 274, 274, 429, 429, 429, + 429, 429, 429, 415, 363, 410, 367, 367, 367, 367, + 367, 367, 367, 372, 372, 372, 372, 372, 372, 372, + 372, 274, 280, 280, 280, 280, 280, 280, 280, 280, - 271, 271, 271, 431, 341, 335, 271, 271, 271, 271, - 271, 322, 322, 322, 322, 322, 322, 322, 322, 363, - 363, 363, 363, 363, 363, 271, 271, 271, 271, 271, - 271, 281, 281, 281, 281, 281, 281, 281, 281, 281, - 281, 281, 284, 284, 284, 284, 284, 284, 284, 284, - 284, 284, 284, 334, 314, 306, 284, 284, 284, 284, - 284, 326, 326, 326, 326, 326, 326, 326, 326, 427, - 305, 326, 304, 296, 295, 284, 284, 284, 284, 284, - 284, 287, 287, 287, 287, 287, 287, 287, 287, 287, - 287, 427, 291, 290, 287, 287, 287, 287, 287, 328, + 280, 406, 501, 405, 280, 280, 280, 280, 280, 367, + 378, 378, 378, 378, 378, 378, 378, 378, 389, 389, + 389, 389, 389, 389, 389, 389, 280, 280, 280, 280, + 280, 280, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 290, 290, 293, 293, 293, 293, 293, 293, 293, + 293, 293, 293, 293, 437, 454, 404, 293, 293, 293, + 293, 293, 381, 437, 381, 381, 381, 381, 381, 381, + 381, 381, 401, 400, 399, 454, 398, 454, 454, 293, + 293, 293, 293, 293, 293, 296, 296, 296, 296, 296, + 296, 296, 296, 296, 296, 438, 499, 532, 296, 296, - 328, 328, 328, 328, 328, 328, 328, 380, 380, 380, - 380, 380, 380, 287, 287, 287, 287, 287, 287, 301, - 301, 301, 301, 301, 301, 301, 301, 301, 331, 270, - 331, 331, 331, 331, 331, 331, 331, 331, 347, 347, - 347, 347, 347, 347, 347, 347, 525, 525, 537, 301, - 302, 302, 302, 302, 302, 302, 302, 302, 302, 525, - 351, 351, 351, 351, 351, 351, 351, 347, 354, 354, - 354, 354, 354, 354, 354, 354, 269, 268, 267, 537, - 302, 303, 303, 303, 303, 303, 303, 303, 303, 303, - 351, 356, 356, 356, 356, 356, 356, 356, 356, 362, + 296, 296, 296, 382, 438, 382, 382, 382, 382, 382, + 382, 382, 382, 483, 483, 483, 483, 483, 483, 532, + 296, 296, 296, 296, 296, 296, 313, 313, 313, 313, + 313, 313, 313, 313, 313, 383, 475, 383, 383, 383, + 383, 383, 383, 383, 383, 384, 475, 384, 384, 384, + 384, 384, 384, 384, 384, 499, 369, 368, 358, 313, + 314, 314, 314, 314, 314, 314, 314, 314, 314, 387, + 387, 388, 388, 390, 390, 357, 351, 575, 502, 387, + 504, 388, 477, 390, 395, 395, 395, 395, 395, 395, + 395, 395, 477, 314, 315, 315, 315, 315, 315, 315, - 362, 362, 362, 362, 362, 362, 362, 257, 619, 256, - 255, 303, 308, 619, 308, 308, 308, 308, 308, 308, - 308, 308, 308, 418, 253, 252, 308, 308, 308, 308, - 308, 365, 418, 365, 365, 365, 365, 365, 365, 365, - 365, 251, 250, 249, 233, 308, 308, 308, 308, 308, - 308, 311, 311, 311, 311, 311, 311, 311, 311, 311, - 232, 231, 230, 311, 311, 311, 311, 311, 366, 450, - 366, 366, 366, 366, 366, 366, 366, 366, 228, 450, - 227, 218, 311, 311, 311, 311, 311, 311, 324, 324, - 324, 324, 324, 324, 324, 324, 324, 324, 324, 327, + 315, 315, 315, 393, 393, 393, 393, 393, 393, 393, + 393, 575, 397, 393, 397, 397, 397, 397, 397, 397, + 397, 397, 502, 350, 504, 349, 348, 315, 320, 345, + 320, 320, 320, 320, 320, 320, 320, 320, 320, 489, + 344, 534, 320, 320, 320, 320, 320, 416, 489, 416, + 416, 416, 416, 416, 416, 416, 416, 525, 525, 525, + 525, 525, 525, 534, 320, 320, 320, 320, 320, 320, + 323, 323, 323, 323, 323, 323, 323, 323, 323, 326, + 318, 558, 323, 323, 323, 323, 323, 417, 317, 417, + 417, 417, 417, 417, 417, 417, 417, 316, 466, 308, - 327, 327, 327, 327, 327, 327, 327, 327, 327, 327, - 217, 216, 215, 327, 327, 327, 327, 327, 367, 451, - 367, 367, 367, 367, 367, 367, 367, 367, 473, 451, - 214, 212, 327, 327, 327, 327, 327, 327, 330, 330, - 330, 330, 330, 330, 330, 330, 330, 371, 371, 211, - 210, 330, 330, 330, 330, 330, 368, 371, 368, 368, - 368, 368, 368, 368, 368, 368, 209, 208, 206, 473, - 330, 330, 330, 330, 330, 330, 349, 349, 349, 349, - 349, 349, 349, 349, 349, 372, 372, 373, 373, 373, - 373, 373, 373, 373, 373, 372, 379, 379, 379, 379, + 466, 466, 466, 558, 323, 323, 323, 323, 323, 323, + 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, + 336, 339, 339, 339, 339, 339, 339, 339, 339, 339, + 339, 339, 466, 560, 571, 339, 339, 339, 339, 339, + 418, 516, 418, 418, 418, 418, 418, 418, 418, 418, + 307, 516, 409, 303, 302, 560, 571, 339, 339, 339, + 339, 339, 339, 342, 342, 342, 342, 342, 342, 342, + 342, 342, 409, 299, 409, 409, 342, 342, 342, 342, + 342, 422, 422, 422, 422, 422, 422, 422, 422, 657, + 510, 510, 510, 298, 657, 279, 409, 278, 342, 342, - 379, 379, 379, 379, 198, 197, 349, 350, 350, 350, - 350, 350, 350, 350, 350, 350, 374, 374, 377, 377, - 377, 377, 377, 377, 377, 377, 374, 381, 377, 381, - 381, 381, 381, 381, 381, 381, 381, 350, 358, 475, - 358, 358, 358, 358, 358, 358, 358, 358, 358, 361, - 453, 361, 361, 361, 361, 361, 361, 361, 361, 361, - 453, 194, 193, 361, 361, 361, 361, 361, 396, 465, - 396, 396, 396, 396, 396, 396, 396, 396, 465, 186, - 475, 185, 361, 361, 361, 361, 361, 361, 364, 364, - 364, 364, 364, 364, 364, 364, 364, 179, 176, 175, + 342, 342, 342, 342, 365, 365, 365, 365, 365, 365, + 365, 365, 365, 428, 428, 428, 428, 428, 428, 428, + 428, 431, 510, 431, 431, 431, 431, 431, 431, 431, + 431, 582, 582, 582, 582, 582, 582, 365, 366, 366, + 366, 366, 366, 366, 366, 366, 366, 432, 432, 432, + 432, 432, 432, 432, 432, 434, 517, 434, 434, 434, + 434, 434, 434, 434, 434, 277, 517, 276, 266, 265, + 264, 366, 374, 262, 374, 374, 374, 374, 374, 374, + 374, 374, 374, 377, 519, 377, 377, 377, 377, 377, + 377, 377, 377, 377, 519, 261, 260, 377, 377, 377, - 364, 364, 364, 364, 364, 397, 487, 397, 397, 397, - 397, 397, 397, 397, 397, 174, 487, 173, 172, 364, - 364, 364, 364, 364, 364, 375, 375, 375, 375, 375, - 375, 375, 375, 375, 375, 375, 378, 378, 378, 378, - 378, 378, 378, 378, 378, 378, 170, 419, 419, 169, - 378, 378, 378, 378, 378, 389, 398, 419, 398, 398, - 398, 398, 398, 398, 398, 398, 481, 481, 481, 378, - 378, 378, 378, 378, 378, 389, 168, 389, 389, 402, - 402, 402, 402, 402, 402, 402, 402, 408, 408, 408, - 408, 408, 408, 408, 408, 481, 389, 391, 167, 391, + 377, 377, 435, 259, 435, 435, 435, 435, 435, 435, + 435, 435, 530, 530, 530, 530, 530, 530, 530, 377, + 377, 377, 377, 377, 377, 380, 380, 380, 380, 380, + 380, 380, 380, 380, 258, 257, 256, 380, 380, 380, + 380, 380, 436, 255, 436, 436, 436, 436, 436, 436, + 467, 467, 467, 467, 467, 467, 467, 467, 239, 380, + 380, 380, 380, 380, 380, 391, 391, 391, 391, 391, + 391, 391, 391, 391, 391, 391, 394, 394, 394, 394, + 394, 394, 394, 394, 394, 394, 439, 439, 455, 455, + 394, 394, 394, 394, 394, 238, 439, 237, 561, 561, - 391, 391, 391, 391, 391, 391, 391, 409, 409, 409, - 409, 409, 409, 411, 488, 411, 411, 411, 411, 411, - 411, 411, 411, 166, 488, 165, 160, 159, 391, 392, - 152, 392, 392, 392, 392, 392, 392, 392, 392, 412, - 412, 412, 412, 412, 412, 412, 412, 414, 490, 414, - 414, 414, 414, 414, 414, 414, 414, 151, 490, 150, - 392, 393, 519, 393, 393, 393, 393, 393, 393, 393, - 393, 415, 519, 415, 415, 415, 415, 415, 415, 415, - 415, 416, 148, 416, 416, 416, 416, 416, 416, 430, - 147, 143, 393, 394, 142, 394, 394, 394, 394, 394, + 552, 455, 460, 460, 460, 460, 460, 460, 460, 460, + 552, 561, 394, 394, 394, 394, 394, 394, 411, 236, + 411, 411, 411, 411, 411, 411, 411, 411, 234, 233, + 224, 223, 222, 469, 460, 469, 469, 469, 469, 469, + 469, 469, 469, 471, 221, 471, 471, 471, 471, 471, + 471, 220, 411, 412, 218, 412, 412, 412, 412, 412, + 412, 412, 412, 470, 217, 470, 470, 470, 470, 470, + 470, 470, 470, 476, 476, 476, 476, 476, 476, 476, + 476, 216, 215, 214, 213, 210, 202, 412, 413, 201, + 413, 413, 413, 413, 413, 413, 413, 413, 482, 482, - 394, 394, 394, 459, 459, 459, 459, 459, 459, 430, - 140, 430, 430, 136, 129, 125, 442, 122, 442, 442, - 442, 115, 114, 113, 394, 404, 112, 404, 404, 404, - 404, 404, 404, 404, 404, 404, 407, 111, 407, 407, - 407, 407, 407, 407, 407, 407, 407, 442, 106, 105, - 407, 407, 407, 407, 407, 436, 436, 436, 436, 436, - 436, 436, 436, 496, 496, 496, 496, 496, 496, 407, - 407, 407, 407, 407, 407, 410, 410, 410, 410, 410, - 410, 410, 410, 410, 436, 103, 99, 410, 410, 410, - 410, 410, 443, 443, 443, 443, 443, 443, 443, 443, + 482, 482, 482, 482, 482, 482, 485, 198, 485, 485, + 485, 485, 485, 485, 485, 485, 197, 190, 189, 183, + 180, 179, 413, 414, 178, 414, 414, 414, 414, 414, + 414, 414, 414, 486, 486, 486, 486, 486, 486, 486, + 486, 486, 487, 487, 487, 487, 487, 487, 487, 487, + 487, 177, 176, 174, 173, 172, 171, 414, 424, 170, + 424, 424, 424, 424, 424, 424, 424, 424, 424, 427, + 169, 427, 427, 427, 427, 427, 427, 427, 427, 427, + 168, 167, 162, 427, 427, 427, 427, 427, 488, 488, + 488, 488, 488, 488, 488, 488, 488, 509, 509, 509, - 544, 544, 544, 544, 544, 544, 410, 410, 410, 410, - 410, 410, 422, 422, 422, 422, 422, 422, 422, 422, - 422, 422, 438, 95, 438, 438, 438, 438, 438, 438, - 438, 438, 445, 94, 445, 445, 445, 445, 445, 445, - 445, 445, 446, 90, 446, 446, 446, 446, 446, 446, - 446, 446, 87, 438, 439, 85, 439, 439, 439, 439, - 439, 439, 439, 439, 447, 80, 447, 447, 447, 447, - 447, 447, 452, 452, 452, 452, 452, 452, 452, 452, - 79, 78, 76, 75, 73, 439, 440, 68, 440, 440, - 440, 440, 440, 440, 440, 440, 458, 458, 458, 458, + 509, 509, 509, 509, 509, 427, 427, 427, 427, 427, + 427, 430, 430, 430, 430, 430, 430, 430, 430, 430, + 161, 154, 153, 430, 430, 430, 430, 430, 511, 509, + 511, 511, 511, 511, 511, 511, 511, 511, 152, 150, + 149, 145, 144, 142, 138, 430, 430, 430, 430, 430, + 430, 442, 442, 442, 442, 442, 442, 442, 442, 442, + 442, 462, 131, 462, 462, 462, 462, 462, 462, 462, + 462, 512, 127, 512, 512, 512, 512, 512, 512, 512, + 512, 124, 117, 116, 503, 115, 114, 113, 503, 108, + 503, 503, 107, 105, 503, 462, 463, 104, 463, 463, - 458, 458, 458, 458, 461, 61, 461, 461, 461, 461, - 461, 461, 461, 461, 54, 48, 47, 440, 441, 46, - 441, 441, 441, 441, 441, 441, 441, 441, 462, 462, - 462, 462, 462, 462, 462, 462, 462, 463, 463, 463, - 463, 463, 463, 463, 463, 463, 45, 44, 43, 441, - 454, 37, 454, 454, 454, 454, 454, 454, 454, 454, - 454, 457, 36, 457, 457, 457, 457, 457, 457, 457, - 457, 457, 35, 33, 29, 457, 457, 457, 457, 457, - 464, 464, 464, 464, 464, 464, 464, 464, 464, 23, - 17, 15, 14, 13, 457, 457, 457, 457, 457, 457, + 463, 463, 463, 463, 463, 463, 503, 503, 503, 513, + 100, 513, 513, 513, 513, 513, 513, 513, 513, 505, + 96, 95, 91, 505, 88, 505, 505, 86, 81, 505, + 463, 464, 80, 464, 464, 464, 464, 464, 464, 464, + 464, 505, 505, 505, 518, 518, 518, 518, 518, 518, + 518, 518, 524, 524, 524, 524, 524, 524, 524, 524, + 79, 77, 76, 74, 69, 464, 465, 62, 465, 465, + 465, 465, 465, 465, 465, 465, 526, 55, 526, 526, + 526, 526, 526, 526, 526, 526, 528, 528, 528, 528, + 528, 528, 528, 528, 528, 49, 48, 47, 46, 45, - 460, 460, 460, 460, 460, 460, 460, 460, 0, 0, - 0, 0, 460, 460, 460, 460, 460, 474, 0, 0, - 0, 474, 0, 474, 474, 0, 0, 474, 0, 0, - 0, 460, 460, 460, 460, 460, 460, 0, 476, 474, - 474, 474, 476, 0, 476, 476, 0, 0, 476, 480, - 480, 480, 480, 480, 480, 480, 480, 0, 0, 0, - 476, 476, 476, 477, 0, 477, 477, 477, 477, 477, - 477, 477, 477, 0, 0, 0, 0, 482, 480, 482, - 482, 482, 482, 482, 482, 482, 482, 501, 501, 501, - 501, 501, 501, 501, 477, 478, 0, 478, 478, 478, + 465, 478, 44, 478, 478, 478, 478, 478, 478, 478, + 478, 478, 481, 38, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 37, 36, 35, 481, 481, 481, 481, + 481, 529, 529, 529, 529, 529, 529, 529, 529, 529, + 540, 540, 540, 540, 540, 540, 540, 540, 481, 481, + 481, 481, 481, 481, 484, 484, 484, 484, 484, 484, + 484, 484, 33, 29, 23, 17, 484, 484, 484, 484, + 484, 544, 540, 544, 544, 544, 544, 544, 544, 545, + 545, 545, 545, 545, 545, 545, 545, 15, 484, 484, + 484, 484, 484, 484, 506, 14, 506, 506, 506, 506, - 478, 478, 478, 478, 478, 483, 0, 483, 483, 483, - 483, 483, 483, 483, 483, 484, 0, 484, 484, 484, - 484, 484, 484, 484, 484, 0, 478, 479, 0, 479, - 479, 479, 479, 479, 479, 479, 479, 489, 489, 489, - 489, 489, 489, 489, 489, 495, 495, 495, 495, 495, - 495, 495, 495, 0, 0, 0, 0, 0, 479, 491, - 0, 491, 491, 491, 491, 491, 491, 491, 491, 491, - 494, 0, 494, 494, 494, 494, 494, 494, 494, 494, - 0, 0, 0, 0, 494, 494, 494, 494, 494, 497, - 0, 497, 497, 497, 497, 497, 497, 497, 497, 0, + 506, 506, 506, 506, 547, 544, 547, 547, 547, 547, + 547, 547, 547, 547, 548, 13, 548, 548, 548, 548, + 548, 548, 548, 548, 0, 0, 0, 0, 506, 507, + 0, 507, 507, 507, 507, 507, 507, 507, 507, 549, + 0, 549, 549, 549, 549, 549, 549, 555, 0, 555, + 555, 555, 555, 555, 555, 555, 555, 0, 0, 0, + 0, 0, 0, 507, 508, 0, 508, 508, 508, 508, + 508, 508, 508, 508, 565, 565, 565, 565, 565, 565, + 565, 565, 566, 566, 566, 566, 566, 566, 566, 566, + 567, 567, 567, 567, 567, 567, 567, 567, 508, 520, - 0, 0, 0, 494, 494, 494, 494, 494, 494, 499, - 499, 499, 499, 499, 499, 499, 499, 499, 500, 500, - 500, 500, 500, 500, 500, 500, 500, 507, 507, 507, - 507, 507, 507, 507, 507, 0, 511, 0, 511, 511, - 511, 511, 511, 511, 512, 512, 512, 512, 512, 512, - 512, 512, 0, 0, 0, 0, 507, 509, 0, 509, - 509, 509, 509, 509, 509, 509, 509, 511, 514, 0, - 514, 514, 514, 514, 514, 514, 514, 514, 515, 0, - 515, 515, 515, 515, 515, 515, 515, 515, 509, 510, - 0, 510, 510, 510, 510, 510, 510, 510, 510, 516, + 0, 520, 520, 520, 520, 520, 520, 520, 520, 520, + 523, 0, 523, 523, 523, 523, 523, 523, 523, 523, + 0, 0, 0, 0, 523, 523, 523, 523, 523, 0, + 574, 574, 574, 574, 574, 574, 574, 574, 578, 0, + 578, 578, 578, 578, 578, 578, 523, 523, 523, 523, + 523, 523, 542, 0, 542, 542, 542, 542, 542, 542, + 542, 542, 574, 580, 580, 580, 580, 580, 580, 580, + 580, 0, 578, 581, 581, 581, 581, 581, 581, 581, + 581, 0, 0, 0, 0, 0, 542, 543, 0, 543, + 543, 543, 543, 543, 543, 543, 543, 0, 0, 0, - 0, 516, 516, 516, 516, 516, 516, 522, 0, 522, - 522, 522, 522, 522, 522, 522, 522, 0, 0, 0, - 510, 526, 0, 526, 526, 526, 526, 526, 526, 526, - 526, 529, 529, 529, 529, 529, 529, 529, 529, 530, - 530, 530, 530, 530, 530, 530, 530, 0, 0, 0, - 0, 0, 526, 527, 0, 527, 527, 527, 527, 527, - 527, 527, 527, 531, 531, 531, 531, 531, 531, 531, - 531, 536, 536, 536, 536, 536, 536, 536, 536, 0, - 0, 0, 0, 0, 527, 528, 0, 528, 528, 528, - 528, 528, 528, 528, 528, 0, 0, 0, 0, 540, + 586, 586, 586, 586, 586, 586, 586, 586, 587, 587, + 587, 587, 587, 587, 587, 587, 0, 0, 0, 0, + 0, 543, 562, 0, 562, 562, 562, 562, 562, 562, + 562, 562, 586, 0, 0, 0, 0, 0, 0, 0, + 587, 588, 588, 588, 588, 588, 588, 588, 588, 0, + 591, 591, 591, 591, 591, 591, 562, 563, 0, 563, + 563, 563, 563, 563, 563, 563, 563, 0, 0, 0, + 0, 0, 0, 588, 590, 590, 590, 590, 590, 590, + 590, 590, 591, 0, 0, 0, 0, 0, 0, 0, + 0, 563, 564, 0, 564, 564, 564, 564, 564, 564, - 536, 540, 540, 540, 540, 540, 540, 542, 542, 542, - 542, 542, 542, 542, 542, 0, 528, 538, 0, 538, - 538, 538, 538, 538, 538, 538, 538, 0, 0, 0, - 540, 543, 543, 543, 543, 543, 543, 543, 543, 548, - 548, 548, 548, 548, 548, 548, 548, 0, 538, 539, - 0, 539, 539, 539, 539, 539, 539, 539, 539, 549, - 549, 549, 549, 549, 549, 549, 549, 0, 548, 550, - 550, 550, 550, 550, 550, 550, 550, 0, 0, 0, - 539, 553, 553, 553, 553, 553, 553, 0, 549, 552, - 552, 552, 552, 552, 552, 552, 552, 0, 550, 0, - + 564, 564, 0, 0, 0, 0, 590, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 553, 0, 0, 0, 0, 0, 0, 0, 552, 555, - 555, 555, 555, 555, 555, 555, 555, 555, 555, 555, - 555, 555, 555, 556, 556, 556, 556, 556, 556, 556, - 556, 556, 556, 556, 556, 556, 556, 557, 557, 557, - 557, 557, 557, 557, 557, 557, 557, 557, 557, 557, - 557, 558, 558, 558, 558, 558, 558, 558, 558, 558, - 558, 558, 558, 558, 558, 559, 0, 0, 0, 559, - 0, 559, 559, 559, 0, 0, 559, 559, 559, 560, - 560, 0, 560, 560, 560, 560, 560, 560, 560, 560, + 0, 0, 0, 0, 0, 0, 564, 576, 0, 576, + 576, 576, 576, 576, 576, 576, 576, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 576, 577, 0, 577, 577, 577, 577, 577, 577, + 577, 577, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 577, 593, 593, 593, - 560, 560, 560, 561, 561, 561, 561, 561, 561, 561, - 561, 561, 561, 561, 561, 561, 561, 562, 0, 0, - 0, 562, 0, 562, 562, 562, 562, 0, 562, 562, - 562, 563, 0, 0, 0, 563, 0, 563, 563, 563, - 0, 0, 563, 563, 563, 564, 0, 0, 564, 564, - 564, 564, 564, 564, 0, 0, 564, 564, 564, 565, - 565, 0, 0, 0, 565, 566, 0, 0, 566, 566, - 566, 566, 566, 566, 0, 0, 566, 566, 566, 567, - 0, 0, 567, 567, 567, 567, 567, 567, 0, 567, - 0, 567, 567, 569, 0, 0, 569, 0, 569, 569, + 593, 593, 593, 593, 593, 593, 593, 593, 593, 593, + 593, 594, 594, 594, 594, 594, 594, 594, 594, 594, + 594, 594, 594, 594, 594, 595, 595, 595, 595, 595, + 595, 595, 595, 595, 595, 595, 595, 595, 595, 596, + 596, 596, 596, 596, 596, 596, 596, 596, 596, 596, + 596, 596, 596, 597, 0, 0, 0, 597, 0, 597, + 597, 597, 0, 0, 597, 597, 597, 598, 598, 0, + 598, 598, 598, 598, 598, 598, 598, 598, 598, 598, + 598, 599, 599, 599, 599, 599, 599, 599, 599, 599, + 599, 599, 599, 599, 599, 600, 0, 0, 0, 600, - 569, 569, 569, 0, 569, 569, 569, 570, 570, 570, - 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, - 570, 571, 571, 0, 571, 0, 571, 571, 571, 571, - 571, 571, 571, 571, 571, 572, 572, 0, 572, 572, - 572, 572, 572, 572, 572, 572, 572, 572, 572, 573, - 573, 573, 573, 573, 573, 573, 573, 573, 573, 573, - 573, 573, 573, 574, 574, 0, 574, 574, 574, 574, - 574, 574, 574, 574, 574, 574, 574, 575, 0, 0, - 0, 575, 0, 575, 575, 575, 0, 0, 575, 575, - 575, 576, 0, 0, 576, 576, 576, 576, 576, 576, + 0, 600, 600, 600, 600, 0, 600, 600, 600, 601, + 0, 0, 0, 601, 0, 601, 601, 601, 0, 0, + 601, 601, 601, 602, 0, 0, 602, 602, 602, 602, + 602, 602, 0, 0, 602, 602, 602, 603, 603, 0, + 0, 0, 603, 604, 0, 0, 604, 604, 604, 604, + 604, 604, 0, 0, 604, 604, 604, 605, 0, 0, + 605, 605, 605, 605, 605, 605, 0, 605, 0, 605, + 605, 607, 0, 0, 607, 0, 607, 607, 607, 607, + 607, 0, 607, 607, 607, 608, 608, 608, 608, 608, + 608, 608, 608, 608, 608, 608, 608, 608, 608, 609, - 0, 0, 576, 576, 576, 577, 577, 0, 0, 0, - 577, 578, 578, 578, 0, 0, 0, 578, 579, 0, - 0, 579, 579, 579, 579, 579, 579, 0, 0, 579, - 579, 579, 580, 580, 580, 580, 580, 580, 580, 580, - 580, 580, 580, 580, 580, 580, 581, 581, 0, 0, - 0, 581, 582, 582, 582, 0, 0, 0, 582, 583, - 583, 0, 0, 0, 583, 584, 584, 0, 0, 0, - 584, 585, 585, 0, 0, 0, 585, 586, 586, 586, - 0, 0, 0, 586, 587, 587, 0, 0, 0, 587, - 588, 588, 0, 0, 0, 588, 589, 589, 0, 0, + 609, 0, 609, 0, 609, 609, 609, 609, 609, 609, + 609, 609, 609, 610, 610, 0, 610, 610, 610, 610, + 610, 610, 610, 610, 610, 610, 610, 611, 611, 611, + 611, 611, 611, 611, 611, 611, 611, 611, 611, 611, + 611, 612, 612, 0, 612, 612, 612, 612, 612, 612, + 612, 612, 612, 612, 612, 613, 0, 0, 0, 613, + 0, 613, 613, 613, 0, 0, 613, 613, 613, 614, + 0, 0, 614, 614, 614, 614, 614, 614, 0, 0, + 614, 614, 614, 615, 615, 0, 0, 0, 615, 616, + 616, 616, 0, 0, 0, 616, 617, 0, 0, 617, - 0, 589, 590, 590, 590, 0, 0, 0, 590, 591, - 591, 591, 591, 0, 0, 0, 591, 592, 592, 0, - 0, 0, 592, 593, 593, 0, 0, 0, 593, 594, - 594, 0, 0, 0, 594, 595, 595, 595, 0, 0, - 0, 595, 596, 596, 596, 596, 0, 0, 0, 596, - 597, 597, 0, 0, 0, 597, 598, 598, 0, 0, - 0, 598, 599, 599, 599, 0, 0, 0, 599, 600, - 600, 600, 600, 0, 0, 0, 600, 601, 601, 0, - 0, 0, 601, 602, 0, 602, 602, 0, 0, 0, - 602, 603, 603, 603, 0, 0, 0, 603, 604, 604, + 617, 617, 617, 617, 617, 0, 0, 617, 617, 617, + 618, 618, 618, 618, 618, 618, 618, 618, 618, 618, + 618, 618, 618, 618, 619, 619, 0, 0, 0, 619, + 620, 620, 620, 0, 0, 0, 620, 621, 621, 0, + 0, 0, 621, 622, 622, 0, 0, 0, 622, 623, + 623, 0, 0, 0, 623, 624, 624, 624, 0, 0, + 0, 624, 625, 625, 0, 0, 0, 625, 626, 626, + 0, 0, 0, 626, 627, 627, 0, 0, 0, 627, + 628, 628, 628, 0, 0, 0, 628, 629, 629, 629, + 629, 0, 0, 0, 629, 630, 630, 0, 0, 0, - 604, 604, 0, 0, 0, 604, 605, 605, 0, 0, - 0, 605, 606, 0, 606, 606, 0, 0, 0, 606, - 607, 607, 607, 0, 0, 0, 607, 608, 608, 608, - 0, 0, 0, 0, 608, 609, 0, 0, 609, 609, - 0, 609, 609, 609, 0, 0, 609, 609, 609, 610, - 0, 0, 610, 610, 0, 610, 610, 610, 0, 0, - 610, 610, 610, 611, 611, 0, 0, 0, 611, 612, - 0, 612, 612, 0, 0, 0, 612, 613, 613, 0, - 0, 0, 0, 613, 614, 614, 614, 614, 614, 614, - 614, 614, 614, 614, 614, 614, 614, 614, 615, 615, + 630, 631, 631, 0, 0, 0, 631, 632, 632, 0, + 0, 0, 632, 633, 633, 633, 0, 0, 0, 633, + 634, 634, 634, 634, 0, 0, 0, 634, 635, 635, + 0, 0, 0, 635, 636, 636, 0, 0, 0, 636, + 637, 637, 637, 0, 0, 0, 637, 638, 638, 638, + 638, 0, 0, 0, 638, 639, 639, 0, 0, 0, + 639, 640, 0, 640, 640, 0, 0, 0, 640, 641, + 641, 641, 0, 0, 0, 641, 642, 642, 642, 642, + 0, 0, 0, 642, 643, 643, 0, 0, 0, 643, + 644, 0, 644, 644, 0, 0, 0, 644, 645, 645, - 0, 0, 0, 615, 616, 0, 616, 616, 0, 0, - 0, 616, 617, 617, 0, 0, 0, 617, 618, 0, - 618, 0, 0, 0, 0, 618, 620, 620, 620, 620, - 620, 620, 620, 620, 620, 620, 620, 620, 620, 620, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, - 554, 554, 554, 554, 554, 554, 554, 554, 554, 554, + 645, 0, 0, 0, 645, 646, 646, 646, 0, 0, + 0, 0, 646, 647, 0, 0, 647, 647, 0, 647, + 647, 647, 0, 0, 647, 647, 647, 648, 0, 0, + 648, 648, 0, 648, 648, 648, 0, 0, 648, 648, + 648, 649, 649, 0, 0, 0, 649, 650, 0, 650, + 650, 0, 0, 0, 650, 651, 651, 0, 0, 0, + 0, 651, 652, 652, 652, 652, 652, 652, 652, 652, + 652, 652, 652, 652, 652, 652, 653, 653, 0, 0, + 0, 653, 654, 0, 654, 654, 0, 0, 0, 654, + 655, 655, 0, 0, 0, 655, 656, 0, 656, 0, - 554, 554, 554 + 0, 0, 0, 656, 658, 658, 658, 658, 658, 658, + 658, 658, 658, 658, 658, 658, 658, 658, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592, 592, 592, 592, 592, 592, 592, + 592, 592, 592, 592 } ; static yy_state_type yy_last_accepting_state; @@ -1471,7 +1500,7 @@ #define INSTR 5 -#line 1475 "lex.yy.c" +#line 1504 "lex.yy.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -1627,7 +1656,7 @@ #line 127 "toke.l" -#line 1631 "lex.yy.c" +#line 1660 "lex.yy.c" if ( yy_init ) { @@ -1679,13 +1708,13 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 555 ) + if ( yy_current_state >= 593 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 3541 ); + while ( yy_base[yy_current_state] != 3619 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -2006,6 +2035,38 @@ YY_RULE_SETUP #line 341 "toke.l" { + LEXTRACE("LOG_OUTPUT "); + return(LOG_OUTPUT); + } + YY_BREAK +case 28: +YY_RULE_SETUP +#line 346 "toke.l" +{ + LEXTRACE("NOLOG_OUTPUT "); + return(NOLOG_OUTPUT); + } + YY_BREAK +case 29: +YY_RULE_SETUP +#line 351 "toke.l" +{ + LEXTRACE("LOG_INPUT "); + return(LOG_INPUT); + } + YY_BREAK +case 30: +YY_RULE_SETUP +#line 356 "toke.l" +{ + LEXTRACE("NOLOG_INPUT "); + return(NOLOG_INPUT); + } + YY_BREAK +case 31: +YY_RULE_SETUP +#line 361 "toke.l" +{ /* netgroup */ if (!fill(yytext, yyleng)) yyterminate(); @@ -2013,9 +2074,9 @@ return(NETGROUP); } YY_BREAK -case 28: +case 32: YY_RULE_SETUP -#line 349 "toke.l" +#line 369 "toke.l" { /* UN*X group */ if (!fill(yytext, yyleng)) @@ -2024,9 +2085,9 @@ return(USERGROUP); } YY_BREAK -case 29: +case 33: YY_RULE_SETUP -#line 357 "toke.l" +#line 377 "toke.l" { if (!fill(yytext, yyleng)) yyterminate(); @@ -2034,9 +2095,9 @@ return(NTWKADDR); } YY_BREAK -case 30: +case 34: YY_RULE_SETUP -#line 364 "toke.l" +#line 384 "toke.l" { if (!fill(yytext, yyleng)) yyterminate(); @@ -2044,9 +2105,9 @@ return(NTWKADDR); } YY_BREAK -case 31: +case 35: YY_RULE_SETUP -#line 371 "toke.l" +#line 391 "toke.l" { if (!ipv6_valid(yytext)) { LEXTRACE("ERROR "); @@ -2058,9 +2119,9 @@ return(NTWKADDR); } YY_BREAK -case 32: +case 36: YY_RULE_SETUP -#line 382 "toke.l" +#line 402 "toke.l" { if (!ipv6_valid(yytext)) { LEXTRACE("ERROR "); @@ -2072,9 +2133,9 @@ return(NTWKADDR); } YY_BREAK -case 33: +case 37: YY_RULE_SETUP -#line 393 "toke.l" +#line 413 "toke.l" { if (strcmp(yytext, "ALL") == 0) { LEXTRACE("ALL "); @@ -2097,9 +2158,9 @@ return(ALIAS); } YY_BREAK -case 34: +case 38: YY_RULE_SETUP -#line 415 "toke.l" +#line 435 "toke.l" { /* no command args allowed for Defaults!/path */ if (!fill_cmnd(yytext, yyleng)) @@ -2108,9 +2169,9 @@ return(COMMAND); } YY_BREAK -case 35: +case 39: YY_RULE_SETUP -#line 423 "toke.l" +#line 443 "toke.l" { BEGIN GOTCMND; LEXTRACE("COMMAND "); @@ -2118,9 +2179,9 @@ yyterminate(); } /* sudo -e */ YY_BREAK -case 36: +case 40: YY_RULE_SETUP -#line 430 "toke.l" +#line 450 "toke.l" { /* directories can't have args... */ if (yytext[yyleng - 1] == '/') { @@ -2136,9 +2197,9 @@ } } /* a pathname */ YY_BREAK -case 37: +case 41: YY_RULE_SETUP -#line 445 "toke.l" +#line 465 "toke.l" { /* a quoted user/group name */ if (!fill(yytext + 1, yyleng - 2)) @@ -2156,9 +2217,9 @@ } } YY_BREAK -case 38: +case 42: YY_RULE_SETUP -#line 462 "toke.l" +#line 482 "toke.l" { /* a word */ if (!fill(yytext, yyleng)) @@ -2167,57 +2228,57 @@ return(WORD); } YY_BREAK -case 39: +case 43: YY_RULE_SETUP -#line 470 "toke.l" +#line 490 "toke.l" { LEXTRACE("( "); return ('('); } YY_BREAK -case 40: +case 44: YY_RULE_SETUP -#line 475 "toke.l" +#line 495 "toke.l" { LEXTRACE(") "); return(')'); } YY_BREAK -case 41: +case 45: YY_RULE_SETUP -#line 480 "toke.l" +#line 500 "toke.l" { LEXTRACE(", "); return(','); } /* return ',' */ YY_BREAK -case 42: +case 46: YY_RULE_SETUP -#line 485 "toke.l" +#line 505 "toke.l" { LEXTRACE("= "); return('='); } /* return '=' */ YY_BREAK -case 43: +case 47: YY_RULE_SETUP -#line 490 "toke.l" +#line 510 "toke.l" { LEXTRACE(": "); return(':'); } /* return ':' */ YY_BREAK -case 44: +case 48: YY_RULE_SETUP -#line 495 "toke.l" +#line 515 "toke.l" { if (yyleng % 2 == 1) return('!'); /* return '!' */ } YY_BREAK -case 45: +case 49: YY_RULE_SETUP -#line 500 "toke.l" +#line 520 "toke.l" { BEGIN INITIAL; ++sudolineno; @@ -2225,25 +2286,25 @@ return(COMMENT); } /* return newline */ YY_BREAK -case 46: +case 50: YY_RULE_SETUP -#line 507 "toke.l" +#line 527 "toke.l" { /* throw away space/tabs */ sawspace = TRUE; /* but remember for fill_args */ } YY_BREAK -case 47: +case 51: YY_RULE_SETUP -#line 511 "toke.l" +#line 531 "toke.l" { sawspace = TRUE; /* remember for fill_args */ ++sudolineno; LEXTRACE("\n\t"); } /* throw away EOL after \ */ YY_BREAK -case 48: +case 52: YY_RULE_SETUP -#line 517 "toke.l" +#line 537 "toke.l" { BEGIN INITIAL; ++sudolineno; @@ -2251,9 +2312,9 @@ return(COMMENT); } /* comment, not uid/gid */ YY_BREAK -case 49: +case 53: YY_RULE_SETUP -#line 524 "toke.l" +#line 544 "toke.l" { LEXTRACE("ERROR "); return(ERROR); @@ -2265,7 +2326,7 @@ case YY_STATE_EOF(STARTDEFS): case YY_STATE_EOF(INDEFS): case YY_STATE_EOF(INSTR): -#line 529 "toke.l" +#line 549 "toke.l" { if (YY_START != INITIAL) { BEGIN INITIAL; @@ -2276,12 +2337,12 @@ yyterminate(); } YY_BREAK -case 50: +case 54: YY_RULE_SETUP -#line 539 "toke.l" +#line 559 "toke.l" ECHO; YY_BREAK -#line 2285 "lex.yy.c" +#line 2346 "lex.yy.c" case YY_END_OF_BUFFER: { @@ -2572,7 +2633,7 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 555 ) + if ( yy_current_state >= 593 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2607,11 +2668,11 @@ while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 555 ) + if ( yy_current_state >= 593 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 554); + yy_is_jam = (yy_current_state == 592); return yy_is_jam ? 0 : yy_current_state; } @@ -2662,6 +2723,7 @@ #endif /* ifndef YY_NO_UNPUT */ +#ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput() #else @@ -2734,6 +2796,7 @@ return c; } +#endif /* ifndef YY_NO_INPUT */ #ifdef YY_USE_PROTOS @@ -3170,7 +3233,7 @@ return 0; } #endif -#line 539 "toke.l" +#line 559 "toke.l" static unsigned char hexchar(s) diff -ura sudo-1.7.4p4/toke.l sudo-1.7.4p5/toke.l --- sudo-1.7.4p4/toke.l Fri Aug 6 09:44:30 2010 +++ sudo-1.7.4p5/toke.l Wed Jan 12 09:46:55 2011 @@ -338,6 +338,26 @@ return(NOSETENV); } +LOG_OUTPUT[[:blank:]]*: { + LEXTRACE("LOG_OUTPUT "); + return(LOG_OUTPUT); + } + +NOLOG_OUTPUT[[:blank:]]*: { + LEXTRACE("NOLOG_OUTPUT "); + return(NOLOG_OUTPUT); + } + +LOG_INPUT[[:blank:]]*: { + LEXTRACE("LOG_INPUT "); + return(LOG_INPUT); + } + +NOLOG_INPUT[[:blank:]]*: { + LEXTRACE("NOLOG_INPUT "); + return(NOLOG_INPUT); + } + \+{WORD} { /* netgroup */ if (!fill(yytext, yyleng))