- Added irc::notice configuration option (notice(s) to send to a newly connected...
authormichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>
Tue, 20 Jan 2015 19:16:28 +0000 (19:16 +0000)
committermichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>
Tue, 20 Jan 2015 19:16:28 +0000 (19:16 +0000)
git-svn-id: svn://svn.ircd-hybrid.org/svnroot/hopm/branches/1.0.x@5406 82007160-df01-0410-b94d-b575c5fd34c7

doc/reference.conf
src/config-lexer.c
src/config-lexer.l
src/config-parser.c
src/config-parser.h
src/config-parser.y
src/config.c
src/config.h

index 754d2675f8bd9b790adaf5c739d24262b93a61c1..37eaacbd7f3b29231fe41f1cfaae47e2cbb7fc4d 100644 (file)
@@ -238,6 +238,12 @@ irc {
         * Text to send on connection, these can be stacked and will be sent in this order.
         */
 #      perform = "TIME";
+
+       /*
+        * Text to send via NOTICE immediately when a new client connects. These can be
+        * stacked and will be sent in this order.
+        */
+#      notice = "You are now being scanned for open proxies. If you have nothing to hide, you have nothing to fear.";
 };
 
 
index f572fa05b93306a20a78b744ca06dd72f67210bf..d38f21630115ae2dcdd084619f0cdbba6c659d7a 100644 (file)
@@ -365,8 +365,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 91
-#define YY_END_OF_BUFFER 92
+#define YY_NUM_RULES 92
+#define YY_END_OF_BUFFER 93
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -374,47 +374,48 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[360] =
+static yyconst flex_int16_t yy_accept[364] =
     {   0,
-       89,   89,   92,   90,   89,   88,   90,    2,   90,   81,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       90,   90,   90,   90,   90,   90,   90,   90,   90,   90,
-       89,   88,    0,    3,    2,    1,    2,   81,    0,    0,
+       90,   90,   93,   91,   90,   89,   91,    2,   91,   82,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
+       90,   89,    0,    3,    2,    1,    2,   82,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,   13,    0,
-        0,    0,    0,   69,    0,    0,    0,    0,   74,    0,
-        0,    0,    0,    0,    0,   86,    0,   84,    0,    0,
+        0,    0,    0,   70,    0,    0,    0,    0,   75,    0,
+        0,    0,    0,    0,    0,   87,    0,   85,    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,   56,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   57,    0,    0,    0,    0,    0,
 
         0,   15,    0,   17,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,   87,    0,   27,    0,
+        0,    0,    0,    0,    0,    0,    0,   88,    0,   28,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,   83,    4,    0,    0,   64,    0,    0,   55,
-        0,    0,    0,    0,   58,   75,    0,    0,    0,    0,
-       18,    0,    0,    0,    0,   20,    0,   21,    0,   24,
-       26,    0,    0,    0,    0,   32,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   82,   45,
-       46,    0,   54,    0,   50,    0,    0,   63,    0,    0,
-
-        0,    0,    0,   85,   57,    0,    0,   68,    0,   16,
-        0,   73,    0,    0,   52,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   36,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,   48,   53,    0,   49,    0,
-        0,    0,    0,    0,    0,   12,    0,   14,   67,    0,
-        0,   72,    0,   60,   51,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,   80,    0,    0,   62,    0,   40,
-       77,   78,    0,    0,    0,    0,    0,    0,    7,    0,
-        0,    0,    0,    0,    0,    0,    0,   59,    0,    0,
-       28,    0,   30,   31,    0,    0,    0,   37,   38,   61,
-
-        0,    0,   44,    0,   79,    0,    0,    0,    0,   11,
-        0,   76,   66,   19,   71,   22,   25,   29,   33,    0,
-       35,   39,    0,    0,    0,   47,    0,    6,    8,    0,
-        0,   65,   70,    0,    0,   41,    0,    0,    0,   10,
-        0,    0,    0,    0,    0,    5,    9,    0,   34,   42,
-        0,    0,    0,    0,   43,    0,    0,   23,    0
+        0,    0,    0,   84,    4,    0,    0,   65,    0,    0,
+       56,    0,    0,    0,    0,   59,   76,    0,    0,    0,
+        0,   18,    0,    0,    0,    0,   20,    0,   21,    0,
+       24,    0,   27,    0,    0,    0,    0,   33,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+       83,   46,   47,    0,   55,    0,   51,    0,    0,   64,
+
+        0,    0,    0,    0,    0,   86,   58,    0,    0,   69,
+        0,   16,    0,   74,    0,    0,   53,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   37,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   49,   54,
+        0,   50,    0,    0,    0,    0,    0,    0,   12,    0,
+       14,   68,    0,    0,   73,    0,   61,   52,    0,    0,
+       26,    0,    0,    0,    0,    0,    0,    0,   81,    0,
+        0,   63,    0,   41,   78,   79,    0,    0,    0,    0,
+        0,    0,    7,    0,    0,    0,    0,    0,    0,    0,
+        0,   60,    0,    0,   29,    0,   31,   32,    0,    0,
+
+        0,   38,   39,   62,    0,    0,   45,    0,   80,    0,
+        0,    0,    0,   11,    0,   77,   67,   19,   72,   22,
+       25,   30,   34,    0,   36,   40,    0,    0,    0,   48,
+        0,    6,    8,    0,    0,   66,   71,    0,    0,   42,
+        0,    0,    0,   10,    0,    0,    0,    0,    0,    5,
+        9,    0,   35,   43,    0,    0,    0,    0,   44,    0,
+        0,   23,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -459,95 +460,95 @@ static yyconst flex_int32_t yy_meta[58] =
         1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[363] =
+static yyconst flex_int16_t yy_base[367] =
     {   0,
-        0,    0,  239,  727,  167,    0,   55,    0,   54,   54,
+        0,    0,  232,  732,  167,    0,   55,    0,   54,   54,
        34,   55,   49,   57,   37,   60,   51,   55,   94,  129,
        99,  103,  167,   72,  112,  155,   43,   59,  116,   68,
-      165,    0,   81,  727,    0,  727,    0,  148,   97,   98,
-      111,  133,  152,  147,  138,  146,  160,  155,  727,  150,
+      165,    0,   81,  732,    0,  732,    0,  148,   97,   98,
+      111,  133,  152,  147,  138,  146,  160,  155,  732,  150,
       152,  153,  171,  156,  159,  175,  182,  182,  178,  201,
-      196,  207,  200,  206,  211,  727,  210,  727,  212,  201,
-      203,  217,  206,  212,  238,  208,  230,  244,  231,  233,
-      240,  237,  244,  256,  248,  259,  252,  265,  244,  128,
-      265,  264,  257,  259,  257,  273,  266,  262,  271,  280,
-
-      291,  727,  283,  727,  290,  292,  297,  120,  290,  308,
-      291,  307,  295,  309,  312,  306,  727,  301,  727,  309,
-      303,  315,  316,  305,  308,  344,  316,  312,  322,  329,
-      345,  332,  343,  349,  352,  353,  355,  345,  345,  353,
-      357,  349,  727,  727,  347,  358,  352,  357,  355,  727,
-      363,  369,  363,  378,  374,  381,  379,  395,  399,  398,
-      727,  388,  400,  404,  390,  727,  401,  727,  409,  394,
-      727,  398,  392,  400,  407,  727,  403,  400,  406,  399,
-      418,  437,  418,  427,  439,  428,  444,  437,  727,  727,
-      439,  435,  437,  455,  440,  445,  448,  727,  455,  456,
-
-       95,  458,  446,  727,  727,  451,  461,  450,  447,  727,
-      466,  462,  464,  487,  476,  493,  492,  485,  485,  484,
-      490,  499,  495,  504,  727,  490,  493,  503,  505,  509,
-      496,  107,  495,  495,  514,  727,  727,  500,  727,  509,
-      518,  524,  533,  535,  533,  727,  528,  727,  727,  528,
-      546,  727,  530,  532,  727,  542,  536,  537,  539,  544,
-      552,  544,  548,  549,  727,  555,  547,  549,  558,  727,
-      727,  727,   90,  557,  571,  583,  576,  575,  727,  588,
-      578,  581,  587,  579,  593,  596,  596,  727,  597,  583,
-      727,  600,  727,  727,  594,  601,  603,  727,  727,  727,
-
-      598,  622,  727,  605,  727,  597,  596,  601,  622,  727,
-      628,  727,  624,  727,  625,   52,  727,  727,  727,  629,
-      727,  727,  629,  631,  628,  727,  627,  727,  727,  637,
-      641,  727,  727,  635,  633,  727,  637,  638,  643,  727,
-      639,  653,  641,  644,  662,  727,  727,  677,  727,  727,
-      671,  666,  680,  679,  727,  678,  686,  727,  727,   81,
-      724,   71
+      196,  207,  200,  206,  211,  198,  211,  732,  234,  201,
+      203,  217,  208,  212,  246,  208,  228,  246,  227,  215,
+      222,  237,  242,  255,  250,  260,  253,  274,  245,  128,
+      266,  267,  261,  264,  261,  280,  267,  270,  278,  280,
+
+      288,  732,  282,  732,  291,  294,  298,  120,  291,  309,
+      293,  308,  296,  311,  314,  310,  313,  732,  307,  732,
+      316,  309,  321,  322,  312,  317,  344,  328,  324,  330,
+      331,  349,  336,  347,  351,  355,  356,  357,  348,  348,
+      358,  363,  355,  732,  732,  354,  364,  358,  363,  362,
+      732,  372,  381,  375,  386,  376,  381,  383,  398,  402,
+      400,  732,  390,  403,  407,  392,  732,  404,  732,  412,
+      399,  415,  732,  405,  400,  408,  414,  732,  410,  408,
+      418,  412,  433,  428,  431,  437,  446,  435,  448,  440,
+      732,  732,  443,  439,  441,  459,  444,  451,  455,  732,
+
+      462,  464,   95,  466,  453,  732,  732,  458,  469,  462,
+      460,  732,  481,  470,  466,  487,  480,  496,  495,  496,
+      489,  490,  489,  495,  505,  500,  511,  732,  498,  501,
+      512,  514,  518,  504,  107,  504,  508,  530,  732,  732,
+      516,  732,  525,  528,  529,  538,  542,  536,  732,  532,
+      732,  732,  532,  551,  732,  535,  537,  732,  548,  541,
+      732,  545,  547,  553,  561,  553,  556,  558,  732,  568,
+      563,  565,  574,  732,  732,  732,   90,  567,  576,  588,
+      582,  579,  732,  592,  582,  586,  592,  584,  599,  601,
+      603,  732,  605,  591,  732,  609,  732,  732,  603,  610,
+
+      611,  732,  732,  732,  607,  632,  732,  622,  732,  616,
+      613,  611,  622,  732,  631,  732,  627,  732,  628,   52,
+      732,  732,  732,  632,  732,  732,  633,  636,  634,  732,
+      632,  732,  732,  644,  649,  732,  732,  643,  642,  732,
+      646,  647,  651,  732,  648,  670,  660,  661,  672,  732,
+      732,  682,  732,  732,  676,  672,  685,  684,  732,  683,
+      691,  732,  732,   81,  729,   71
     } ;
 
-static yyconst flex_int16_t yy_def[363] =
+static yyconst flex_int16_t yy_def[367] =
     {   0,
-      359,    1,  359,  359,  359,  360,  361,  362,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  360,  361,  359,  362,  359,  362,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,    0,  359,
-      359,  359
+      363,    1,  363,  363,  363,  364,  365,  366,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  364,  365,  363,  366,  363,  366,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,    0,  363,  363,  363
     } ;
 
-static yyconst flex_int16_t yy_nxt[785] =
+static yyconst flex_int16_t yy_nxt[790] =
     {   0,
         4,    5,    6,    7,    8,    4,    9,   10,   10,   10,
        11,   12,   13,   14,   15,   16,    4,   17,   18,   19,
@@ -557,87 +558,87 @@ static yyconst flex_int16_t yy_nxt[785] =
        25,   26,   27,   28,   29,    4,   30,   34,   34,   36,
        37,   38,   38,   38,   39,   40,   43,   45,   47,   84,
        48,   35,   44,   49,   50,   41,   85,   52,   51,   46,
-       53,   32,   88,   34,   34,  334,   75,   42,   39,   40,
+       53,   32,   88,   34,   34,  338,   75,   42,   39,   40,
        43,   45,   47,   84,   48,   76,   44,   49,   50,   41,
 
        85,   52,   51,   46,   53,   54,   88,   89,   55,   63,
-       75,   42,   56,   64,   57,  271,  272,   65,   67,   76,
-       90,   91,   66,  302,   77,   68,   78,   69,  244,   54,
+       75,   42,   56,   64,   57,  275,  276,   65,   67,   76,
+       90,   91,   66,  306,   77,   68,   78,   69,  247,   54,
        86,   89,   55,   63,   87,   79,   56,   64,   57,   58,
        59,   65,   67,   60,   90,   91,   66,   61,   77,   68,
-       78,   69,   62,  162,   86,   38,   38,   38,   87,   79,
-       92,  145,   93,   58,   59,   80,   31,   60,   31,   94,
+       78,   69,   62,  163,   86,   38,   38,   38,   87,   79,
+       92,  146,   93,   58,   59,   80,   31,   60,   31,   94,
        95,   61,   96,   81,   97,   98,   62,   70,   99,  100,
        82,   71,  101,  102,   92,   72,   93,   83,  103,   80,
        73,  104,   74,   94,   95,  105,   96,   81,   97,   98,
 
       106,   70,   99,  100,   82,   71,  101,  102,  107,   72,
       109,   83,  103,  108,   73,  104,   74,  110,  111,  105,
-      112,  114,  115,  116,  106,  117,  118,  121,  122,  113,
-      123,  124,  107,  119,  109,  125,  128,  108,  359,  120,
-      129,  110,  111,  133,  112,  114,  115,  116,  126,  117,
-      118,  121,  122,  113,  123,  124,  130,  119,  134,  125,
-      128,  135,  127,  120,  129,  136,  131,  133,  137,  132,
-      138,  139,  126,  140,  141,  142,  144,  146,  147,  148,
-      130,  149,  134,  150,  151,  135,  127,  153,  154,  136,
-      131,  143,  137,  132,  138,  139,  155,  140,  141,  142,
-
-      144,  146,  147,  148,  156,  149,  152,  150,  151,  157,
-      158,  153,  154,  159,  160,  143,  161,  163,  164,  165,
-      155,  166,  167,  168,  169,  170,  171,  172,  156,  173,
-      174,  175,  176,  157,  158,  177,  180,  159,  160,  181,
-      161,  163,  164,  165,  182,  166,  167,  168,  169,  170,
-      171,  172,  183,  173,  174,  175,  176,  178,  184,  177,
-      180,  185,  186,  181,  179,  187,  188,  189,  182,  190,
-      191,  192,  193,  194,  195,  196,  183,  197,  198,  199,
-      200,  178,  184,  201,  202,  185,  186,  203,  179,  187,
-      188,  189,  204,  190,  191,  192,  193,  194,  195,  196,
-
-      205,  197,  198,  199,  200,  206,  207,  201,  202,  208,
-      209,  203,  210,  211,  212,  213,  204,  214,  215,  216,
-      217,  218,  219,  220,  205,  221,  222,  223,  224,  206,
-      207,  225,  226,  208,  209,  359,  210,  211,  212,  213,
-      229,  214,  215,  216,  217,  218,  219,  220,  230,  221,
-      222,  223,  224,  231,  232,  225,  226,  227,  233,  228,
-      234,  235,  236,  237,  229,  238,  239,  240,  241,  242,
-      243,  245,  230,  246,  247,  248,  249,  231,  232,  250,
-      251,  227,  233,  228,  234,  235,  236,  237,  252,  238,
-      239,  240,  241,  242,  243,  245,  253,  246,  247,  248,
-
-      249,  254,  255,  250,  251,  256,  257,  258,  259,  260,
-      261,  262,  252,  263,  264,  265,  266,  267,  268,  269,
-      253,  270,  273,  274,  275,  254,  255,  276,  277,  256,
-      257,  258,  259,  260,  261,  262,  278,  263,  264,  265,
-      266,  267,  268,  269,  279,  270,  273,  274,  275,  280,
-      281,  276,  277,  283,  284,  285,  286,  287,  288,  289,
-      278,  290,  282,  291,  292,  293,  294,  295,  279,  296,
-      297,  298,  299,  280,  281,  300,  301,  283,  284,  285,
-      286,  287,  288,  289,  303,  290,  282,  291,  292,  293,
-      294,  295,  304,  296,  297,  298,  299,  305,  306,  300,
-
-      301,  307,  308,  309,  310,  311,  312,  313,  303,  314,
-      315,  316,  317,  318,  319,  320,  304,  321,  322,  326,
-      327,  305,  306,  328,  359,  307,  308,  309,  310,  311,
-      312,  313,  329,  314,  315,  316,  317,  318,  319,  320,
-      323,  321,  322,  326,  327,  330,  324,  328,  325,  331,
-      332,  333,  335,  336,  337,  338,  329,  339,  340,  341,
-      342,  343,  344,  345,  323,  346,  347,  348,  349,  330,
-      324,  350,  325,  331,  332,  333,  335,  336,  337,  338,
-      351,  339,  340,  341,  342,  343,  344,  345,  352,  346,
-      347,  348,  349,  353,  354,  350,  355,  356,  357,  358,
-
-      359,  359,  359,  359,  351,  359,  359,  359,  359,  359,
-      359,  359,  352,  359,  359,  359,  359,  353,  354,  359,
-      355,  356,  357,  358,   33,   33,    3,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359
+      112,  114,  115,  116,  106,  117,  118,  122,  123,  113,
+      124,  363,  107,  125,  109,  126,  129,  108,  130,  134,
+      135,  110,  111,  136,  112,  114,  115,  116,  119,  117,
+      118,  122,  123,  113,  124,  120,  127,  125,  131,  126,
+      129,  121,  130,  134,  135,  137,  138,  136,  132,  139,
+      128,  133,  119,  140,  141,  142,  363,  145,  147,  120,
+      127,  148,  131,  149,  143,  121,  150,  151,  154,  137,
+      138,  152,  132,  139,  128,  133,  155,  140,  141,  142,
+
+      144,  145,  147,  156,  157,  148,  158,  149,  143,  159,
+      150,  151,  154,  153,  160,  152,  161,  162,  164,  165,
+      155,  166,  167,  168,  144,  169,  170,  156,  157,  171,
+      158,  172,  173,  159,  174,  175,  176,  177,  160,  178,
+      161,  162,  164,  165,  179,  166,  167,  168,  182,  169,
+      170,  183,  184,  171,  185,  172,  173,  180,  174,  175,
+      176,  177,  186,  178,  181,  187,  188,  189,  179,  190,
+      191,  192,  182,  193,  194,  183,  184,  195,  185,  196,
+      197,  180,  198,  199,  200,  201,  186,  202,  181,  187,
+      188,  189,  203,  190,  191,  192,  204,  193,  194,  205,
+
+      206,  195,  207,  196,  197,  208,  198,  199,  200,  201,
+      209,  202,  210,  211,  212,  213,  203,  214,  215,  216,
+      204,  217,  218,  205,  206,  219,  207,  220,  221,  208,
+      222,  223,  224,  225,  209,  226,  210,  211,  212,  213,
+      227,  214,  215,  216,  228,  217,  218,  229,  230,  219,
+      231,  220,  221,  232,  222,  223,  224,  225,  233,  226,
+      234,  235,  236,  237,  227,  238,  239,  240,  228,  241,
+      242,  229,  230,  243,  231,  244,  245,  232,  246,  248,
+      249,  250,  233,  251,  234,  235,  236,  237,  252,  238,
+      239,  240,  253,  241,  242,  254,  255,  243,  256,  244,
+
+      245,  257,  246,  248,  249,  250,  258,  251,  259,  260,
+      261,  262,  252,  263,  264,  265,  253,  266,  267,  254,
+      255,  268,  256,  269,  270,  257,  271,  272,  273,  274,
+      258,  277,  259,  260,  261,  262,  278,  263,  264,  265,
+      279,  266,  267,  280,  281,  268,  282,  269,  270,  283,
+      271,  272,  273,  274,  284,  277,  287,  285,  288,  289,
+      278,  290,  291,  292,  279,  293,  294,  280,  281,  286,
+      282,  295,  296,  283,  297,  298,  299,  300,  284,  301,
+      287,  285,  288,  289,  302,  290,  291,  292,  303,  293,
+      294,  304,  305,  286,  307,  295,  296,  308,  297,  298,
+
+      299,  300,  309,  301,  310,  311,  312,  313,  302,  314,
+      315,  316,  303,  317,  318,  304,  305,  319,  307,  320,
+      321,  308,  322,  323,  324,  325,  309,  326,  310,  311,
+      312,  313,  363,  314,  315,  316,  330,  317,  318,  331,
+      332,  319,  333,  320,  321,  334,  322,  323,  324,  325,
+      327,  326,  335,  336,  337,  339,  328,  340,  329,  341,
+      330,  342,  343,  331,  332,  344,  333,  345,  346,  334,
+      347,  348,  349,  350,  327,  351,  335,  336,  337,  339,
+      328,  340,  329,  341,  352,  342,  343,  353,  354,  344,
+      355,  345,  346,  356,  347,  348,  349,  350,  357,  351,
+
+      358,  359,  360,  361,  362,  363,  363,  363,  352,  363,
+      363,  353,  354,  363,  355,  363,  363,  356,  363,  363,
+      363,  363,  357,  363,  358,  359,  360,  361,  362,   33,
+       33,    3,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363
     } ;
 
-static yyconst flex_int16_t yy_chk[785] =
+static yyconst flex_int16_t yy_chk[790] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -646,13 +647,13 @@ static yyconst flex_int16_t yy_chk[785] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    7,    7,    9,
         9,   10,   10,   10,   11,   12,   13,   14,   15,   27,
-       16,  362,   13,   16,   17,   12,   28,   18,   17,   14,
-       18,  360,   30,   33,   33,  316,   24,   12,   11,   12,
+       16,  366,   13,   16,   17,   12,   28,   18,   17,   14,
+       18,  364,   30,   33,   33,  320,   24,   12,   11,   12,
        13,   14,   15,   27,   16,   24,   13,   16,   17,   12,
 
        28,   18,   17,   14,   18,   19,   30,   39,   19,   21,
-       24,   12,   19,   21,   19,  232,  232,   21,   22,   24,
-       40,   41,   21,  273,   25,   22,   25,   22,  201,   19,
+       24,   12,   19,   21,   19,  235,  235,   21,   22,   24,
+       40,   41,   21,  277,   25,   22,   25,   22,  203,   19,
        29,   39,   19,   21,   29,   25,   19,   21,   19,   20,
        20,   21,   22,   20,   40,   41,   21,   20,   25,   22,
        25,   22,   20,  108,   29,   38,   38,   38,   29,   25,
@@ -663,68 +664,68 @@ static yyconst flex_int16_t yy_chk[785] =
 
        57,   23,   50,   51,   26,   23,   52,   53,   58,   23,
        59,   26,   54,   58,   23,   55,   23,   60,   61,   56,
-       62,   63,   64,   65,   57,   67,   69,   70,   71,   62,
-       72,   73,   58,   69,   59,   74,   76,   58,    3,   69,
-       77,   60,   61,   79,   62,   63,   64,   65,   75,   67,
-       69,   70,   71,   62,   72,   73,   78,   69,   80,   74,
-       76,   81,   75,   69,   77,   82,   78,   79,   83,   78,
-       84,   85,   75,   86,   87,   88,   89,   91,   92,   93,
-       78,   94,   80,   95,   96,   81,   75,   97,   98,   82,
-       78,   88,   83,   78,   84,   85,   99,   86,   87,   88,
-
-       89,   91,   92,   93,  100,   94,   96,   95,   96,  101,
-      103,   97,   98,  105,  106,   88,  107,  109,  110,  111,
-       99,  112,  113,  114,  115,  116,  118,  120,  100,  121,
-      122,  123,  124,  101,  103,  125,  127,  105,  106,  128,
-      107,  109,  110,  111,  129,  112,  113,  114,  115,  116,
-      118,  120,  130,  121,  122,  123,  124,  126,  131,  125,
-      127,  132,  133,  128,  126,  134,  135,  136,  129,  137,
-      138,  139,  140,  141,  142,  145,  130,  146,  147,  148,
-      149,  126,  131,  151,  152,  132,  133,  153,  126,  134,
-      135,  136,  154,  137,  138,  139,  140,  141,  142,  145,
-
-      155,  146,  147,  148,  149,  156,  157,  151,  152,  158,
-      159,  153,  160,  162,  163,  164,  154,  165,  167,  169,
-      170,  172,  173,  174,  155,  175,  177,  178,  179,  156,
-      157,  180,  181,  158,  159,    0,  160,  162,  163,  164,
-      183,  165,  167,  169,  170,  172,  173,  174,  184,  175,
-      177,  178,  179,  185,  186,  180,  181,  182,  187,  182,
-      188,  191,  192,  193,  183,  194,  195,  196,  197,  199,
-      200,  202,  184,  203,  206,  207,  208,  185,  186,  209,
-      211,  182,  187,  182,  188,  191,  192,  193,  212,  194,
-      195,  196,  197,  199,  200,  202,  213,  203,  206,  207,
-
-      208,  214,  215,  209,  211,  216,  217,  218,  219,  220,
-      221,  222,  212,  223,  224,  226,  227,  228,  229,  230,
-      213,  231,  233,  234,  235,  214,  215,  238,  240,  216,
-      217,  218,  219,  220,  221,  222,  241,  223,  224,  226,
-      227,  228,  229,  230,  242,  231,  233,  234,  235,  243,
-      244,  238,  240,  245,  247,  250,  251,  253,  254,  256,
-      241,  257,  244,  258,  259,  260,  261,  262,  242,  263,
-      264,  266,  267,  243,  244,  268,  269,  245,  247,  250,
-      251,  253,  254,  256,  274,  257,  244,  258,  259,  260,
-      261,  262,  275,  263,  264,  266,  267,  276,  277,  268,
-
-      269,  278,  280,  281,  282,  283,  284,  285,  274,  286,
-      287,  289,  290,  292,  295,  296,  275,  297,  301,  304,
-      306,  276,  277,  307,    0,  278,  280,  281,  282,  283,
-      284,  285,  308,  286,  287,  289,  290,  292,  295,  296,
-      302,  297,  301,  304,  306,  309,  302,  307,  302,  311,
-      313,  315,  320,  323,  324,  325,  308,  327,  330,  331,
-      334,  335,  337,  338,  302,  339,  341,  342,  343,  309,
-      302,  344,  302,  311,  313,  315,  320,  323,  324,  325,
-      345,  327,  330,  331,  334,  335,  337,  338,  348,  339,
-      341,  342,  343,  351,  352,  344,  353,  354,  356,  357,
-
-        0,    0,    0,    0,  345,    0,    0,    0,    0,    0,
-        0,    0,  348,    0,    0,    0,    0,  351,  352,    0,
-      353,  354,  356,  357,  361,  361,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359,  359,  359,  359,  359,  359,  359,
-      359,  359,  359,  359
+       62,   63,   64,   65,   57,   66,   67,   70,   71,   62,
+       72,    3,   58,   73,   59,   74,   76,   58,   77,   79,
+       80,   60,   61,   81,   62,   63,   64,   65,   69,   66,
+       67,   70,   71,   62,   72,   69,   75,   73,   78,   74,
+       76,   69,   77,   79,   80,   82,   83,   81,   78,   84,
+       75,   78,   69,   85,   86,   87,    0,   89,   91,   69,
+       75,   92,   78,   93,   88,   69,   94,   95,   97,   82,
+       83,   96,   78,   84,   75,   78,   98,   85,   86,   87,
+
+       88,   89,   91,   99,  100,   92,  101,   93,   88,  103,
+       94,   95,   97,   96,  105,   96,  106,  107,  109,  110,
+       98,  111,  112,  113,   88,  114,  115,   99,  100,  116,
+      101,  117,  119,  103,  121,  122,  123,  124,  105,  125,
+      106,  107,  109,  110,  126,  111,  112,  113,  128,  114,
+      115,  129,  130,  116,  131,  117,  119,  127,  121,  122,
+      123,  124,  132,  125,  127,  133,  134,  135,  126,  136,
+      137,  138,  128,  139,  140,  129,  130,  141,  131,  142,
+      143,  127,  146,  147,  148,  149,  132,  150,  127,  133,
+      134,  135,  152,  136,  137,  138,  153,  139,  140,  154,
+
+      155,  141,  156,  142,  143,  157,  146,  147,  148,  149,
+      158,  150,  159,  160,  161,  163,  152,  164,  165,  166,
+      153,  168,  170,  154,  155,  171,  156,  172,  174,  157,
+      175,  176,  177,  179,  158,  180,  159,  160,  161,  163,
+      181,  164,  165,  166,  182,  168,  170,  183,  184,  171,
+      184,  172,  174,  185,  175,  176,  177,  179,  186,  180,
+      187,  188,  189,  190,  181,  193,  194,  195,  182,  196,
+      197,  183,  184,  198,  184,  199,  201,  185,  202,  204,
+      205,  208,  186,  209,  187,  188,  189,  190,  210,  193,
+      194,  195,  211,  196,  197,  213,  214,  198,  215,  199,
+
+      201,  216,  202,  204,  205,  208,  217,  209,  218,  219,
+      220,  221,  210,  222,  223,  224,  211,  225,  226,  213,
+      214,  227,  215,  229,  230,  216,  231,  232,  233,  234,
+      217,  236,  218,  219,  220,  221,  237,  222,  223,  224,
+      238,  225,  226,  241,  243,  227,  244,  229,  230,  245,
+      231,  232,  233,  234,  246,  236,  248,  247,  250,  253,
+      237,  254,  256,  257,  238,  259,  260,  241,  243,  247,
+      244,  262,  263,  245,  264,  265,  266,  267,  246,  268,
+      248,  247,  250,  253,  270,  254,  256,  257,  271,  259,
+      260,  272,  273,  247,  278,  262,  263,  279,  264,  265,
+
+      266,  267,  280,  268,  281,  282,  284,  285,  270,  286,
+      287,  288,  271,  289,  290,  272,  273,  291,  278,  293,
+      294,  279,  296,  299,  300,  301,  280,  305,  281,  282,
+      284,  285,    0,  286,  287,  288,  308,  289,  290,  310,
+      311,  291,  312,  293,  294,  313,  296,  299,  300,  301,
+      306,  305,  315,  317,  319,  324,  306,  327,  306,  328,
+      308,  329,  331,  310,  311,  334,  312,  335,  338,  313,
+      339,  341,  342,  343,  306,  345,  315,  317,  319,  324,
+      306,  327,  306,  328,  346,  329,  331,  347,  348,  334,
+      349,  335,  338,  352,  339,  341,  342,  343,  355,  345,
+
+      356,  357,  358,  360,  361,    0,    0,    0,  346,    0,
+        0,  347,  348,    0,  349,    0,    0,  352,    0,    0,
+        0,    0,  355,    0,  356,  357,  358,  360,  361,  365,
+      365,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363,  363,
+      363,  363,  363,  363,  363,  363,  363,  363,  363
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -777,7 +778,7 @@ void ccomment(void);
 int linenum = 1;
 char linebuf[512];
 
-#line 781 "config-lexer.c"
+#line 782 "config-lexer.c"
 
 #define INITIAL 0
 
@@ -987,7 +988,7 @@ YY_DECL
 #line 45 "config-lexer.l"
 
 
-#line 991 "config-lexer.c"
+#line 992 "config-lexer.c"
 
        while ( 1 )             /* loops until end-of-file is reached */
                {
@@ -1020,13 +1021,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 >= 360 )
+                               if ( yy_current_state >= 364 )
                                        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] != 727 );
