]> granicus.if.org Git - sudo/commitdiff
No longer call it tracing, it is now "monitoring" which should be more
authorTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 4 Oct 2004 16:07:19 +0000 (16:07 +0000)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Mon, 4 Oct 2004 16:07:19 +0000 (16:07 +0000)
a obvious name to non-hackers.

16 files changed:
Makefile.in
configure
configure.in
def_data.c
def_data.h
def_data.in
lex.yy.c
parse.c
parse.h
parse.lex
parse.yacc
sudo.c
sudo.h
sudo.tab.c
sudo.tab.h
sudoers.pod

index d942786a146d83db59396ab1a6b7881072c08670..0aabae59d436b150b2947f27fd0f9893231ac90f 100644 (file)
@@ -101,10 +101,10 @@ PROGS = @PROGS@
 SRCS = alloc.c alloca.c check.c closefrom.c def_data.c defaults.c env.c err.c \
        fileops.c find_path.c fnmatch.c getcwd.c getprogname.c getspwuid.c \
        gettime.c goodpath.c interfaces.c ldap.c lex.yy.c lsearch.c logging.c \
-       parse.c parse.lex parse.yacc set_perms.c sigaction.c snprintf.c \
-       strcasecmp.c strerror.c strlcat.c strlcpy.c sudo.c sudo_noexec.c \
-       sudo.tab.c sudo_edit.c testsudoers.c tgetpass.c utimes.c \
-       trace_systrace.c visudo.c zero_bytes.c $(AUTH_SRCS)
+       mon_systrace.c parse.c parse.lex parse.yacc set_perms.c sigaction.c \
+       snprintf.c strcasecmp.c strerror.c strlcat.c strlcpy.c sudo.c \
+       sudo_noexec.c sudo.tab.c sudo_edit.c testsudoers.c tgetpass.c utimes.c \
+       visudo.c zero_bytes.c $(AUTH_SRCS)
 
 AUTH_SRCS = auth/afs.c auth/aix_auth.c auth/bsdauth.c auth/dce.c auth/fwtk.c \
            auth/kerb4.c auth/kerb5.c auth/pam.c auth/passwd.c auth/rfc1938.c \
@@ -234,7 +234,7 @@ strlcpy.o: strlcpy.c config.h
 strerror.o: strerror.c config.h
 utime.o: utime.c config.h pathnames.h compat.h emul/utime.h
 ldap.o: ldap.c $(SUDODEP) parse.h
-trace_systrace.o: trace_systrace.c $(SUDODEP) trace_systrace.h
+mon_systrace.o: mon_systrace.c $(SUDODEP) mon_systrace.h
 
 # Build special copy of alloc.c for visudo that calls Exit()
 vsalloc.o: alloc.c $(SUDODEP)
index a89e119f44e9bbe281134c31b4b565aff166f0d9..9130c5371733b032aa2d4a53117d6bce12cd3ad0 100755 (executable)
--- a/configure
+++ b/configure
@@ -30290,7 +30290,7 @@ done
     else
        CPPFLAGS="$CPPFLAGS -I${with_systrace}"
     fi
-    SUDO_OBJS="${SUDO_OBJS} trace_systrace.o"
+    SUDO_OBJS="${SUDO_OBJS} mon_systrace.o"
 
 for ac_func in setproctitle
 do
index 2d88b386588a53b002febc7e59c76c46967a070e..ebc096a3e93fd8debc11a81ee0ab7e6577ccd5f2 100644 (file)
@@ -1786,7 +1786,7 @@ if test -n "$with_systrace"; then
     else
        CPPFLAGS="$CPPFLAGS -I${with_systrace}"
     fi
-    SUDO_OBJS="${SUDO_OBJS} trace_systrace.o"
+    SUDO_OBJS="${SUDO_OBJS} mon_systrace.o"
     AC_CHECK_FUNCS(setproctitle)
 fi
 dnl