+               while ( yy_base[yy_current_state] != 732 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1216,122 +1217,122 @@ YY_RULE_SETUP
 case 26:
 YY_RULE_SETUP
 #line 112 "config-lexer.l"
-{ return OPER;         }
+{ return NOTICE;       }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
 #line 113 "config-lexer.l"
-{ return OPM;          }
+{ return OPER;         }
        YY_BREAK
 case 28:
 YY_RULE_SETUP
 #line 114 "config-lexer.l"
-{ return OPTIONS;      }
+{ return OPM;          }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
 #line 115 "config-lexer.l"
-{ return PASSWORD;     }
+{ return OPTIONS;      }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
 #line 116 "config-lexer.l"
-{ return PERFORM;      }
+{ return PASSWORD;     }
        YY_BREAK
 case 31:
 YY_RULE_SETUP
 #line 117 "config-lexer.l"
-{ return PIDFILE;      }
+{ return PERFORM;      }
        YY_BREAK
 case 32:
 YY_RULE_SETUP
 #line 118 "config-lexer.l"
-{ return PORT;         }
+{ return PIDFILE;      }
        YY_BREAK
 case 33:
 YY_RULE_SETUP
 #line 119 "config-lexer.l"
-{ return PROTOCOL;     }
+{ return PORT;         }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
 #line 120 "config-lexer.l"
-{ return READTIMEOUT;  }
+{ return PROTOCOL;     }
        YY_BREAK
 case 35:
 YY_RULE_SETUP
 #line 121 "config-lexer.l"
-{ return REALNAME;     }
+{ return READTIMEOUT;  }
        YY_BREAK
 case 36:
 YY_RULE_SETUP
 #line 122 "config-lexer.l"
-{ return REPLY;        }
+{ return REALNAME;     }
        YY_BREAK
 case 37:
 YY_RULE_SETUP
 #line 123 "config-lexer.l"
-{ return SCANLOG;      }
+{ return REPLY;        }
        YY_BREAK
 case 38:
 YY_RULE_SETUP
 #line 124 "config-lexer.l"
-{ return SCANNER;      }
+{ return SCANLOG;      }
        YY_BREAK
 case 39:
 YY_RULE_SETUP
 #line 125 "config-lexer.l"
-{ return SENDMAIL;     }
+{ return SCANNER;      }
        YY_BREAK
 case 40:
 YY_RULE_SETUP
 #line 126 "config-lexer.l"
-{ return SERVER;       }
+{ return SENDMAIL;     }
        YY_BREAK
 case 41:
 YY_RULE_SETUP
 #line 127 "config-lexer.l"
-{ return TARGET_IP;    }
+{ return SERVER;       }
        YY_BREAK
 case 42:
 YY_RULE_SETUP
 #line 128 "config-lexer.l"
-{ return TARGET_PORT;  }
+{ return TARGET_IP;    }
        YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 129 "config-lexer.l"
-{ return TARGET_STRING;}
+{ return TARGET_PORT;  }
        YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 130 "config-lexer.l"
-{ return TIMEOUT;      }
+{ return TARGET_STRING;}
        YY_BREAK
 case 45:
 YY_RULE_SETUP
 #line 131 "config-lexer.l"
-{ return TYPE;         }
+{ return TIMEOUT;      }
        YY_BREAK
 case 46:
 YY_RULE_SETUP
 #line 132 "config-lexer.l"
-{ return USER;         }
+{ return TYPE;         }
        YY_BREAK
 case 47:
 YY_RULE_SETUP
 #line 133 "config-lexer.l"
-{ return USERNAME;     }
+{ return USER;         }
        YY_BREAK
 case 48:
 YY_RULE_SETUP
 #line 134 "config-lexer.l"
-{ return VHOST;        }
+{ return USERNAME;     }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 136 "config-lexer.l"
-{ return YEARS; }
+#line 135 "config-lexer.l"
+{ return VHOST;        }
        YY_BREAK
 case 50:
 YY_RULE_SETUP
@@ -1341,7 +1342,7 @@ YY_RULE_SETUP
 case 51:
 YY_RULE_SETUP
 #line 138 "config-lexer.l"
-{ return MONTHS; }
+{ return YEARS; }
        YY_BREAK
 case 52:
 YY_RULE_SETUP
@@ -1351,7 +1352,7 @@ YY_RULE_SETUP
 case 53:
 YY_RULE_SETUP
 #line 140 "config-lexer.l"
-{ return WEEKS; }
+{ return MONTHS; }
        YY_BREAK
 case 54:
 YY_RULE_SETUP
@@ -1361,7 +1362,7 @@ YY_RULE_SETUP
 case 55:
 YY_RULE_SETUP
 #line 142 "config-lexer.l"
-{ return DAYS; }
+{ return WEEKS; }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
@@ -1371,7 +1372,7 @@ YY_RULE_SETUP
 case 57:
 YY_RULE_SETUP
 #line 144 "config-lexer.l"
-{ return HOURS; }
+{ return DAYS; }
        YY_BREAK
 case 58:
 YY_RULE_SETUP
@@ -1381,7 +1382,7 @@ YY_RULE_SETUP
 case 59:
 YY_RULE_SETUP
 #line 146 "config-lexer.l"
-{ return MINUTES; }
+{ return HOURS; }
        YY_BREAK
 case 60:
 YY_RULE_SETUP
@@ -1391,7 +1392,7 @@ YY_RULE_SETUP
 case 61:
 YY_RULE_SETUP
 #line 148 "config-lexer.l"
-{ return SECONDS; }
+{ return MINUTES; }
        YY_BREAK
 case 62:
 YY_RULE_SETUP
@@ -1400,8 +1401,8 @@ YY_RULE_SETUP
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 151 "config-lexer.l"
-{ return BYTES; }
+#line 150 "config-lexer.l"
+{ return SECONDS; }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
@@ -1411,7 +1412,7 @@ YY_RULE_SETUP
 case 65:
 YY_RULE_SETUP
 #line 153 "config-lexer.l"
-{ return KBYTES; }
+{ return BYTES; }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
@@ -1436,7 +1437,7 @@ YY_RULE_SETUP
 case 70:
 YY_RULE_SETUP
 #line 158 "config-lexer.l"
-{ return MBYTES; }
+{ return KBYTES; }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
@@ -1460,134 +1461,139 @@ YY_RULE_SETUP
        YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 164 "config-lexer.l"
+#line 163 "config-lexer.l"
+{ return MBYTES; }
+       YY_BREAK
+case 76:
+YY_RULE_SETUP
+#line 165 "config-lexer.l"
 {
                           yylval.number = OPM_TYPE_HTTP;
                           return PROTOCOLTYPE;
                         }
        YY_BREAK
-case 76:
+case 77:
 YY_RULE_SETUP
-#line 169 "config-lexer.l"
+#line 170 "config-lexer.l"
 {
                           yylval.number = OPM_TYPE_HTTPPOST;
                           return PROTOCOLTYPE;
                         }
        YY_BREAK
-case 77:
+case 78:
 YY_RULE_SETUP
-#line 174 "config-lexer.l"
+#line 175 "config-lexer.l"
 {
                           yylval.number = OPM_TYPE_SOCKS4;
                           return PROTOCOLTYPE;
                         }
        YY_BREAK
-case 78:
+case 79:
 YY_RULE_SETUP
-#line 179 "config-lexer.l"
+#line 180 "config-lexer.l"
 {
                           yylval.number = OPM_TYPE_SOCKS5;
                           return PROTOCOLTYPE;
                         }
        YY_BREAK
-case 79:
+case 80:
 YY_RULE_SETUP
-#line 184 "config-lexer.l"
+#line 185 "config-lexer.l"
 {
                           yylval.number = OPM_TYPE_WINGATE;
                           return PROTOCOLTYPE;
                         }
        YY_BREAK
-case 80:
+case 81:
 YY_RULE_SETUP
-#line 189 "config-lexer.l"
+#line 190 "config-lexer.l"
 {
                           yylval.number = OPM_TYPE_ROUTER;
                           return PROTOCOLTYPE;
                         }
        YY_BREAK
-case 81:
+case 82:
 YY_RULE_SETUP
-#line 195 "config-lexer.l"
+#line 196 "config-lexer.l"
 {
                            yylval.number=atoi(yytext); 
                            return NUMBER;
                         }
        YY_BREAK
-case 82:
+case 83:
 YY_RULE_SETUP
-#line 204 "config-lexer.l"
+#line 205 "config-lexer.l"
 {
                            yylval.number=1;
                            return NUMBER;
                          }
        YY_BREAK
-case 83:
+case 84:
 YY_RULE_SETUP
-#line 208 "config-lexer.l"
+#line 209 "config-lexer.l"
 {
                            yylval.number=1;
                            return NUMBER;
                          }
        YY_BREAK
-case 84:
+case 85:
 YY_RULE_SETUP
-#line 212 "config-lexer.l"
+#line 213 "config-lexer.l"
 {
                            yylval.number=1;
                            return NUMBER;
                          }
        YY_BREAK
-case 85:
+case 86:
 YY_RULE_SETUP
-#line 219 "config-lexer.l"
+#line 220 "config-lexer.l"
 {
                            yylval.number=0;
                            return NUMBER;
                          }
        YY_BREAK
-case 86:
+case 87:
 YY_RULE_SETUP
-#line 224 "config-lexer.l"
+#line 225 "config-lexer.l"
 {
                            yylval.number=0;
                            return NUMBER;
                          }
        YY_BREAK
-case 87:
+case 88:
 YY_RULE_SETUP
-#line 229 "config-lexer.l"
+#line 230 "config-lexer.l"
 {
                            yylval.number=0;
                            return NUMBER;
                          }
        YY_BREAK
-case 88:
-/* rule 88 can match eol */
+case 89:
+/* rule 89 can match eol */
 YY_RULE_SETUP
-#line 235 "config-lexer.l"
+#line 236 "config-lexer.l"
 {
                            strlcpy(linebuf, yytext + 1, sizeof(linebuf));
                            ++linenum;
                            yyless(1);
                          }
        YY_BREAK
-case 89:
+case 90:
 YY_RULE_SETUP
-#line 241 "config-lexer.l"
+#line 242 "config-lexer.l"
 /* ignore whitespace */;
        YY_BREAK
-case 90:
+case 91:
 YY_RULE_SETUP
-#line 243 "config-lexer.l"
+#line 244 "config-lexer.l"
 return yytext[0]; 
        YY_BREAK
-case 91:
+case 92:
 YY_RULE_SETUP
-#line 245 "config-lexer.l"
+#line 246 "config-lexer.l"
 ECHO;
        YY_BREAK
-#line 1591 "config-lexer.c"
+#line 1597 "config-lexer.c"
 case YY_STATE_EOF(INITIAL):
        yyterminate();
 
@@ -1880,7 +1886,7 @@ static int yy_get_next_buffer (void)
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 360 )
+                       if ( yy_current_state >= 364 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1908,11 +1914,11 @@ static int yy_get_next_buffer (void)
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 360 )
+               if ( yy_current_state >= 364 )
                        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 == 359);