index b18a20976e920c003e83b82329f430d50d16d72a..6cfa9dbce10d4c4d705ff38bebb84da45bf1c4b2 100644 (file)
@@ -256,8 +256,8 @@ struct sudo_defs_types sudo_defs_table[] = {
        "If LDAP directory is up, do we ignore local sudoers file",
        NULL,
     }, {
-       "trace", T_FLAG,
-       "Trace children of cmnd and apply sudoers restrictions to them",
+       "monitor", T_FLAG,
+       "Monitor children of cmnd and apply sudoers restrictions to them",
        NULL,
     }, {
        NULL, 0, NULL
index 716a391042cb208f816f5e9497d4d4e53f5a2421..fde88336ffeaf3a42895bedace529806372da35f 100644 (file)
 #define I_ENV_KEEP              56
 #define def_ignore_local_sudoers (sudo_defs_table[57].sd_un.flag)
 #define I_IGNORE_LOCAL_SUDOERS  57
-#define def_trace               (sudo_defs_table[58].sd_un.flag)
-#define I_TRACE                 58
+#define def_monitor             (sudo_defs_table[58].sd_un.flag)
+#define I_MONITOR               58
 
 enum def_tupple {
        never,
index 2fe2f1af017a163179ecbf9e9262bca583c91b57..a5bb36d5630a2c799c354b848f6153fbbd7479c1 100644 (file)
@@ -185,6 +185,6 @@ env_keep
 ignore_local_sudoers
        T_FLAG
        "If LDAP directory is up, do we ignore local sudoers file"
-trace
+monitor
        T_FLAG
-       "Trace children of cmnd and apply sudoers restrictions to them"
+       "Monitor children of cmnd and apply sudoers restrictions to them"
index e0599887f53d011dbe4f12fb1c1ff87515a2aa37..510e918af7651174871f7987898a133ceb5be216 100644 (file)
--- a/lex.yy.c
+++ b/lex.yy.c
@@ -287,7 +287,7 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
 
 #define YY_NUM_RULES 42
 #define YY_END_OF_BUFFER 43
-static yyconst short int yy_accept[374] =
+static yyconst short int yy_accept[382] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,   43,   32,   38,   37,   36,   41,   32,   26,
@@ -314,22 +314,23 @@ static yyconst short int yy_accept[374] =
        27,   27,   27,   28,    7,   32,   32,   32,    0,   19,
        27,   27,   27,   27,   27,   32,    0,   32,   32,   28,
        28,   28,   27,   27,   27,   27,   27,   28,   32,   32,
-       32,   32,   32,   27,   27,   27,   27,    0,   21,   32,
-        0,   32,   32,   28,   28,   28,   28,   28,   27,   27,
-       27,   27,   28,   24,   24,   24,    0,   18,   27,   27,
-        0,   17,   32,    0,   32,   32,   24,   24,   24,   27,
-       27,   28,   32,   24,   24,   24,   24,   27,    0,   20,
-       30,    0,   32,   14,   28,   24,   24,   24,   24,   27,
-       28,   32,   25,   25,   25,    0,   16,    0,   32,    0,
-
-       28,   25,   25,   25,   32,   32,   25,   25,   25,   25,
-       25,    0,    0,   13,   15,   14,    0,   28,   28,   25,
-       25,   25,   25,   25,   32,   32,   32,   25,   25,   28,
-       28,   28,   25,   25,   32,   32,   32,   32,   32,   28,
-       28,   28,   28,   28,   32,   32,   32,   28,   28,   28,
-       32,   32,   32,   32,   32,   28,   28,   28,   28,   28,
+       32,   32,   32,   27,   27,   27,   27,   27,   32,    0,
+       32,   32,   28,   28,   28,   28,   28,   27,   27,   27,
+       27,   27,   28,   24,   24,   24,   27,    0,   18,   27,
+       27,    0,   17,   32,    0,   32,   32,   24,   24,   24,
+       27,   27,   27,   28,   32,   24,   24,   24,   24,    0,
+       21,   27,   27,   30,    0,   32,   14,   28,   24,   24,
+       24,   24,   27,   27,   28,   32,   25,   25,   25,   27,
+
+        0,   16,    0,   32,    0,   28,   25,   25,   25,   27,
+       32,   32,   25,   25,   25,   25,   25,    0,   20,    0,
+        0,   13,   15,   14,    0,   28,   28,   25,   25,   25,
+       25,   25,   32,   32,   32,   25,   25,   28,   28,   28,
+       25,   25,   32,   32,   32,   32,   32,   28,   28,   28,
+       28,   28,   32,   32,   32,   28,   28,   28,   32,   32,
+       32,   32,   32,   28,   28,   28,   28,   28,   24,   24,
        24,   24,   24,   24,   24,   24,   24,   24,   24,   24,
-       24,   24,    0
+        0
     } ;
 
 static yyconst int yy_ec[256] =
@@ -341,13 +342,13 @@ static yyconst int yy_ec[256] =
         9,   10,   11,   12,   13,   14,   15,   16,   17,   18,
        19,   20,   21,   22,   22,   22,   22,   23,    1,    1,
        24,   25,   10,   25,   26,   27,   28,   29,   30,   27,
-       27,   31,   27,   27,   27,   27,   27,   32,   33,   34,
-       27,   35,   36,   37,   38,   27,   39,   40,   27,   27,
-       10,   41,   10,    1,   42,    1,   43,   44,   45,   46,
+       27,   31,   32,   27,   27,   27,   33,   34,   35,   36,
+       27,   37,   38,   39,   40,   27,   41,   42,   27,   27,
+       10,   43,   10,    1,   44,    1,   45,   46,   47,   48,
 
-       47,   48,   44,   44,   49,   44,   44,   50,   51,   52,
-       53,   44,   44,   54,   55,   56,   57,   44,   44,   44,
-       44,   44,    1,    1,    1,    1,    1,    1,    1,    1,
+       49,   50,   46,   46,   51,   46,   46,   52,   53,   54,
+       55,   46,   46,   56,   57,   58,   59,   46,   46,   46,
+       46,   46,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -364,804 +365,846 @@ static yyconst int yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst int yy_meta[58] =
+static yyconst int yy_meta[60] =
     {   0,
         1,    2,    2,    3,    1,    4,    1,    3,    3,    1,
         1,    2,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    5,    4,    3,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        6,    7,    7,    7,    7,    7,    7,    7,    7,    7,
-        7,    7,    7,    7,    7,    7,    7
+        1,    1,    6,    7,    7,    7,    7,    7,    7,    7,
+        7,    7,    7,    7,    7,    7,    7,    7,    7
     } ;
 
-static yyconst short int yy_base[395] =
+static yyconst short int yy_base[403] =
     {   0,
-        0,   52,   90,    0,   57,   58,  146,  151,  191,  247,
-      303,  343,  991,  949,  986, 3061,  983,  981,  941, 3061,
-     3061,  939, 3061,  157,  371,  399,  427, 3061, 3061,  468,
-      935,  933,  938,  928,  524,   20,  153,  909,  911,  903,
-      894,  895,  899,   54,  898, 3061,  895,  163,  536,  564,
-      592,  633,  894,  899,  901,  888,  689,   21,  919,    0,
-     3061,  916,    0, 3061,  713,   66,    0,  878,  316,  127,
-     3061,  135, 3061,   82,  877,  753,  913,  908,  907, 3061,
-      867,  777,  864,  801,  175,  863,  825,  189,  148,  837,
-      865,  238,    0,  865,   52,  858,  864,  178, 3061,  132,
-
-      161,  144,  173,  136,  149,  171,  839,  905,  207,  836,
-      929,  821,  953,  325,  977,  244,  269,  989, 1017,  354,
-        0,  831,  237,  824,  826,  270,  176,  845,    0,  842,
-      266, 3061, 3061,  273,    0,  804,  311,  357,  279,  336,
-     3061, 3061,  803,  284,  399, 1045, 1073, 1101,  815,  801,
-      814,  803,  800,  804,  162,  267,  236,  237,  295,  283,
-      145, 1129, 1157, 1185,  802,  788,  797,  779,  770,  776,
-      289,  758, 3061,  338,  426,  450,  521,  317, 1213, 1241,
-      547,  330,  758,  746,  754,  730,  738,  335,  349,  296,
-      323,  342,  553,  386, 1269, 1297,  579,  363,  737,  730,
-
-      738,  719,  726,  355,  373, 1325, 1353, 1381,  401, 3061,
-      718,  699,  706,  695,  402,  389,  403,  368,   38, 1409,
-     1437, 1465,  690,  675,  681,  671,  431,  393,  686,  396,
-     1493, 1521,  712,  434,  655,  602,  440,  449, 3061,  417,
-      489,  420,  424,  722,  546, 1549, 1577,  731,  599,  591,
-      562,  600,  510, 1604, 1631, 1658,  601, 3061,  550,  602,
-      605, 3061,  488,  542,  577,  535, 1685, 1712, 1739,  505,
-      613,  490,  774,  576, 1766, 1793,  801,  614,  619, 3061,
-      452,  405,  586,  616,  847,  604, 1820, 1847,  855,  633,
-      430, 1875, 1903, 1931, 1959,  697, 3061,  474,  655,  423,
-
-     1987, 2015, 2043, 2071,  881,  617, 2099, 2127, 2155, 2183,
-      757,  456,  719, 3061,  385,  320, 2223,  926,  746, 2235,
-     2263, 2291, 2319,  875, 2347, 2375, 2403,  952,  908, 2431,
-     2459, 2487,  999,  981, 1007,  756, 2515, 2543, 1033, 1059,
-      770, 2571, 2599, 1085, 2627, 2655, 2683, 2711, 2739, 2767,
-     1091,  794, 2795, 2823, 1117, 1143,  798, 2851, 2879, 1169,
-     1175, 1201, 1227, 1253, 1279, 1286,  240, 1312, 1338,  190,
-     1364, 1371, 3061, 2920, 2927, 2934, 2941, 2948, 2955, 2962,
-     2969, 2976, 2983, 2990, 2997, 3004,  153, 3011, 3018, 3025,
-     3032, 3039, 3046, 3053
-
+        0,   54,   94,    0,   59,   60,  152,  157,  199,  257,
+      315,  357, 1026,  982, 1020, 3235, 1016, 1015,  962, 3235,
+     3235,  961, 3235,  163,  387,  417,  447, 3235, 3235,  490,
+      960,  966,  963,  970,  548,   20,  159,  941,  940,  933,
+      919,  920,  931,   56,  929, 3235,  927,  169,  560,  590,
+      620,  663,  923,  929,  924,  932,  721,   21,  955,    0,
+     3235,  950,    0, 3235,  745,   68,    0,  910,  180,  141,
+     3235,  144, 3235,   84,  907,  787,  946,  942,  940, 3235,
+      884,  811,  883,  835,  189,  882,  859,  219,  156,  871,
+      901,  250,    0,  886,  879,  183,  874,  187, 3235,   41,
+
+      154,   38,  168,  164,  166,  179,  868,  943,  259,  867,
+      967,  866,  991,  321, 1015,  331,  182, 1027, 1057,  324,
+        0,  878,  862,  252,  857,  231,   45,  892,    0,  882,
+      224, 3235, 3235,  281,    0,  838,  370,  386,  174,  289,
+     3235, 3235,  837,  288,  373, 1087, 1117, 1147,  842,  837,
+      824,  829,  836,  819,  243,  226,  323,  244,  279,  252,
+      280, 1177, 1207, 1237,  828,  823,  807,  813,  820,  807,
+      322,  799, 3235,  291,  416,  446,  455,  340, 1267, 1297,
+      545,  333,  801,  792,  787,  780,  775,  335,  163,  343,
+      314,  356,  573,  381, 1327, 1357,  601,  388,  775,  778,
+
+      773,  763,  759,  371,  350, 1387, 1417, 1447,  400, 3235,
+      763,  766,  758,  748,  755,  369,  321,  148,  373, 1477,
+     1507, 1537,  724,  728,  722,  715,  721,  384,  580,  401,
+     1567, 1597,  610,  691,  424,  687,  630,  439,  399,  440,
+      402,  435,  629,  439, 1627, 1657,  718,  632,  479,  623,
+      619,  490,  436, 1686, 1715, 1744,  492,  582, 3235,  617,
+      596,  612, 3235,  441,  564,  532,  512, 1773, 1802, 1831,
+      652,  551,  541,  510,  754,  440, 1860, 1889,  762,  663,
+     3235,  521,  664,  453,  454,  542,  717,  808,  471, 1918,
+     1947,  857,  448,  665,  437, 1977, 2007, 2037, 2067,  729,
+
+      739, 3235,  653,  600,  403, 2097, 2127, 2157, 2187,  741,
+      885,  618, 2217, 2247, 2277, 2307,  749,  783, 3235,  330,
+      656, 3235,  256,  222, 2349,  913,  744, 2361, 2391, 2421,
+     2451,  836, 2481, 2511, 2541,  920,  881, 2571, 2601, 2631,
+      964,  944, 1012,  788, 2661, 2691,  992, 1040,  789, 2721,
+     2751, 1068, 2781, 2811, 2841, 2871, 2901, 2931, 1047,  790,
+     2961, 2991, 1077, 1097,  795, 3021, 3051, 1107, 1127, 1135,
+     1163, 1191, 1219, 1226,  188, 1254, 1247,  181, 1282, 1310,
+     3235, 3094, 3101, 3108, 3115, 3122, 3129, 3136, 3143, 3150,
+     3157, 3164, 3171, 3178,   83, 3185, 3192, 3199, 3206, 3213,
+
+     3220, 3227
     } ;
 
-static yyconst short int yy_def[395] =
+static yyconst short int yy_def[403] =
     {   0,
-      373,    1,  373,    3,    1,    1,  374,  374,  375,  375,
-      376,  376,  373,  377,  373,  373,  373,  378,  379,  373,
-      373,  380,  373,  381,  377,  377,  377,  373,  373,  373,
-       30,   30,   30,   30,  377,  377,  378,   30,   30,   30,
-       30,   30,  382,  373,  383,  373,  384,  385,  382,  382,
-      382,  373,   52,   52,   52,   52,  382,  382,  373,  386,
-      373,  386,  386,  373,  373,  373,  387,  388,  389,  388,
-      373,  388,  373,  390,  377,  377,  373,  373,  378,  373,
-      379,  379,  380,  380,  381,  391,  377,  377,  377,  377,
-      377,  377,   30,   30,   30,   30,   30,  377,  373,  377,
-
-      378,  377,  377,  377,  377,  377,  382,  382,  373,  383,
-      383,  384,  384,  385,  382,  382,  382,  382,  382,  382,
-       52,   52,   52,   52,   52,  382,  382,  373,  386,  386,
-      373,  373,  373,  373,  387,  388,  388,  389,  392,  389,
-      373,  373,  388,  388,  373,  377,  377,  377,   30,   30,
-       30,   30,   30,   30,  377,  378,  377,  377,  377,  377,
-      377,  382,  382,  382,   52,   52,   52,   52,   52,   52,
-      382,  388,  373,  392,  389,  389,  377,  377,  377,  377,
-      377,   30,   30,   30,   30,   30,   30,  377,  378,  377,
-      377,  377,  382,  382,  382,  382,  382,   52,   52,   52,
-
-       52,   52,   52,  382,  392,  377,  377,  377,  373,  373,
-       30,   30,   30,   30,   30,  377,  378,  377,  377,  382,
-      382,  382,   52,   52,   52,   52,   52,  382,  377,  377,
-      377,  377,  377,   30,   30,   30,   30,  373,  373,  377,
-      378,  377,  377,  382,  382,  382,  382,  382,   52,   52,
-       52,   52,  382,  377,  377,  377,  373,  373,   30,   30,
-      373,  373,  377,  378,  377,  377,  382,  382,  382,   52,
-       52,  382,  377,  377,  377,  377,  377,   30,  373,  373,
-      377,  378,  377,  377,  382,  382,  382,  382,  382,   52,
-      382,  377,  377,  377,  377,  373,  373,  393,  377,  394,
-
-      382,  382,  382,  382,  377,  377,  377,  377,  377,  377,
-      377,  393,  393,  373,  377,  394,  394,  382,  382,  382,
-      382,  382,  382,  382,  377,  377,  377,  377,  377,  382,
-      382,  382,  382,  382,  377,  377,  377,  377,  377,  382,
-      382,  382,  382,  382,  377,  377,  377,  382,  382,  382,
-      377,  377,  377,  377,  377,  382,  382,  382,  382,  382,
-      377,  377,  377,  382,  382,  382,  377,  377,  377,  382,
-      382,  382,    0,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373
-
+      381,    1,  381,    3,    1,    1,  382,  382,  383,  383,
+      384,  384,  381,  385,  381,  381,  381,  386,  387,  381,
+      381,  388,  381,  389,  385,  385,  385,  381,  381,  381,
+       30,   30,   30,   30,  385,  385,  386,   30,   30,   30,
+       30,   30,  390,  381,  391,  381,  392,  393,  390,  390,
+      390,  381,   52,   52,   52,   52,  390,  390,  381,  394,
+      381,  394,  394,  381,  381,  381,  395,  396,  397,  396,
+      381,  396,  381,  398,  385,  385,  381,  381,  386,  381,
+      387,  387,  388,  388,  389,  399,  385,  385,  385,  385,
+      385,  385,   30,   30,   30,   30,   30,  385,  381,  385,
+
+      386,  385,  385,  385,  385,  385,  390,  390,  381,  391,
+      391,  392,  392,  393,  390,  390,  390,  390,  390,  390,
+       52,   52,   52,   52,   52,  390,  390,  381,  394,  394,
+      381,  381,  381,  381,  395,  396,  396,  397,  400,  397,
+      381,  381,  396,  396,  381,  385,  385,  385,   30,   30,
+       30,   30,   30,   30,  385,  386,  385,  385,  385,  385,
+      385,  390,  390,  390,   52,   52,   52,   52,   52,   52,
+      390,  396,  381,  400,  397,  397,  385,  385,  385,  385,
+      385,   30,   30,   30,   30,   30,   30,  385,  386,  385,
+      385,  385,  390,  390,  390,  390,  390,   52,   52,   52,
+
+       52,   52,   52,  390,  400,  385,  385,  385,  381,  381,
+       30,   30,   30,   30,   30,  385,  386,  385,  385,  390,
+      390,  390,   52,   52,   52,   52,   52,  390,  385,  385,
+      385,  385,  385,   30,   30,   30,   30,   30,  385,  386,
+      385,  385,  390,  390,  390,  390,  390,   52,   52,   52,
+       52,   52,  390,  385,  385,  385,   30,  381,  381,   30,
+       30,  381,  381,  385,  386,  385,  385,  390,  390,  390,
+       52,   52,   52,  390,  385,  385,  385,  385,  385,  381,
+      381,   30,   30,  385,  386,  385,  385,  390,  390,  390,
+      390,  390,   52,   52,  390,  385,  385,  385,  385,   30,
+
+      381,  381,  401,  385,  402,  390,  390,  390,  390,   52,
+      385,  385,  385,  385,  385,  385,  385,  381,  381,  401,
+      401,  381,  385,  402,  402,  390,  390,  390,  390,  390,
+      390,  390,  385,  385,  385,  385,  385,  390,  390,  390,
+      390,  390,  385,  385,  385,  385,  385,  390,  390,  390,
+      390,  390,  385,  385,  385,  390,  390,  390,  385,  385,
+      385,  385,  385,  390,  390,  390,  390,  390,  385,  385,
+      385,  390,  390,  390,  385,  385,  385,  390,  390,  390,
+        0,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+
+      381,  381
     } ;
 
-static yyconst short int yy_nxt[3119] =
+static yyconst short int yy_nxt[3295] =
     {   0,
        14,   15,   16,   17,   14,   18,   19,   20,   21,   14,
        22,   23,   14,   14,   24,   25,   26,   27,   25,   25,
        25,   25,   28,   29,   21,   30,   30,   30,   30,   31,
-       30,   32,   30,   33,   30,   30,   34,   30,   30,   30,
-       35,   14,   14,   14,   14,   14,   14,   14,   14,   14,
-       14,   14,   14,   14,   36,   14,   14,   37,   59,   59,
-       76,  108,   21,   21,   21,   21,  109,  134,   99,  109,
-      109,  109,  109,  109,  109,  109,  100,  127,   76,   38,
-       39,  150,   40,  144,   99,  151,   41,  243,  152,   42,
-       43,   15,   16,   17,   43,   44,   45,   21,   46,   43,
-
-       47,   23,   43,   43,   48,   49,   50,   51,   49,   49,
-       49,   49,   28,   29,   21,   52,   52,   52,   52,   53,
-       52,   54,   52,   55,   52,   52,   56,   52,   52,   52,
-       57,   43,   43,   43,   43,   43,   43,   43,   43,   43,
-       43,   43,   43,   43,   58,   43,   43,   15,   61,   62,
-      141,   63,   15,   61,   62,   80,   63,   64,  142,  135,
-       86,   88,   64,   80,   86,   86,   86,  137,   64,   63,
-       86,   86,   76,   64,   63,  137,   76,  155,   86,  134,
-       99,   86,   86,   86,   76,   76,   65,   86,   76,   76,
-      159,   65,   15,   16,   17,  157,   18,   87,  190,   86,
-
-      160,  101,   76,  115,  146,  147,  148,  146,  146,  146,
-      146,   76,  156,   76,  188,   87,  108,  161,   76,  109,
-      158,  171,  109,  109,  109,  109,  109,  109,  109,   76,
-      108,   66,   67,   67,   67,   67,   67,   67,   67,   67,
+       30,   30,   32,   33,   30,   34,   30,   30,   30,   30,
+       30,   30,   35,   14,   14,   14,   14,   14,   14,   14,
+       14,   14,   14,   14,   14,   14,   36,   14,   14,   37,
+       59,   59,   76,  108,   21,   21,   21,   21,  109,  134,
+       99,  109,  109,  109,  109,  109,  109,  109,  100,  127,
+       76,   38,   39,   76,   40,  144,   99,  108,  155,  135,
+       41,  157,  171,   42,   43,   15,   16,   17,   43,   44,
+
+       45,   21,   46,   43,   47,   23,   43,   43,   48,   49,
+       50,   51,   49,   49,   49,   49,   28,   29,   21,   52,
+       52,   52,   52,   53,   52,   52,   54,   55,   52,   56,
+       52,   52,   52,   52,   52,   52,   57,   43,   43,   43,
+       43,   43,   43,   43,   43,   43,   43,   43,   43,   43,
+       58,   43,   43,   15,   61,   62,   80,   63,   15,   61,
+       62,   80,   63,   64,  141,   80,   86,  142,   64,   88,
+       86,   86,   86,  241,   64,   63,   86,   86,  173,   64,
+       63,  139,  139,  137,  136,  139,  137,   86,  134,   99,
+       76,  139,   86,   86,   65,  116,   86,   86,   76,   65,
+
+       15,   16,   17,  139,   18,   87,   76,  156,   76,  101,
+       76,  115,  151,   86,  217,  152,  174,  158,  153,  160,
+      159,   76,  140,  108,  108,  134,   99,  161,   80,   76,
+       76,   87,  134,   99,  146,  147,  148,  146,  146,  146,
+      146,   66,   67,   67,   67,   67,   67,   67,   67,   67,
        67,   67,   67,   67,   67,   67,   67,   67,   15,   16,
-       17,   88,   18,   89,   89,   89,   89,   89,   89,  162,
-      163,  164,  162,  162,  162,  162,  166,  134,   99,   80,
-      167,  134,   99,  168,  134,   99,   76,   76,   76,  191,
-       76,  190,  116,  173,  108,  134,   99,   66,   67,   67,
-       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       17,   76,   18,   88,  325,   89,   89,   89,   89,   89,
+       89,  109,  189,  108,  109,  109,  109,  109,  109,  109,
+      109,  167,  134,   99,  168,   76,   76,  169,  191,  134,
+       99,  139,   76,  175,   76,  205,  192,  188,   76,   66,
 
-       67,   67,   67,   67,   15,   16,   17,   69,   18,  108,
-      108,  189,  136,   70,   71,   72,  136,  139,  139,  174,
-      136,  139,  136,   76,  137,  192,   73,  139,   86,  108,
-      177,  209,   86,   86,  136,   76,   76,  218,  139,  139,
-      175,  204,  205,   74,   15,   16,   17,   69,   18,   86,
-      190,   80,  210,   70,   71,   72,  140,   76,  139,  139,
-      317,  172,  139,   76,  209,  115,   73,  116,  139,  117,
-      117,  117,  117,  117,  117,   76,  176,  173,  174,  219,
-      139,  216,   76,   74,   88,  210,   89,   89,   89,   89,
-       89,   89,   89,  242,  108,  108,  190,  140,  217,  193,
-
-       86,  228,  209,  238,   86,   80,  298,   80,   76,  229,
-       86,   76,   88,  174,   90,   90,   90,   90,   90,   90,
-       90,   86,   86,  210,  239,   76,  108,  139,  139,   76,
-      172,  139,  238,  108,  240,  257,   76,  139,  253,   76,
-       88,  261,   91,   91,   91,   91,   91,   92,   89,  139,
-      238,  139,  139,  239,  175,  139,  258,   76,  314,  241,
-       76,  139,  262,  317,   76,  263,  140,   76,   75,  265,
-      108,  239,   75,  139,   75,  313,  314,   75,   75,  266,
-       75,   75,   75,   93,   93,   93,   93,   93,   93,   93,
-      140,   80,   76,   93,   93,   93,   93,   93,   93,   93,
-
-       93,   93,   93,   93,   93,   93,   93,   93,   76,   93,
-       75,   75,   75,   75,   75,   75,   75,   75,   75,   75,
-       75,   75,   75,   75,   75,   98,   99,   75,   76,   75,
-      108,   75,   75,  290,  264,   75,  206,  207,  208,  206,
-      206,  206,  206,  281,   80,  291,   75,   75,   75,  116,
-      108,  117,  117,  117,  117,  117,  117,  117,  272,  244,
-      177,   76,  178,  178,  178,  178,  178,  178,  220,  221,
-      222,  220,  220,  220,  220,   76,  108,  116,  278,  118,
-      118,  118,  118,  118,  118,  118,  108,   76,  282,  284,
-      273,  271,  193,  108,  194,  194,  194,  194,  194,  194,
-
-      257,  261,  257,  279,  108,  116,  261,  119,  119,  119,
-      119,  119,  120,  117,  279,  296,   76,   76,  285,  108,
-      279,  258,  262,  258,  280,  283,   76,  262,  299,  270,
-      305,  260,  108,  107,  296,  280,  297,  107,  300,  107,
-      300,  280,  107,  107,  108,  107,  107,  107,  121,  121,
-      121,  121,  121,  121,  121,  297,   76,   76,  121,  121,
+       67,   67,   67,   67,   67,   67,   67,   67,   67,   67,
+       67,   67,   67,   67,   67,   67,   15,   16,   17,   69,
+       18,   76,   76,   80,   86,   70,   71,   72,   86,   86,
+      137,  176,  322,  174,  209,  190,  190,  116,   73,  117,
+      117,  117,  117,  117,  117,   86,  162,  163,  164,  162,
+      162,  162,  162,  177,  173,  210,   76,   74,   15,   16,
+       17,   69,   18,  115,  108,   76,  108,   70,   71,   72,
+      190,  136,  219,  108,   86,  136,  204,   76,   86,  240,
+       73,  136,   76,  216,   86,   76,  218,  139,  139,  209,
+      172,  139,  174,  136,  193,   86,   86,  139,   76,   74,
+
+       88,  209,   89,   89,   89,   89,   89,   89,   89,  139,
+      210,   76,  190,  108,  229,   76,  239,  139,  139,  228,
+      172,  139,  210,  108,  242,  258,  108,  139,  140,   76,
+       88,  253,   90,   90,   90,   90,   90,   90,   90,  139,
+      262,   76,   80,   76,   76,  325,  259,  139,  139,  264,
+      175,  139,  243,  266,  275,  303,   80,  139,  140,   76,
+       88,  263,   91,   91,   91,   91,   91,   92,   89,  139,
+      206,  207,  208,  206,  206,  206,  206,   76,  108,  108,
+      258,  108,   76,   76,  310,  288,  274,  265,  140,   76,
+       75,  262,  267,  280,   75,   76,   75,   76,  284,   75,
+
+       75,  259,   75,   75,   75,   93,   93,   93,   93,   93,
+       93,   93,  263,  108,  281,   93,   93,   93,   93,   93,
+       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
+       93,   93,   76,   93,   75,   75,   75,   75,   75,   75,
+       75,   75,   75,   75,   75,   75,   75,   75,   75,   98,
+       99,   75,  108,   75,   76,   75,   75,  300,  177,   75,
+      178,  178,  178,  178,  178,  178,   80,  295,  287,  294,
+       75,   75,   75,  116,   76,  117,  117,  117,  117,  117,
+      117,  117,  286,  258,   76,  293,  304,   76,  220,  221,
+      222,  220,  220,  220,  220,  254,  255,  256,  254,  254,
+
+      254,  254,  108,  116,  259,  118,  118,  118,  118,  118,
+      118,  118,  285,  262,  193,  108,  194,  194,  194,  194,
+      194,  194,   76,  229,  283,  230,  230,  230,  230,  230,
+      230,  311,  108,  116,  263,  119,  119,  119,  119,  119,
+      120,  117,   76,  108,  268,  269,  270,  268,  268,  268,
+      268,  282,   76,  280,  321,  322,  323,  321,  322,  273,
+       76,  272,  108,  107,  280,  301,  301,  107,  271,  107,
+      261,  108,  107,  107,  281,  107,  107,  107,  121,  121,
+      121,  121,  121,  121,  121,  281,  302,  302,  121,  121,
       121,  121,  121,  121,  121,  121,  121,  121,  121,  121,
-      121,  121,  121,  108,  121,  107,  107,  107,  107,  107,
+
+      121,  121,  121,  121,  121,  108,  121,  107,  107,  107,
       107,  107,  107,  107,  107,  107,  107,  107,  107,  107,
-      126,   99,  107,  259,  107,   76,  107,  107,  296,  252,
-
-      107,  254,  255,  256,  254,  254,  254,  254,  251,  315,
-      250,  107,  107,  107,  131,   99,  132,  249,  133,  297,
-      313,  314,  132,  237,  133,  229,   76,  230,  230,  230,
-      230,  230,  230,  236,  235,  133,  133,  267,  268,  269,
-      267,  267,  267,  267,  244,  234,  245,  245,  245,  245,
-      245,  245,   76,  133,   75,  227,   75,  226,   75,  318,
-       75,   75,  108,  225,   75,  224,  223,  215,  214,  335,
-      305,  108,  329,  329,  329,   75,   75,   75,   81,  213,
-       81,  212,   81,  340,   81,   81,  108,  211,   81,  292,
-      293,  294,  295,  292,  292,  292,   76,   76,  137,   81,
-
-       81,   81,   83,  203,   83,  202,   83,  351,   83,   83,
-      108,  356,   83,  201,   76,  273,  274,  274,  274,  274,
-      274,  274,  200,   83,   83,   83,   85,  199,   75,  198,
-       85,  187,   75,   75,   76,  186,   85,  185,  108,  184,
-      183,   76,  182,  137,  137,  130,  128,   85,   85,   75,
-       88,  170,   89,   89,   89,   89,   89,   89,   89,  169,
-      165,  113,  301,  302,  303,  304,  301,  301,  301,  285,
-      286,  286,  286,  286,  286,  286,  111,   76,   88,  108,
-       89,   89,   89,   89,   89,   89,   89,  108,  318,  154,
-      334,  334,  334,  153,  149,  108,  325,  326,  327,  325,
-
-      325,  325,  325,  145,   84,   76,  107,   82,  107,   80,
-      107,   78,  107,  107,   77,  108,  107,   76,  137,  130,
-      128,   76,  125,  329,  329,  329,  124,  107,  107,  107,
-      110,  123,  110,  122,  110,  113,  110,  110,  111,  108,
-      110,  330,  331,  332,  330,  330,  330,  330,   76,  106,
-      105,  110,  110,  110,  112,  104,  112,  103,  112,  102,
-      112,  112,   97,   96,  112,   95,  108,  328,  328,  328,
-      328,  328,  328,  328,   94,  112,  112,  112,  114,   84,
-      107,   82,  114,   80,  107,  107,   78,   77,  114,   76,
-      373,  373,   76,  373,  373,  373,  334,  334,  334,  114,
-
-      114,  107,  116,  373,  117,  117,  117,  117,  117,  117,
-      117,  373,  373,  373,  333,  333,  333,  333,  333,  333,
-      333,  108,  345,  346,  347,  345,  345,  345,  345,  108,
-      116,  373,  117,  117,  117,  117,  117,  117,  117,  108,
-      373,  373,  373,  373,  373,  373,  335,   76,  336,  336,
-      336,  336,  336,  336,  373,  373,  373,  108,  177,  373,
-      178,  178,  178,  178,  178,  178,  178,  373,  373,  373,
-      373,  373,  373,   76,  348,  349,  350,  348,  348,  348,
-      348,  373,  373,  373,  373,   76,  177,  373,  179,  179,
-      179,  179,  179,  179,  179,  373,  373,  373,  340,  108,
-
-      341,  341,  341,  341,  341,  341,  361,  362,  363,  361,
-      361,  361,  361,   76,  177,  373,  180,  180,  180,  180,
-      180,  181,  178,  373,  373,  108,  373,  373,  373,  373,
-      351,   76,  352,  352,  352,  352,  352,  352,  373,  373,
-      373,   76,  193,  373,  194,  194,  194,  194,  194,  194,
-      194,  373,  373,  373,  373,  373,  373,   76,  364,  365,
-      366,  364,  364,  364,  364,  373,  373,  373,  373,  108,
-      193,  373,  195,  195,  195,  195,  195,  195,  195,  373,
-      373,  373,  356,  108,  357,  357,  357,  357,  357,  357,
-      367,  367,  367,  367,  367,  367,  367,  108,  193,  373,
-
-      196,  196,  196,  196,  196,  197,  194,  373,  373,  108,
-      373,  373,  373,  373,  373,   76,  361,  361,  361,  361,
-      361,  361,  361,  373,  373,  108,  177,  373,  178,  178,
-      178,  178,  178,  178,  178,  373,  373,  373,  373,  373,
-      373,   76,  368,  368,  368,  368,  368,  369,  367,  373,
-      373,  373,  373,   76,  177,  373,  178,  178,  178,  178,
-      178,  178,  178,  373,  373,  373,  373,   76,  370,  370,
-      370,  370,  370,  370,  370,  373,  373,  373,  373,  373,
-      373,   76,  193,  373,  194,  194,  194,  194,  194,  194,
-      194,  373,  373,  108,  364,  364,  364,  364,  364,  364,
-
-      364,  371,  371,  371,  371,  371,  372,  370,  373,  108,
-      193,  373,  194,  194,  194,  194,  194,  194,  194,  108,
-      373,  373,  373,  373,  373,  373,  108,  367,  367,  367,
-      367,  367,  367,  367,  373,  373,  373,  108,  229,  373,
-      230,  230,  230,  230,  230,  230,  230,  373,  373,  373,
-      373,  373,   76,  367,  367,  367,  367,  367,  367,  373,
-      373,  373,  373,  373,  373,   76,  229,  373,  231,  231,
-      231,  231,  231,  231,  231,  373,  373,  373,   76,  370,
-      370,  370,  370,  370,  370,  370,  370,  370,  370,  370,
-      370,  370,  373,   76,  229,  373,  232,  232,  232,  232,
-
-      232,  233,  230,  373,  108,  373,  373,  373,  373,  373,
-      373,  108,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,   76,  244,  373,  245,  245,  245,  245,  245,  245,
-      245,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  108,
-      244,  373,  246,  246,  246,  246,  246,  246,  246,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  108,  244,  373,
-      247,  247,  247,  247,  247,  248,  245,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-
-      373,  373,  373,  373,  373,  108,  229,  373,  230,  230,
-      230,  230,  230,  230,  230,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,   76,  229,  373,  230,  230,  230,  230,
-      230,  230,  230,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,   76,  244,  373,  245,  245,  245,  245,  245,  245,
-      245,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  108,
-      244,  373,  245,  245,  245,  245,  245,  245,  245,  373,
-
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  108,  273,  274,
-      274,  274,  274,  274,  274,  274,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,   76,  273,  275,  275,  275,  275,
-      275,  275,  275,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,   76,  273,  276,  276,  276,  276,  276,  277,  274,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,   76,  285,
-
-      286,  286,  286,  286,  286,  286,  286,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  108,  285,  287,  287,  287,
-      287,  287,  287,  287,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  108,  285,  288,  288,  288,  288,  288,  289,
-      286,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  108,
-      273,  274,  274,  274,  274,  274,  274,  274,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-
-      373,  373,  373,  373,  373,  373,   76,  273,  274,  274,
-      274,  274,  274,  274,  274,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,   76,  285,  286,  286,  286,  286,  286,
-      286,  286,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      108,  285,  286,  286,  286,  286,  286,  286,  286,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  108,  305,  373,
-      306,  306,  306,  306,  306,  306,  306,  373,  373,  373,
-
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,   76,  305,  373,  307,  307,
-      307,  307,  307,  307,  307,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,   76,  305,  373,  308,  308,  308,  308,
-      308,  309,  310,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,   76,  305,  373,  311,  311,  311,  306,  306,  306,
-      306,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,   76,
-
-      318,  373,  319,  319,  319,  319,  319,  319,  319,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  108,  318,  373,
-      320,  320,  320,  320,  320,  320,  320,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  108,  318,  373,  321,  321,
-      321,  321,  321,  322,  323,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  108,  318,  373,  324,  324,  324,  319,
-      319,  319,  319,  373,  373,  373,  373,  373,  373,  373,
-
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  108,  305,  373,  310,  310,  310,  310,  310,  310,
-      310,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,   76,
-      305,  373,  310,  310,  310,  310,  310,  310,  310,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,   76,  305,  373,
-      310,  310,  310,  310,  310,  310,  328,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,   76,  305,  373,  328,  328,
-
-      328,  328,  328,  328,  328,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,   76,  316,  373,  316,  373,  316,  373,
-      316,  316,  373,  373,  316,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  316,  316,  316,  318,  373,
-      323,  323,  323,  323,  323,  323,  323,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  108,  318,  373,  323,  323,
-      323,  323,  323,  323,  323,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-
-      373,  373,  373,  108,  318,  373,  323,  323,  323,  323,
-      323,  323,  333,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  108,  318,  373,  333,  333,  333,  333,  333,  333,
-      333,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  108,
-      335,  373,  336,  336,  336,  336,  336,  336,  336,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,   76,  335,  373,
-      337,  337,  337,  337,  337,  337,  337,  373,  373,  373,
-
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,   76,  335,  373,  338,  338,
-      338,  338,  338,  339,  336,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,   76,  340,  373,  341,  341,  341,  341,
-      341,  341,  341,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  108,  340,  373,  342,  342,  342,  342,  342,  342,
-      342,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  108,
-
-      340,  373,  343,  343,  343,  343,  343,  344,  341,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  108,  335,  373,
-      336,  336,  336,  336,  336,  336,  336,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,   76,  335,  373,  336,  336,
-      336,  336,  336,  336,  336,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,   76,  340,  373,  341,  341,  341,  341,
-      341,  341,  341,  373,  373,  373,  373,  373,  373,  373,
-
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  108,  340,  373,  341,  341,  341,  341,  341,  341,
-      341,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  108,
-      351,  373,  352,  352,  352,  352,  352,  352,  352,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,   76,  351,  373,
-      353,  353,  353,  353,  353,  353,  353,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,   76,  351,  373,  354,  354,
-
-      354,  354,  354,  355,  352,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,   76,  356,  373,  357,  357,  357,  357,
-      357,  357,  357,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  108,  356,  373,  358,  358,  358,  358,  358,  358,
-      358,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  108,
-      356,  373,  359,  359,  359,  359,  359,  360,  357,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-
-      373,  373,  373,  373,  373,  373,  373,  108,  351,  373,
-      352,  352,  352,  352,  352,  352,  352,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,   76,  351,  373,  352,  352,
-      352,  352,  352,  352,  352,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,   76,  356,  373,  357,  357,  357,  357,
-      357,  357,  357,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  108,  356,  373,  357,  357,  357,  357,  357,  357,
-
-      357,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  108,
-       60,   60,   60,   60,   60,   60,   60,   21,   21,   21,
-       21,   21,   21,   21,   68,   68,   68,   68,   68,   68,
-       68,   75,  373,  373,  373,  373,   75,   75,   79,   79,
-       79,   79,   79,   79,   79,   81,  373,  373,  373,  373,
-       81,   81,   83,  373,  373,  373,  373,   83,   83,   85,
-      373,   85,  373,  373,   85,   85,  107,  373,  373,  373,
-      373,  107,  107,  110,  373,  373,  373,  373,  110,  110,
-      112,  373,  373,  373,  373,  112,  112,  114,  373,  114,
-
-      373,  373,  114,  114,  129,  373,  129,  129,  373,  373,
-      129,  136,  373,  136,  373,  136,  136,  136,  138,  138,
-      138,  138,  138,  138,  138,  143,  143,  143,  143,  143,
-      143,  143,   86,  373,   86,  373,  373,   86,   86,  139,
-      139,  139,  139,  139,  139,  139,  312,  312,  312,  312,
-      312,  312,  312,  316,  373,  373,  373,  373,  316,  316,
-       13,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373
+      107,  107,  126,   99,  107,  260,  107,  257,  107,  107,
+      318,  243,  107,  244,  244,  244,  244,  244,  244,  305,
+      301,  305,  318,  107,  107,  107,  131,   99,  132,  252,
+      133,  319,  251,  250,  132,  249,  133,  326,  248,   76,
+      108,  302,  311,  319,  337,  337,  337,  133,  133,  296,
+      297,  298,  299,  296,  296,  296,  275,  276,  276,  276,
+      276,  276,  276,  238,  318,  237,  108,  133,   75,  236,
+       75,   76,   75,  235,   75,   75,   76,  234,   75,  227,
+
+      226,  343,  348,  359,   76,  319,  225,  224,  364,   75,
+       75,   75,   81,  223,   81,  215,   81,  214,   81,   81,
+      213,  212,   81,  306,  307,  308,  309,  306,  306,  306,
+       76,  108,   76,   81,   81,   81,   83,  108,   83,  211,
+       83,  137,   83,   83,  203,  202,   83,  201,  200,  326,
+      108,  342,  342,  342,  199,  198,  187,   83,   83,   83,
+       85,  186,   75,  185,   85,  184,   75,   75,  183,  182,
+       85,  288,  289,  289,  289,  289,  289,  289,  108,  137,
+      137,   85,   85,   75,   88,  130,   89,   89,   89,   89,
+       89,   89,   89,  128,  170,  166,  337,  337,  337,  108,
+
+      333,  334,  335,  333,  333,  333,  333,  165,  113,  111,
+      108,  154,  150,   76,   88,  149,   89,   89,   89,   89,
+       89,   89,   89,   76,  145,   84,   82,   76,  338,  339,
+      340,  338,  338,  338,  338,  336,  336,  336,  336,  336,
+      336,  336,   80,   76,  107,   78,  107,   77,  107,   76,
+      107,  107,  137,  130,  107,  108,  128,  125,  124,  342,
+      342,  342,   76,  123,  122,  107,  107,  107,  110,  113,
+      110,  111,  110,  108,  110,  110,  106,  105,  110,  341,
+      341,  341,  341,  341,  341,  341,  108,  104,  103,  110,
+      110,  110,  112,  102,  112,   97,  112,   96,  112,  112,
+
+       95,   94,  112,   84,   82,  343,  108,  344,  344,  344,
+      344,  344,  344,  112,  112,  112,  114,   80,  107,   78,
+      114,   77,  107,  107,   76,  381,  114,  353,  354,  355,
+      353,  353,  353,  353,   76,  381,  381,  114,  114,  107,
+      116,  381,  117,  117,  117,  117,  117,  117,  117,  381,
+      381,  381,  381,  381,   76,  356,  357,  358,  356,  356,
+      356,  356,  369,  370,  371,  369,  369,  369,  369,  108,
+      116,  381,  117,  117,  117,  117,  117,  117,  117,  381,
+      381,  348,  108,  349,  349,  349,  349,  349,  349,   76,
+      359,  381,  360,  360,  360,  360,  360,  360,  381,  108,
+
+      177,  381,  178,  178,  178,  178,  178,  178,  178,  381,
+      108,  381,  372,  373,  374,  372,  372,  372,  372,   76,
+      364,  381,  365,  365,  365,  365,  365,  365,  381,   76,
+      177,  381,  179,  179,  179,  179,  179,  179,  179,  108,
+      381,  381,  375,  375,  375,  375,  375,  375,  375,  108,
+      369,  369,  369,  369,  369,  369,  369,  381,  381,   76,
+      177,  381,  180,  180,  180,  180,  180,  181,  178,   76,
+      381,  381,  381,  381,  381,  381,  381,   76,  376,  376,
+      376,  376,  376,  377,  375,  381,  381,  381,  381,   76,
+      193,  381,  194,  194,  194,  194,  194,  194,  194,  381,
+
+      381,  381,  381,  381,  381,   76,  378,  378,  378,  378,
+      378,  378,  378,  381,  381,  381,  381,  381,  381,  108,
+      193,  381,  195,  195,  195,  195,  195,  195,  195,  381,
+      381,  381,  381,  108,  372,  372,  372,  372,  372,  372,
+      372,  379,  379,  379,  379,  379,  380,  378,  381,  108,
+      193,  381,  196,  196,  196,  196,  196,  197,  194,  381,
+      381,  108,  375,  375,  375,  375,  375,  375,  108,  375,
+      375,  375,  375,  375,  375,  375,  381,  381,  381,  108,
+      177,  381,  178,  178,  178,  178,  178,  178,  178,   76,
+      381,  381,  381,  381,  381,  381,   76,  378,  378,  378,
+
+      378,  378,  378,  378,  381,  381,  381,  381,  381,   76,
+      177,  381,  178,  178,  178,  178,  178,  178,  178,  381,
+      381,  381,  381,  381,  108,  378,  378,  378,  378,  378,
+      378,  381,  381,  381,  381,  381,  381,  381,  381,   76,
+      193,  381,  194,  194,  194,  194,  194,  194,  194,  381,
+      381,  381,  108,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
+      193,  381,  194,  194,  194,  194,  194,  194,  194,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
+
+      229,  381,  230,  230,  230,  230,  230,  230,  230,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
+      229,  381,  231,  231,  231,  231,  231,  231,  231,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
+      229,  381,  232,  232,  232,  232,  232,  233,  230,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
+      243,  381,  244,  244,  244,  244,  244,  244,  244,  381,
+
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
+      243,  381,  245,  245,  245,  245,  245,  245,  245,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
+      243,  381,  246,  246,  246,  246,  246,  247,  244,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
+      229,  381,  230,  230,  230,  230,  230,  230,  230,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+
+      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
+      229,  381,  230,  230,  230,  230,  230,  230,  230,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
+      243,  381,  244,  244,  244,  244,  244,  244,  244,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
+      243,  381,  244,  244,  244,  244,  244,  244,  244,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
+
+      275,  276,  276,  276,  276,  276,  276,  276,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,   76,  275,
+      277,  277,  277,  277,  277,  277,  277,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,   76,  275,  278,
+      278,  278,  278,  278,  279,  276,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,   76,  288,  289,  289,
+      289,  289,  289,  289,  289,  381,  381,  381,  381,  381,
+
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  108,  288,  290,  290,  290,
+      290,  290,  290,  290,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  108,  288,  291,  291,  291,  291,
+      291,  292,  289,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  108,  275,  276,  276,  276,  276,  276,
+      276,  276,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+
+      381,  381,   76,  275,  276,  276,  276,  276,  276,  276,
+      276,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,   76,  288,  289,  289,  289,  289,  289,  289,  289,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      108,  288,  289,  289,  289,  289,  289,  289,  289,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
+      311,  381,  312,  312,  312,  312,  312,  312,  312,  381,
+
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
+      311,  381,  313,  313,  313,  313,  313,  313,  313,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
+      311,  381,  314,  314,  314,  314,  314,  315,  316,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
+      311,  381,  317,  317,  317,  312,  312,  312,  312,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+
+      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
+      326,  381,  327,  327,  327,  327,  327,  327,  327,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
+      326,  381,  328,  328,  328,  328,  328,  328,  328,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
+      326,  381,  329,  329,  329,  329,  329,  330,  331,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
+
+      326,  381,  332,  332,  332,  327,  327,  327,  327,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  108,
+      311,  381,  316,  316,  316,  316,  316,  316,  316,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
+      311,  381,  316,  316,  316,  316,  316,  316,  316,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
+      311,  381,  316,  316,  316,  316,  316,  316,  336,  381,
+
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
+      311,  381,  336,  336,  336,  336,  336,  336,  336,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,   76,
+      324,  381,  324,  381,  324,  381,  324,  324,  381,  381,
+      324,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  324,  324,  324,  326,  381,  331,  331,  331,  331,
+      331,  331,  331,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+
+      381,  381,  381,  108,  326,  381,  331,  331,  331,  331,
+      331,  331,  331,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  108,  326,  381,  331,  331,  331,  331,
+      331,  331,  341,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  108,  326,  381,  341,  341,  341,  341,
+      341,  341,  341,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  108,  343,  381,  344,  344,  344,  344,
+
+      344,  344,  344,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,   76,  343,  381,  345,  345,  345,  345,
+      345,  345,  345,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,   76,  343,  381,  346,  346,  346,  346,
+      346,  347,  344,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,   76,  348,  381,  349,  349,  349,  349,
+      349,  349,  349,  381,  381,  381,  381,  381,  381,  381,
+
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  108,  348,  381,  350,  350,  350,  350,
+      350,  350,  350,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  108,  348,  381,  351,  351,  351,  351,
+      351,  352,  349,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  108,  343,  381,  344,  344,  344,  344,
+      344,  344,  344,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+
+      381,  381,  381,   76,  343,  381,  344,  344,  344,  344,
+      344,  344,  344,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,   76,  348,  381,  349,  349,  349,  349,
+      349,  349,  349,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  108,  348,  381,  349,  349,  349,  349,
+      349,  349,  349,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  108,  359,  381,  360,  360,  360,  360,
+
+      360,  360,  360,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,   76,  359,  381,  361,  361,  361,  361,
+      361,  361,  361,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,   76,  359,  381,  362,  362,  362,  362,
+      362,  363,  360,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,   76,  364,  381,  365,  365,  365,  365,
+      365,  365,  365,  381,  381,  381,  381,  381,  381,  381,
+
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  108,  364,  381,  366,  366,  366,  366,
+      366,  366,  366,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  108,  364,  381,  367,  367,  367,  367,
+      367,  368,  365,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  108,  359,  381,  360,  360,  360,  360,
+      360,  360,  360,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+
+      381,  381,  381,   76,  359,  381,  360,  360,  360,  360,
+      360,  360,  360,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,   76,  364,  381,  365,  365,  365,  365,
+      365,  365,  365,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  108,  364,  381,  365,  365,  365,  365,
+      365,  365,  365,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  108,   60,   60,   60,   60,   60,   60,
+
+       60,   21,   21,   21,   21,   21,   21,   21,   68,   68,
+       68,   68,   68,   68,   68,   75,  381,  381,  381,  381,
+       75,   75,   79,   79,   79,   79,   79,   79,   79,   81,
+      381,  381,  381,  381,   81,   81,   83,  381,  381,  381,
+      381,   83,   83,   85,  381,   85,  381,  381,   85,   85,
+      107,  381,  381,  381,  381,  107,  107,  110,  381,  381,
+      381,  381,  110,  110,  112,  381,  381,  381,  381,  112,
+      112,  114,  381,  114,  381,  381,  114,  114,  129,  381,
+      129,  129,  381,  381,  129,  136,  381,  136,  381,  136,
+      136,  136,  138,  138,  138,  138,  138,  138,  138,  143,
+
+      143,  143,  143,  143,  143,  143,   86,  381,   86,  381,
+      381,   86,   86,  139,  139,  139,  139,  139,  139,  139,
+      320,  320,  320,  320,  320,  320,  320,  324,  381,  381,
+      381,  381,  324,  324,   13,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381
+
     } ;
 
-static yyconst short int yy_chk[3119] =
+static yyconst short int yy_chk[3295] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    1,    2,    5,    6,
-       36,   58,    5,    6,    5,    6,   44,   66,   66,   44,
-       44,   44,   44,   44,   44,   44,   36,   58,  219,    2,
-        2,   95,    2,   74,   74,   95,    2,  219,   95,    2,
-        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        1,    1,    1,    1,    1,    1,    1,    1,    1,    2,
+        5,    6,   36,   58,    5,    6,    5,    6,   44,   66,
+       66,   44,   44,   44,   44,   44,   44,   44,   36,   58,
+      102,    2,    2,  100,    2,   74,   74,  127,  100,  395,
+        2,  102,  127,    2,    3,    3,    3,    3,    3,    3,
 
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
-        3,    3,    3,    3,    3,    3,    3,    7,    7,    7,
-       70,    7,    8,    8,    8,   37,    8,    7,   72,  387,
-       24,   89,    8,  101,   24,   24,   48,   70,    7,    7,
-       48,   48,  100,    8,    8,   72,  104,  100,   85,   98,
-       98,   24,   85,   85,  102,  161,    7,   48,   89,  105,
-      104,    8,    9,    9,    9,  102,    9,   24,  161,   85,
-
-      105,   37,  155,   48,   88,   88,   88,   88,   88,   88,
-       88,  106,  101,  103,  155,   85,  127,  106,   98,  109,
-      103,  127,  109,  109,  109,  109,  109,  109,  109,   88,
-      370,    9,    9,    9,    9,    9,    9,    9,    9,    9,
+        3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
+        3,    3,    3,    7,    7,    7,  101,    7,    8,    8,
+        8,   37,    8,    7,   70,  189,   24,   72,    8,   89,
+       24,   24,   48,  218,    7,    7,   48,   48,  139,    8,
+        8,   69,   69,   70,   69,   69,   72,   24,   98,   98,
+      218,   69,   85,   48,    7,  117,   85,   85,   89,    8,
+
+        9,    9,    9,   69,    9,   24,  104,  101,  105,   37,
+      103,   48,   96,   85,  189,   96,  139,  103,   96,  105,
+      104,  106,   69,  378,  117,  131,  131,  106,  156,   98,
+      375,   85,  126,  126,   88,   88,   88,   88,   88,   88,
+       88,    9,    9,    9,    9,    9,    9,    9,    9,    9,
         9,    9,    9,    9,    9,    9,    9,    9,   10,   10,
-       10,   92,   10,   92,   92,   92,   92,   92,   92,  116,
-      116,  116,  116,  116,  116,  116,  123,  131,  131,  156,
-      123,  126,  126,  123,  134,  134,  157,  158,   92,  158,
-      367,  157,  117,  139,  116,  144,  144,   10,   10,   10,
-       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
-
-       10,   10,   10,   10,   11,   11,   11,   11,   11,  117,
-      126,  156,  137,   11,   11,   11,  137,   69,   69,  139,
-       69,   69,  137,  160,  144,  160,   11,   69,  114,  171,
-      178,  182,  114,  114,  137,  159,  190,  190,  140,   69,
-      140,  171,  174,   11,   12,   12,   12,   12,   12,  114,
-      159,  189,  182,   12,   12,   12,   69,  178,  138,  138,
-      316,  138,  138,  191,  198,  114,   12,  120,  138,  120,
-      120,  120,  120,  120,  120,  188,  140,  205,  174,  191,
-      138,  188,  192,   12,   25,  198,   25,   25,   25,   25,
-       25,   25,   25,  218,  120,  204,  192,  138,  189,  194,
-
-      145,  204,  209,  215,  145,  217,  282,  282,  218,  230,
-      145,   25,   26,  205,   26,   26,   26,   26,   26,   26,
-       26,  145,  145,  209,  215,  315,  194,  175,  175,  216,
-      175,  175,  227,  228,  216,  234,  230,  175,  228,   26,
-       27,  237,   27,   27,   27,   27,   27,   27,   27,  175,
-      238,  176,  176,  227,  176,  176,  234,  240,  312,  217,
-      242,  176,  237,  300,  243,  240,  175,   27,   30,  242,
-      291,  238,   30,  176,   30,  298,  298,   30,   30,  243,
-       30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
-      176,  241,  281,   30,   30,   30,   30,   30,   30,   30,
+       10,   88,   10,   92,  324,   92,   92,   92,   92,   92,
+       92,  109,  156,  126,  109,  109,  109,  109,  109,  109,
+      109,  124,  134,  134,  124,  155,  158,  124,  158,  144,
+      144,  140,   92,  140,  160,  174,  160,  155,  323,   10,
 
+       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
+       10,   10,   10,   10,   10,   10,   11,   11,   11,   11,
+       11,  159,  161,  217,  114,   11,   11,   11,  114,  114,
+      144,  140,  320,  174,  182,  161,  159,  120,   11,  120,
+      120,  120,  120,  120,  120,  114,  116,  116,  116,  116,
+      116,  116,  116,  178,  205,  182,  191,   11,   12,   12,
+       12,   12,   12,  114,  171,  157,  120,   12,   12,   12,
+      157,  137,  191,  116,  145,  137,  171,  188,  145,  217,
+       12,  137,  178,  188,  145,  190,  190,  138,  138,  198,
+      138,  138,  205,  137,  194,  145,  145,  138,  192,   12,
+
+       25,  209,   25,   25,   25,   25,   25,   25,   25,  138,
+      198,  216,  192,  204,  230,  219,  216,  175,  175,  204,
+      175,  175,  209,  194,  219,  235,  228,  175,  138,   25,
+       26,  228,   26,   26,   26,   26,   26,   26,   26,  175,
+      238,  239,  240,  230,  241,  305,  235,  176,  176,  239,
+      176,  176,  244,  241,  276,  285,  285,  176,  175,   26,
+       27,  238,   27,   27,   27,   27,   27,   27,   27,  176,
+      177,  177,  177,  177,  177,  177,  177,  242,  253,  295,
+      249,  244,  276,  264,  293,  289,  253,  240,  176,   27,
+       30,  252,  242,  257,   30,  284,   30,  177,  264,   30,
+
+       30,  249,   30,   30,   30,   30,   30,   30,   30,   30,
+       30,   30,  252,  289,  257,   30,   30,   30,   30,   30,
        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
        30,   30,   30,   30,   30,   30,   30,   30,   30,   30,
-       30,   30,   30,   30,   30,   35,   35,   35,  263,   35,
-      272,   35,   35,  270,  241,   35,  177,  177,  177,  177,
-      177,  177,  177,  263,  264,  272,   35,   35,   35,   49,
-      253,   49,   49,   49,   49,   49,   49,   49,  253,  245,
-      181,  177,  181,  181,  181,  181,  181,  181,  193,  193,
-      193,  193,  193,  193,  193,  266,   49,   50,  259,   50,
-       50,   50,   50,   50,   50,   50,  245,  181,  264,  266,
-      274,  251,  197,  193,  197,  197,  197,  197,  197,  197,
-
-      249,  252,  257,  260,   50,   51,  261,   51,   51,   51,
-       51,   51,   51,   51,  271,  278,  274,  265,  286,  197,
-      279,  249,  252,  257,  260,  265,  283,  261,  283,  250,
-      306,  236,   51,   52,  290,  271,  278,   52,  284,   52,
-      284,  279,   52,   52,  286,   52,   52,   52,   52,   52,
-       52,   52,   52,   52,   52,  290,  284,  306,   52,   52,
+       30,   30,   30,   30,   30,   30,   30,   30,   30,   35,
+       35,   35,  274,   35,  267,   35,   35,  282,  181,   35,
+      181,  181,  181,  181,  181,  181,  265,  274,  267,  273,
+       35,   35,   35,   49,  266,   49,   49,   49,   49,   49,
+       49,   49,  266,  258,  286,  272,  286,  181,  193,  193,
+      193,  193,  193,  193,  193,  229,  229,  229,  229,  229,
+
+      229,  229,   49,   50,  258,   50,   50,   50,   50,   50,
+       50,   50,  265,  262,  197,  193,  197,  197,  197,  197,
+      197,  197,  229,  233,  261,  233,  233,  233,  233,  233,
+      233,  312,   50,   51,  262,   51,   51,   51,   51,   51,
+       51,   51,  304,  197,  243,  243,  243,  243,  243,  243,
+      243,  260,  233,  271,  303,  303,  304,  321,  321,  251,
+      312,  250,   51,   52,  280,  283,  294,   52,  248,   52,
+      237,  243,   52,   52,  271,   52,   52,   52,   52,   52,
+       52,   52,   52,   52,   52,  280,  283,  294,   52,   52,
        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
+
        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
        52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
-       57,   57,   57,  235,   57,  299,   57,   57,  296,  226,
-
-       57,  229,  229,  229,  229,  229,  229,  229,  225,  299,
-      224,   57,   57,   57,   65,   65,   65,  223,   65,  296,
-      313,  313,   65,  214,   65,  233,  229,  233,  233,  233,
-      233,  233,  233,  213,  212,   65,   65,  244,  244,  244,
-      244,  244,  244,  244,  248,  211,  248,  248,  248,  248,
-      248,  248,  233,   65,   76,  203,   76,  202,   76,  319,
-       76,   76,  244,  201,   76,  200,  199,  187,  186,  336,
-      311,  248,  311,  311,  311,   76,   76,   76,   82,  185,
-       82,  184,   82,  341,   82,   82,  319,  183,   82,  273,
-      273,  273,  273,  273,  273,  273,  336,  311,  172,   82,
-
-       82,   82,   84,  170,   84,  169,   84,  352,   84,   84,
-      341,  357,   84,  168,  273,  277,  277,  277,  277,  277,
-      277,  277,  167,   84,   84,   84,   87,  166,   87,  165,
-       87,  154,   87,   87,  352,  153,   87,  152,  357,  151,
-      150,  277,  149,  143,  136,  130,  128,   87,   87,   87,
-       90,  125,   90,   90,   90,   90,   90,   90,   90,  124,
-      122,  112,  285,  285,  285,  285,  285,  285,  285,  289,
-      289,  289,  289,  289,  289,  289,  110,   90,   91,  107,
-       91,   91,   91,   91,   91,   91,   91,  285,  324,   97,
-      324,  324,  324,   96,   94,  289,  305,  305,  305,  305,
-
-      305,  305,  305,   86,   83,   91,  108,   81,  108,   79,
-      108,   78,  108,  108,   77,  324,  108,   75,   68,   62,
-       59,  305,   56,  329,  329,  329,   55,  108,  108,  108,
-      111,   54,  111,   53,  111,   47,  111,  111,   45,   43,
-      111,  318,  318,  318,  318,  318,  318,  318,  329,   42,
-       41,  111,  111,  111,  113,   40,  113,   39,  113,   38,
-      113,  113,   34,   33,  113,   32,  318,  328,  328,  328,
-      328,  328,  328,  328,   31,  113,  113,  113,  115,   22,
-      115,   19,  115,   18,  115,  115,   17,   15,  115,   14,
-       13,    0,  328,    0,    0,    0,  334,  334,  334,  115,
-
-      115,  115,  118,    0,  118,  118,  118,  118,  118,  118,
-      118,    0,    0,    0,  333,  333,  333,  333,  333,  333,
-      333,  334,  335,  335,  335,  335,  335,  335,  335,  118,
-      119,    0,  119,  119,  119,  119,  119,  119,  119,  333,
-        0,    0,    0,    0,    0,    0,  339,  335,  339,  339,
-      339,  339,  339,  339,    0,    0,    0,  119,  146,    0,
-      146,  146,  146,  146,  146,  146,  146,    0,    0,    0,
-        0,    0,    0,  339,  340,  340,  340,  340,  340,  340,
-      340,    0,    0,    0,    0,  146,  147,    0,  147,  147,
-      147,  147,  147,  147,  147,    0,    0,    0,  344,  340,
-
-      344,  344,  344,  344,  344,  344,  351,  351,  351,  351,
-      351,  351,  351,  147,  148,    0,  148,  148,  148,  148,
-      148,  148,  148,    0,    0,  344,    0,    0,    0,    0,
-      355,  351,  355,  355,  355,  355,  355,  355,    0,    0,
-        0,  148,  162,    0,  162,  162,  162,  162,  162,  162,
-      162,    0,    0,    0,    0,    0,    0,  355,  356,  356,
-      356,  356,  356,  356,  356,    0,    0,    0,    0,  162,
+       52,   52,   57,   57,   57,  236,   57,  234,   57,   57,
+      300,  247,   57,  247,  247,  247,  247,  247,  247,  287,
+      301,  287,  310,   57,   57,   57,   65,   65,   65,  227,
+       65,  300,  226,  225,   65,  224,   65,  327,  223,  287,
+      247,  301,  317,  310,  317,  317,  317,   65,   65,  275,
+      275,  275,  275,  275,  275,  275,  279,  279,  279,  279,
+      279,  279,  279,  215,  318,  214,  327,   65,   76,  213,
+       76,  317,   76,  212,   76,   76,  275,  211,   76,  203,
+
+      202,  344,  349,  360,  279,  318,  201,  200,  365,   76,
+       76,   76,   82,  199,   82,  187,   82,  186,   82,   82,
+      185,  184,   82,  288,  288,  288,  288,  288,  288,  288,
+      344,  349,  360,   82,   82,   82,   84,  365,   84,  183,
+       84,  172,   84,   84,  170,  169,   84,  168,  167,  332,
+      288,  332,  332,  332,  166,  165,  154,   84,   84,   84,
+       87,  153,   87,  152,   87,  151,   87,   87,  150,  149,
+       87,  292,  292,  292,  292,  292,  292,  292,  332,  143,
+      136,   87,   87,   87,   90,  130,   90,   90,   90,   90,
+       90,   90,   90,  128,  125,  123,  337,  337,  337,  292,
+
+      311,  311,  311,  311,  311,  311,  311,  122,  112,  110,
+      107,   97,   95,   90,   91,   94,   91,   91,   91,   91,
+       91,   91,   91,  337,   86,   83,   81,  311,  326,  326,
+      326,  326,  326,  326,  326,  336,  336,  336,  336,  336,
+      336,  336,   79,   91,  108,   78,  108,   77,  108,   75,
+      108,  108,   68,   62,  108,  326,   59,   56,   55,  342,
+      342,  342,  336,   54,   53,  108,  108,  108,  111,   47,
+      111,   45,  111,   43,  111,  111,   42,   41,  111,  341,
+      341,  341,  341,  341,  341,  341,  342,   40,   39,  111,
+      111,  111,  113,   38,  113,   34,  113,   33,  113,  113,
+
+       32,   31,  113,   22,   19,  347,  341,  347,  347,  347,
+      347,  347,  347,  113,  113,  113,  115,   18,  115,   17,
+      115,   15,  115,  115,   14,   13,  115,  343,  343,  343,
+      343,  343,  343,  343,  347,    0,    0,  115,  115,  115,
+      118,    0,  118,  118,  118,  118,  118,  118,  118,    0,
+        0,    0,    0,    0,  343,  348,  348,  348,  348,  348,
+      348,  348,  359,  359,  359,  359,  359,  359,  359,  118,
+      119,    0,  119,  119,  119,  119,  119,  119,  119,    0,
+        0,  352,  348,  352,  352,  352,  352,  352,  352,  359,
+      363,    0,  363,  363,  363,  363,  363,  363,    0,  119,
+
+      146,    0,  146,  146,  146,  146,  146,  146,  146,    0,
+      352,    0,  364,  364,  364,  364,  364,  364,  364,  363,
+      368,    0,  368,  368,  368,  368,  368,  368,    0,  146,
+      147,    0,  147,  147,  147,  147,  147,  147,  147,  364,
+        0,    0,  369,  369,  369,  369,  369,  369,  369,  368,
+      370,  370,  370,  370,  370,  370,  370,    0,    0,  147,
+      148,    0,  148,  148,  148,  148,  148,  148,  148,  369,
+        0,    0,    0,    0,    0,    0,    0,  370,  371,  371,
+      371,  371,  371,  371,  371,    0,    0,    0,    0,  148,
+      162,    0,  162,  162,  162,  162,  162,  162,  162,    0,
+
+        0,    0,    0,    0,    0,  371,  372,  372,  372,  372,
+      372,  372,  372,    0,    0,    0,    0,    0,    0,  162,
       163,    0,  163,  163,  163,  163,  163,  163,  163,    0,
-        0,    0,  360,  356,  360,  360,  360,  360,  360,  360,
-      361,  361,  361,  361,  361,  361,  361,  163,  164,    0,
-
-      164,  164,  164,  164,  164,  164,  164,    0,    0,  360,
-        0,    0,    0,    0,    0,  361,  362,  362,  362,  362,
-      362,  362,  362,    0,    0,  164,  179,    0,  179,  179,
-      179,  179,  179,  179,  179,    0,    0,    0,    0,    0,
-        0,  362,  363,  363,  363,  363,  363,  363,  363,    0,
-        0,    0,    0,  179,  180,    0,  180,  180,  180,  180,
-      180,  180,  180,    0,    0,    0,    0,  363,  364,  364,
-      364,  364,  364,  364,  364,    0,    0,    0,    0,    0,
-        0,  180,  195,    0,  195,  195,  195,  195,  195,  195,
-      195,    0,    0,  364,  365,  365,  365,  365,  365,  365,
-
-      365,  366,  366,  366,  366,  366,  366,  366,    0,  195,
-      196,    0,  196,  196,  196,  196,  196,  196,  196,  365,
-        0,    0,    0,    0,    0,    0,  366,  368,  368,  368,
-      368,  368,  368,  368,    0,    0,    0,  196,  206,    0,
-      206,  206,  206,  206,  206,  206,  206,    0,    0,    0,
-        0,    0,  368,  369,  369,  369,  369,  369,  369,    0,
-        0,    0,    0,    0,    0,  206,  207,    0,  207,  207,
-      207,  207,  207,  207,  207,    0,    0,    0,  369,  371,
-      371,  371,  371,  371,  371,  371,  372,  372,  372,  372,
-      372,  372,    0,  207,  208,    0,  208,  208,  208,  208,
-
-      208,  208,  208,    0,  371,    0,    0,    0,    0,    0,
-        0,  372,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  208,  220,    0,  220,  220,  220,  220,  220,  220,
-      220,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  372,  373,  373,  373,  373,  373,  373,
+      373,  374,  374,  374,  374,  374,  374,  374,    0,  163,
+      164,    0,  164,  164,  164,  164,  164,  164,  164,    0,
+        0,  373,  377,  377,  377,  377,  377,  377,  374,  376,
+      376,  376,  376,  376,  376,  376,    0,    0,    0,  164,
+      179,    0,  179,  179,  179,  179,  179,  179,  179,  377,
+        0,    0,    0,    0,    0,    0,  376,  379,  379,  379,
+
+      379,  379,  379,  379,    0,    0,    0,    0,    0,  179,
+      180,    0,  180,  180,  180,  180,  180,  180,  180,    0,
+        0,    0,    0,    0,  379,  380,  380,  380,  380,  380,
+      380,    0,    0,    0,    0,    0,    0,    0,    0,  180,
+      195,    0,  195,  195,  195,  195,  195,  195,  195,    0,
+        0,    0,  380,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  195,
+      196,    0,  196,  196,  196,  196,  196,  196,  196,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  196,
+
+      206,    0,  206,  206,  206,  206,  206,  206,  206,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  206,
+      207,    0,  207,  207,  207,  207,  207,  207,  207,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  207,
+      208,    0,  208,  208,  208,  208,  208,  208,  208,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  208,
+      220,    0,  220,  220,  220,  220,  220,  220,  220,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,  220,
       221,    0,  221,  221,  221,  221,  221,  221,  221,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  221,  222,    0,
-      222,  222,  222,  222,  222,  222,  222,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  221,
+      222,    0,  222,  222,  222,  222,  222,  222,  222,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  222,
+      231,    0,  231,  231,  231,  231,  231,  231,  231,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,  222,  231,    0,  231,  231,
-      231,  231,  231,  231,  231,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  231,
+      232,    0,  232,  232,  232,  232,  232,  232,  232,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  232,
+      245,    0,  245,  245,  245,  245,  245,  245,  245,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  231,  232,    0,  232,  232,  232,  232,
-      232,  232,  232,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  245,
+      246,    0,  246,  246,  246,  246,  246,  246,  246,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  232,  246,    0,  246,  246,  246,  246,  246,  246,
-      246,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,  246,
-      247,    0,  247,  247,  247,  247,  247,  247,  247,    0,
 
+      254,  254,  254,  254,  254,  254,  254,  254,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  247,  254,  254,
-      254,  254,  254,  254,  254,  254,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,  254,  255,  255,  255,  255,  255,
-      255,  255,  255,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  254,  255,
+      255,  255,  255,  255,  255,  255,  255,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  255,  256,  256,  256,  256,  256,  256,  256,  256,
+        0,    0,    0,    0,    0,    0,    0,  255,  256,  256,
+      256,  256,  256,  256,  256,  256,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,  256,  267,
+        0,    0,    0,    0,    0,    0,  256,  268,  268,  268,
+      268,  268,  268,  268,  268,    0,    0,    0,    0,    0,
 
-      267,  267,  267,  267,  267,  267,  267,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  267,  268,  268,  268,  268,
-      268,  268,  268,  268,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  268,  269,  269,  269,  269,
+      269,  269,  269,  269,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  268,  269,  269,  269,  269,  269,  269,  269,
-      269,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  269,
-      275,  275,  275,  275,  275,  275,  275,  275,    0,    0,
+        0,    0,    0,    0,  269,  270,  270,  270,  270,  270,
+      270,  270,  270,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  270,  277,  277,  277,  277,  277,  277,
+      277,  277,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,  275,  276,  276,  276,
-      276,  276,  276,  276,  276,    0,    0,    0,    0,    0,
+        0,    0,  277,  278,  278,  278,  278,  278,  278,  278,
+      278,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  278,  290,  290,  290,  290,  290,  290,  290,  290,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  276,  287,  287,  287,  287,  287,  287,
-      287,  287,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-      287,  288,  288,  288,  288,  288,  288,  288,  288,    0,
+      290,  291,  291,  291,  291,  291,  291,  291,  291,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  288,  292,    0,
-      292,  292,  292,  292,  292,  292,  292,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  291,
+      296,    0,  296,  296,  296,  296,  296,  296,  296,    0,
 
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  292,  293,    0,  293,  293,
-      293,  293,  293,  293,  293,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  296,
+      297,    0,  297,  297,  297,  297,  297,  297,  297,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  293,  294,    0,  294,  294,  294,  294,
-      294,  294,  294,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  297,
+      298,    0,  298,  298,  298,  298,  298,  298,  298,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  298,
+      299,    0,  299,  299,  299,  299,  299,  299,  299,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  294,  295,    0,  295,  295,  295,  295,  295,  295,
-      295,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  295,
 
-      301,    0,  301,  301,  301,  301,  301,  301,  301,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  299,
+      306,    0,  306,  306,  306,  306,  306,  306,  306,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  301,  302,    0,
-      302,  302,  302,  302,  302,  302,  302,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  306,
+      307,    0,  307,  307,  307,  307,  307,  307,  307,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  302,  303,    0,  303,  303,
-      303,  303,  303,  303,  303,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  307,
+      308,    0,  308,  308,  308,  308,  308,  308,  308,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  303,  304,    0,  304,  304,  304,  304,
-      304,  304,  304,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  308,
 
+      309,    0,  309,  309,  309,  309,  309,  309,  309,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  304,  307,    0,  307,  307,  307,  307,  307,  307,
-      307,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  307,
-      308,    0,  308,  308,  308,  308,  308,  308,  308,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  309,
+      313,    0,  313,  313,  313,  313,  313,  313,  313,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  308,  309,    0,
-      309,  309,  309,  309,  309,  309,  309,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  313,
+      314,    0,  314,  314,  314,  314,  314,  314,  314,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  309,  310,    0,  310,  310,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  314,
+      315,    0,  315,  315,  315,  315,  315,  315,  315,    0,
 
-      310,  310,  310,  310,  310,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  310,  317,    0,  317,    0,  317,    0,
-      317,  317,    0,    0,  317,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  317,  317,  317,  320,    0,
-      320,  320,  320,  320,  320,  320,  320,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  315,
+      316,    0,  316,  316,  316,  316,  316,  316,  316,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  320,  321,    0,  321,  321,
-      321,  321,  321,  321,  321,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,  316,
+      325,    0,  325,    0,  325,    0,  325,  325,    0,    0,
+      325,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,  325,  325,  325,  328,    0,  328,  328,  328,  328,
+      328,  328,  328,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,  321,  322,    0,  322,  322,  322,  322,
-      322,  322,  322,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  328,  329,    0,  329,  329,  329,  329,
+      329,  329,  329,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  322,  323,    0,  323,  323,  323,  323,  323,  323,
-      323,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  323,
-      325,    0,  325,  325,  325,  325,  325,  325,  325,    0,
+        0,    0,    0,  329,  330,    0,  330,  330,  330,  330,
+      330,  330,  330,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  330,  331,    0,  331,  331,  331,  331,
+      331,  331,  331,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  325,  326,    0,
-      326,  326,  326,  326,  326,  326,  326,    0,    0,    0,
+        0,    0,    0,  331,  333,    0,  333,  333,  333,  333,
 
+      333,  333,  333,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  326,  327,    0,  327,  327,
-      327,  327,  327,  327,  327,    0,    0,    0,    0,    0,
+        0,    0,    0,  333,  334,    0,  334,  334,  334,  334,
+      334,  334,  334,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  327,  330,    0,  330,  330,  330,  330,
-      330,  330,  330,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  334,  335,    0,  335,  335,  335,  335,
+      335,  335,  335,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  330,  331,    0,  331,  331,  331,  331,  331,  331,
-      331,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  331,
+        0,    0,    0,  335,  338,    0,  338,  338,  338,  338,
+      338,  338,  338,    0,    0,    0,    0,    0,    0,    0,
 
-      332,    0,  332,  332,  332,  332,  332,  332,  332,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  332,  337,    0,
-      337,  337,  337,  337,  337,  337,  337,    0,    0,    0,
+        0,    0,    0,  338,  339,    0,  339,  339,  339,  339,
+      339,  339,  339,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  337,  338,    0,  338,  338,
-      338,  338,  338,  338,  338,    0,    0,    0,    0,    0,
+        0,    0,    0,  339,  340,    0,  340,  340,  340,  340,
+      340,  340,  340,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  340,  345,    0,  345,  345,  345,  345,
+      345,  345,  345,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  338,  342,    0,  342,  342,  342,  342,
-      342,  342,  342,    0,    0,    0,    0,    0,    0,    0,
 
+        0,    0,    0,  345,  346,    0,  346,  346,  346,  346,
+      346,  346,  346,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  342,  343,    0,  343,  343,  343,  343,  343,  343,
-      343,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  343,
-      345,    0,  345,  345,  345,  345,  345,  345,  345,    0,
+        0,    0,    0,  346,  350,    0,  350,  350,  350,  350,
+      350,  350,  350,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,  345,  346,    0,
-      346,  346,  346,  346,  346,  346,  346,    0,    0,    0,
+        0,    0,    0,  350,  351,    0,  351,  351,  351,  351,
+      351,  351,  351,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  346,  347,    0,  347,  347,
+        0,    0,    0,  351,  353,    0,  353,  353,  353,  353,
 
-      347,  347,  347,  347,  347,    0,    0,    0,    0,    0,
+      353,  353,  353,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  347,  348,    0,  348,  348,  348,  348,
-      348,  348,  348,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  353,  354,    0,  354,  354,  354,  354,
+      354,  354,  354,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  348,  349,    0,  349,  349,  349,  349,  349,  349,
-      349,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  349,
-      350,    0,  350,  350,  350,  350,  350,  350,  350,    0,
+        0,    0,    0,  354,  355,    0,  355,  355,  355,  355,
+      355,  355,  355,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  355,  356,    0,  356,  356,  356,  356,
+      356,  356,  356,    0,    0,    0,    0,    0,    0,    0,
 
-        0,    0,    0,    0,    0,    0,    0,  350,  353,    0,
-      353,  353,  353,  353,  353,  353,  353,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  353,  354,    0,  354,  354,
-      354,  354,  354,  354,  354,    0,    0,    0,    0,    0,
+        0,    0,    0,  356,  357,    0,  357,  357,  357,  357,
+      357,  357,  357,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,  354,  358,    0,  358,  358,  358,  358,
+        0,    0,    0,  357,  358,    0,  358,  358,  358,  358,
       358,  358,  358,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,  358,  359,    0,  359,  359,  359,  359,  359,  359,
-
-      359,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,  359,
-      374,  374,  374,  374,  374,  374,  374,  375,  375,  375,
-      375,  375,  375,  375,  376,  376,  376,  376,  376,  376,
-      376,  377,    0,    0,    0,    0,  377,  377,  378,  378,
-      378,  378,  378,  378,  378,  379,    0,    0,    0,    0,
-      379,  379,  380,    0,    0,    0,    0,  380,  380,  381,
-        0,  381,    0,    0,  381,  381,  382,    0,    0,    0,
-        0,  382,  382,  383,    0,    0,    0,    0,  383,  383,
-      384,    0,    0,    0,    0,  384,  384,  385,    0,  385,
-
-        0,    0,  385,  385,  386,    0,  386,  386,    0,    0,
-      386,  388,    0,  388,    0,  388,  388,  388,  389,  389,
-      389,  389,  389,  389,  389,  390,  390,  390,  390,  390,
-      390,  390,  391,    0,  391,    0,    0,  391,  391,  392,
-      392,  392,  392,  392,  392,  392,  393,  393,  393,  393,
-      393,  393,  393,  394,    0,    0,    0,    0,  394,  394,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-
-      373,  373,  373,  373,  373,  373,  373,  373,  373,  373,
-      373,  373,  373,  373,  373,  373,  373,  373
+        0,    0,    0,  358,  361,    0,  361,  361,  361,  361,
+      361,  361,  361,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,    0,  361,  362,    0,  362,  362,  362,  362,
+      362,  362,  362,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  362,  366,    0,  366,  366,  366,  366,
+      366,  366,  366,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  366,  367,    0,  367,  367,  367,  367,
+      367,  367,  367,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  367,  382,  382,  382,  382,  382,  382,
+
+      382,  383,  383,  383,  383,  383,  383,  383,  384,  384,
+      384,  384,  384,  384,  384,  385,    0,    0,    0,    0,
+      385,  385,  386,  386,  386,  386,  386,  386,  386,  387,
+        0,    0,    0,    0,  387,  387,  388,    0,    0,    0,
+        0,  388,  388,  389,    0,  389,    0,    0,  389,  389,
+      390,    0,    0,    0,    0,  390,  390,  391,    0,    0,
+        0,    0,  391,  391,  392,    0,    0,    0,    0,  392,
+      392,  393,    0,  393,    0,    0,  393,  393,  394,    0,
+      394,  394,    0,    0,  394,  396,    0,  396,    0,  396,
+      396,  396,  397,  397,  397,  397,  397,  397,  397,  398,
+
+      398,  398,  398,  398,  398,  398,  399,    0,  399,    0,
+        0,  399,  399,  400,  400,  400,  400,  400,  400,  400,
+      401,  401,  401,  401,  401,  401,  401,  402,    0,    0,
+        0,    0,  402,  402,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381,  381,  381,  381,  381,  381,  381,
+      381,  381,  381,  381
+
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -1276,7 +1319,7 @@ extern void yyerror               __P((const char *));
 
 #define INDEFS 5
 
-#line 1280 "lex.yy.c"
+#line 1323 "lex.yy.c"
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -1432,7 +1475,7 @@ YY_DECL
 
 #line 106 "parse.lex"
 
-#line 1436 "lex.yy.c"
+#line 1479 "lex.yy.c"
 
        if ( yy_init )
                {
@@ -1484,13 +1527,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 374 )
+                               if ( yy_current_state >= 382 )
                                        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] != 3061 );