+       yy_is_jam = (yy_current_state == 363);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -2545,7 +2551,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 245 "config-lexer.l"
+#line 246 "config-lexer.l"
 
 
 
index c6c1cc3345a2afdcdbb0ce999b0740dff1f89a1c..84749c3bc6ceb73645fb0f87ba43d7eed160b4db 100644 (file)
@@ -109,6 +109,7 @@ NEGCACHE                { return NEGCACHE;     }
 NEGCACHE_REBUILD        { return NEGCACHE_REBUILD; }
 NICK                    { return NICK;         }
 NICKSERV                { return NICKSERV;     }
+NOTICE                  { return NOTICE;       }
 OPER                    { return OPER;         }
 OPM                     { return OPM;          }
 OPTIONS                 { return OPTIONS;      }
index 1f33b9abc1830c0c5b558ed01533f262d7c36986..3b3e51e64cfd878bb99b3fc76b2a2aa04326eb34 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 3.0.3.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.0.2"
+#define YYBISON_VERSION "3.0.3"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -136,39 +136,40 @@ extern int yydebug;
     NEGCACHE_REBUILD = 280,
     NICK = 281,
     NICKSERV = 282,
-    OPER = 283,
-    OPM = 284,
-    OPTIONS = 285,
-    PASSWORD = 286,
-    PERFORM = 287,
-    PIDFILE = 288,
-    PORT = 289,
-    PROTOCOL = 290,
-    READTIMEOUT = 291,
-    REALNAME = 292,
-    REPLY = 293,
-    SCANLOG = 294,
-    SCANNER = 295,
-    SECONDS = 296,
-    MINUTES = 297,
-    HOURS = 298,
-    DAYS = 299,
-    WEEKS = 300,
-    MONTHS = 301,
-    YEARS = 302,
-    SENDMAIL = 303,
-    SERVER = 304,
-    TARGET_IP = 305,
-    TARGET_PORT = 306,
-    TARGET_STRING = 307,
-    TIMEOUT = 308,
-    TYPE = 309,
-    USERNAME = 310,
-    USER = 311,
-    VHOST = 312,
-    NUMBER = 313,
-    STRING = 314,
-    PROTOCOLTYPE = 315
+    NOTICE = 283,
+    OPER = 284,
+    OPM = 285,
+    OPTIONS = 286,
+    PASSWORD = 287,
+    PERFORM = 288,
+    PIDFILE = 289,
+    PORT = 290,
+    PROTOCOL = 291,
+    READTIMEOUT = 292,
+    REALNAME = 293,
+    REPLY = 294,
+    SCANLOG = 295,
+    SCANNER = 296,
+    SECONDS = 297,
+    MINUTES = 298,
+    HOURS = 299,
+    DAYS = 300,
+    WEEKS = 301,
+    MONTHS = 302,
+    YEARS = 303,
+    SENDMAIL = 304,
+    SERVER = 305,
+    TARGET_IP = 306,
+    TARGET_PORT = 307,
+    TARGET_STRING = 308,
+    TIMEOUT = 309,
+    TYPE = 310,
+    USERNAME = 311,
+    USER = 312,
+    VHOST = 313,
+    NUMBER = 314,
+    STRING = 315,
+    PROTOCOLTYPE = 316
   };
 #endif
 /* Tokens.  */
@@ -197,52 +198,55 @@ extern int yydebug;
 #define NEGCACHE_REBUILD 280
 #define NICK 281
 #define NICKSERV 282
-#define OPER 283
-#define OPM 284
-#define OPTIONS 285
-#define PASSWORD 286
-#define PERFORM 287
-#define PIDFILE 288
-#define PORT 289
-#define PROTOCOL 290
-#define READTIMEOUT 291
-#define REALNAME 292
-#define REPLY 293
-#define SCANLOG 294
-#define SCANNER 295
-#define SECONDS 296
-#define MINUTES 297
-#define HOURS 298
-#define DAYS 299
-#define WEEKS 300
-#define MONTHS 301
-#define YEARS 302
-#define SENDMAIL 303
-#define SERVER 304
-#define TARGET_IP 305
-#define TARGET_PORT 306
-#define TARGET_STRING 307
-#define TIMEOUT 308
-#define TYPE 309
-#define USERNAME 310
-#define USER 311
-#define VHOST 312
-#define NUMBER 313
-#define STRING 314
-#define PROTOCOLTYPE 315
+#define NOTICE 283
+#define OPER 284
+#define OPM 285
+#define OPTIONS 286
+#define PASSWORD 287
+#define PERFORM 288
+#define PIDFILE 289
+#define PORT 290
+#define PROTOCOL 291
+#define READTIMEOUT 292
+#define REALNAME 293
+#define REPLY 294
+#define SCANLOG 295
+#define SCANNER 296
+#define SECONDS 297
+#define MINUTES 298
+#define HOURS 299
+#define DAYS 300
+#define WEEKS 301
+#define MONTHS 302
+#define YEARS 303
+#define SENDMAIL 304
+#define SERVER 305
+#define TARGET_IP 306
+#define TARGET_PORT 307
+#define TARGET_STRING 308
+#define TIMEOUT 309
+#define TYPE 310
+#define USERNAME 311
+#define USER 312
+#define VHOST 313
+#define NUMBER 314
+#define STRING 315
+#define PROTOCOLTYPE 316
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
+
 union YYSTYPE
 {
-#line 84 "config-parser.y" /* yacc.c:355  */
+#line 85 "config-parser.y" /* yacc.c:355  */
 
         int number;
         char *string;
 
-#line 245 "config-parser.c" /* yacc.c:355  */
+#line 247 "config-parser.c" /* yacc.c:355  */
 };
+
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif
@@ -256,7 +260,7 @@ int yyparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 260 "config-parser.c" /* yacc.c:358  */
+#line 264 "config-parser.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -498,21 +502,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   311
+#define YYLAST   314
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  66
+#define YYNTOKENS  67
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  80
+#define YYNNTS  81
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  151
+#define YYNRULES  153
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  329
+#define YYNSTATES  334
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   315
+#define YYMAXUTOK   316
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -526,14 +530,14 @@ static const yytype_uint8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,    65,    63,
-       2,    64,     2,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,    66,    64,
+       2,    65,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,    61,     2,    62,     2,     2,     2,     2,
+       2,     2,     2,    62,     2,    63,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -552,29 +556,29 @@ static const yytype_uint8 yytranslate[] =
       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    56,    57,    58,    59,    60
+      55,    56,    57,    58,    59,    60,    61
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,    99,    99,   100,   103,   104,   105,   106,   107,   108,
-     110,   110,   111,   112,   113,   114,   115,   116,   117,   118,
-     121,   121,   122,   123,   124,   125,   130,   132,   133,   135,
-     136,   137,   138,   139,   140,   142,   147,   152,   158,   163,
-     171,   173,   174,   176,   177,   178,   179,   180,   181,   182,
-     183,   184,   185,   186,   187,   188,   189,   190,   191,   192,
-     194,   200,   206,   212,   218,   224,   230,   236,   244,   249,
-     254,   260,   266,   272,   278,   288,   288,   305,   306,   308,
-     309,   310,   312,   320,   328,   339,   339,   355,   356,   358,
-     359,   360,   362,   372,   385,   385,   430,   431,   433,   434,
-     435,   436,   437,   438,   439,   440,   441,   442,   444,   451,
-     458,   465,   481,   487,   493,   499,   505,   524,   526,   527,
-     529,   530,   531,   532,   533,   535,   541,   547,   556,   556,
-     575,   576,   578,   579,   580,   581,   582,   583,   585,   592,
-     599,   610,   616,   618,   619,   621,   639,   641,   642,   644,
-     645,   647
+       0,   100,   100,   101,   104,   105,   106,   107,   108,   109,
+     111,   111,   112,   113,   114,   115,   116,   117,   118,   119,
+     122,   122,   123,   124,   125,   126,   131,   133,   134,   136,
+     137,   138,   139,   140,   141,   143,   148,   153,   159,   164,
+     172,   174,   175,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,   186,   187,   188,   189,   190,   191,   192,   193,
+     194,   196,   202,   208,   214,   220,   226,   232,   238,   246,
+     254,   259,   264,   270,   276,   282,   288,   298,   298,   315,
+     316,   318,   319,   320,   322,   330,   338,   349,   349,   365,
+     366,   368,   369,   370,   372,   382,   395,   395,   440,   441,
+     443,   444,   445,   446,   447,   448,   449,   450,   451,   452,
+     454,   461,   468,   475,   491,   497,   503,   509,   515,   534,
+     536,   537,   539,   540,   541,   542,   543,   545,   551,   557,
+     566,   566,   585,   586,   588,   589,   590,   591,   592,   593,
+     595,   602,   609,   620,   626,   628,   629,   631,   649,   651,
+     652,   654,   655,   657
 };
 #endif
 
@@ -587,18 +591,19 @@ static const char *const yytname[] =
   "BYTES", "KBYTES", "MBYTES", "CHANNEL", "CONNREGEX", "DNS_FDLIMIT",
   "DNSBL_FROM", "DNSBL_TO", "EXEMPT", "FD", "INVITE", "IRC", "KLINE",
   "KEY", "MASK", "MAX_READ", "MODE", "NAME", "NEGCACHE",
-  "NEGCACHE_REBUILD", "NICK", "NICKSERV", "OPER", "OPM", "OPTIONS",
-  "PASSWORD", "PERFORM", "PIDFILE", "PORT", "PROTOCOL", "READTIMEOUT",
-  "REALNAME", "REPLY", "SCANLOG", "SCANNER", "SECONDS", "MINUTES", "HOURS",
-  "DAYS", "WEEKS", "MONTHS", "YEARS", "SENDMAIL", "SERVER", "TARGET_IP",
-  "TARGET_PORT", "TARGET_STRING", "TIMEOUT", "TYPE", "USERNAME", "USER",
-  "VHOST", "NUMBER", "STRING", "PROTOCOLTYPE", "'{'", "'}'", "';'", "'='",
-  "':'", "$accept", "config", "config_items", "timespec_", "timespec",
-  "sizespec_", "sizespec", "options_entry", "options_items",
-  "options_item", "options_negcache", "options_negcache_rebuild",
-  "options_pidfile", "options_dns_fdlimit", "options_scanlog", "irc_entry",
-  "irc_items", "irc_item", "irc_away", "irc_kline", "irc_mode", "irc_nick",
-  "irc_nickserv", "irc_oper", "irc_password", "irc_perform", "irc_port",
+  "NEGCACHE_REBUILD", "NICK", "NICKSERV", "NOTICE", "OPER", "OPM",
+  "OPTIONS", "PASSWORD", "PERFORM", "PIDFILE", "PORT", "PROTOCOL",
+  "READTIMEOUT", "REALNAME", "REPLY", "SCANLOG", "SCANNER", "SECONDS",
+  "MINUTES", "HOURS", "DAYS", "WEEKS", "MONTHS", "YEARS", "SENDMAIL",
+  "SERVER", "TARGET_IP", "TARGET_PORT", "TARGET_STRING", "TIMEOUT", "TYPE",
+  "USERNAME", "USER", "VHOST", "NUMBER", "STRING", "PROTOCOLTYPE", "'{'",
+  "'}'", "';'", "'='", "':'", "$accept", "config", "config_items",
+  "timespec_", "timespec", "sizespec_", "sizespec", "options_entry",
+  "options_items", "options_item", "options_negcache",
+  "options_negcache_rebuild", "options_pidfile", "options_dns_fdlimit",
+  "options_scanlog", "irc_entry", "irc_items", "irc_item", "irc_away",
+  "irc_kline", "irc_mode", "irc_nick", "irc_nickserv", "irc_oper",
+  "irc_password", "irc_perform", "irc_notice", "irc_port",
   "irc_readtimeout", "irc_realname", "irc_server", "irc_username",
   "irc_vhost", "irc_connregex", "channel_entry", "$@1", "channel_items",
   "channel_item", "channel_name", "channel_key", "channel_invite",
@@ -627,16 +632,16 @@ static const yytype_uint16 yytoknum[] =
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   123,   125,    59,    61,    58
+     315,   316,   123,   125,    59,    61,    58
 };
 # endif
 
-#define YYPACT_NINF -125
+#define YYPACT_NINF -245
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-125)))
+  (!!((Yystate) == (-245)))
 
-#define YYTABLE_NINF -129
+#define YYTABLE_NINF -131
 
 #define yytable_value_is_error(Yytable_value) \
   0