+               while ( yy_base[yy_current_state] != 3235 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1734,16 +1777,16 @@ case 20:
 YY_RULE_SETUP
 #line 264 "parse.lex"
 {
-                               LEXTRACE("NOTRACE ");
-                               return(NOTRACE);
+                               LEXTRACE("NOMONITOR ");
+                               return(NOMONITOR);
                        }
        YY_BREAK
 case 21:
 YY_RULE_SETUP
 #line 269 "parse.lex"
 {
-                               LEXTRACE("TRACE ");
-                               return(TRACE);
+                               LEXTRACE("MONITOR ");
+                               return(MONITOR);
                        }
        YY_BREAK
 case 22:
@@ -1967,7 +2010,7 @@ YY_RULE_SETUP
 #line 423 "parse.lex"
 ECHO;
        YY_BREAK
-#line 1971 "lex.yy.c"
+#line 2014 "lex.yy.c"
 
        case YY_END_OF_BUFFER:
                {
@@ -2258,7 +2301,7 @@ static yy_state_type yy_get_previous_state()
                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 >= 374 )
+                       if ( yy_current_state >= 382 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2293,11 +2336,11 @@ yy_state_type yy_current_state;
        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 >= 374 )
+               if ( yy_current_state >= 382 )
                        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 == 373);
+       yy_is_jam = (yy_current_state == 381);
 
        return yy_is_jam ? 0 : yy_current_state;
        }
diff --git a/parse.c b/parse.c
index 38c54a2162470094889d14291bc82ac873468f8a..57f6424e6c00d1b69aee53134ee909df57e4d455 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -193,7 +193,7 @@ sudoers_lookup(pwflag)
                    return(VALIDATE_OK |
                        (no_passwd == TRUE ? FLAG_NOPASS : 0) |
                        (no_execve == TRUE ? FLAG_NOEXEC : 0) |
-                       (trace_cmnd == TRUE ? FLAG_TRACE : 0));
+                       (monitor_cmnd == TRUE ? FLAG_MONITOR : 0));
                } else if ((runas_matches == TRUE && cmnd_matches == FALSE) ||
                    (runas_matches == FALSE && cmnd_matches == TRUE)) {
                    /*
@@ -203,7 +203,7 @@ sudoers_lookup(pwflag)
                    return(VALIDATE_NOT_OK |
                        (no_passwd == TRUE ? FLAG_NOPASS : 0) |
                        (no_execve == TRUE ? FLAG_NOEXEC : 0) |
-                       (trace_cmnd == TRUE ? FLAG_TRACE : 0));
+                       (monitor_cmnd == TRUE ? FLAG_MONITOR : 0));
                }
            }
            top--;
diff --git a/parse.h b/parse.h
index 4f98e9117d1c6e5bd4e5ae6f64529e3433a35911..c5ad4e0a7e60cc64ab054320f54b59c936dc9b7c 100644 (file)
--- a/parse.h
+++ b/parse.h
@@ -33,7 +33,7 @@ struct matchstack {
        int runas;
        int nopass;
        int noexec;
-       int trace;
+       int monitor;
 };
 
 /*
@@ -51,7 +51,7 @@ struct sudo_command {
 #define runas_matches  (match[top-1].runas)
 #define no_passwd      (match[top-1].nopass)
 #define no_execve      (match[top-1].noexec)
-#define trace_cmnd     (match[top-1].trace)
+#define monitor_cmnd   (match[top-1].monitor)
 
 /*
  * Structure containing command matches if "sudo -l" is used.
@@ -65,7 +65,7 @@ struct command_match {
     size_t cmnd_size;
     int nopasswd;
     int noexecve;
-    int trace;
+    int monitor;
 };
 
 /*
index 502597383d1cab03ea07cdcd47db86953a0ccfca..b385153aae2adc54e315662aee83e790064cde68 100644 (file)
--- a/parse.lex
+++ b/parse.lex
@@ -261,14 +261,14 @@ EXEC[[:blank:]]*: {
                                return(EXEC);
                        }
 
-NOTRACE[[:blank:]]*:   {
-                               LEXTRACE("NOTRACE ");
-                               return(NOTRACE);
+NOMONITOR[[:blank:]]*: {
+                               LEXTRACE("NOMONITOR ");
+                               return(NOMONITOR);
                        }
 
-TRACE[[:blank:]]*:     {
-                               LEXTRACE("TRACE ");
-                               return(TRACE);
+MONITOR[[:blank:]]*:   {
+                               LEXTRACE("MONITOR ");
+                               return(MONITOR);
                        }
 
 \+{WORD}               {
index 1c6771f6665171c5b2956194b2df1fa39bc1fac5..fe465d0e1e9c4564002c4c46bc6e1ea48360f309 100644 (file)
@@ -126,7 +126,7 @@ int top = 0, stacksize = 0;
        match[top].runas  = UNSPEC; \
        match[top].nopass = def_authenticate ? UNSPEC : TRUE; \
        match[top].noexec = def_noexec ? TRUE : UNSPEC; \
-       match[top].trace  = def_trace ? TRUE : UNSPEC; \
+       match[top].monitor  = def_monitor ? TRUE : UNSPEC; \
        top++; \
     } while (0)
 
@@ -136,13 +136,13 @@ int top = 0, stacksize = 0;
            while ((stacksize += STACKINCREMENT) < top); \
            match = (struct matchstack *) erealloc3(match, stacksize, sizeof(struct matchstack)); \
        } \
-       match[top].user   = match[top-1].user; \
-       match[top].cmnd   = match[top-1].cmnd; \
-       match[top].host   = match[top-1].host; \
-       match[top].runas  = match[top-1].runas; \
-       match[top].nopass = match[top-1].nopass; \
-       match[top].noexec = match[top-1].noexec; \
-       match[top].trace  = match[top-1].trace; \
+       match[top].user     = match[top-1].user; \
+       match[top].cmnd     = match[top-1].cmnd; \
+       match[top].host     = match[top-1].host; \
+       match[top].runas    = match[top-1].runas; \
+       match[top].nopass   = match[top-1].nopass; \
+       match[top].noexec   = match[top-1].noexec; \
+       match[top].monitor  = match[top-1].monitor; \
        top++; \
     } while (0)
 
@@ -247,8 +247,8 @@ yyerror(s)
 %token <tok>    PASSWD                 /* passwd req for command (default) */
 %token <tok>    NOEXEC                 /* preload dummy execve() for cmnd */
 %token <tok>    EXEC                   /* don't preload dummy execve() */
-%token <tok>    TRACE                  /* trace children of cmnd */
-%token <tok>    NOTRACE                /* disable tracing of children */
+%token <tok>    MONITOR                /* monitor children of cmnd */
+%token <tok>    NOMONITOR              /* disable monitoring of children */
 %token <tok>    ALL                    /* ALL keyword */
 %token <tok>    COMMENT                /* comment and/or carriage return */
 %token <tok>    HOSTALIAS              /* Host_Alias keyword */
@@ -385,7 +385,7 @@ privilege   :       hostlist '=' cmndspeclist {
                            runas_matches = UNSPEC;
                            no_passwd = def_authenticate ? UNSPEC : TRUE;
                            no_execve = def_noexec ? TRUE : UNSPEC;
-                           trace_cmnd = def_trace ? TRUE : UNSPEC;
+                           monitor_cmnd = def_monitor ? TRUE : UNSPEC;
                        }
                ;
 
@@ -648,10 +648,10 @@ cmndtag           :       /* empty */ {
                                    cm_list[cm_list_len].noexecve = TRUE;
                                else
                                    cm_list[cm_list_len].noexecve = FALSE;
-                               if (trace_cmnd == TRUE)
-                                   cm_list[cm_list_len].trace = TRUE;
+                               if (monitor_cmnd == TRUE)
+                                   cm_list[cm_list_len].monitor = TRUE;
                                else
-                                   cm_list[cm_list_len].trace = FALSE;
+                                   cm_list[cm_list_len].monitor = FALSE;
                            }
                        }
                |       cmndtag NOPASSWD {
@@ -678,17 +678,17 @@ cmndtag           :       /* empty */ {
                                user_matches == TRUE)
                                cm_list[cm_list_len].noexecve = FALSE;
                        }