@@ -645,39 +650,40 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    -125,   127,  -125,   -53,   -49,   -47,   -38,  -125,  -125,  -125,
-    -125,   -27,  -125,     7,  -125,  -125,    34,    83,    77,   136,
-     -23,   -21,  -125,   -14,     1,  -125,  -125,  -125,   -13,    -3,
-       2,     8,     9,    13,    24,    30,    42,    44,    48,    57,
-      64,    65,    67,     0,  -125,  -125,  -125,  -125,  -125,  -125,
-    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
-    -125,    74,  -125,    70,    71,    75,    12,  -125,  -125,  -125,
-    -125,  -125,    93,  -125,    78,    82,    84,    86,    91,    19,
-    -125,  -125,  -125,  -125,  -125,  -125,    47,   101,    17,    96,
-    -125,   106,   109,   111,   112,   113,   114,   115,   131,   132,
-      87,   108,   133,   137,   138,   139,   140,  -125,   134,   141,
-     142,   143,   144,  -125,   145,   146,   108,   108,   149,   150,
-     147,  -125,  -125,   130,   148,    45,  -125,  -125,  -125,  -125,
-     151,   152,   153,   154,   155,   156,   157,   158,   159,    18,
-    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
-     161,  -125,   162,   163,   164,   165,   166,   167,   168,   169,
-     170,   171,   135,   172,   173,   174,   175,   176,  -125,   107,
-     177,   178,   179,  -125,    95,   180,   181,   182,   183,   184,
-    -125,   189,   190,   187,  -125,   193,   194,   195,   196,   198,
-     197,   199,   108,   200,   201,  -125,  -125,  -125,  -125,  -125,
-    -125,  -125,  -125,  -125,  -125,  -125,  -125,   108,   108,   108,
-     108,   108,   108,   108,  -125,  -125,  -125,  -125,  -125,  -125,
-    -125,   202,   203,   204,    81,  -125,  -125,  -125,  -125,  -125,
-    -125,  -125,  -125,   205,   206,   207,   192,   208,    41,  -125,
-    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
-     210,   211,  -125,   212,    -2,   213,   214,   215,   216,   218,
-     219,   220,   221,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
-    -125,   226,   227,   228,   225,  -125,   231,   232,   233,   235,
-     236,   234,  -125,  -125,  -125,  -125,   194,   194,   194,  -125,
-    -125,  -125,  -125,   238,  -125,  -125,  -125,  -125,  -125,   237,
-     239,   240,  -125,   241,   242,   243,   230,   -51,  -125,   244,
-    -125,  -125,  -125,  -125,   245,  -125,  -125,  -125,  -125,  -125,
-    -125,   250,   247,  -125,  -125,  -125,   248,  -125,  -125
+    -245,   142,  -245,   -55,   -48,   -43,   -26,  -245,  -245,  -245,
+    -245,   -18,  -245,     2,  -245,  -245,    73,    97,    89,   153,
+     -21,    -9,  -245,    -8,     3,  -245,  -245,  -245,    -1,    13,
+      14,    15,    23,    24,    30,    31,    34,    38,    39,    40,
+      44,    47,    51,    53,     0,  -245,  -245,  -245,  -245,  -245,
+    -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,
+    -245,  -245,  -245,    76,  -245,    57,    62,    71,    12,  -245,
+    -245,  -245,  -245,  -245,   105,  -245,    75,    78,    79,    80,
+      81,    20,  -245,  -245,  -245,  -245,  -245,  -245,    10,   116,
+      88,    77,  -245,    90,    91,    98,   100,   101,   102,   103,
+     106,   111,   115,   117,   120,   121,   122,   124,   125,    93,
+    -245,   118,   126,   128,   129,   127,  -245,   130,   131,   120,
+     120,   141,   149,   146,  -245,  -245,   147,   148,    45,  -245,
+    -245,  -245,  -245,   150,   151,   154,   155,   156,   157,   158,
+     159,   160,    19,  -245,  -245,  -245,  -245,  -245,  -245,  -245,
+    -245,  -245,  -245,   162,  -245,   163,   164,   165,   166,   167,
+     168,   169,   170,   171,   172,   173,   152,   174,   175,   176,
+     177,   178,  -245,    68,   179,   180,   181,  -245,   110,   182,
+     183,   184,   185,   186,  -245,   191,   192,   189,  -245,   195,
+     196,   197,   198,   200,   199,   201,   120,   202,   203,  -245,
+    -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,
+    -245,  -245,   120,   120,   120,   120,   120,   120,   120,  -245,
+    -245,  -245,  -245,  -245,  -245,  -245,   204,   205,   206,   -11,
+    -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,   207,   208,
+     209,   194,   210,    58,  -245,  -245,  -245,  -245,  -245,  -245,
+    -245,  -245,  -245,  -245,  -245,   212,   213,  -245,   214,    61,
+     215,   216,   217,   218,   220,   221,   222,   223,  -245,  -245,
+    -245,  -245,  -245,  -245,  -245,  -245,   228,   229,   230,   227,
+    -245,   233,   234,   235,   237,   238,   236,  -245,  -245,  -245,
+    -245,   196,   196,   196,  -245,  -245,  -245,  -245,   240,  -245,
+    -245,  -245,  -245,  -245,   239,   241,   242,  -245,   243,   244,
+     245,   232,   -57,  -245,   246,  -245,  -245,  -245,  -245,   247,
+    -245,  -245,  -245,  -245,  -245,  -245,   252,   249,  -245,  -245,
+    -245,   250,  -245,  -245
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -685,65 +691,68 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,    85,     1,     0,     0,     0,     0,     3,     5,     4,
+       2,    87,     1,     0,     0,     0,     0,     3,     5,     4,
        7,     0,     8,     0,     6,     9,     0,     0,     0,     0,
-       0,     0,   150,     0,     0,   148,   149,    59,     0,     0,
+       0,     0,   152,     0,     0,   150,   151,    60,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    42,    43,    45,    48,    46,    47,
-      49,    50,    57,    51,    52,    53,    54,    55,    56,    44,
-      58,     0,   124,     0,     0,     0,     0,   119,   120,   121,
-     122,   123,     0,    34,     0,     0,     0,     0,     0,     0,
-      28,    29,    30,    31,    32,    33,     0,     0,     0,     0,
-     147,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    41,     0,     0,
-       0,     0,     0,   118,     0,     0,     0,     0,     0,     0,
-       0,    27,    91,     0,     0,     0,    88,    89,    90,   107,
+       0,     0,     0,     0,     0,    42,    43,    45,    48,    46,
+      47,    49,    50,    57,    58,    51,    52,    53,    54,    55,
+      56,    44,    59,     0,   126,     0,     0,     0,     0,   121,
+     122,   123,   124,   125,     0,    34,     0,     0,     0,     0,
+       0,     0,    28,    29,    30,    31,    32,    33,     0,     0,
+       0,     0,   149,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      97,    98,    99,   101,   103,   100,   102,   105,   106,   104,
-       0,   146,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    10,     0,     0,     0,     0,     0,    40,     0,
-       0,     0,     0,   117,     0,     0,     0,     0,     0,     0,
-      26,     0,     0,     0,    87,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    96,   151,    60,    74,    61,
-      62,    63,    64,    65,    66,    67,    68,    10,    10,    10,
-      10,    10,    10,    10,    12,    11,    69,    70,    71,    72,
-      73,     0,     0,     0,     0,    78,    79,    80,    81,   125,
-     126,   127,   137,     0,     0,     0,     0,     0,     0,   131,
-     132,   134,   133,   135,   136,    38,    35,    36,    37,    39,
-       0,     0,    86,     0,    20,     0,     0,     0,     0,     0,
-       0,     0,     0,    95,    13,    14,    15,    16,    17,    18,
-      19,     0,     0,     0,     0,    77,     0,     0,     0,     0,
-       0,     0,   130,    92,    93,   112,    20,    20,    20,    22,
-      21,   115,   108,     0,   110,   113,   111,   114,   109,     0,
-       0,     0,    76,     0,     0,     0,     0,     0,   144,     0,
-     129,    23,    24,    25,     0,    84,    83,    82,   141,   139,
-     138,     0,     0,   143,   140,   116,     0,   142,   145
+      41,     0,     0,     0,     0,     0,   120,     0,     0,     0,
+       0,     0,     0,     0,    27,    93,     0,     0,     0,    90,
+      91,    92,   109,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    99,   100,   101,   103,   105,   102,   104,
+     107,   108,   106,     0,   148,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    10,     0,     0,     0,
+       0,     0,    40,     0,     0,     0,     0,   119,     0,     0,
+       0,     0,     0,     0,    26,     0,     0,     0,    89,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    98,
+     153,    61,    76,    62,    63,    64,    65,    69,    66,    67,
+      68,    70,    10,    10,    10,    10,    10,    10,    10,    12,
+      11,    71,    72,    73,    74,    75,     0,     0,     0,     0,
+      80,    81,    82,    83,   127,   128,   129,   139,     0,     0,
+       0,     0,     0,     0,   133,   134,   136,   135,   137,   138,
+      38,    35,    36,    37,    39,     0,     0,    88,     0,    20,
+       0,     0,     0,     0,     0,     0,     0,     0,    97,    13,
+      14,    15,    16,    17,    18,    19,     0,     0,     0,     0,
+      79,     0,     0,     0,     0,     0,     0,   132,    94,    95,
+     114,    20,    20,    20,    22,    21,   117,   110,     0,   112,
+     115,   113,   116,   111,     0,     0,     0,    78,     0,     0,
+       0,     0,     0,   146,     0,   131,    23,    24,    25,     0,
+      86,    85,    84,   143,   141,   140,     0,     0,   145,   142,
+     118,     0,   144,   147
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -125,  -125,  -125,   -24,  -101,  -124,    25,  -125,  -125,   120,
-    -125,  -125,  -125,  -125,  -125,  -125,  -125,   217,  -125,  -125,
-    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
-    -125,  -125,  -125,  -125,  -125,  -125,   -19,  -125,  -125,  -125,
-    -125,  -125,  -125,    88,  -125,  -125,  -125,  -125,  -125,   122,
-    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
-    -125,   224,  -125,  -125,  -125,  -125,  -125,  -125,    27,  -125,
-    -125,  -125,  -125,  -125,  -125,   -93,  -125,  -125,   254,  -125
+    -245,  -245,  -245,   -10,  -104,  -244,    27,  -245,  -245,   133,
+    -245,  -245,  -245,  -245,  -245,  -245,  -245,   219,  -245,  -245,
+    -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,
+    -245,  -245,  -245,  -245,  -245,  -245,  -245,    35,  -245,  -245,
+    -245,  -245,  -245,  -245,   137,  -245,  -245,  -245,  -245,  -245,
+     139,  -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,  -245,
+    -245,  -245,   225,  -245,  -245,  -245,  -245,  -245,  -245,   -25,
+    -245,  -245,  -245,  -245,  -245,  -245,   -46,  -245,  -245,   277,
+    -245
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,     7,   214,   215,   289,   290,     8,    79,    80,
-      81,    82,    83,    84,    85,     9,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
-      57,    58,    59,    60,    61,   224,   225,   226,   227,   228,
-      10,    11,   125,   126,   127,   128,    12,    13,   139,   140,
-     141,   142,   143,   144,   145,   146,   147,   148,   149,    14,
-      66,    67,    68,    69,    70,    71,    72,   238,   239,   240,
-     241,   242,   243,   244,   307,   308,    15,    24,    25,    26
+      -1,     1,     7,   219,   220,   294,   295,     8,    81,    82,
+      83,    84,    85,    86,    87,     9,    44,    45,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
+      58,    59,    60,    61,    62,    63,   229,   230,   231,   232,
+     233,    10,    11,   128,   129,   130,   131,    12,    13,   142,
+     143,   144,   145,   146,   147,   148,   149,   150,   151,   152,
+      14,    68,    69,    70,    71,    72,    73,    74,   243,   244,
+     245,   246,   247,   248,   249,   312,   313,    15,    24,    25,
+      26
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -751,134 +760,135 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-     163,    27,    22,    28,   286,   287,   288,   306,    16,   -75,
-      29,   322,    17,    62,    18,   176,   177,  -128,    30,   129,
-      73,    23,    31,    19,    63,    64,    32,    33,    34,    20,
-      74,    35,    36,   130,    37,    22,    38,    39,    86,   131,
-      87,   132,   232,    75,    76,   233,   122,    21,   122,    40,
-      88,    91,    77,   133,    23,    41,   254,    42,    78,   234,
-      65,    92,   106,    89,   235,   123,    93,   123,   134,   135,
-     136,   137,    94,    95,   112,   138,   150,    96,    62,   236,
-     194,   120,  -128,   108,    27,   124,    28,   124,    97,    63,
-      64,   261,   -75,    29,    98,   237,   232,   221,   114,   233,
-     222,    30,   129,   281,   223,    31,    99,   183,   100,    32,
-      33,    34,   101,   234,    35,    36,   130,    37,   235,    38,
-      39,   102,   131,   221,   132,    65,   222,     2,   103,   104,
-     223,   105,    40,   236,   109,   110,   133,    73,    41,   111,
-      42,     3,   115,   274,     4,   161,   116,    74,   117,   237,
-     118,   134,   135,   136,   137,   119,     5,     6,   138,   151,
-      75,    76,   311,   312,   313,   152,   162,   -94,   153,    77,
-     154,   155,   156,   157,   158,    78,   207,   208,   209,   210,
-     211,   212,   213,   264,   265,   266,   267,   268,   269,   270,
-     159,   160,   164,   162,   181,   169,   165,   166,   167,   121,
-     170,   171,   172,   168,   175,   275,   174,   173,   178,   179,
-     180,   255,   182,   184,   323,   185,   186,   187,   188,   189,
-     190,   191,   192,   193,   196,   197,   198,   199,   200,   201,
-     202,   203,   204,   205,   206,   216,   217,   218,   219,   220,
-     229,   230,   231,   245,   246,   247,   248,   249,   250,   251,
-     252,   253,   254,   279,   256,   259,   257,   258,   260,   262,
-     107,   195,     0,     0,   263,   282,   271,   272,   273,   276,
-     277,   278,   280,   283,   284,   285,   291,   292,    90,   294,
-     293,   295,   296,   297,   298,   299,   300,   301,   302,   303,
-     113,   304,   305,   306,   321,   309,   314,   310,     0,     0,
-     315,     0,   316,   317,   318,   319,   320,   324,   325,   326,
-     327,   328
+     167,    27,   311,    28,    22,   226,   327,    16,   227,   -77,
+      29,   125,   228,    64,    17,   180,   181,  -130,    30,    18,
+     132,    75,    31,    23,    65,    66,    32,    33,    34,    35,
+     126,    76,    36,    37,   133,    38,    19,    39,    40,    20,
+     134,    88,   135,    21,    77,    78,   125,   316,   317,   318,
+      41,   127,   279,    89,    79,   136,    42,    90,    43,   237,
+      80,    67,   238,   109,    93,   126,    91,   291,   292,   293,
+     137,   138,   139,   140,    22,   115,   239,   141,    94,    95,
+      96,   240,   198,   123,   226,   111,   127,   227,    97,    98,
+      64,   228,   266,    23,  -130,    99,   100,   241,    27,   101,
+      28,    65,    66,   102,   103,   104,   -77,    29,   187,   105,
+     117,   237,   106,   242,   238,    30,   107,   132,   108,    31,
+     259,   286,   112,    32,    33,    34,    35,   113,   239,    36,
+      37,   133,    38,   240,    39,    40,   114,   134,    67,   135,
+     118,   154,     2,   119,   120,   121,   122,    41,   153,   241,
+     155,   156,   136,    42,    75,    43,     3,   172,   157,     4,
+     158,   159,   160,   161,    76,   242,   162,   137,   138,   139,
+     140,   163,     5,     6,   141,   164,   165,    77,    78,   166,
+     173,   168,   169,   -96,   170,   171,   174,    79,   175,   176,
+     179,   177,   178,    80,   212,   213,   214,   215,   216,   217,
+     218,   182,   269,   270,   271,   272,   273,   274,   275,   183,
+     184,   166,   185,   186,   124,   189,   190,   260,   287,   191,
+     192,   193,   194,   195,   196,   197,   200,   201,   202,   203,
+     204,   205,   206,   207,   208,   209,   210,   211,   221,   222,
+     223,   224,   225,   234,   235,   236,   250,   251,   252,   253,
+     254,   255,   256,   257,   258,   259,   284,   261,   264,   262,
+     263,   265,   267,   110,   280,   188,   328,   268,     0,   276,
+     277,   278,   281,   282,   283,   285,   288,   289,   290,   296,
+     297,   199,   299,   298,   300,   301,   302,   303,   304,   305,
+     306,   307,   308,   116,   309,   310,   311,   326,   314,   319,
+     315,    92,     0,   320,     0,   321,   322,   323,   324,   325,
+     329,   330,   331,   332,   333
 };
 
 static const yytype_int16 yycheck[] =
 {
-     101,     1,     1,     3,     6,     7,     8,    58,    61,     9,
-      10,    62,    61,     1,    61,   116,   117,     5,    18,     1,
-       1,    20,    22,    61,    12,    13,    26,    27,    28,    56,
-      11,    31,    32,    15,    34,     1,    36,    37,    61,    21,
-      61,    23,     1,    24,    25,     4,     1,    40,     1,    49,
-      64,    64,    33,    35,    20,    55,    58,    57,    39,    18,
-      48,    64,    62,    62,    23,    20,    64,    20,    50,    51,
-      52,    53,    64,    64,    62,    57,    59,    64,     1,    38,
-      62,    62,     5,     9,     1,    40,     3,    40,    64,    12,
-      13,   192,     9,    10,    64,    54,     1,    16,     5,     4,
-      19,    18,     1,    62,    23,    22,    64,    62,    64,    26,
-      27,    28,    64,    18,    31,    32,    15,    34,    23,    36,
-      37,    64,    21,    16,    23,    48,    19,     0,    64,    64,
-      23,    64,    49,    38,    64,    64,    35,     1,    55,    64,
-      57,    14,    64,    62,    17,    58,    64,    11,    64,    54,
-      64,    50,    51,    52,    53,    64,    29,    30,    57,    63,
-      24,    25,   286,   287,   288,    59,    58,    40,    59,    33,
-      59,    59,    59,    59,    59,    39,    41,    42,    43,    44,
-      45,    46,    47,   207,   208,   209,   210,   211,   212,   213,
-      59,    59,    59,    58,    64,    61,    59,    59,    59,    79,
-      59,    59,    59,    63,    58,   224,    61,    63,    59,    59,
-      63,   186,    64,   125,   307,    64,    64,    64,    64,    64,
-      64,    64,    64,    64,    63,    63,    63,    63,    63,    63,
-      63,    63,    63,    63,    63,    63,    63,    63,    63,    63,
-      63,    63,    63,    63,    63,    63,    63,    63,    59,    59,
-      63,    58,    58,    61,    59,    58,    60,    59,    59,    59,
-      43,   139,    -1,    -1,    63,   238,    64,    64,    64,    64,
-      64,    64,    64,    63,    63,    63,    63,    63,    24,    63,
-      65,    63,    63,    63,    63,    59,    59,    59,    63,    58,
-      66,    59,    59,    58,    64,    59,    58,    63,    -1,    -1,
-      63,    -1,    63,    63,    63,    63,    63,    63,    63,    59,
-      63,    63
+     104,     1,    59,     3,     1,    16,    63,    62,    19,     9,
+      10,     1,    23,     1,    62,   119,   120,     5,    18,    62,
+       1,     1,    22,    20,    12,    13,    26,    27,    28,    29,
+      20,    11,    32,    33,    15,    35,    62,    37,    38,    57,
+      21,    62,    23,    41,    24,    25,     1,   291,   292,   293,
+      50,    41,    63,    62,    34,    36,    56,    65,    58,     1,
+      40,    49,     4,    63,    65,    20,    63,     6,     7,     8,
+      51,    52,    53,    54,     1,    63,    18,    58,    65,    65,
+      65,    23,    63,    63,    16,     9,    41,    19,    65,    65,
+       1,    23,   196,    20,     5,    65,    65,    39,     1,    65,
+       3,    12,    13,    65,    65,    65,     9,    10,    63,    65,
+       5,     1,    65,    55,     4,    18,    65,     1,    65,    22,
+      59,    63,    65,    26,    27,    28,    29,    65,    18,    32,
+      33,    15,    35,    23,    37,    38,    65,    21,    49,    23,
+      65,    64,     0,    65,    65,    65,    65,    50,    60,    39,
+      60,    60,    36,    56,     1,    58,    14,    64,    60,    17,
+      60,    60,    60,    60,    11,    55,    60,    51,    52,    53,
+      54,    60,    30,    31,    58,    60,    59,    24,    25,    59,
+      62,    60,    60,    41,    60,    60,    60,    34,    60,    60,
+      59,    64,    62,    40,    42,    43,    44,    45,    46,    47,
+      48,    60,   212,   213,   214,   215,   216,   217,   218,    60,
+      64,    59,    65,    65,    81,    65,    65,   190,   243,    65,
+      65,    65,    65,    65,    65,    65,    64,    64,    64,    64,
+      64,    64,    64,    64,    64,    64,    64,    64,    64,    64,
+      64,    64,    64,    64,    64,    64,    64,    64,    64,    64,
+      64,    60,    60,    64,    59,    59,    62,    60,    59,    61,
+      60,    60,    60,    44,   229,   128,   312,    64,    -1,    65,
+      65,    65,    65,    65,    65,    65,    64,    64,    64,    64,
+      64,   142,    64,    66,    64,    64,    64,    64,    60,    60,
+      60,    64,    59,    68,    60,    60,    59,    65,    60,    59,
+      64,    24,    -1,    64,    -1,    64,    64,    64,    64,    64,
+      64,    64,    60,    64,    64
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    67,     0,    14,    17,    29,    30,    68,    73,    81,
-     106,   107,   112,   113,   125,   142,    61,    61,    61,    61,
-      56,    40,     1,    20,   143,   144,   145,     1,     3,    10,
-      18,    22,    26,    27,    28,    31,    32,    34,    36,    37,
-      49,    55,    57,    82,    83,    84,    85,    86,    87,    88,
+       0,    68,     0,    14,    17,    30,    31,    69,    74,    82,
+     108,   109,   114,   115,   127,   144,    62,    62,    62,    62,
+      57,    41,     1,    20,   145,   146,   147,     1,     3,    10,
+      18,    22,    26,    27,    28,    29,    32,    33,    35,    37,
+      38,    50,    56,    58,    83,    84,    85,    86,    87,    88,
       89,    90,    91,    92,    93,    94,    95,    96,    97,    98,
-      99,   100,     1,    12,    13,    48,   126,   127,   128,   129,
-     130,   131,   132,     1,    11,    24,    25,    33,    39,    74,
-      75,    76,    77,    78,    79,    80,    61,    61,    64,    62,
-     144,    64,    64,    64,    64,    64,    64,    64,    64,    64,
-      64,    64,    64,    64,    64,    64,    62,    83,     9,    64,
-      64,    64,    62,   127,     5,    64,    64,    64,    64,    64,
-      62,    75,     1,    20,    40,   108,   109,   110,   111,     1,
-      15,    21,    23,    35,    50,    51,    52,    53,    57,   114,
-     115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
-      59,    63,    59,    59,    59,    59,    59,    59,    59,    59,
-      59,    58,    58,    70,    59,    59,    59,    59,    63,    61,
-      59,    59,    59,    63,    61,    58,    70,    70,    59,    59,
-      63,    64,    64,    62,   109,    64,    64,    64,    64,    64,
-      64,    64,    64,    64,    62,   115,    63,    63,    63,    63,
-      63,    63,    63,    63,    63,    63,    63,    41,    42,    43,
-      44,    45,    46,    47,    69,    70,    63,    63,    63,    63,
-      63,    16,    19,    23,   101,   102,   103,   104,   105,    63,
-      63,    63,     1,     4,    18,    23,    38,    54,   133,   134,
-     135,   136,   137,   138,   139,    63,    63,    63,    63,    63,
-      59,    59,    63,    58,    58,    72,    59,    60,    59,    58,
-      59,    70,    59,    63,    69,    69,    69,    69,    69,    69,
-      69,    64,    64,    64,    62,   102,    64,    64,    64,    61,
-      64,    62,   134,    63,    63,    63,     6,     7,     8,    71,
-      72,    63,    63,    65,    63,    63,    63,    63,    63,    59,
-      59,    59,    63,    58,    59,    59,    58,   140,   141,    59,
-      63,    71,    71,    71,    58,    63,    63,    63,    63,    63,
-      63,    64,    62,   141,    63,    63,    59,    63,    63
+      99,   100,   101,   102,     1,    12,    13,    49,   128,   129,
+     130,   131,   132,   133,   134,     1,    11,    24,    25,    34,
+      40,    75,    76,    77,    78,    79,    80,    81,    62,    62,
+      65,    63,   146,    65,    65,    65,    65,    65,    65,    65,
+      65,    65,    65,    65,    65,    65,    65,    65,    65,    63,
+      84,     9,    65,    65,    65,    63,   129,     5,    65,    65,
+      65,    65,    65,    63,    76,     1,    20,    41,   110,   111,
+     112,   113,     1,    15,    21,    23,    36,    51,    52,    53,
+      54,    58,   116,   117,   118,   119,   120,   121,   122,   123,
+     124,   125,   126,    60,    64,    60,    60,    60,    60,    60,
+      60,    60,    60,    60,    60,    59,    59,    71,    60,    60,
+      60,    60,    64,    62,    60,    60,    60,    64,    62,    59,
+      71,    71,    60,    60,    64,    65,    65,    63,   111,    65,
+      65,    65,    65,    65,    65,    65,    65,    65,    63,   117,
+      64,    64,    64,    64,    64,    64,    64,    64,    64,    64,
+      64,    64,    42,    43,    44,    45,    46,    47,    48,    70,
+      71,    64,    64,    64,    64,    64,    16,    19,    23,   103,
+     104,   105,   106,   107,    64,    64,    64,     1,     4,    18,
+      23,    39,    55,   135,   136,   137,   138,   139,   140,   141,
+      64,    64,    64,    64,    64,    60,    60,    64,    59,    59,
+      73,    60,    61,    60,    59,    60,    71,    60,    64,    70,
+      70,    70,    70,    70,    70,    70,    65,    65,    65,    63,
+     104,    65,    65,    65,    62,    65,    63,   136,    64,    64,
+      64,     6,     7,     8,    72,    73,    64,    64,    66,    64,
+      64,    64,    64,    64,    60,    60,    60,    64,    59,    60,
+      60,    59,   142,   143,    60,    64,    72,    72,    72,    59,
+      64,    64,    64,    64,    64,    64,    65,    63,   143,    64,
+      64,    60,    64,    64
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 yyr1[] =
 {
-       0,    66,    67,    67,    68,    68,    68,    68,    68,    68,
-      69,    69,    70,    70,    70,    70,    70,    70,    70,    70,
-      71,    71,    72,    72,    72,    72,    73,    74,    74,    75,
-      75,    75,    75,    75,    75,    76,    77,    78,    79,    80,
-      81,    82,    82,    83,    83,    83,    83,    83,    83,    83,
-      83,    83,    83,    83,    83,    83,    83,    83,    83,    83,
+       0,    67,    68,    68,    69,    69,    69,    69,    69,    69,
+      70,    70,    71,    71,    71,    71,    71,    71,    71,    71,
+      72,    72,    73,    73,    73,    73,    74,    75,    75,    76,
+      76,    76,    76,    76,    76,    77,    78,    79,    80,    81,
+      82,    83,    83,    84,    84,    84,    84,    84,    84,    84,
+      84,    84,    84,    84,    84,    84,    84,    84,    84,    84,
       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
-      94,    95,    96,    97,    98,   100,    99,   101,   101,   102,
-     102,   102,   103,   104,   105,   107,   106,   108,   108,   109,
-     109,   109,   110,   111,   113,   112,   114,   114,   115,   115,
-     115,   115,   115,   115,   115,   115,   115,   115,   116,   117,
-     118,   119,   120,   121,   122,   123,   124,   125,   126,   126,
-     127,   127,   127,   127,   127,   128,   129,   130,   132,   131,
-     133,   133,   134,   134,   134,   134,   134,   134,   135,   136,
-     137,   138,   139,   140,   140,   141,   142,   143,   143,   144,
-     144,   145
+      94,    95,    96,    97,    98,    99,   100,   102,   101,   103,
+     103,   104,   104,   104,   105,   106,   107,   109,   108,   110,
+     110,   111,   111,   111,   112,   113,   115,   114,   116,   116,
+     117,   117,   117,   117,   117,   117,   117,   117,   117,   117,
+     118,   119,   120,   121,   122,   123,   124,   125,   126,   127,
+     128,   128,   129,   129,   129,   129,   129,   130,   131,   132,
+     134,   133,   135,   135,   136,   136,   136,   136,   136,   136,
+     137,   138,   139,   140,   141,   142,   142,   143,   144,   145,
+     145,   146,   146,   147
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -890,16 +900,16 @@ static const yytype_uint8 yyr2[] =
        1,     1,     1,     1,     1,     4,     4,     4,     4,     4,
        5,     2,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       4,     4,     4,     4,     4,     4,     4,     4,     4,     4,
-       4,     4,     4,     4,     4,     0,     6,     2,     1,     1,
-       1,     1,     4,     4,     4,     0,     6,     2,     1,     1,
-       1,     1,     4,     4,     0,     6,     2,     1,     1,     1,
-       1,     1,     1,     1,     1,     1,     1,     1,     4,     4,
-       4,     4,     4,     4,     4,     4,     6,     5,     2,     1,
-       1,     1,     1,     1,     1,     4,     4,     4,     0,     6,
-       2,     1,     1,     1,     1,     1,     1,     1,     4,     4,
-       4,     4,     5,     2,     1,     4,     5,     2,     1,     1,
-       1,     4
+       1,     4,     4,     4,     4,     4,     4,     4,     4,     4,
+       4,     4,     4,     4,     4,     4,     4,     0,     6,     2,
+       1,     1,     1,     1,     4,     4,     4,     0,     6,     2,
+       1,     1,     1,     1,     4,     4,     0,     6,     2,     1,
+       1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       4,     4,     4,     4,     4,     4,     4,     4,     6,     5,
+       2,     1,     1,     1,     1,     1,     1,     4,     4,     4,
+       0,     6,     2,     1,     1,     1,     1,     1,     1,     1,
+       4,     4,     4,     4,     5,     2,     1,     4,     5,     2,
+       1,     1,     1,     4
 };
 
 
@@ -1576,268 +1586,279 @@ yyreduce:
   switch (yyn)
     {
         case 10:
-#line 110 "config-parser.y" /* yacc.c:1646  */
+#line 111 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = 0; }
-#line 1582 "config-parser.c" /* yacc.c:1646  */
+#line 1592 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 12:
-#line 111 "config-parser.y" /* yacc.c:1646  */
+#line 112 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
-#line 1588 "config-parser.c" /* yacc.c:1646  */
+#line 1598 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 13:
-#line 112 "config-parser.y" /* yacc.c:1646  */
+#line 113 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
-#line 1594 "config-parser.c" /* yacc.c:1646  */
+#line 1604 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 14:
-#line 113 "config-parser.y" /* yacc.c:1646  */
+#line 114 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); }
-#line 1600 "config-parser.c" /* yacc.c:1646  */
+#line 1610 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 15:
-#line 114 "config-parser.y" /* yacc.c:1646  */
+#line 115 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); }
-#line 1606 "config-parser.c" /* yacc.c:1646  */
+#line 1616 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 16:
-#line 115 "config-parser.y" /* yacc.c:1646  */
+#line 116 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); }
-#line 1612 "config-parser.c" /* yacc.c:1646  */
+#line 1622 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 17:
-#line 116 "config-parser.y" /* yacc.c:1646  */
+#line 117 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); }
-#line 1618 "config-parser.c" /* yacc.c:1646  */
+#line 1628 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 18:
-#line 117 "config-parser.y" /* yacc.c:1646  */
+#line 118 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); }
-#line 1624 "config-parser.c" /* yacc.c:1646  */
+#line 1634 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 19:
-#line 118 "config-parser.y" /* yacc.c:1646  */
+#line 119 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); }
-#line 1630 "config-parser.c" /* yacc.c:1646  */
+#line 1640 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 20:
-#line 121 "config-parser.y" /* yacc.c:1646  */
+#line 122 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = 0; }
-#line 1636 "config-parser.c" /* yacc.c:1646  */
+#line 1646 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 22:
-#line 122 "config-parser.y" /* yacc.c:1646  */
+#line 123 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
-#line 1642 "config-parser.c" /* yacc.c:1646  */
+#line 1652 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 23:
-#line 123 "config-parser.y" /* yacc.c:1646  */
+#line 124 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
-#line 1648 "config-parser.c" /* yacc.c:1646  */
+#line 1658 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 24:
-#line 124 "config-parser.y" /* yacc.c:1646  */
+#line 125 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); }
-#line 1654 "config-parser.c" /* yacc.c:1646  */
+#line 1664 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 25:
-#line 125 "config-parser.y" /* yacc.c:1646  */
+#line 126 "config-parser.y" /* yacc.c:1646  */
     { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); }
-#line 1660 "config-parser.c" /* yacc.c:1646  */
+#line 1670 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 35:
-#line 143 "config-parser.y" /* yacc.c:1646  */
+#line 144 "config-parser.y" /* yacc.c:1646  */
     {
    OptionsItem->negcache = (yyvsp[-1].number);
 }
-#line 1668 "config-parser.c" /* yacc.c:1646  */
+#line 1678 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 36:
-#line 148 "config-parser.y" /* yacc.c:1646  */
+#line 149 "config-parser.y" /* yacc.c:1646  */
     {
    OptionsItem->negcache_rebuild = (yyvsp[-1].number);
 }
-#line 1676 "config-parser.c" /* yacc.c:1646  */
+#line 1686 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 37:
-#line 153 "config-parser.y" /* yacc.c:1646  */
+#line 154 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(OptionsItem->pidfile);
    OptionsItem->pidfile = xstrdup((yyvsp[-1].string));
 }