-               |       cmndtag TRACE {
-                           trace_cmnd = TRUE;
+               |       cmndtag MONITOR {
+                           monitor_cmnd = TRUE;
                            if (printmatches == TRUE && host_matches == TRUE &&
                                user_matches == TRUE)
-                               cm_list[cm_list_len].trace = TRUE;
+                               cm_list[cm_list_len].monitor = TRUE;
                        }
-               |       cmndtag NOTRACE {
-                           trace_cmnd = FALSE;
+               |       cmndtag NOMONITOR {
+                           monitor_cmnd = FALSE;
                            if (printmatches == TRUE && host_matches == TRUE &&
                                user_matches == TRUE)
-                               cm_list[cm_list_len].trace = FALSE;
+                               cm_list[cm_list_len].monitor = FALSE;
                        }
                ;
 
@@ -1110,11 +1110,11 @@ list_matches()
        else if (cm_list[count].noexecve == FALSE && def_noexec)
            (void) fputs("EXEC: ", stdout);
 
-       /* Is tracing enabled? */
-       if (cm_list[count].trace == TRUE && !def_trace)
-           (void) fputs("TRACE: ", stdout);
-       else if (cm_list[count].trace == FALSE && def_trace)
-           (void) fputs("NOTRACE: ", stdout);
+       /* Is monitoring enabled? */
+       if (cm_list[count].monitor == TRUE && !def_monitor)
+           (void) fputs("MONITOR: ", stdout);
+       else if (cm_list[count].monitor == FALSE && def_monitor)
+           (void) fputs("NOMONITOR: ", stdout);
 
        /* Is a password required? */
        if (cm_list[count].nopasswd == TRUE && def_authenticate)
@@ -1249,7 +1249,7 @@ expand_match_list()
     cm_list[cm_list_len].runas = cm_list[cm_list_len].cmnd = NULL;
     cm_list[cm_list_len].nopasswd = FALSE;
     cm_list[cm_list_len].noexecve = FALSE;
-    cm_list[cm_list_len].trace    = FALSE;
+    cm_list[cm_list_len].monitor  = FALSE;
 }
 
 /*
diff --git a/sudo.c b/sudo.c
index ed4e01c54c4d11a2d34ddee4bbed8e601b26a2aa..d18da6aafdf4b2334b0990949712b5c091ea07a4 100644 (file)
--- a/sudo.c
+++ b/sudo.c
@@ -400,7 +400,7 @@ main(argc, argv, envp)
        }
 
 #ifdef HAVE_SYSTRACE 
-       if (ISSET(validated, FLAG_TRACE))
+       if (ISSET(validated, FLAG_MONITOR))
            systrace_attach(getpid());
 #endif
 
diff --git a/sudo.h b/sudo.h
index 8fe84dc0823633186a71f2a3a775ea44a7665330..cc010af41e32cc0b6ae98ef20b0988f6df6fea8e 100644 (file)
--- a/sudo.h
+++ b/sudo.h
@@ -65,7 +65,7 @@ struct sudo_user {
 #define FLAG_NO_HOST           0x080
 #define FLAG_NO_CHECK          0x100
 #define FLAG_NOEXEC            0x200
-#define FLAG_TRACE             0x400
+#define FLAG_MONITOR           0x400
 
 /*
  * Pseudo-boolean values
index be4b0a761c295dccd769f1e8b4928a48acef3fa9..dc1092010200f3568a55046ec3617149ca0b3d05 100644 (file)
@@ -144,7 +144,7 @@ int top = 0, stacksize = 0;
        match[top].runas  = UNSPEC; \
        match[top].nopass = def_authenticate ? UNSPEC : TRUE; \
        match[top].noexec = def_noexec ? TRUE : UNSPEC; \
-       match[top].trace  = def_trace ? TRUE : UNSPEC; \
+       match[top].monitor  = def_monitor ? TRUE : UNSPEC; \
        top++; \
     } while (0)
 
@@ -154,13 +154,13 @@ int top = 0, stacksize = 0;
            while ((stacksize += STACKINCREMENT) < top); \
            match = (struct matchstack *) erealloc3(match, stacksize, sizeof(struct matchstack)); \
        } \
-       match[top].user   = match[top-1].user; \
-       match[top].cmnd   = match[top-1].cmnd; \
-       match[top].host   = match[top-1].host; \
-       match[top].runas  = match[top-1].runas; \
-       match[top].nopass = match[top-1].nopass; \
-       match[top].noexec = match[top-1].noexec; \
-       match[top].trace  = match[top-1].trace; \
+       match[top].user     = match[top-1].user; \
+       match[top].cmnd     = match[top-1].cmnd; \
+       match[top].host     = match[top-1].host; \
+       match[top].runas    = match[top-1].runas; \
+       match[top].nopass   = match[top-1].nopass; \
+       match[top].noexec   = match[top-1].noexec; \
+       match[top].monitor  = match[top-1].monitor; \
        top++; \
     } while (0)
 
@@ -266,8 +266,8 @@ typedef union {
 #define PASSWD 270
 #define NOEXEC 271
 #define EXEC 272
-#define TRACE 273
-#define NOTRACE 274
+#define MONITOR 273
+#define NOMONITOR 274
 #define ALL 275
 #define COMMENT 276
 #define HOSTALIAS 277
@@ -547,7 +547,7 @@ char *yyname[] =
 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 "COMMAND","ALIAS","DEFVAR","NTWKADDR","NETGROUP","USERGROUP","WORD","DEFAULTS",
 "DEFAULTS_HOST","DEFAULTS_USER","DEFAULTS_RUNAS","RUNAS","NOPASSWD","PASSWD",
-"NOEXEC","EXEC","TRACE","NOTRACE","ALL","COMMENT","HOSTALIAS","CMNDALIAS",
+"NOEXEC","EXEC","MONITOR","NOMONITOR","ALL","COMMENT","HOSTALIAS","CMNDALIAS",
 "USERALIAS","RUNASALIAS","ERROR",
 };
 #if defined(__cplusplus) || defined(__STDC__)
@@ -617,8 +617,8 @@ char *yyrule[] =
 "cmndtag : cmndtag PASSWD",
 "cmndtag : cmndtag NOEXEC",
 "cmndtag : cmndtag EXEC",
-"cmndtag : cmndtag TRACE",
-"cmndtag : cmndtag NOTRACE",
+"cmndtag : cmndtag MONITOR",
+"cmndtag : cmndtag NOMONITOR",
 "cmnd : ALL",
 "cmnd : ALIAS",
 "cmnd : COMMAND",
@@ -873,11 +873,11 @@ list_matches()
        else if (cm_list[count].noexecve == FALSE && def_noexec)
            (void) fputs("EXEC: ", stdout);
 
-       /* Is tracing enabled? */
-       if (cm_list[count].trace == TRUE && !def_trace)
-           (void) fputs("TRACE: ", stdout);
-       else if (cm_list[count].trace == FALSE && def_trace)
-           (void) fputs("NOTRACE: ", stdout);
+       /* Is monitoring enabled? */
+       if (cm_list[count].monitor == TRUE && !def_monitor)
+           (void) fputs("MONITOR: ", stdout);
+       else if (cm_list[count].monitor == FALSE && def_monitor)
+           (void) fputs("NOMONITOR: ", stdout);
 
        /* Is a password required? */
        if (cm_list[count].nopasswd == TRUE && def_authenticate)
@@ -1012,7 +1012,7 @@ expand_match_list()
     cm_list[cm_list_len].runas = cm_list[cm_list_len].cmnd = NULL;
     cm_list[cm_list_len].nopasswd = FALSE;
     cm_list[cm_list_len].noexecve = FALSE;
-    cm_list[cm_list_len].trace    = FALSE;
+    cm_list[cm_list_len].monitor  = FALSE;
 }
 
 /*
@@ -1391,7 +1391,7 @@ case 31:
                            runas_matches = UNSPEC;
                            no_passwd = def_authenticate ? UNSPEC : TRUE;
                            no_execve = def_noexec ? TRUE : UNSPEC;
-                           trace_cmnd = def_trace ? TRUE : UNSPEC;
+                           monitor_cmnd = def_monitor ? TRUE : UNSPEC;
                        }
 break;
 case 32:
@@ -1706,10 +1706,10 @@ case 57:
                                    cm_list[cm_list_len].noexecve = TRUE;
                                else
                                    cm_list[cm_list_len].noexecve = FALSE;
-                               if (trace_cmnd == TRUE)
-                                   cm_list[cm_list_len].trace = TRUE;
+                               if (monitor_cmnd == TRUE)
+                                   cm_list[cm_list_len].monitor = TRUE;
                                else
-                                   cm_list[cm_list_len].trace = FALSE;
+                                   cm_list[cm_list_len].monitor = FALSE;
                            }
                        }
 break;
@@ -1752,19 +1752,19 @@ break;
 case 62:
 #line 681 "parse.yacc"
 {
-                           trace_cmnd = TRUE;
+                           monitor_cmnd = TRUE;
                            if (printmatches == TRUE && host_matches == TRUE &&
                                user_matches == TRUE)
-                               cm_list[cm_list_len].trace = TRUE;
+                               cm_list[cm_list_len].monitor = TRUE;
                        }
 break;
 case 63:
 #line 687 "parse.yacc"
 {
-                           trace_cmnd = FALSE;
+                           monitor_cmnd = FALSE;
                            if (printmatches == TRUE && host_matches == TRUE &&
                                user_matches == TRUE)
-                               cm_list[cm_list_len].trace = FALSE;
+                               cm_list[cm_list_len].monitor = FALSE;
                        }
 break;
 case 64:
index d94a9234e5f5a28bda9a097b441369a0308c885d..e4ade693ffdedab5f417a85061b00348c771a50d 100644 (file)
@@ -14,8 +14,8 @@
 #define PASSWD 270
 #define NOEXEC 271
 #define EXEC 272
-#define TRACE 273
-#define NOTRACE 274
+#define MONITOR 273
+#define NOMONITOR 274
 #define ALL 275
 #define COMMENT 276
 #define HOSTALIAS 277
index 6422e4c17a1aba7c1549bd95b312e39c03f78e40..9ba4c25da9b2d7b29c610d33e385415c4c305de2 100644 (file)
@@ -255,7 +255,7 @@ This flag is I<off> by default.
 
 =item mail_badpass
 
-Send mail to the I<mailto> user if the user running sudo does not
+Send mail to the I<mailto> user if the user running B<sudo> does not
 enter the correct password.  This flag is I<off> by default.
 
 =item mail_no_user
@@ -428,7 +428,7 @@ changes that behavior such that the real UID is left as the invoking
 user's UID.  In other words, this makes B<sudo> act as a setuid
 wrapper.  This can be useful on systems that disable some potentially
 dangerous functionality when a program is run setuid.  Note, however,
-that this means that sudo will run with the real uid of the invoking
+that this means that B<sudo> will run with the real uid of the invoking
 user which may allow that user to kill B<sudo> before it can log a
 failure, depending on how your OS defines the interaction between
 signals and setuid processes.
@@ -453,16 +453,16 @@ the --with-logincap option.  This flag is I<off> by default.
 
 =item noexec
 
-If set, all commands run via sudo will behave as if the C<NOEXEC>
+If set, all commands run via B<sudo> will behave as if the C<NOEXEC>
 tag has been set, unless overridden by a C<EXEC> tag.  See the
 description of I<NOEXEC and EXEC> below as well as the L<PREVENTING SHELL
 ESCAPES> section at the end of this manual.  This flag is I<off> by default.
 
-=item trace
+=item monitor
 
-If set, all commands run via sudo will behave as if the C<TRACE>
-tag has been set, unless overridden by a C<NOTRACE> tag.  See the
-description of I<TRACE and NOTRACE> below as well as the L<PREVENTING
+If set, all commands run via B<sudo> will behave as if the C<MONITOR>
+tag has been set, unless overridden by a C<NOMONITOR> tag.  See the
+description of I<MONITOR and NOMONITOR> below as well as the L<PREVENTING
 SHELL ESCAPES> section at the end of this manual.  Be aware that
 tracing is only supported on certain operating systems.  On systems
 where it is not supported this flag will have no effect.
@@ -475,7 +475,7 @@ This is intended for an Enterprises that wish to prevent the usage of local
 sudoers files so that only LDAP is used.  This thwarts the efforts of
 rogue operators who would attempt to add roles to @sysconfdir@/sudoers.
 When this option is present, @sysconfdir@/sudoers does not even need to exist. 
-Since this options tells sudo how to behave when no specific LDAP entries
+Since this options tells B<sudo> how to behave when no specific LDAP entries
 have been matched, this sudoOption is only meaningful for the cn=defaults
 section.  This flag is I<off> by default.
 
@@ -647,7 +647,7 @@ The default value is I<@lecture@>.
 
 =item lecture_file
 
-Path to a file containing an alternate sudo lecture that will
+Path to a file containing an alternate B<sudo> lecture that will
 be used in place of the standard lecture if the named file exists.
 
 =item logfile
@@ -672,7 +672,7 @@ Flags to use when invoking mailer. Defaults to B<-t>.
 =item mailto
 
 Address to send warning and error mail to.  The address should
-be enclosed in double quotes (C<">) to protect against sudo
+be enclosed in double quotes (C<">) to protect against B<sudo>
 interpreting the C<@> sign.  Defaults to C<@mailto@>.
 
 =item exempt_group
@@ -801,7 +801,7 @@ B<notice>, and B<warning>.
  Runas_Spec ::= '(' Runas_List ')'
 
  Tag_Spec ::= ('NOPASSWD:' | 'PASSWD:' | 'NOEXEC:' | 'EXEC:' |
-              'TRACE' | 'NOTRACE')
+              'MONITOR' | 'NOMONITOR')
 
 A B<user specification> determines which commands a user may run
 (and as what user) on specified hosts.  By default, commands are
@@ -836,11 +836,11 @@ but  F</bin/kill> and F</usr/bin/lprm> as B<root>.
 
 A command may have zero or more tags associated with it.  There are
 four possible tag values, C<NOPASSWD>, C<PASSWD>, C<NOEXEC>, C<EXEC>,
-C<TRACE> and C<NOTRACE>.
+C<MONITOR> and C<NOMONITOR>.
 Once a tag is set on a C<Cmnd>, subsequent C<Cmnd>s in the
 C<Cmnd_Spec_List>, inherit the tag unless it is overridden by the
-opposite tag (ie: C<PASSWD> overrides C<NOPASSWD> and C<NOTRACE>
-overrides C<TRACE>).
+opposite tag (ie: C<PASSWD> overrides C<NOPASSWD> and C<NOMONITOR>
+overrides C<MONITOR>).
 
 =head3 NOPASSWD and PASSWD
 
@@ -884,22 +884,22 @@ and F</usr/bin/vi> but shell escapes will be disabled.
 See the L<PREVENTING SHELL ESCAPES> section below for more details
 on how C<NOEXEC> works and whether or not it will work on your system.
 
-=head3 TRACE and NOTRACE
+=head3 MONITOR and NOMONITOR
 
 If B<sudo> has been configured with the C<--with-systrace> option,
-the C<TRACE> tag can be used to cause programs spawned by a command
+the C<MONITOR> tag can be used to cause programs spawned by a command
 to be checked against I<sudoers> and logged just like they would
 be if run through B<sudo> directly.  This is useful in conjunction
 with commands that allow shell escapes such as editors, shells and
 paginators.
 
 In the following example, user B<chuck> may run any command on the
-machine research with tracing enabled.
+machine research in monitor mode.
 
- chuck research = TRACE: ALL
+ chuck research = MONITOR: ALL
 
 See the L<PREVENTING SHELL ESCAPES> section below for more details
-on how C<TRACE> works and whether or not it will work on your system.
+on how C<MONITOR> works and whether or not it will work on your system.
 
 =head2 Wildcards
 
@@ -1244,7 +1244,7 @@ There are three basic approaches to this problem:
 Avoid giving users access to commands that allow the user to run
 arbitrary commands.  Many editors have a restricted mode where shell
 escapes are disabled, though B<sudoedit> is a better solution to
-running editors via sudo.  Due to the large number of programs that
+running editors via B<sudo>.  Due to the large number of programs that
 offer shell escapes, restricting users to the set of programs that
 do not if often unworkable.
 
@@ -1254,7 +1254,7 @@ Many systems that support shared libraries have the ability to
 override default library functions by pointing an environment
 variable (usually C<LD_PRELOAD>) to an alternate shared library.
 On such systems, B<sudo>'s I<noexec> functionality can be used to
-prevent a program run by sudo from executing any other programs.
+prevent a program run by B<sudo> from executing any other programs.
 Note, however, that this applies only to native dynamically-linked
 executables.  Statically-linked executables and foreign executables
 running under binary emulation are not affected.
@@ -1290,25 +1290,25 @@ executing other commands (such as a shell).  If you are unsure
 whether or not your system is capable of supporting I<noexec> you
 can always just try it out and see if it works.
 
-=item tracing
+=item monitor
 
 On operating systems that support the B<systrace> pseudo-device,
 the C<--with-systrace> configure option can be used to compile
-support for command tracing in B<sudo>.  With B<systrace> support
+support for proccess monitoring in B<sudo>.  In monitor mode
 B<sudo> can transparently intercept a new command, allow or deny
 it based on I<sudoers>, and log the result.  This does require that
 B<sudo> become a daemon that persists until the command and all its
-descendents have finished.
+descendents have exited.
 
-To enable tracing on a per-command basis, use the C<TRACE> tag as
-documented in the User Specification section above.  Here is that
-example again:
+To enable monitor mode on a per-command basis, use the C<MONITOR>
+tag as documented in the User Specification section above.  Here
+is that example again:
 
- chuck research = TRACE: ALL
+ chuck research = MONITOR: ALL
 
 This allows user B<chuck> to run any command on the machine research
-with tracing enabled.  Any commands run via shell escapes will be
-logged by sudo.
+in monitor mode.  Any commands run via shell escapes will be logged
+by B<sudo>.
 
 At the time of this writing the B<systrace> pseudo-device comes
 standard with OpenBSD and NetBSD and is available as patches to