-#line 1685 "config-parser.c" /* yacc.c:1646  */
+#line 1695 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 38:
-#line 159 "config-parser.y" /* yacc.c:1646  */
+#line 160 "config-parser.y" /* yacc.c:1646  */
     {
    OptionsItem->dns_fdlimit = (yyvsp[-1].number);
 }
-#line 1693 "config-parser.c" /* yacc.c:1646  */
+#line 1703 "config-parser.c" /* yacc.c:1646  */
     break;
 
   case 39:
-#line 164 "config-parser.y" /* yacc.c:1646  */
+#line 165 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(OptionsItem->scanlog);
    OptionsItem->scanlog = xstrdup((yyvsp[-1].string));
 }
-#line 1702 "config-parser.c" /* yacc.c:1646  */
+#line 1712 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 60:
-#line 195 "config-parser.y" /* yacc.c:1646  */
+  case 61:
+#line 197 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->away);
    IRCItem->away = xstrdup((yyvsp[-1].string));
 }
-#line 1711 "config-parser.c" /* yacc.c:1646  */
+#line 1721 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 61:
-#line 201 "config-parser.y" /* yacc.c:1646  */
+  case 62:
+#line 203 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->kline);
    IRCItem->kline = xstrdup((yyvsp[-1].string));
 }
-#line 1720 "config-parser.c" /* yacc.c:1646  */
+#line 1730 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 62:
-#line 207 "config-parser.y" /* yacc.c:1646  */
+  case 63:
+#line 209 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->mode);
    IRCItem->mode = xstrdup((yyvsp[-1].string));
 }
-#line 1729 "config-parser.c" /* yacc.c:1646  */
+#line 1739 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 63:
-#line 213 "config-parser.y" /* yacc.c:1646  */
+  case 64:
+#line 215 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->nick);
    IRCItem->nick = xstrdup((yyvsp[-1].string));
 }
-#line 1738 "config-parser.c" /* yacc.c:1646  */
+#line 1748 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 64:
-#line 219 "config-parser.y" /* yacc.c:1646  */
+  case 65:
+#line 221 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->nickserv);
    IRCItem->nickserv = xstrdup((yyvsp[-1].string));
 }
-#line 1747 "config-parser.c" /* yacc.c:1646  */
+#line 1757 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 65:
-#line 225 "config-parser.y" /* yacc.c:1646  */
+  case 66:
+#line 227 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->oper);
    IRCItem->oper = xstrdup((yyvsp[-1].string));
 }
-#line 1756 "config-parser.c" /* yacc.c:1646  */
+#line 1766 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 66:
-#line 231 "config-parser.y" /* yacc.c:1646  */
+  case 67:
+#line 233 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->password);
    IRCItem->password = xstrdup((yyvsp[-1].string));
 }
-#line 1765 "config-parser.c" /* yacc.c:1646  */
+#line 1775 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 67:
-#line 237 "config-parser.y" /* yacc.c:1646  */
+  case 68:
+#line 239 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    node = node_create(xstrdup((yyvsp[-1].string)));
 
    list_add(IRCItem->performs, node);
 }
-#line 1776 "config-parser.c" /* yacc.c:1646  */
+#line 1786 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 68:
-#line 245 "config-parser.y" /* yacc.c:1646  */
+  case 69:
+#line 247 "config-parser.y" /* yacc.c:1646  */
+    {
+   node_t *node;
+   node = node_create(xstrdup((yyvsp[-1].string)));
+
+   list_add(IRCItem->notices, node);
+}
+#line 1797 "config-parser.c" /* yacc.c:1646  */
+    break;
+
+  case 70:
+#line 255 "config-parser.y" /* yacc.c:1646  */
     {
    IRCItem->port = (yyvsp[-1].number);
 }
-#line 1784 "config-parser.c" /* yacc.c:1646  */
+#line 1805 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 69:
-#line 250 "config-parser.y" /* yacc.c:1646  */
+  case 71:
+#line 260 "config-parser.y" /* yacc.c:1646  */
     {
    IRCItem->readtimeout = (yyvsp[-1].number);
 }
-#line 1792 "config-parser.c" /* yacc.c:1646  */
+#line 1813 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 70:
-#line 255 "config-parser.y" /* yacc.c:1646  */
+  case 72:
+#line 265 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->realname);
    IRCItem->realname = xstrdup((yyvsp[-1].string));
 }
-#line 1801 "config-parser.c" /* yacc.c:1646  */
+#line 1822 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 71:
-#line 261 "config-parser.y" /* yacc.c:1646  */
+  case 73:
+#line 271 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->server);
    IRCItem->server = xstrdup((yyvsp[-1].string));
 }
-#line 1810 "config-parser.c" /* yacc.c:1646  */
+#line 1831 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 72:
-#line 267 "config-parser.y" /* yacc.c:1646  */
+  case 74:
+#line 277 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->username);
    IRCItem->username = xstrdup((yyvsp[-1].string));
 }
-#line 1819 "config-parser.c" /* yacc.c:1646  */
+#line 1840 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 73:
-#line 273 "config-parser.y" /* yacc.c:1646  */
+  case 75:
+#line 283 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->vhost);
    IRCItem->vhost = xstrdup((yyvsp[-1].string));
 }
-#line 1828 "config-parser.c" /* yacc.c:1646  */
+#line 1849 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 74:
-#line 279 "config-parser.y" /* yacc.c:1646  */
+  case 76:
+#line 289 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(IRCItem->connregex);
    IRCItem->connregex = xstrdup((yyvsp[-1].string));
 }
-#line 1837 "config-parser.c" /* yacc.c:1646  */
+#line 1858 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 75:
-#line 288 "config-parser.y" /* yacc.c:1646  */
+  case 77:
+#line 298 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    struct ChannelConf *item;
@@ -1853,44 +1874,44 @@ yyreduce:
 
    tmp = item;
 }
-#line 1857 "config-parser.c" /* yacc.c:1646  */
+#line 1878 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 82:
-#line 313 "config-parser.y" /* yacc.c:1646  */
+  case 84:
+#line 323 "config-parser.y" /* yacc.c:1646  */
     {
    struct ChannelConf *item = tmp;
 
    MyFree(item->name);
    item->name = xstrdup((yyvsp[-1].string));
 }
-#line 1868 "config-parser.c" /* yacc.c:1646  */
+#line 1889 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 83:
-#line 321 "config-parser.y" /* yacc.c:1646  */
+  case 85:
+#line 331 "config-parser.y" /* yacc.c:1646  */
     {
    struct ChannelConf *item = tmp;
 
    MyFree(item->key);
    item->key = xstrdup((yyvsp[-1].string));
 }
-#line 1879 "config-parser.c" /* yacc.c:1646  */
+#line 1900 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 84:
-#line 329 "config-parser.y" /* yacc.c:1646  */
+  case 86:
+#line 339 "config-parser.y" /* yacc.c:1646  */
     {
    struct ChannelConf *item = tmp;
 
    MyFree(item->invite);
    item->invite = xstrdup((yyvsp[-1].string));
 }
-#line 1890 "config-parser.c" /* yacc.c:1646  */
+#line 1911 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 85:
-#line 339 "config-parser.y" /* yacc.c:1646  */
+  case 87:
+#line 349 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    struct UserConf *item;
@@ -1905,11 +1926,11 @@ yyreduce:
 
    tmp = item; 
 }
-#line 1909 "config-parser.c" /* yacc.c:1646  */
+#line 1930 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 92:
-#line 363 "config-parser.y" /* yacc.c:1646  */
+  case 94:
+#line 373 "config-parser.y" /* yacc.c:1646  */
     {
    struct UserConf *item = tmp;
    node_t *node;
@@ -1918,11 +1939,11 @@ yyreduce:
 
    list_add(item->masks, node);
 }
-#line 1922 "config-parser.c" /* yacc.c:1646  */
+#line 1943 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 93:
-#line 373 "config-parser.y" /* yacc.c:1646  */
+  case 95:
+#line 383 "config-parser.y" /* yacc.c:1646  */
     {
    struct UserConf *item = tmp;
    node_t *node;
@@ -1931,11 +1952,11 @@ yyreduce:
 
    list_add(item->scanners, node);
 }
-#line 1935 "config-parser.c" /* yacc.c:1646  */
+#line 1956 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 94:
-#line 385 "config-parser.y" /* yacc.c:1646  */
+  case 96:
+#line 395 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    struct ScannerConf *item, *olditem;
@@ -1979,41 +2000,41 @@ yyreduce:
    list_add(ScannerItemList, node);
    tmp = item;
 }
-#line 1983 "config-parser.c" /* yacc.c:1646  */
+#line 2004 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 108:
-#line 445 "config-parser.y" /* yacc.c:1646  */
+  case 110:
+#line 455 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    MyFree(item->name);
    item->name = xstrdup((yyvsp[-1].string));
 }
-#line 1993 "config-parser.c" /* yacc.c:1646  */
+#line 2014 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 109:
-#line 452 "config-parser.y" /* yacc.c:1646  */
+  case 111:
+#line 462 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    MyFree(item->vhost);
    item->vhost = xstrdup((yyvsp[-1].string));
 }
-#line 2003 "config-parser.c" /* yacc.c:1646  */
+#line 2024 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 110:
-#line 459 "config-parser.y" /* yacc.c:1646  */
+  case 112:
+#line 469 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    MyFree(item->target_ip);
    item->target_ip = xstrdup((yyvsp[-1].string));
 }
-#line 2013 "config-parser.c" /* yacc.c:1646  */
+#line 2034 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 111:
-#line 466 "config-parser.y" /* yacc.c:1646  */
+  case 113:
+#line 476 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
 
@@ -2028,47 +2049,47 @@ yyreduce:
 
    list_add(item->target_string, node);
 }
-#line 2032 "config-parser.c" /* yacc.c:1646  */
+#line 2053 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 112:
-#line 482 "config-parser.y" /* yacc.c:1646  */
+  case 114:
+#line 492 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    item->fd = (yyvsp[-1].number);
 }
-#line 2041 "config-parser.c" /* yacc.c:1646  */
+#line 2062 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 113:
-#line 488 "config-parser.y" /* yacc.c:1646  */
+  case 115:
+#line 498 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    item->target_port = (yyvsp[-1].number);
 }
-#line 2050 "config-parser.c" /* yacc.c:1646  */
+#line 2071 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 114:
-#line 494 "config-parser.y" /* yacc.c:1646  */
+  case 116:
+#line 504 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    item->timeout = (yyvsp[-1].number);
 }
-#line 2059 "config-parser.c" /* yacc.c:1646  */
+#line 2080 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 115:
-#line 500 "config-parser.y" /* yacc.c:1646  */
+  case 117:
+#line 510 "config-parser.y" /* yacc.c:1646  */
     {
    struct ScannerConf *item = tmp;
    item->max_read = (yyvsp[-1].number);
 }
-#line 2068 "config-parser.c" /* yacc.c:1646  */
+#line 2089 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 116:
-#line 506 "config-parser.y" /* yacc.c:1646  */
+  case 118:
+#line 516 "config-parser.y" /* yacc.c:1646  */
     {
    struct ProtocolConf *item;
    struct ScannerConf  *item2;
@@ -2084,38 +2105,38 @@ yyreduce:
    node = node_create(item);
    list_add(item2->protocols, node);
 }
-#line 2088 "config-parser.c" /* yacc.c:1646  */
+#line 2109 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 125:
-#line 536 "config-parser.y" /* yacc.c:1646  */
+  case 127:
+#line 546 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(OpmItem->dnsbl_from);
    OpmItem->dnsbl_from = xstrdup((yyvsp[-1].string));
 }
-#line 2097 "config-parser.c" /* yacc.c:1646  */
+#line 2118 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 126:
-#line 542 "config-parser.y" /* yacc.c:1646  */
+  case 128:
+#line 552 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(OpmItem->dnsbl_to);
    OpmItem->dnsbl_to = xstrdup((yyvsp[-1].string));
 }
-#line 2106 "config-parser.c" /* yacc.c:1646  */
+#line 2127 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 127:
-#line 548 "config-parser.y" /* yacc.c:1646  */
+  case 129:
+#line 558 "config-parser.y" /* yacc.c:1646  */
     {
    MyFree(OpmItem->sendmail);
    OpmItem->sendmail = xstrdup((yyvsp[-1].string));
 }
-#line 2115 "config-parser.c" /* yacc.c:1646  */
+#line 2136 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 128:
-#line 556 "config-parser.y" /* yacc.c:1646  */
+  case 130:
+#line 566 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    struct BlacklistConf *item;
@@ -2133,33 +2154,33 @@ yyreduce:
 
    tmp = item;
 }
-#line 2137 "config-parser.c" /* yacc.c:1646  */
+#line 2158 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 138:
-#line 585 "config-parser.y" /* yacc.c:1646  */
+  case 140:
+#line 595 "config-parser.y" /* yacc.c:1646  */
     {
    struct BlacklistConf *item = tmp;
 
    MyFree(item->name);
    item->name = xstrdup((yyvsp[-1].string));
 }
-#line 2148 "config-parser.c" /* yacc.c:1646  */
+#line 2169 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 139:
-#line 592 "config-parser.y" /* yacc.c:1646  */
+  case 141:
+#line 602 "config-parser.y" /* yacc.c:1646  */
     {
    struct BlacklistConf *item = tmp;
 
    MyFree(item->kline);
    item->kline = xstrdup((yyvsp[-1].string));
 }
-#line 2159 "config-parser.c" /* yacc.c:1646  */
+#line 2180 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 140:
-#line 599 "config-parser.y" /* yacc.c:1646  */
+  case 142:
+#line 609 "config-parser.y" /* yacc.c:1646  */
     {
    struct BlacklistConf *item = tmp;
    
@@ -2170,21 +2191,21 @@ yyreduce:
    else
       yyerror("Unknown blacklist type defined");
 }
-#line 2174 "config-parser.c" /* yacc.c:1646  */
+#line 2195 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 141:
-#line 610 "config-parser.y" /* yacc.c:1646  */
+  case 143:
+#line 620 "config-parser.y" /* yacc.c:1646  */
     {
    struct BlacklistConf *item = tmp;
 
    item->ban_unknown = (yyvsp[-1].number);
 }
-#line 2184 "config-parser.c" /* yacc.c:1646  */
+#line 2205 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 145:
-#line 622 "config-parser.y" /* yacc.c:1646  */
+  case 147:
+#line 632 "config-parser.y" /* yacc.c:1646  */
     {
    struct BlacklistReplyConf *item;
    struct BlacklistConf *blacklist = tmp;
@@ -2198,22 +2219,22 @@ yyreduce:
    node = node_create(item);
    list_add(blacklist->reply, node);
 }
-#line 2202 "config-parser.c" /* yacc.c:1646  */
+#line 2223 "config-parser.c" /* yacc.c:1646  */
     break;
 
-  case 151:
-#line 648 "config-parser.y" /* yacc.c:1646  */
+  case 153:
+#line 658 "config-parser.y" /* yacc.c:1646  */
     {
    node_t *node;
    node = node_create(xstrdup((yyvsp[-1].string)));
 
    list_add(ExemptItem->masks, node);
 }
-#line 2213 "config-parser.c" /* yacc.c:1646  */
+#line 2234 "config-parser.c" /* yacc.c:1646  */
     break;
 
 
-#line 2217 "config-parser.c" /* yacc.c:1646  */
+#line 2238 "config-parser.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -2441,5 +2462,5 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 655 "config-parser.y" /* yacc.c:1906  */
+#line 665 "config-parser.y" /* yacc.c:1906  */
 
index a8603a0fff1106ba7d418d5cb4a814a78258ef89..261d2c3d434c58509f58c19eaa1ffa23632acf69 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 3.0.3.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -70,39 +70,40 @@ extern int yydebug;
     NEGCACHE_REBUILD = 280,
     NICK = 281,
     NICKSERV = 282,
-    OPER = 283,
-    OPM = 284,
-    OPTIONS = 285,
-    PASSWORD = 286,
-    PERFORM = 287,
-    PIDFILE = 288,
-    PORT = 289,
-    PROTOCOL = 290,
-    READTIMEOUT = 291,
-    REALNAME = 292,
-    REPLY = 293,
-    SCANLOG = 294,
-    SCANNER = 295,
-    SECONDS = 296,
-    MINUTES = 297,
-    HOURS = 298,
-    DAYS = 299,
-    WEEKS = 300,
-    MONTHS = 301,
-    YEARS = 302,
-    SENDMAIL = 303,
-    SERVER = 304,
-    TARGET_IP = 305,
-    TARGET_PORT = 306,
-    TARGET_STRING = 307,
-    TIMEOUT = 308,
-    TYPE = 309,
-    USERNAME = 310,
-    USER = 311,
-    VHOST = 312,
-    NUMBER = 313,
-    STRING = 314,
-    PROTOCOLTYPE = 315
+    NOTICE = 283,
+    OPER = 284,
+    OPM = 285,
+    OPTIONS = 286,
+    PASSWORD = 287,
+    PERFORM = 288,
+    PIDFILE = 289,
+    PORT = 290,
+    PROTOCOL = 291,
+    READTIMEOUT = 292,
+    REALNAME = 293,
+    REPLY = 294,
+    SCANLOG = 295,
+    SCANNER = 296,
+    SECONDS = 297,
+    MINUTES = 298,
+    HOURS = 299,
+    DAYS = 300,
+    WEEKS = 301,
+    MONTHS = 302,
+    YEARS = 303,
+    SENDMAIL = 304,
+    SERVER = 305,
+    TARGET_IP = 306,
+    TARGET_PORT = 307,
+    TARGET_STRING = 308,
+    TIMEOUT = 309,
+    TYPE = 310,
+    USERNAME = 311,
+    USER = 312,
+    VHOST = 313,
+    NUMBER = 314,
+    STRING = 315,
+    PROTOCOLTYPE = 316
   };
 #endif
 /* Tokens.  */
@@ -131,52 +132,55 @@ extern int yydebug;
 #define NEGCACHE_REBUILD 280
 #define NICK 281
 #define NICKSERV 282
-#define OPER 283
-#define OPM 284
-#define OPTIONS 285
-#define PASSWORD 286
-#define PERFORM 287
-#define PIDFILE 288
-#define PORT 289
-#define PROTOCOL 290
-#define READTIMEOUT 291
-#define REALNAME 292
-#define REPLY 293
-#define SCANLOG 294
-#define SCANNER 295
-#define SECONDS 296
-#define MINUTES 297
-#define HOURS 298
-#define DAYS 299
-#define WEEKS 300
-#define MONTHS 301
-#define YEARS 302
-#define SENDMAIL 303
-#define SERVER 304
-#define TARGET_IP 305
-#define TARGET_PORT 306
-#define TARGET_STRING 307
-#define TIMEOUT 308
-#define TYPE 309
-#define USERNAME 310
-#define USER 311
-#define VHOST 312
-#define NUMBER 313
-#define STRING 314
-#define PROTOCOLTYPE 315
+#define NOTICE 283
+#define OPER 284
+#define OPM 285
+#define OPTIONS 286
+#define PASSWORD 287
+#define PERFORM 288
+#define PIDFILE 289
+#define PORT 290
+#define PROTOCOL 291
+#define READTIMEOUT 292
+#define REALNAME 293
+#define REPLY 294
+#define SCANLOG 295
+#define SCANNER 296
+#define SECONDS 297
+#define MINUTES 298
+#define HOURS 299
+#define DAYS 300
+#define WEEKS 301
+#define MONTHS 302
+#define YEARS 303
+#define SENDMAIL 304
+#define SERVER 305
+#define TARGET_IP 306
+#define TARGET_PORT 307
+#define TARGET_STRING 308
+#define TIMEOUT 309
+#define TYPE 310
+#define USERNAME 311
+#define USER 312
+#define VHOST 313
+#define NUMBER 314
+#define STRING 315
+#define PROTOCOLTYPE 316
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
+
 union YYSTYPE
 {
-#line 84 "config-parser.y" /* yacc.c:1909  */
+#line 85 "config-parser.y" /* yacc.c:1909  */
 
         int number;
         char *string;
 
-#line 179 "config-parser.h" /* yacc.c:1909  */
+#line 181 "config-parser.h" /* yacc.c:1909  */
 };
+
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif
index cfe51c11e06aa8a0c50601476a37976972ec21b1..9a3af9372e269747f8adc88841d0d90421277761 100644 (file)
@@ -55,6 +55,7 @@ void *tmp;        /* Variable to temporarily hold nodes before insertion to list
 %token NEGCACHE_REBUILD
 %token NICK
 %token NICKSERV
+%token NOTICE
 %token OPER
 %token OPM
 %token OPTIONS
@@ -188,6 +189,7 @@ irc_item: irc_away        |
           irc_username    |
           irc_vhost       |
           irc_perform     |
+          irc_notice      |
           channel_entry   |
           error;
 
@@ -241,6 +243,14 @@ irc_perform: PERFORM '=' STRING ';'
    list_add(IRCItem->performs, node);
 };
 
+irc_notice: NOTICE '=' STRING ';'
+{
+   node_t *node;
+   node = node_create(xstrdup($3));
+
+   list_add(IRCItem->notices, node);
+};
+
 irc_port: PORT '=' NUMBER ';'
 {
    IRCItem->port = $3;
index accb721515561b4a69e9e2098db6d003c0719253..fe2e1b9154af691ee499926df4502ac673bfa927 100644 (file)
@@ -53,6 +53,7 @@ config_init(void)
   IRCItem = xcalloc(sizeof *IRCItem);
   IRCItem->channels = list_create();
   IRCItem->performs = list_create();
+  IRCItem->notices  = list_create();
 
   /* Init Options block */
   OptionsItem = xcalloc(sizeof *OptionsItem);
index 441ad667784679d2d3bca679fdcf9c93d5f69b3f..359a9842b60c12bb2e240f07123d27d8344ceaf8 100644 (file)
@@ -51,6 +51,7 @@ struct IRCConf
   char *kline;
   list_t *channels;  /* List of ChannelConf */
   list_t *performs;  /* List of char * */
+  list_t *notices;   /* List of char * */
 };
 
 struct ChannelConf