ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 7213
Committed: Wed Feb 3 15:13:16 2016 UTC (9 years, 6 months ago) by michael
Content type: text/x-csrc
File size: 218246 byte(s)
Log Message:
- Regenerate parser files

File Contents

# Content
1 /* A Bison parser, made by GNU Bison 3.0.4. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19
20 /* As a special exception, you may create a larger work that contains
21 part or all of the Bison parser skeleton and distribute that work
22 under terms of your choice, so long as that work isn't itself a
23 parser generator using the skeleton or a modified version thereof
24 as a parser skeleton. Alternatively, if you modify or redistribute
25 the parser skeleton itself, you may (at your option) remove this
26 special exception, which will cause the skeleton and the resulting
27 Bison output files to be licensed under the GNU General Public
28 License without this special exception.
29
30 This special exception was added by the Free Software Foundation in
31 version 2.2 of Bison. */
32
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34 simplifying the original so-called "semantic" parser. */
35
36 /* All symbols defined below should begin with yy or YY, to avoid
37 infringing on user name space. This should be done even for local
38 variables, as they might otherwise be expanded by user macros.
39 There are some unavoidable exceptions within include files to
40 define necessary library symbols; they are noted "INFRINGES ON
41 USER NAME SPACE" below. */
42
43 /* Identify Bison output. */
44 #define YYBISON 1
45
46 /* Bison version. */
47 #define YYBISON_VERSION "3.0.4"
48
49 /* Skeleton name. */
50 #define YYSKELETON_NAME "yacc.c"
51
52 /* Pure parsers. */
53 #define YYPURE 0
54
55 /* Push parsers. */
56 #define YYPUSH 0
57
58 /* Pull parsers. */
59 #define YYPULL 1
60
61
62
63
64 /* Copy the first part of user declarations. */
65 #line 28 "conf_parser.y" /* yacc.c:339 */
66
67
68 #include "config.h"
69 #include "stdinc.h"
70 #include "ircd.h"
71 #include "list.h"
72 #include "conf.h"
73 #include "conf_class.h"
74 #include "conf_cluster.h"
75 #include "conf_pseudo.h"
76 #include "conf_shared.h"
77 #include "event.h"
78 #include "id.h"
79 #include "log.h"
80 #include "irc_string.h"
81 #include "memory.h"
82 #include "modules.h"
83 #include "server.h"
84 #include "hostmask.h"
85 #include "listener.h"
86 #include "resv.h"
87 #include "user.h"
88 #include "motd.h"
89
90 int yylex(void);
91
92 static struct
93 {
94 struct
95 {
96 dlink_list list;
97 } mask,
98 leaf,
99 hub;
100
101 struct
102 {
103 char buf[IRCD_BUFSIZE];
104 } name,
105 nick,
106 user,
107 host,
108 addr,
109 bind,
110 file,
111 ciph,
112 cert,
113 rpass,
114 spass,
115 whois,
116 class,
117 target,
118 prepend,
119 command;
120
121 struct
122 {
123 unsigned int value;
124 } flags,
125 modes,
126 size,
127 type,
128 port,
129 aftype,
130 ping_freq,
131 max_perip,
132 con_freq,
133 min_idle,
134 max_idle,
135 max_total,
136 max_global,
137 max_local,
138 max_ident,
139 max_sendq,
140 max_recvq,
141 max_channels,
142 cidr_bitlen_ipv4,
143 cidr_bitlen_ipv6,
144 number_per_cidr;
145 } block_state;
146
147 static void
148 reset_block_state(void)
149 {
150 dlink_node *node = NULL, *node_next = NULL;
151
152 DLINK_FOREACH_SAFE(node, node_next, block_state.mask.list.head)
153 {
154 xfree(node->data);
155 dlinkDelete(node, &block_state.mask.list);
156 free_dlink_node(node);
157 }
158
159 DLINK_FOREACH_SAFE(node, node_next, block_state.leaf.list.head)
160 {
161 xfree(node->data);
162 dlinkDelete(node, &block_state.leaf.list);
163 free_dlink_node(node);
164 }
165
166 DLINK_FOREACH_SAFE(node, node_next, block_state.hub.list.head)
167 {
168 xfree(node->data);
169 dlinkDelete(node, &block_state.hub.list);
170 free_dlink_node(node);
171 }
172
173 memset(&block_state, 0, sizeof(block_state));
174 }
175
176
177 #line 178 "conf_parser.c" /* yacc.c:339 */
178
179 # ifndef YY_NULLPTR
180 # if defined __cplusplus && 201103L <= __cplusplus
181 # define YY_NULLPTR nullptr
182 # else
183 # define YY_NULLPTR 0
184 # endif
185 # endif
186
187 /* Enabling verbose error messages. */
188 #ifdef YYERROR_VERBOSE
189 # undef YYERROR_VERBOSE
190 # define YYERROR_VERBOSE 1
191 #else
192 # define YYERROR_VERBOSE 0
193 #endif
194
195 /* In a future release of Bison, this section will be replaced
196 by #include "y.tab.h". */
197 #ifndef YY_YY_CONF_PARSER_H_INCLUDED
198 # define YY_YY_CONF_PARSER_H_INCLUDED
199 /* Debug traces. */
200 #ifndef YYDEBUG
201 # define YYDEBUG 0
202 #endif
203 #if YYDEBUG
204 extern int yydebug;
205 #endif
206
207 /* Token type. */
208 #ifndef YYTOKENTYPE
209 # define YYTOKENTYPE
210 enum yytokentype
211 {
212 ACCEPT_PASSWORD = 258,
213 ADMIN = 259,
214 AFTYPE = 260,
215 ANTI_NICK_FLOOD = 261,
216 ANTI_SPAM_EXIT_MESSAGE_TIME = 262,
217 AUTOCONN = 263,
218 AWAY_COUNT = 264,
219 AWAY_TIME = 265,
220 BYTES = 266,
221 KBYTES = 267,
222 MBYTES = 268,
223 CALLER_ID_WAIT = 269,
224 CAN_FLOOD = 270,
225 CHANNEL = 271,
226 CIDR_BITLEN_IPV4 = 272,
227 CIDR_BITLEN_IPV6 = 273,
228 CLASS = 274,
229 CLOSE = 275,
230 CONNECT = 276,
231 CONNECTFREQ = 277,
232 CYCLE_ON_HOST_CHANGE = 278,
233 DEFAULT_FLOODCOUNT = 279,
234 DEFAULT_JOIN_FLOOD_COUNT = 280,
235 DEFAULT_JOIN_FLOOD_TIME = 281,
236 DEFAULT_MAX_CLIENTS = 282,
237 DENY = 283,
238 DESCRIPTION = 284,
239 DIE = 285,
240 DISABLE_AUTH = 286,
241 DISABLE_FAKE_CHANNELS = 287,
242 DISABLE_REMOTE_COMMANDS = 288,
243 DLINE_MIN_CIDR = 289,
244 DLINE_MIN_CIDR6 = 290,
245 DOTS_IN_IDENT = 291,
246 EMAIL = 292,
247 ENCRYPTED = 293,
248 EXCEED_LIMIT = 294,
249 EXEMPT = 295,
250 FAILED_OPER_NOTICE = 296,
251 FLATTEN_LINKS = 297,
252 FLATTEN_LINKS_DELAY = 298,
253 FLATTEN_LINKS_FILE = 299,
254 GECOS = 300,
255 GENERAL = 301,
256 HIDDEN = 302,
257 HIDDEN_NAME = 303,
258 HIDE_CHANS = 304,
259 HIDE_IDLE = 305,
260 HIDE_IDLE_FROM_OPERS = 306,
261 HIDE_SERVER_IPS = 307,
262 HIDE_SERVERS = 308,
263 HIDE_SERVICES = 309,
264 HOST = 310,
265 HUB = 311,
266 HUB_MASK = 312,
267 IGNORE_BOGUS_TS = 313,
268 INVISIBLE_ON_CONNECT = 314,
269 INVITE_CLIENT_COUNT = 315,
270 INVITE_CLIENT_TIME = 316,
271 INVITE_DELAY_CHANNEL = 317,
272 IP = 318,
273 IRCD_AUTH = 319,
274 IRCD_FLAGS = 320,
275 IRCD_SID = 321,
276 JOIN = 322,
277 KILL = 323,
278 KILL_CHASE_TIME_LIMIT = 324,
279 KLINE = 325,
280 KLINE_EXEMPT = 326,
281 KLINE_MIN_CIDR = 327,
282 KLINE_MIN_CIDR6 = 328,
283 KNOCK_CLIENT_COUNT = 329,
284 KNOCK_CLIENT_TIME = 330,
285 KNOCK_DELAY_CHANNEL = 331,
286 LEAF_MASK = 332,
287 LISTEN = 333,
288 MASK = 334,
289 MAX_ACCEPT = 335,
290 MAX_BANS = 336,
291 MAX_CHANNELS = 337,
292 MAX_GLOBAL = 338,
293 MAX_IDENT = 339,
294 MAX_IDLE = 340,
295 MAX_LOCAL = 341,
296 MAX_NICK_CHANGES = 342,
297 MAX_NICK_LENGTH = 343,
298 MAX_NICK_TIME = 344,
299 MAX_NUMBER = 345,
300 MAX_TARGETS = 346,
301 MAX_TOPIC_LENGTH = 347,
302 MAX_WATCH = 348,
303 MIN_IDLE = 349,
304 MIN_NONWILDCARD = 350,
305 MIN_NONWILDCARD_SIMPLE = 351,
306 MODULE = 352,
307 MODULES = 353,
308 MOTD = 354,
309 NAME = 355,
310 NEED_IDENT = 356,
311 NEED_PASSWORD = 357,
312 NETWORK_DESC = 358,
313 NETWORK_NAME = 359,
314 NICK = 360,
315 NO_OPER_FLOOD = 361,
316 NO_TILDE = 362,
317 NUMBER = 363,
318 NUMBER_PER_CIDR = 364,
319 NUMBER_PER_IP = 365,
320 OPER_ONLY_UMODES = 366,
321 OPER_UMODES = 367,
322 OPERATOR = 368,
323 OPERS_BYPASS_CALLERID = 369,
324 PACE_WAIT = 370,
325 PACE_WAIT_SIMPLE = 371,
326 PASSWORD = 372,
327 PATH = 373,
328 PING_COOKIE = 374,
329 PING_TIME = 375,
330 PORT = 376,
331 QSTRING = 377,
332 RANDOM_IDLE = 378,
333 REASON = 379,
334 REDIRPORT = 380,
335 REDIRSERV = 381,
336 REHASH = 382,
337 REMOTE = 383,
338 REMOTEBAN = 384,
339 RESV = 385,
340 RESV_EXEMPT = 386,
341 RSA_PRIVATE_KEY_FILE = 387,
342 SECONDS = 388,
343 MINUTES = 389,
344 HOURS = 390,
345 DAYS = 391,
346 WEEKS = 392,
347 MONTHS = 393,
348 YEARS = 394,
349 SEND_PASSWORD = 395,
350 SENDQ = 396,
351 SERVERHIDE = 397,
352 SERVERINFO = 398,
353 SHORT_MOTD = 399,
354 SPOOF = 400,
355 SPOOF_NOTICE = 401,
356 SQUIT = 402,
357 SSL_CERTIFICATE_FILE = 403,
358 SSL_CERTIFICATE_FINGERPRINT = 404,
359 SSL_CONNECTION_REQUIRED = 405,
360 SSL_DH_ELLIPTIC_CURVE = 406,
361 SSL_DH_PARAM_FILE = 407,
362 SSL_MESSAGE_DIGEST_ALGORITHM = 408,
363 STATS_E_DISABLED = 409,
364 STATS_I_OPER_ONLY = 410,
365 STATS_K_OPER_ONLY = 411,
366 STATS_M_OPER_ONLY = 412,
367 STATS_O_OPER_ONLY = 413,
368 STATS_P_OPER_ONLY = 414,
369 STATS_U_OPER_ONLY = 415,
370 T_ALL = 416,
371 T_BOTS = 417,
372 T_CALLERID = 418,
373 T_CCONN = 419,
374 T_COMMAND = 420,
375 T_CLUSTER = 421,
376 T_DEAF = 422,
377 T_DEBUG = 423,
378 T_DLINE = 424,
379 T_EXTERNAL = 425,
380 T_FARCONNECT = 426,
381 T_FILE = 427,
382 T_FULL = 428,
383 T_GLOBOPS = 429,
384 T_INVISIBLE = 430,
385 T_IPV4 = 431,
386 T_IPV6 = 432,
387 T_LOCOPS = 433,
388 T_LOG = 434,
389 T_NCHANGE = 435,
390 T_NONONREG = 436,
391 T_OPME = 437,
392 T_PREPEND = 438,
393 T_PSEUDO = 439,
394 T_RECVQ = 440,
395 T_REJ = 441,
396 T_RESTART = 442,
397 T_SERVER = 443,
398 T_SERVICE = 444,
399 T_SERVNOTICE = 445,
400 T_SET = 446,
401 T_SHARED = 447,
402 T_SIZE = 448,
403 T_SKILL = 449,
404 T_SOFTCALLERID = 450,
405 T_SPY = 451,
406 T_SSL = 452,
407 T_SSL_CIPHER_LIST = 453,
408 T_TARGET = 454,
409 T_UMODES = 455,
410 T_UNAUTH = 456,
411 T_UNDLINE = 457,
412 T_UNLIMITED = 458,
413 T_UNRESV = 459,
414 T_UNXLINE = 460,
415 T_WALLOP = 461,
416 T_WALLOPS = 462,
417 T_WEBIRC = 463,
418 TBOOL = 464,
419 THROTTLE_COUNT = 465,
420 THROTTLE_TIME = 466,
421 TKLINE_EXPIRE_NOTICES = 467,
422 TMASKED = 468,
423 TS_MAX_DELTA = 469,
424 TS_WARN_DELTA = 470,
425 TWODOTS = 471,
426 TYPE = 472,
427 UNKLINE = 473,
428 USE_LOGGING = 474,
429 USER = 475,
430 VHOST = 476,
431 VHOST6 = 477,
432 WARN_NO_CONNECT_BLOCK = 478,
433 WHOIS = 479,
434 XLINE = 480,
435 XLINE_EXEMPT = 481
436 };
437 #endif
438 /* Tokens. */
439 #define ACCEPT_PASSWORD 258
440 #define ADMIN 259
441 #define AFTYPE 260
442 #define ANTI_NICK_FLOOD 261
443 #define ANTI_SPAM_EXIT_MESSAGE_TIME 262
444 #define AUTOCONN 263
445 #define AWAY_COUNT 264
446 #define AWAY_TIME 265
447 #define BYTES 266
448 #define KBYTES 267
449 #define MBYTES 268
450 #define CALLER_ID_WAIT 269
451 #define CAN_FLOOD 270
452 #define CHANNEL 271
453 #define CIDR_BITLEN_IPV4 272
454 #define CIDR_BITLEN_IPV6 273
455 #define CLASS 274
456 #define CLOSE 275
457 #define CONNECT 276
458 #define CONNECTFREQ 277
459 #define CYCLE_ON_HOST_CHANGE 278
460 #define DEFAULT_FLOODCOUNT 279
461 #define DEFAULT_JOIN_FLOOD_COUNT 280
462 #define DEFAULT_JOIN_FLOOD_TIME 281
463 #define DEFAULT_MAX_CLIENTS 282
464 #define DENY 283
465 #define DESCRIPTION 284
466 #define DIE 285
467 #define DISABLE_AUTH 286
468 #define DISABLE_FAKE_CHANNELS 287
469 #define DISABLE_REMOTE_COMMANDS 288
470 #define DLINE_MIN_CIDR 289
471 #define DLINE_MIN_CIDR6 290
472 #define DOTS_IN_IDENT 291
473 #define EMAIL 292
474 #define ENCRYPTED 293
475 #define EXCEED_LIMIT 294
476 #define EXEMPT 295
477 #define FAILED_OPER_NOTICE 296
478 #define FLATTEN_LINKS 297
479 #define FLATTEN_LINKS_DELAY 298
480 #define FLATTEN_LINKS_FILE 299
481 #define GECOS 300
482 #define GENERAL 301
483 #define HIDDEN 302
484 #define HIDDEN_NAME 303
485 #define HIDE_CHANS 304
486 #define HIDE_IDLE 305
487 #define HIDE_IDLE_FROM_OPERS 306
488 #define HIDE_SERVER_IPS 307
489 #define HIDE_SERVERS 308
490 #define HIDE_SERVICES 309
491 #define HOST 310
492 #define HUB 311
493 #define HUB_MASK 312
494 #define IGNORE_BOGUS_TS 313
495 #define INVISIBLE_ON_CONNECT 314
496 #define INVITE_CLIENT_COUNT 315
497 #define INVITE_CLIENT_TIME 316
498 #define INVITE_DELAY_CHANNEL 317
499 #define IP 318
500 #define IRCD_AUTH 319
501 #define IRCD_FLAGS 320
502 #define IRCD_SID 321
503 #define JOIN 322
504 #define KILL 323
505 #define KILL_CHASE_TIME_LIMIT 324
506 #define KLINE 325
507 #define KLINE_EXEMPT 326
508 #define KLINE_MIN_CIDR 327
509 #define KLINE_MIN_CIDR6 328
510 #define KNOCK_CLIENT_COUNT 329
511 #define KNOCK_CLIENT_TIME 330
512 #define KNOCK_DELAY_CHANNEL 331
513 #define LEAF_MASK 332
514 #define LISTEN 333
515 #define MASK 334
516 #define MAX_ACCEPT 335
517 #define MAX_BANS 336
518 #define MAX_CHANNELS 337
519 #define MAX_GLOBAL 338
520 #define MAX_IDENT 339
521 #define MAX_IDLE 340
522 #define MAX_LOCAL 341
523 #define MAX_NICK_CHANGES 342
524 #define MAX_NICK_LENGTH 343
525 #define MAX_NICK_TIME 344
526 #define MAX_NUMBER 345
527 #define MAX_TARGETS 346
528 #define MAX_TOPIC_LENGTH 347
529 #define MAX_WATCH 348
530 #define MIN_IDLE 349
531 #define MIN_NONWILDCARD 350
532 #define MIN_NONWILDCARD_SIMPLE 351
533 #define MODULE 352
534 #define MODULES 353
535 #define MOTD 354
536 #define NAME 355
537 #define NEED_IDENT 356
538 #define NEED_PASSWORD 357
539 #define NETWORK_DESC 358
540 #define NETWORK_NAME 359
541 #define NICK 360
542 #define NO_OPER_FLOOD 361
543 #define NO_TILDE 362
544 #define NUMBER 363
545 #define NUMBER_PER_CIDR 364
546 #define NUMBER_PER_IP 365
547 #define OPER_ONLY_UMODES 366
548 #define OPER_UMODES 367
549 #define OPERATOR 368
550 #define OPERS_BYPASS_CALLERID 369
551 #define PACE_WAIT 370
552 #define PACE_WAIT_SIMPLE 371
553 #define PASSWORD 372
554 #define PATH 373
555 #define PING_COOKIE 374
556 #define PING_TIME 375
557 #define PORT 376
558 #define QSTRING 377
559 #define RANDOM_IDLE 378
560 #define REASON 379
561 #define REDIRPORT 380
562 #define REDIRSERV 381
563 #define REHASH 382
564 #define REMOTE 383
565 #define REMOTEBAN 384
566 #define RESV 385
567 #define RESV_EXEMPT 386
568 #define RSA_PRIVATE_KEY_FILE 387
569 #define SECONDS 388
570 #define MINUTES 389
571 #define HOURS 390
572 #define DAYS 391
573 #define WEEKS 392
574 #define MONTHS 393
575 #define YEARS 394
576 #define SEND_PASSWORD 395
577 #define SENDQ 396
578 #define SERVERHIDE 397
579 #define SERVERINFO 398
580 #define SHORT_MOTD 399
581 #define SPOOF 400
582 #define SPOOF_NOTICE 401
583 #define SQUIT 402
584 #define SSL_CERTIFICATE_FILE 403
585 #define SSL_CERTIFICATE_FINGERPRINT 404
586 #define SSL_CONNECTION_REQUIRED 405
587 #define SSL_DH_ELLIPTIC_CURVE 406
588 #define SSL_DH_PARAM_FILE 407
589 #define SSL_MESSAGE_DIGEST_ALGORITHM 408
590 #define STATS_E_DISABLED 409
591 #define STATS_I_OPER_ONLY 410
592 #define STATS_K_OPER_ONLY 411
593 #define STATS_M_OPER_ONLY 412
594 #define STATS_O_OPER_ONLY 413
595 #define STATS_P_OPER_ONLY 414
596 #define STATS_U_OPER_ONLY 415
597 #define T_ALL 416
598 #define T_BOTS 417
599 #define T_CALLERID 418
600 #define T_CCONN 419
601 #define T_COMMAND 420
602 #define T_CLUSTER 421
603 #define T_DEAF 422
604 #define T_DEBUG 423
605 #define T_DLINE 424
606 #define T_EXTERNAL 425
607 #define T_FARCONNECT 426
608 #define T_FILE 427
609 #define T_FULL 428
610 #define T_GLOBOPS 429
611 #define T_INVISIBLE 430
612 #define T_IPV4 431
613 #define T_IPV6 432
614 #define T_LOCOPS 433
615 #define T_LOG 434
616 #define T_NCHANGE 435
617 #define T_NONONREG 436
618 #define T_OPME 437
619 #define T_PREPEND 438
620 #define T_PSEUDO 439
621 #define T_RECVQ 440
622 #define T_REJ 441
623 #define T_RESTART 442
624 #define T_SERVER 443
625 #define T_SERVICE 444
626 #define T_SERVNOTICE 445
627 #define T_SET 446
628 #define T_SHARED 447
629 #define T_SIZE 448
630 #define T_SKILL 449
631 #define T_SOFTCALLERID 450
632 #define T_SPY 451
633 #define T_SSL 452
634 #define T_SSL_CIPHER_LIST 453
635 #define T_TARGET 454
636 #define T_UMODES 455
637 #define T_UNAUTH 456
638 #define T_UNDLINE 457
639 #define T_UNLIMITED 458
640 #define T_UNRESV 459
641 #define T_UNXLINE 460
642 #define T_WALLOP 461
643 #define T_WALLOPS 462
644 #define T_WEBIRC 463
645 #define TBOOL 464
646 #define THROTTLE_COUNT 465
647 #define THROTTLE_TIME 466
648 #define TKLINE_EXPIRE_NOTICES 467
649 #define TMASKED 468
650 #define TS_MAX_DELTA 469
651 #define TS_WARN_DELTA 470
652 #define TWODOTS 471
653 #define TYPE 472
654 #define UNKLINE 473
655 #define USE_LOGGING 474
656 #define USER 475
657 #define VHOST 476
658 #define VHOST6 477
659 #define WARN_NO_CONNECT_BLOCK 478
660 #define WHOIS 479
661 #define XLINE 480
662 #define XLINE_EXEMPT 481
663
664 /* Value type. */
665 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
666
667 union YYSTYPE
668 {
669 #line 140 "conf_parser.y" /* yacc.c:355 */
670
671 int number;
672 char *string;
673
674 #line 675 "conf_parser.c" /* yacc.c:355 */
675 };
676
677 typedef union YYSTYPE YYSTYPE;
678 # define YYSTYPE_IS_TRIVIAL 1
679 # define YYSTYPE_IS_DECLARED 1
680 #endif
681
682
683 extern YYSTYPE yylval;
684
685 int yyparse (void);
686
687 #endif /* !YY_YY_CONF_PARSER_H_INCLUDED */
688
689 /* Copy the second part of user declarations. */
690
691 #line 692 "conf_parser.c" /* yacc.c:358 */
692
693 #ifdef short
694 # undef short
695 #endif
696
697 #ifdef YYTYPE_UINT8
698 typedef YYTYPE_UINT8 yytype_uint8;
699 #else
700 typedef unsigned char yytype_uint8;
701 #endif
702
703 #ifdef YYTYPE_INT8
704 typedef YYTYPE_INT8 yytype_int8;
705 #else
706 typedef signed char yytype_int8;
707 #endif
708
709 #ifdef YYTYPE_UINT16
710 typedef YYTYPE_UINT16 yytype_uint16;
711 #else
712 typedef unsigned short int yytype_uint16;
713 #endif
714
715 #ifdef YYTYPE_INT16
716 typedef YYTYPE_INT16 yytype_int16;
717 #else
718 typedef short int yytype_int16;
719 #endif
720
721 #ifndef YYSIZE_T
722 # ifdef __SIZE_TYPE__
723 # define YYSIZE_T __SIZE_TYPE__
724 # elif defined size_t
725 # define YYSIZE_T size_t
726 # elif ! defined YYSIZE_T
727 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
728 # define YYSIZE_T size_t
729 # else
730 # define YYSIZE_T unsigned int
731 # endif
732 #endif
733
734 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
735
736 #ifndef YY_
737 # if defined YYENABLE_NLS && YYENABLE_NLS
738 # if ENABLE_NLS
739 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
740 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
741 # endif
742 # endif
743 # ifndef YY_
744 # define YY_(Msgid) Msgid
745 # endif
746 #endif
747
748 #ifndef YY_ATTRIBUTE
749 # if (defined __GNUC__ \
750 && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \
751 || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
752 # define YY_ATTRIBUTE(Spec) __attribute__(Spec)
753 # else
754 # define YY_ATTRIBUTE(Spec) /* empty */
755 # endif
756 #endif
757
758 #ifndef YY_ATTRIBUTE_PURE
759 # define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__))
760 #endif
761
762 #ifndef YY_ATTRIBUTE_UNUSED
763 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
764 #endif
765
766 #if !defined _Noreturn \
767 && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
768 # if defined _MSC_VER && 1200 <= _MSC_VER
769 # define _Noreturn __declspec (noreturn)
770 # else
771 # define _Noreturn YY_ATTRIBUTE ((__noreturn__))
772 # endif
773 #endif
774
775 /* Suppress unused-variable warnings by "using" E. */
776 #if ! defined lint || defined __GNUC__
777 # define YYUSE(E) ((void) (E))
778 #else
779 # define YYUSE(E) /* empty */
780 #endif
781
782 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
783 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
784 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
785 _Pragma ("GCC diagnostic push") \
786 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
787 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
788 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
789 _Pragma ("GCC diagnostic pop")
790 #else
791 # define YY_INITIAL_VALUE(Value) Value
792 #endif
793 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
794 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
795 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
796 #endif
797 #ifndef YY_INITIAL_VALUE
798 # define YY_INITIAL_VALUE(Value) /* Nothing. */
799 #endif
800
801
802 #if ! defined yyoverflow || YYERROR_VERBOSE
803
804 /* The parser invokes alloca or malloc; define the necessary symbols. */
805
806 # ifdef YYSTACK_USE_ALLOCA
807 # if YYSTACK_USE_ALLOCA
808 # ifdef __GNUC__
809 # define YYSTACK_ALLOC __builtin_alloca
810 # elif defined __BUILTIN_VA_ARG_INCR
811 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
812 # elif defined _AIX
813 # define YYSTACK_ALLOC __alloca
814 # elif defined _MSC_VER
815 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
816 # define alloca _alloca
817 # else
818 # define YYSTACK_ALLOC alloca
819 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
820 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
821 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
822 # ifndef EXIT_SUCCESS
823 # define EXIT_SUCCESS 0
824 # endif
825 # endif
826 # endif
827 # endif
828 # endif
829
830 # ifdef YYSTACK_ALLOC
831 /* Pacify GCC's 'empty if-body' warning. */
832 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
833 # ifndef YYSTACK_ALLOC_MAXIMUM
834 /* The OS might guarantee only one guard page at the bottom of the stack,
835 and a page size can be as small as 4096 bytes. So we cannot safely
836 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
837 to allow for a few compiler-allocated temporary stack slots. */
838 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
839 # endif
840 # else
841 # define YYSTACK_ALLOC YYMALLOC
842 # define YYSTACK_FREE YYFREE
843 # ifndef YYSTACK_ALLOC_MAXIMUM
844 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
845 # endif
846 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
847 && ! ((defined YYMALLOC || defined malloc) \
848 && (defined YYFREE || defined free)))
849 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
850 # ifndef EXIT_SUCCESS
851 # define EXIT_SUCCESS 0
852 # endif
853 # endif
854 # ifndef YYMALLOC
855 # define YYMALLOC malloc
856 # if ! defined malloc && ! defined EXIT_SUCCESS
857 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
858 # endif
859 # endif
860 # ifndef YYFREE
861 # define YYFREE free
862 # if ! defined free && ! defined EXIT_SUCCESS
863 void free (void *); /* INFRINGES ON USER NAME SPACE */
864 # endif
865 # endif
866 # endif
867 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
868
869
870 #if (! defined yyoverflow \
871 && (! defined __cplusplus \
872 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
873
874 /* A type that is properly aligned for any stack member. */
875 union yyalloc
876 {
877 yytype_int16 yyss_alloc;
878 YYSTYPE yyvs_alloc;
879 };
880
881 /* The size of the maximum gap between one aligned stack and the next. */
882 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
883
884 /* The size of an array large to enough to hold all stacks, each with
885 N elements. */
886 # define YYSTACK_BYTES(N) \
887 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
888 + YYSTACK_GAP_MAXIMUM)
889
890 # define YYCOPY_NEEDED 1
891
892 /* Relocate STACK from its old location to the new one. The
893 local variables YYSIZE and YYSTACKSIZE give the old and new number of
894 elements in the stack, and YYPTR gives the new location of the
895 stack. Advance YYPTR to a properly aligned location for the next
896 stack. */
897 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
898 do \
899 { \
900 YYSIZE_T yynewbytes; \
901 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
902 Stack = &yyptr->Stack_alloc; \
903 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
904 yyptr += yynewbytes / sizeof (*yyptr); \
905 } \
906 while (0)
907
908 #endif
909
910 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
911 /* Copy COUNT objects from SRC to DST. The source and destination do
912 not overlap. */
913 # ifndef YYCOPY
914 # if defined __GNUC__ && 1 < __GNUC__
915 # define YYCOPY(Dst, Src, Count) \
916 __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
917 # else
918 # define YYCOPY(Dst, Src, Count) \
919 do \
920 { \
921 YYSIZE_T yyi; \
922 for (yyi = 0; yyi < (Count); yyi++) \
923 (Dst)[yyi] = (Src)[yyi]; \
924 } \
925 while (0)
926 # endif
927 # endif
928 #endif /* !YYCOPY_NEEDED */
929
930 /* YYFINAL -- State number of the termination state. */
931 #define YYFINAL 2
932 /* YYLAST -- Last index in YYTABLE. */
933 #define YYLAST 1322
934
935 /* YYNTOKENS -- Number of terminals. */
936 #define YYNTOKENS 233
937 /* YYNNTS -- Number of nonterminals. */
938 #define YYNNTS 292
939 /* YYNRULES -- Number of rules. */
940 #define YYNRULES 662
941 /* YYNSTATES -- Number of states. */
942 #define YYNSTATES 1304
943
944 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
945 by yylex, with out-of-bounds checking. */
946 #define YYUNDEFTOK 2
947 #define YYMAXUTOK 481
948
949 #define YYTRANSLATE(YYX) \
950 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
951
952 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
953 as returned by yylex, without out-of-bounds checking. */
954 static const yytype_uint8 yytranslate[] =
955 {
956 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
957 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
958 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
959 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
960 2, 2, 2, 2, 231, 2, 2, 2, 2, 2,
961 2, 2, 2, 2, 2, 2, 2, 2, 232, 227,
962 2, 230, 2, 2, 2, 2, 2, 2, 2, 2,
963 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
964 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
965 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
966 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
967 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
968 2, 2, 2, 229, 2, 228, 2, 2, 2, 2,
969 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
970 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
971 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
972 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
973 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
974 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
975 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
976 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
977 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
978 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
979 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
980 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
981 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
982 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
983 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
984 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
985 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
986 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
987 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
988 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
989 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
990 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
991 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
992 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
993 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
994 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
995 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
996 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
997 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
998 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
999 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
1000 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1001 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
1002 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
1003 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1004 225, 226
1005 };
1006
1007 #if YYDEBUG
1008 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
1009 static const yytype_uint16 yyrline[] =
1010 {
1011 0, 370, 370, 371, 374, 375, 376, 377, 378, 379,
1012 380, 381, 382, 383, 384, 385, 386, 387, 388, 389,
1013 390, 391, 392, 393, 394, 395, 396, 397, 401, 401,
1014 402, 403, 404, 405, 406, 407, 408, 409, 412, 412,
1015 413, 414, 415, 416, 423, 425, 425, 426, 426, 426,
1016 428, 434, 444, 446, 446, 447, 448, 449, 450, 451,
1017 452, 453, 454, 455, 456, 457, 458, 459, 460, 461,
1018 462, 463, 464, 467, 476, 485, 494, 503, 512, 521,
1019 536, 551, 561, 575, 584, 612, 640, 665, 687, 709,
1020 719, 721, 721, 722, 723, 724, 725, 727, 736, 745,
1021 759, 758, 776, 776, 777, 777, 777, 779, 785, 796,
1022 795, 814, 814, 815, 815, 815, 815, 815, 817, 823,
1023 829, 835, 857, 858, 858, 860, 860, 861, 863, 870,
1024 870, 883, 884, 886, 886, 887, 887, 889, 897, 900,
1025 906, 905, 911, 911, 912, 916, 920, 924, 928, 932,
1026 936, 940, 951, 950, 1007, 1007, 1008, 1009, 1010, 1011,
1027 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1020, 1026, 1032,
1028 1038, 1044, 1055, 1061, 1072, 1079, 1078, 1084, 1084, 1085,
1029 1089, 1093, 1097, 1101, 1105, 1109, 1113, 1117, 1121, 1125,
1030 1129, 1133, 1137, 1141, 1145, 1149, 1153, 1157, 1161, 1165,
1031 1169, 1176, 1175, 1181, 1181, 1182, 1186, 1190, 1194, 1198,
1032 1202, 1206, 1210, 1214, 1218, 1222, 1226, 1230, 1234, 1238,
1033 1242, 1246, 1250, 1254, 1258, 1262, 1266, 1270, 1274, 1278,
1034 1282, 1286, 1290, 1294, 1305, 1304, 1361, 1361, 1362, 1363,
1035 1364, 1365, 1366, 1367, 1368, 1369, 1370, 1371, 1372, 1373,
1036 1374, 1374, 1375, 1376, 1377, 1378, 1380, 1386, 1392, 1398,
1037 1404, 1410, 1416, 1422, 1428, 1434, 1440, 1447, 1453, 1459,
1038 1465, 1474, 1484, 1483, 1489, 1489, 1490, 1494, 1505, 1504,
1039 1511, 1510, 1515, 1515, 1516, 1520, 1524, 1530, 1530, 1531,
1040 1531, 1531, 1531, 1531, 1533, 1533, 1535, 1535, 1537, 1550,
1041 1567, 1573, 1584, 1583, 1625, 1625, 1626, 1627, 1628, 1629,
1042 1630, 1631, 1632, 1633, 1634, 1636, 1642, 1648, 1654, 1666,
1043 1665, 1671, 1671, 1672, 1676, 1680, 1684, 1688, 1692, 1696,
1044 1700, 1704, 1708, 1714, 1728, 1737, 1751, 1750, 1765, 1765,
1045 1766, 1766, 1766, 1766, 1768, 1774, 1780, 1790, 1792, 1792,
1046 1793, 1793, 1795, 1812, 1811, 1834, 1834, 1835, 1835, 1835,
1047 1835, 1837, 1843, 1863, 1862, 1868, 1868, 1869, 1873, 1877,
1048 1881, 1885, 1889, 1893, 1897, 1901, 1905, 1916, 1915, 1934,
1049 1934, 1935, 1935, 1935, 1937, 1944, 1943, 1949, 1949, 1950,
1050 1954, 1958, 1962, 1966, 1970, 1974, 1978, 1982, 1986, 1997,
1051 1996, 2068, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075,
1052 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2085, 2091,
1053 2097, 2103, 2116, 2129, 2135, 2141, 2145, 2152, 2151, 2156,
1054 2156, 2157, 2161, 2167, 2178, 2184, 2190, 2196, 2212, 2211,
1055 2237, 2237, 2238, 2238, 2238, 2240, 2260, 2271, 2270, 2297,
1056 2297, 2298, 2298, 2298, 2300, 2306, 2316, 2318, 2318, 2319,
1057 2319, 2321, 2339, 2338, 2361, 2361, 2362, 2362, 2362, 2364,
1058 2370, 2380, 2382, 2382, 2383, 2384, 2385, 2386, 2387, 2388,
1059 2389, 2390, 2391, 2392, 2393, 2394, 2395, 2396, 2397, 2398,
1060 2399, 2400, 2401, 2402, 2403, 2404, 2405, 2406, 2407, 2408,
1061 2409, 2410, 2411, 2412, 2413, 2414, 2415, 2416, 2417, 2418,
1062 2419, 2420, 2421, 2422, 2423, 2424, 2425, 2426, 2427, 2428,
1063 2431, 2436, 2441, 2446, 2452, 2457, 2462, 2467, 2472, 2477,
1064 2482, 2487, 2492, 2497, 2502, 2507, 2512, 2517, 2522, 2528,
1065 2533, 2538, 2543, 2548, 2553, 2558, 2563, 2566, 2571, 2574,
1066 2579, 2584, 2589, 2594, 2599, 2604, 2609, 2614, 2619, 2624,
1067 2629, 2634, 2640, 2639, 2644, 2644, 2645, 2648, 2651, 2654,
1068 2657, 2660, 2663, 2666, 2669, 2672, 2675, 2678, 2681, 2684,
1069 2687, 2690, 2693, 2696, 2699, 2702, 2705, 2708, 2714, 2713,
1070 2718, 2718, 2719, 2722, 2725, 2728, 2731, 2734, 2737, 2740,
1071 2743, 2746, 2749, 2752, 2755, 2758, 2761, 2764, 2767, 2770,
1072 2773, 2776, 2781, 2786, 2791, 2800, 2802, 2802, 2803, 2804,
1073 2805, 2806, 2807, 2808, 2809, 2810, 2811, 2812, 2813, 2814,
1074 2816, 2821, 2826, 2831, 2836, 2841, 2846, 2851, 2856, 2861,
1075 2866, 2875, 2877, 2877, 2878, 2879, 2880, 2881, 2882, 2883,
1076 2884, 2885, 2886, 2887, 2889, 2895, 2911, 2920, 2926, 2932,
1077 2938, 2947, 2953
1078 };
1079 #endif
1080
1081 #if YYDEBUG || YYERROR_VERBOSE || 0
1082 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1083 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1084 static const char *const yytname[] =
1085 {
1086 "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ADMIN", "AFTYPE",
1087 "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME", "AUTOCONN",
1088 "AWAY_COUNT", "AWAY_TIME", "BYTES", "KBYTES", "MBYTES", "CALLER_ID_WAIT",
1089 "CAN_FLOOD", "CHANNEL", "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CLASS",
1090 "CLOSE", "CONNECT", "CONNECTFREQ", "CYCLE_ON_HOST_CHANGE",
1091 "DEFAULT_FLOODCOUNT", "DEFAULT_JOIN_FLOOD_COUNT",
1092 "DEFAULT_JOIN_FLOOD_TIME", "DEFAULT_MAX_CLIENTS", "DENY", "DESCRIPTION",
1093 "DIE", "DISABLE_AUTH", "DISABLE_FAKE_CHANNELS",
1094 "DISABLE_REMOTE_COMMANDS", "DLINE_MIN_CIDR", "DLINE_MIN_CIDR6",
1095 "DOTS_IN_IDENT", "EMAIL", "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT",
1096 "FAILED_OPER_NOTICE", "FLATTEN_LINKS", "FLATTEN_LINKS_DELAY",
1097 "FLATTEN_LINKS_FILE", "GECOS", "GENERAL", "HIDDEN", "HIDDEN_NAME",
1098 "HIDE_CHANS", "HIDE_IDLE", "HIDE_IDLE_FROM_OPERS", "HIDE_SERVER_IPS",
1099 "HIDE_SERVERS", "HIDE_SERVICES", "HOST", "HUB", "HUB_MASK",
1100 "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT", "INVITE_CLIENT_COUNT",
1101 "INVITE_CLIENT_TIME", "INVITE_DELAY_CHANNEL", "IP", "IRCD_AUTH",
1102 "IRCD_FLAGS", "IRCD_SID", "JOIN", "KILL", "KILL_CHASE_TIME_LIMIT",
1103 "KLINE", "KLINE_EXEMPT", "KLINE_MIN_CIDR", "KLINE_MIN_CIDR6",
1104 "KNOCK_CLIENT_COUNT", "KNOCK_CLIENT_TIME", "KNOCK_DELAY_CHANNEL",
1105 "LEAF_MASK", "LISTEN", "MASK", "MAX_ACCEPT", "MAX_BANS", "MAX_CHANNELS",
1106 "MAX_GLOBAL", "MAX_IDENT", "MAX_IDLE", "MAX_LOCAL", "MAX_NICK_CHANGES",
1107 "MAX_NICK_LENGTH", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
1108 "MAX_TOPIC_LENGTH", "MAX_WATCH", "MIN_IDLE", "MIN_NONWILDCARD",
1109 "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "MOTD", "NAME",
1110 "NEED_IDENT", "NEED_PASSWORD", "NETWORK_DESC", "NETWORK_NAME", "NICK",
1111 "NO_OPER_FLOOD", "NO_TILDE", "NUMBER", "NUMBER_PER_CIDR",
1112 "NUMBER_PER_IP", "OPER_ONLY_UMODES", "OPER_UMODES", "OPERATOR",
1113 "OPERS_BYPASS_CALLERID", "PACE_WAIT", "PACE_WAIT_SIMPLE", "PASSWORD",
1114 "PATH", "PING_COOKIE", "PING_TIME", "PORT", "QSTRING", "RANDOM_IDLE",
1115 "REASON", "REDIRPORT", "REDIRSERV", "REHASH", "REMOTE", "REMOTEBAN",
1116 "RESV", "RESV_EXEMPT", "RSA_PRIVATE_KEY_FILE", "SECONDS", "MINUTES",
1117 "HOURS", "DAYS", "WEEKS", "MONTHS", "YEARS", "SEND_PASSWORD", "SENDQ",
1118 "SERVERHIDE", "SERVERINFO", "SHORT_MOTD", "SPOOF", "SPOOF_NOTICE",
1119 "SQUIT", "SSL_CERTIFICATE_FILE", "SSL_CERTIFICATE_FINGERPRINT",
1120 "SSL_CONNECTION_REQUIRED", "SSL_DH_ELLIPTIC_CURVE", "SSL_DH_PARAM_FILE",
1121 "SSL_MESSAGE_DIGEST_ALGORITHM", "STATS_E_DISABLED", "STATS_I_OPER_ONLY",
1122 "STATS_K_OPER_ONLY", "STATS_M_OPER_ONLY", "STATS_O_OPER_ONLY",
1123 "STATS_P_OPER_ONLY", "STATS_U_OPER_ONLY", "T_ALL", "T_BOTS",
1124 "T_CALLERID", "T_CCONN", "T_COMMAND", "T_CLUSTER", "T_DEAF", "T_DEBUG",
1125 "T_DLINE", "T_EXTERNAL", "T_FARCONNECT", "T_FILE", "T_FULL", "T_GLOBOPS",
1126 "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS", "T_LOG", "T_NCHANGE",
1127 "T_NONONREG", "T_OPME", "T_PREPEND", "T_PSEUDO", "T_RECVQ", "T_REJ",
1128 "T_RESTART", "T_SERVER", "T_SERVICE", "T_SERVNOTICE", "T_SET",
1129 "T_SHARED", "T_SIZE", "T_SKILL", "T_SOFTCALLERID", "T_SPY", "T_SSL",
1130 "T_SSL_CIPHER_LIST", "T_TARGET", "T_UMODES", "T_UNAUTH", "T_UNDLINE",
1131 "T_UNLIMITED", "T_UNRESV", "T_UNXLINE", "T_WALLOP", "T_WALLOPS",
1132 "T_WEBIRC", "TBOOL", "THROTTLE_COUNT", "THROTTLE_TIME",
1133 "TKLINE_EXPIRE_NOTICES", "TMASKED", "TS_MAX_DELTA", "TS_WARN_DELTA",
1134 "TWODOTS", "TYPE", "UNKLINE", "USE_LOGGING", "USER", "VHOST", "VHOST6",
1135 "WARN_NO_CONNECT_BLOCK", "WHOIS", "XLINE", "XLINE_EXEMPT", "';'", "'}'",
1136 "'{'", "'='", "','", "':'", "$accept", "conf", "conf_item", "timespec_",
1137 "timespec", "sizespec_", "sizespec", "modules_entry", "modules_items",
1138 "modules_item", "modules_module", "modules_path", "serverinfo_entry",
1139 "serverinfo_items", "serverinfo_item", "serverinfo_ssl_certificate_file",
1140 "serverinfo_rsa_private_key_file", "serverinfo_ssl_dh_param_file",
1141 "serverinfo_ssl_cipher_list", "serverinfo_ssl_message_digest_algorithm",
1142 "serverinfo_ssl_dh_elliptic_curve", "serverinfo_name", "serverinfo_sid",
1143 "serverinfo_description", "serverinfo_network_name",
1144 "serverinfo_network_desc", "serverinfo_vhost", "serverinfo_vhost6",
1145 "serverinfo_default_max_clients", "serverinfo_max_nick_length",
1146 "serverinfo_max_topic_length", "serverinfo_hub", "admin_entry",
1147 "admin_items", "admin_item", "admin_name", "admin_email",
1148 "admin_description", "motd_entry", "$@1", "motd_items", "motd_item",
1149 "motd_mask", "motd_file", "pseudo_entry", "$@2", "pseudo_items",
1150 "pseudo_item", "pseudo_command", "pseudo_name", "pseudo_prepend",
1151 "pseudo_target", "logging_entry", "logging_items", "logging_item",
1152 "logging_use_logging", "logging_file_entry", "$@3", "logging_file_items",
1153 "logging_file_item", "logging_file_name", "logging_file_size",
1154 "logging_file_type", "$@4", "logging_file_type_items",
1155 "logging_file_type_item", "oper_entry", "$@5", "oper_items", "oper_item",
1156 "oper_name", "oper_user", "oper_password", "oper_whois",
1157 "oper_encrypted", "oper_ssl_certificate_fingerprint",
1158 "oper_ssl_connection_required", "oper_class", "oper_umodes", "$@6",
1159 "oper_umodes_items", "oper_umodes_item", "oper_flags", "$@7",
1160 "oper_flags_items", "oper_flags_item", "class_entry", "$@8",
1161 "class_items", "class_item", "class_name", "class_ping_time",
1162 "class_number_per_ip", "class_connectfreq", "class_max_channels",
1163 "class_max_number", "class_max_global", "class_max_local",
1164 "class_max_ident", "class_sendq", "class_recvq",
1165 "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1166 "class_number_per_cidr", "class_min_idle", "class_max_idle",
1167 "class_flags", "$@9", "class_flags_items", "class_flags_item",
1168 "listen_entry", "$@10", "listen_flags", "$@11", "listen_flags_items",
1169 "listen_flags_item", "listen_items", "listen_item", "listen_port",
1170 "$@12", "port_items", "port_item", "listen_address", "listen_host",
1171 "auth_entry", "$@13", "auth_items", "auth_item", "auth_user",
1172 "auth_passwd", "auth_class", "auth_encrypted", "auth_flags", "$@14",
1173 "auth_flags_items", "auth_flags_item", "auth_spoof", "auth_redir_serv",
1174 "auth_redir_port", "resv_entry", "$@15", "resv_items", "resv_item",
1175 "resv_mask", "resv_reason", "resv_exempt", "service_entry",
1176 "service_items", "service_item", "service_name", "shared_entry", "$@16",
1177 "shared_items", "shared_item", "shared_name", "shared_user",
1178 "shared_type", "$@17", "shared_types", "shared_type_item",
1179 "cluster_entry", "$@18", "cluster_items", "cluster_item", "cluster_name",
1180 "cluster_type", "$@19", "cluster_types", "cluster_type_item",
1181 "connect_entry", "$@20", "connect_items", "connect_item", "connect_name",
1182 "connect_host", "connect_vhost", "connect_send_password",
1183 "connect_accept_password", "connect_ssl_certificate_fingerprint",
1184 "connect_port", "connect_aftype", "connect_flags", "$@21",
1185 "connect_flags_items", "connect_flags_item", "connect_encrypted",
1186 "connect_hub_mask", "connect_leaf_mask", "connect_class",
1187 "connect_ssl_cipher_list", "kill_entry", "$@22", "kill_items",
1188 "kill_item", "kill_user", "kill_reason", "deny_entry", "$@23",
1189 "deny_items", "deny_item", "deny_ip", "deny_reason", "exempt_entry",
1190 "exempt_items", "exempt_item", "exempt_ip", "gecos_entry", "$@24",
1191 "gecos_items", "gecos_item", "gecos_name", "gecos_reason",
1192 "general_entry", "general_items", "general_item", "general_away_count",
1193 "general_away_time", "general_max_watch", "general_cycle_on_host_change",
1194 "general_dline_min_cidr", "general_dline_min_cidr6",
1195 "general_kline_min_cidr", "general_kline_min_cidr6",
1196 "general_tkline_expire_notices", "general_kill_chase_time_limit",
1197 "general_ignore_bogus_ts", "general_failed_oper_notice",
1198 "general_anti_nick_flood", "general_max_nick_time",
1199 "general_max_nick_changes", "general_max_accept",
1200 "general_anti_spam_exit_message_time", "general_ts_warn_delta",
1201 "general_ts_max_delta", "general_invisible_on_connect",
1202 "general_warn_no_connect_block", "general_stats_e_disabled",
1203 "general_stats_m_oper_only", "general_stats_o_oper_only",
1204 "general_stats_P_oper_only", "general_stats_u_oper_only",
1205 "general_stats_k_oper_only", "general_stats_i_oper_only",
1206 "general_pace_wait", "general_caller_id_wait",
1207 "general_opers_bypass_callerid", "general_pace_wait_simple",
1208 "general_short_motd", "general_no_oper_flood", "general_dots_in_ident",
1209 "general_max_targets", "general_ping_cookie", "general_disable_auth",
1210 "general_throttle_count", "general_throttle_time", "general_oper_umodes",
1211 "$@25", "umode_oitems", "umode_oitem", "general_oper_only_umodes",
1212 "$@26", "umode_items", "umode_item", "general_min_nonwildcard",
1213 "general_min_nonwildcard_simple", "general_default_floodcount",
1214 "channel_entry", "channel_items", "channel_item",
1215 "channel_disable_fake_channels", "channel_invite_client_count",
1216 "channel_invite_client_time", "channel_invite_delay_channel",
1217 "channel_knock_client_count", "channel_knock_client_time",
1218 "channel_knock_delay_channel", "channel_max_channels",
1219 "channel_max_bans", "channel_default_join_flood_count",
1220 "channel_default_join_flood_time", "serverhide_entry",
1221 "serverhide_items", "serverhide_item", "serverhide_flatten_links",
1222 "serverhide_flatten_links_delay", "serverhide_flatten_links_file",
1223 "serverhide_disable_remote_commands", "serverhide_hide_servers",
1224 "serverhide_hide_services", "serverhide_hidden_name",
1225 "serverhide_hidden", "serverhide_hide_server_ips", YY_NULLPTR
1226 };
1227 #endif
1228
1229 # ifdef YYPRINT
1230 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
1231 (internal) symbol number NUM (which must be that of a token). */
1232 static const yytype_uint16 yytoknum[] =
1233 {
1234 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1235 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1236 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1237 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1238 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1239 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1240 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1241 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1242 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1243 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1244 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1245 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1246 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1247 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
1248 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1249 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
1250 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
1251 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1252 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
1253 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
1254 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1255 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
1256 475, 476, 477, 478, 479, 480, 481, 59, 125, 123,
1257 61, 44, 58
1258 };
1259 # endif
1260
1261 #define YYPACT_NINF -887
1262
1263 #define yypact_value_is_default(Yystate) \
1264 (!!((Yystate) == (-887)))
1265
1266 #define YYTABLE_NINF -130
1267
1268 #define yytable_value_is_error(Yytable_value) \
1269 0
1270
1271 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1272 STATE-NUM. */
1273 static const yytype_int16 yypact[] =
1274 {
1275 -887, 721, -887, -174, -213, -208, -887, -887, -887, -197,
1276 -887, -181, -887, -887, -887, -170, -887, -887, -887, -160,
1277 -152, -887, -140, -887, -122, -887, -887, -887, -887, -887,
1278 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1279 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1280 -887, 23, 361, -119, -117, -97, 13, -91, 486, -84,
1281 -78, -68, 84, -55, -49, -45, 413, 624, -35, 14,
1282 -32, 49, -25, -185, -20, -10, -7, 9, -887, -887,
1283 -887, -887, -887, -6, 44, 45, 48, 63, 64, 66,
1284 79, 89, 90, 102, 166, -887, -887, -887, -887, -887,
1285 -887, -887, -887, -887, -887, -887, -887, 783, 614, 61,
1286 -887, 106, 32, -887, -887, 121, -887, 116, 118, 119,
1287 120, 122, 131, 134, 135, 136, 140, 143, 144, 145,
1288 146, 147, 148, 150, 153, 154, 158, 159, 162, 167,
1289 168, 169, -887, -887, 173, 174, 177, 180, 182, 183,
1290 185, 186, 188, 189, 194, 196, 197, 200, 201, 202,
1291 203, 204, 57, -887, -887, -887, -887, -887, -887, -887,
1292 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1293 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1294 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1295 -887, -887, -887, -887, -887, -887, -887, -887, -887, 352,
1296 12, 304, -22, 209, 210, 2, -887, -887, -887, 11,
1297 341, 85, -887, 214, 220, 223, 224, 229, 233, 234,
1298 240, 241, 291, -887, -887, -887, -887, -887, -887, -887,
1299 -887, -887, -887, 52, 243, 244, 245, 246, 250, 252,
1300 253, 254, 256, 258, 259, 268, 273, 274, 275, 276,
1301 282, 55, -887, -887, -887, -887, -887, -887, -887, -887,
1302 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1303 19, 87, 283, 3, -887, -887, -887, 115, 164, -887,
1304 284, 35, -887, -887, 165, -887, 289, 359, 393, 299,
1305 -887, 149, 410, 81, 420, 410, 410, 421, 410, 410,
1306 424, 438, 320, -887, 323, 322, 327, 330, -887, 332,
1307 334, 337, 340, 344, 346, 350, 353, 354, 355, 357,
1308 358, 360, 217, -887, -887, -887, -887, -887, -887, -887,
1309 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1310 -887, 326, 363, 364, 365, 366, 369, 373, -887, 374,
1311 376, 377, 379, 382, 383, 384, 251, -887, -887, -887,
1312 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1313 -887, -887, -887, 386, 388, 16, -887, -887, -887, 446,
1314 362, -887, -887, 390, 391, 33, -887, -887, -887, 82,
1315 410, 463, 410, 410, 414, 514, 415, 518, 519, 521,
1316 425, 426, 427, 410, 524, 529, 530, 531, 410, 540,
1317 546, 548, 549, 449, 430, 431, 453, 410, 410, 455,
1318 456, 457, -191, -186, 458, 461, 464, 465, 567, 410,
1319 467, 410, 410, 468, 451, -887, 454, 452, 459, -887,
1320 462, 472, 473, 474, 475, 303, -887, -887, -887, -887,
1321 -887, -887, -887, -887, -887, -887, 478, 480, 30, -887,
1322 -887, -887, 460, 483, 485, -887, 487, -887, 10, -887,
1323 -887, -887, -887, -887, 562, 571, 484, -887, 491, 489,
1324 490, 27, -887, -887, -887, 496, 499, 500, -887, 501,
1325 502, 503, 504, -887, 506, 509, 181, -887, -887, -887,
1326 -887, -887, -887, -887, -887, -887, -887, -887, 516, 511,
1327 515, 517, 38, -887, -887, -887, -887, 535, 539, 410,
1328 572, 541, 573, 542, 543, 544, 532, -887, -887, 618,
1329 635, 551, 636, 654, 656, 643, 646, 647, 648, 649,
1330 651, 652, 658, 661, 664, 665, 561, -887, 563, 564,
1331 -887, 34, -887, -887, -887, -887, 569, 565, -887, 568,
1332 566, 574, 580, 581, 583, 60, -887, -887, -887, -887,
1333 -887, 669, 576, -887, 587, 585, -887, 586, 95, -887,
1334 -887, -887, -887, 590, 591, 594, -887, 596, 400, 604,
1335 605, 606, 609, 610, 611, 612, 613, 615, 616, -887,
1336 -887, 688, 690, 410, 617, 699, 733, 736, 410, 741,
1337 742, 410, 730, 745, 747, 410, 750, 750, 632, -887,
1338 -887, 738, 1, 739, 653, 748, 749, 642, 752, 753,
1339 768, 756, 757, 758, 760, 657, -887, 763, 764, 662,
1340 -887, 663, -887, 766, 769, 668, -887, 670, 671, 672,
1341 674, 675, 677, 679, 680, 681, 682, 684, 685, 687,
1342 689, 691, 692, 693, 698, 701, 704, 706, 708, 709,
1343 711, 714, 847, 759, 715, 716, 717, 719, 720, 723,
1344 724, 725, 729, 731, 732, 734, 735, 737, 740, 746,
1345 754, 762, 765, 767, -887, -887, 774, 770, 718, 793,
1346 773, 795, 835, 841, 771, -887, 844, 850, 772, -887,
1347 -887, 854, 861, 761, 876, 777, -887, 778, 779, -887,
1348 -887, 864, 868, 780, -887, -887, 873, 787, 782, 878,
1349 894, 897, 812, 794, 901, 904, 802, -887, -887, 908,
1350 909, 910, 808, -887, 809, 811, 813, 817, 818, 819,
1351 820, 822, 823, -887, 824, 825, 827, 828, 829, 830,
1352 831, 832, 833, 834, 836, 837, 838, 839, 840, 842,
1353 843, -887, -887, 912, 845, 846, -887, 849, -887, 93,
1354 -887, 917, 940, 946, 949, 851, -887, 852, -887, -887,
1355 950, 853, 952, 855, -887, -887, -887, -887, -887, 410,
1356 410, 410, 410, 410, 410, 410, -887, -887, -887, -887,
1357 -887, -887, -887, -887, -887, -887, -887, -887, 857, 858,
1358 859, -26, 860, 862, 863, 865, 866, 867, 869, 870,
1359 871, 872, 874, 343, 875, 877, -887, 879, 880, 881,
1360 882, 883, 884, 885, -1, 886, 887, 888, 889, 890,
1361 891, 892, -887, 893, 895, -887, -887, 896, 898, -887,
1362 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1363 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1364 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1365 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1366 -887, -887, -887, -887, -887, -201, -887, -887, -887, -887,
1367 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1368 -887, -887, -887, -887, -887, -887, -887, -887, -887, -190,
1369 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1370 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1371 -887, 899, 900, 423, 902, 903, 905, 906, 907, -887,
1372 911, 913, -887, 914, 915, -18, 919, 916, -887, -887,
1373 -887, -887, 918, 921, -887, 922, 923, 481, 924, 925,
1374 926, 927, 807, 928, 929, -887, 930, 931, 932, -887,
1375 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1376 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1377 -887, -887, -887, -887, -887, -887, 933, 338, -887, -887,
1378 934, 935, 936, -887, 56, -887, -887, -887, -887, 937,
1379 941, 942, 943, -887, -887, 944, 577, 945, -887, -887,
1380 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1381 -887, -187, -887, -887, -887, -887, -887, -887, -887, -887,
1382 -887, -887, -887, -887, 750, 750, 750, -887, -887, -887,
1383 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1384 -184, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1385 -887, -887, -887, -887, 847, -887, 759, -887, -887, -887,
1386 -887, -887, -887, -887, -887, -887, -887, -887, -887, -182,
1387 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1388 -887, -887, -887, -176, -887, 969, 876, 947, -887, -887,
1389 -887, -887, -887, -887, 848, -887, 856, 948, -887, -887,
1390 951, 953, -887, -887, 954, -887, -887, -887, -887, -887,
1391 -887, -887, -887, -887, -887, -887, -887, -159, -887, -887,
1392 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1393 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1394 -887, -887, -887, -887, -887, -157, -887, -887, -887, -887,
1395 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1396 -887, -887, -887, -144, -887, -887, 959, -89, 957, 955,
1397 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1398 -887, -887, -887, -887, -887, -887, -126, -887, -887, -887,
1399 -26, -887, -887, -887, -887, -1, -887, -887, -887, 423,
1400 -887, -18, -887, -887, -887, 963, 965, 972, 973, 977,
1401 993, -887, 481, -887, 807, -887, 338, 961, 962, 964,
1402 227, -887, -887, 577, -887, -887, -887, -887, -887, -887,
1403 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1404 -887, -887, -887, -887, -887, -887, -887, -887, -123, -887,
1405 -887, -887, 227, -887
1406 };
1407
1408 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1409 Performed when YYTABLE does not specify something else to do. Zero
1410 means the default is an error. */
1411 static const yytype_uint16 yydefact[] =
1412 {
1413 2, 0, 1, 0, 0, 0, 234, 399, 447, 0,
1414 462, 0, 302, 438, 278, 0, 100, 152, 336, 0,
1415 0, 377, 0, 109, 0, 353, 3, 23, 11, 4,
1416 24, 25, 5, 6, 8, 9, 10, 13, 14, 15,
1417 16, 17, 18, 19, 20, 22, 21, 7, 12, 26,
1418 27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1419 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1420 0, 0, 0, 0, 0, 0, 0, 0, 92, 93,
1421 95, 94, 629, 0, 0, 0, 0, 0, 0, 0,
1422 0, 0, 0, 0, 0, 617, 628, 619, 620, 621,
1423 622, 623, 624, 625, 618, 626, 627, 0, 0, 0,
1424 460, 0, 0, 458, 459, 0, 519, 0, 0, 0,
1425 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1427 0, 0, 588, 562, 0, 0, 0, 0, 0, 0,
1428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1429 0, 0, 0, 473, 474, 475, 517, 518, 512, 513,
1430 514, 515, 511, 485, 476, 477, 478, 479, 480, 481,
1431 482, 483, 484, 486, 487, 516, 491, 492, 493, 494,
1432 490, 489, 495, 502, 503, 496, 497, 498, 488, 500,
1433 509, 510, 507, 508, 501, 499, 505, 506, 504, 0,
1434 0, 0, 0, 0, 0, 0, 46, 47, 48, 0,
1435 0, 0, 653, 0, 0, 0, 0, 0, 0, 0,
1436 0, 0, 0, 643, 644, 645, 646, 647, 648, 649,
1437 651, 650, 652, 0, 0, 0, 0, 0, 0, 0,
1438 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1439 0, 0, 54, 69, 66, 64, 70, 71, 65, 55,
1440 68, 58, 59, 60, 56, 67, 61, 62, 63, 57,
1441 0, 0, 0, 0, 124, 125, 126, 0, 0, 351,
1442 0, 0, 349, 350, 0, 96, 0, 0, 0, 0,
1443 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1444 0, 0, 0, 616, 0, 0, 0, 0, 272, 0,
1445 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1446 0, 0, 0, 237, 238, 241, 243, 244, 245, 246,
1447 247, 248, 249, 250, 251, 239, 240, 242, 252, 253,
1448 254, 0, 0, 0, 0, 0, 0, 0, 427, 0,
1449 0, 0, 0, 0, 0, 0, 0, 402, 403, 404,
1450 405, 406, 407, 408, 410, 409, 412, 416, 413, 414,
1451 415, 411, 453, 0, 0, 0, 450, 451, 452, 0,
1452 0, 457, 468, 0, 0, 0, 465, 466, 467, 0,
1453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1454 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1455 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1456 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1457 0, 0, 0, 0, 0, 472, 0, 0, 0, 319,
1458 0, 0, 0, 0, 0, 0, 305, 306, 307, 308,
1459 313, 309, 310, 311, 312, 444, 0, 0, 0, 441,
1460 442, 443, 0, 0, 0, 280, 0, 290, 0, 288,
1461 289, 291, 292, 49, 0, 0, 0, 45, 0, 0,
1462 0, 0, 103, 104, 105, 0, 0, 0, 201, 0,
1463 0, 0, 0, 175, 0, 0, 0, 155, 156, 157,
1464 158, 159, 162, 163, 164, 161, 160, 165, 0, 0,
1465 0, 0, 0, 339, 340, 341, 342, 0, 0, 0,
1466 0, 0, 0, 0, 0, 0, 0, 642, 72, 0,
1467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1468 0, 0, 0, 0, 0, 0, 0, 53, 0, 0,
1469 385, 0, 380, 381, 382, 127, 0, 0, 123, 0,
1470 0, 0, 0, 0, 0, 0, 112, 113, 115, 114,
1471 116, 0, 0, 348, 0, 0, 363, 0, 0, 356,
1472 357, 358, 359, 0, 0, 0, 90, 0, 28, 0,
1473 0, 0, 0, 0, 0, 0, 0, 0, 0, 615,
1474 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1475 0, 0, 0, 0, 0, 0, 0, 0, 0, 236,
1476 417, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1477 0, 0, 0, 0, 0, 0, 401, 0, 0, 0,
1478 449, 0, 456, 0, 0, 0, 464, 0, 0, 0,
1479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1480 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1481 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1483 0, 0, 0, 0, 471, 314, 0, 0, 0, 0,
1484 0, 0, 0, 0, 0, 304, 0, 0, 0, 440,
1485 293, 0, 0, 0, 0, 0, 287, 0, 0, 44,
1486 106, 0, 0, 0, 102, 166, 0, 0, 0, 0,
1487 0, 0, 0, 0, 0, 0, 0, 154, 343, 0,
1488 0, 0, 0, 338, 0, 0, 0, 0, 0, 0,
1489 0, 0, 0, 641, 0, 0, 0, 0, 0, 0,
1490 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1491 0, 52, 383, 0, 0, 0, 379, 0, 122, 0,
1492 117, 0, 0, 0, 0, 0, 111, 0, 347, 360,
1493 0, 0, 0, 0, 355, 99, 98, 97, 639, 28,
1494 28, 28, 28, 28, 28, 28, 30, 29, 640, 630,
1495 631, 632, 633, 634, 635, 636, 638, 637, 0, 0,
1496 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1497 0, 0, 0, 38, 0, 0, 235, 0, 0, 0,
1498 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1499 0, 0, 400, 0, 0, 448, 461, 0, 0, 463,
1500 532, 536, 520, 521, 551, 523, 614, 559, 524, 525,
1501 556, 531, 530, 539, 529, 526, 527, 535, 534, 533,
1502 557, 522, 612, 613, 555, 598, 592, 608, 593, 594,
1503 595, 603, 611, 596, 605, 609, 599, 610, 600, 604,
1504 597, 607, 602, 601, 606, 0, 591, 571, 572, 573,
1505 566, 584, 567, 568, 569, 579, 587, 570, 581, 585,
1506 575, 586, 576, 580, 574, 583, 578, 577, 582, 0,
1507 565, 552, 550, 553, 558, 554, 541, 548, 549, 546,
1508 547, 542, 543, 544, 545, 560, 561, 528, 538, 537,
1509 540, 0, 0, 0, 0, 0, 0, 0, 0, 303,
1510 0, 0, 439, 0, 0, 0, 298, 294, 297, 279,
1511 50, 51, 0, 0, 101, 0, 0, 0, 0, 0,
1512 0, 0, 0, 0, 0, 153, 0, 0, 0, 337,
1513 657, 654, 655, 656, 661, 660, 662, 658, 659, 86,
1514 81, 89, 80, 87, 88, 79, 83, 82, 74, 73,
1515 78, 75, 77, 76, 84, 85, 0, 0, 378, 128,
1516 0, 0, 0, 140, 0, 132, 133, 135, 134, 0,
1517 0, 0, 0, 110, 352, 0, 0, 0, 354, 31,
1518 32, 33, 34, 35, 36, 37, 267, 268, 259, 277,
1519 276, 0, 275, 260, 262, 264, 271, 263, 261, 270,
1520 256, 269, 258, 257, 38, 38, 38, 40, 39, 265,
1521 266, 422, 425, 426, 436, 433, 419, 434, 431, 432,
1522 0, 430, 435, 418, 424, 421, 423, 437, 420, 454,
1523 455, 469, 470, 589, 0, 563, 0, 317, 318, 328,
1524 324, 325, 327, 332, 329, 330, 323, 331, 326, 0,
1525 322, 316, 335, 334, 333, 315, 446, 445, 301, 300,
1526 285, 286, 284, 0, 283, 0, 0, 0, 107, 108,
1527 174, 171, 221, 233, 208, 217, 0, 206, 211, 227,
1528 0, 220, 225, 231, 210, 213, 222, 224, 228, 218,
1529 226, 214, 232, 216, 223, 212, 215, 0, 204, 167,
1530 169, 172, 173, 184, 185, 186, 179, 197, 180, 181,
1531 182, 192, 200, 183, 194, 198, 188, 199, 189, 193,
1532 187, 196, 191, 190, 195, 0, 178, 168, 170, 346,
1533 344, 345, 384, 389, 395, 398, 391, 397, 392, 396,
1534 394, 390, 393, 0, 388, 136, 0, 0, 0, 0,
1535 131, 119, 118, 120, 121, 361, 367, 373, 376, 369,
1536 375, 370, 374, 372, 368, 371, 0, 366, 362, 273,
1537 0, 41, 42, 43, 428, 0, 590, 564, 320, 0,
1538 281, 0, 299, 296, 295, 0, 0, 0, 0, 0,
1539 0, 202, 0, 176, 0, 386, 0, 0, 0, 0,
1540 0, 130, 364, 0, 274, 429, 321, 282, 207, 230,
1541 205, 229, 219, 209, 203, 177, 387, 137, 139, 138,
1542 150, 149, 145, 147, 151, 148, 144, 146, 0, 143,
1543 365, 141, 0, 142
1544 };
1545
1546 /* YYPGOTO[NTERM-NUM]. */
1547 static const yytype_int16 yypgoto[] =
1548 {
1549 -887, -887, -887, 15, -300, -886, -626, -887, -887, 958,
1550 -887, -887, -887, -887, 920, -887, -887, -887, -887, -887,
1551 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1552 -887, -887, -887, -887, 1047, -887, -887, -887, -887, -887,
1553 -887, 637, -887, -887, -887, -887, -887, 556, -887, -887,
1554 -887, -887, -887, -887, 938, -887, -887, -887, -887, 103,
1555 -887, -887, -887, -887, -887, -166, -887, -887, -887, 633,
1556 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1557 -887, -121, -887, -887, -887, -118, -887, -887, -887, 814,
1558 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1559 -887, -887, -887, -887, -887, -887, -887, -887, -887, -77,
1560 -887, -887, -887, -887, -887, -76, -887, 700, -887, -887,
1561 -887, 26, -887, -887, -887, -887, -887, 712, -887, -887,
1562 -887, -887, -887, -887, -887, -73, -887, -887, -887, -887,
1563 -887, -887, 655, -887, -887, -887, -887, -887, 939, -887,
1564 -887, -887, -887, 602, -887, -887, -887, -887, -887, -94,
1565 -887, -887, -887, 623, -887, -887, -887, -887, -74, -887,
1566 -887, -887, 956, -887, -887, -887, -887, -887, -887, -887,
1567 -887, -887, -887, -887, -52, -887, -887, -887, -887, -887,
1568 -887, -887, -887, 726, -887, -887, -887, -887, -887, 810,
1569 -887, -887, -887, -887, 1084, -887, -887, -887, -887, 803,
1570 -887, -887, -887, -887, 1035, -887, -887, -887, -887, -887,
1571 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1572 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1573 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1574 -887, -887, -887, -887, -887, -887, -887, -887, 94, -887,
1575 -887, -887, 97, -887, -887, -887, -887, -887, 1105, -887,
1576 -887, -887, -887, -887, -887, -887, -887, -887, -887, -887,
1577 -887, -887, 970, -887, -887, -887, -887, -887, -887, -887,
1578 -887, -887
1579 };
1580
1581 /* YYDEFGOTO[NTERM-NUM]. */
1582 static const yytype_int16 yydefgoto[] =
1583 {
1584 -1, 1, 26, 816, 817, 1077, 1078, 27, 215, 216,
1585 217, 218, 28, 261, 262, 263, 264, 265, 266, 267,
1586 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
1587 278, 279, 29, 77, 78, 79, 80, 81, 30, 63,
1588 491, 492, 493, 494, 31, 70, 575, 576, 577, 578,
1589 579, 580, 32, 283, 284, 285, 286, 287, 1034, 1035,
1590 1036, 1037, 1038, 1218, 1298, 1299, 33, 64, 506, 507,
1591 508, 509, 510, 511, 512, 513, 514, 515, 516, 743,
1592 1195, 1196, 517, 738, 1167, 1168, 34, 53, 332, 333,
1593 334, 335, 336, 337, 338, 339, 340, 341, 342, 343,
1594 344, 345, 346, 347, 348, 349, 350, 614, 1061, 1062,
1595 35, 61, 477, 723, 1133, 1134, 478, 479, 480, 1137,
1596 977, 978, 481, 482, 36, 59, 455, 456, 457, 458,
1597 459, 460, 461, 708, 1119, 1120, 462, 463, 464, 37,
1598 65, 522, 523, 524, 525, 526, 38, 291, 292, 293,
1599 39, 72, 588, 589, 590, 591, 592, 801, 1236, 1237,
1600 40, 68, 561, 562, 563, 564, 784, 1213, 1214, 41,
1601 54, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1602 375, 376, 637, 1090, 1091, 377, 378, 379, 380, 381,
1603 42, 60, 468, 469, 470, 471, 43, 55, 385, 386,
1604 387, 388, 44, 112, 113, 114, 45, 57, 395, 396,
1605 397, 398, 46, 162, 163, 164, 165, 166, 167, 168,
1606 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
1607 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
1608 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
1609 199, 200, 201, 202, 203, 204, 425, 939, 940, 205,
1610 424, 915, 916, 206, 207, 208, 47, 94, 95, 96,
1611 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
1612 48, 232, 233, 234, 235, 236, 237, 238, 239, 240,
1613 241, 242
1614 };
1615
1616 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1617 positive, shift that token. If negative, reduce the rule whose
1618 number is the opposite. If YYTABLE_NINF, syntax error. */
1619 static const yytype_int16 yytable[] =
1620 {
1621 844, 845, 599, 212, 281, 602, 603, 1088, 605, 606,
1622 73, 472, 488, 465, 110, 281, 51, 382, 690, 843,
1623 558, 52, 691, 692, 73, 1059, 1103, 693, 488, 1130,
1624 1104, 465, 56, 110, 392, 558, 289, 1105, 74, 518,
1625 1239, 1106, 295, 1244, 1240, 1248, 75, 1245, 58, 1249,
1626 289, 1250, 74, 49, 50, 1251, 243, 1030, 116, 62,
1627 75, 570, 382, 117, 118, 473, 119, 120, 1261, 66,
1628 1263, 121, 1262, 474, 1264, 475, 111, 67, 519, 383,
1629 122, 123, 244, 1265, 245, 212, 518, 1266, 124, 69,
1630 489, 125, 126, 127, 1030, 111, 584, 1060, 128, 213,
1631 658, 1272, 660, 661, 1301, 1273, 489, 71, 1302, 76,
1632 107, 246, 108, 671, 1268, 129, 130, 520, 676, 559,
1633 214, 247, 392, 76, 383, 519, 131, 685, 686, 132,
1634 133, 476, 109, 393, 559, 290, 466, 134, 115, 699,
1635 384, 701, 702, 248, 135, 209, 136, 249, 137, 290,
1636 138, 210, 139, 140, 466, 250, 1031, 394, 251, 252,
1637 571, 211, 521, 141, 520, 570, 584, 82, 142, 143,
1638 1131, 144, 145, 146, 219, -129, 147, 848, 849, 1132,
1639 220, 213, 495, 490, 221, 384, -129, 253, 1241, 1242,
1640 1243, 83, 84, 1031, 280, 585, 1089, 288, 85, 490,
1641 496, 148, 214, 254, 294, 483, 255, 256, 257, 521,
1642 296, 149, 150, 151, 152, 153, 154, 155, 314, 497,
1643 297, 393, 282, 298, 301, 572, 86, 87, 88, 756,
1644 486, 567, 467, 282, 315, 316, 560, 299, 725, 317,
1645 89, 90, 91, 573, 649, 394, 498, 92, 93, 1032,
1646 467, 560, 351, 258, 352, 733, 353, 597, 718, 574,
1647 390, 655, 785, 582, 571, 585, 752, 156, 157, 158,
1648 354, 159, 160, 1033, 302, 303, 259, 260, 304, 538,
1649 161, 499, 318, 556, 1219, 444, 1032, 569, 795, 355,
1650 600, 657, 222, 305, 306, 1290, 307, 1291, 500, 319,
1651 320, 321, 322, 323, 446, 472, 356, 324, 357, 308,
1652 1033, 325, 586, 830, 565, 587, 358, 326, 835, 309,
1653 310, 838, 447, 803, 223, 842, 327, 328, 359, 572,
1654 501, 502, 311, 224, 225, 226, 389, 329, 227, 228,
1655 1292, 448, 495, 229, 230, 231, 399, 573, 400, 401,
1656 402, 360, 403, 446, 1074, 1075, 1076, 1293, 330, 473,
1657 496, 404, 82, 574, 405, 406, 407, 474, 449, 475,
1658 408, 447, 361, 409, 410, 411, 412, 413, 414, 497,
1659 415, 503, 586, 416, 417, 587, 83, 84, 418, 419,
1660 448, 362, 420, 85, 312, 1294, 1295, 421, 422, 423,
1661 363, 504, 331, 426, 427, 505, 498, 428, 1203, 746,
1662 429, 593, 430, 431, 222, 432, 433, 449, 434, 435,
1663 450, 86, 87, 88, 436, 476, 437, 438, 451, 452,
1664 439, 440, 441, 442, 443, 89, 90, 91, 1109, 484,
1665 485, 499, 92, 93, 527, 628, 223, 1296, 453, 364,
1666 528, 843, 1297, 529, 530, 224, 225, 226, 500, 531,
1667 227, 228, 1110, 532, 533, 229, 230, 231, 1204, 450,
1668 534, 535, 365, 539, 540, 541, 542, 451, 452, 645,
1669 543, 594, 544, 545, 546, 1142, 547, 116, 548, 549,
1670 501, 502, 117, 118, 1111, 119, 120, 453, 550, 1205,
1671 121, 1143, 1144, 551, 552, 553, 554, 1206, 598, 122,
1672 123, 1145, 555, 566, 581, 595, 1207, 124, 598, 536,
1673 125, 126, 127, 454, 1112, 1113, 596, 128, 601, 604,
1674 1114, 714, 607, 809, 810, 811, 812, 813, 814, 815,
1675 1208, 503, 1209, 1210, 129, 130, 608, 609, 1146, 1147,
1676 610, 1148, 611, 630, 1115, 131, 1211, 612, 132, 133,
1677 613, 504, 615, 1212, 616, 505, 134, 617, 651, 1116,
1678 618, 659, 454, 135, 619, 136, 620, 137, 1149, 138,
1679 621, 139, 140, 622, 623, 624, 1150, 625, 626, 652,
1680 627, 1269, 141, 631, 632, 633, 634, 142, 143, 635,
1681 144, 145, 146, 636, 638, 147, 639, 640, 1151, 641,
1682 1152, 1153, 642, 643, 644, 351, 647, 352, 648, 353,
1683 653, 654, 663, 662, 664, 243, 665, 666, 1154, 667,
1684 148, 1117, 672, 354, 668, 669, 670, 673, 674, 675,
1685 149, 150, 151, 152, 153, 154, 155, 1226, 677, 1118,
1686 1155, 244, 355, 245, 678, 1156, 679, 680, 681, 1157,
1687 682, 683, 684, 1158, 687, 688, 689, 694, 1159, 356,
1688 695, 357, 1160, 696, 697, 698, 700, 703, 704, 358,
1689 246, 705, 706, 1161, 727, 1162, 1163, 720, 1164, 707,
1690 247, 359, 709, 728, 757, 759, 156, 157, 158, 1165,
1691 159, 160, 710, 711, 712, 713, 1166, 1227, 716, 161,
1692 717, 729, 248, 721, 360, 722, 249, 724, 730, 731,
1693 732, 2, 3, 735, 250, 4, 764, 251, 252, 736,
1694 737, 739, 740, 741, 742, 361, 744, 5, 1228, 745,
1695 6, 749, 7, 748, 754, 750, 1229, 751, 755, 8,
1696 758, 760, 761, 762, 362, 1230, 253, 765, 767, 763,
1697 766, 9, 768, 363, 769, 770, 10, 11, 771, 772,
1698 773, 774, 254, 775, 776, 255, 256, 257, 787, 1231,
1699 777, 1232, 1233, 778, 314, 12, 779, 780, 781, 13,
1700 782, 797, 788, 790, 783, 1234, 828, 789, 829, 14,
1701 315, 316, 1235, 798, 791, 317, 917, 832, 918, 919,
1702 792, 793, 364, 794, 799, 800, 802, 805, 806, 15,
1703 16, 807, 258, 808, 1049, 1050, 1051, 1052, 1053, 1054,
1704 1055, 818, 819, 820, 17, 365, 821, 822, 823, 824,
1705 825, 833, 826, 827, 834, 259, 260, 831, 318, 836,
1706 837, 18, 839, 840, 1173, 841, 1174, 1175, 843, 846,
1707 847, 850, 851, 19, 20, 319, 320, 321, 322, 323,
1708 852, 853, 854, 324, 855, 856, 857, 325, 858, 859,
1709 860, 965, 861, 326, 862, 863, 864, 21, 867, 865,
1710 866, 868, 327, 328, 895, 869, 961, 870, 871, 872,
1711 22, 873, 874, 329, 875, 23, 876, 877, 878, 879,
1712 24, 880, 881, 25, 882, 964, 883, 966, 884, 885,
1713 886, 920, 921, 922, 330, 887, 923, 924, 888, 925,
1714 926, 889, 927, 890, 928, 891, 892, 929, 893, 930,
1715 931, 894, 941, 942, 943, 932, 944, 945, 963, 933,
1716 946, 947, 948, 934, 935, 936, 949, 967, 950, 951,
1717 937, 952, 953, 968, 954, 938, 970, 955, 331, 1176,
1718 1177, 1178, 971, 956, 1179, 1180, 973, 1181, 1182, 962,
1719 1183, 957, 1184, 974, 976, 1185, 982, 1186, 1187, 958,
1720 983, 975, 959, 1188, 960, 985, 986, 1189, 969, 972,
1721 988, 1190, 1191, 1192, 979, 980, 981, 984, 1193, 896,
1722 897, 898, 987, 1194, 899, 900, 989, 901, 902, 990,
1723 903, 991, 904, 993, 992, 905, 994, 906, 907, 995,
1724 996, 997, 998, 908, 1026, 999, 1000, 909, 1001, 1039,
1725 1002, 910, 911, 912, 1003, 1004, 1005, 1006, 913, 1007,
1726 1008, 1009, 1010, 914, 1011, 1012, 1013, 1014, 1015, 1016,
1727 1017, 1018, 1040, 1019, 1020, 1021, 1022, 1023, 1041, 1024,
1728 1025, 1042, 1045, 1028, 1047, 1027, 1029, 1252, 1043, 1044,
1729 1255, 1267, 1048, 1046, 1056, 1057, 1058, 1063, 1256, 1064,
1730 1065, 1278, 1066, 1067, 1068, 1279, 1069, 1070, 1071, 1072,
1731 1280, 1073, 1079, 1281, 1080, 1282, 1081, 1082, 1083, 1084,
1732 1085, 1086, 1087, 1092, 1093, 1094, 1095, 1096, 1097, 1098,
1733 1099, 1283, 1100, 1101, 300, 1102, 1107, 1108, 734, 1121,
1734 1122, 796, 1123, 1124, 1125, 1135, 1303, 1220, 1126, 747,
1735 1127, 1128, 1129, 1285, 1284, 1138, 629, 1136, 1139, 1140,
1736 1141, 1169, 1170, 1171, 1172, 1197, 1198, 1199, 1200, 1201,
1737 1202, 1215, 1253, 1274, 1221, 1216, 1217, 715, 1222, 1223,
1738 1224, 1225, 1238, 487, 1254, 1277, 1276, 753, 726, 1300,
1739 1257, 557, 1271, 1258, 786, 1259, 1260, 1270, 1287, 1288,
1740 804, 1289, 1286, 1275, 719, 650, 391, 445, 656, 313,
1741 1247, 1246, 537, 0, 0, 0, 0, 0, 0, 0,
1742 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1743 0, 568, 0, 0, 0, 0, 0, 0, 0, 0,
1744 583, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1745 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1746 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1747 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1748 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1750 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1751 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1753 0, 0, 646
1754 };
1755
1756 static const yytype_int16 yycheck[] =
1757 {
1758 626, 627, 302, 1, 1, 305, 306, 8, 308, 309,
1759 1, 1, 1, 1, 1, 1, 229, 1, 209, 108,
1760 1, 229, 213, 209, 1, 51, 227, 213, 1, 47,
1761 231, 1, 229, 1, 1, 1, 1, 227, 29, 1,
1762 227, 231, 227, 227, 231, 227, 37, 231, 229, 231,
1763 1, 227, 29, 227, 228, 231, 1, 1, 1, 229,
1764 37, 1, 1, 6, 7, 55, 9, 10, 227, 229,
1765 227, 14, 231, 63, 231, 65, 63, 229, 40, 63,
1766 23, 24, 27, 227, 29, 1, 1, 231, 31, 229,
1767 79, 34, 35, 36, 1, 63, 1, 123, 41, 97,
1768 400, 227, 402, 403, 227, 231, 79, 229, 231, 100,
1769 229, 56, 229, 413, 203, 58, 59, 79, 418, 100,
1770 118, 66, 1, 100, 63, 40, 69, 427, 428, 72,
1771 73, 121, 229, 100, 100, 100, 124, 80, 229, 439,
1772 124, 441, 442, 88, 87, 229, 89, 92, 91, 100,
1773 93, 229, 95, 96, 124, 100, 100, 124, 103, 104,
1774 100, 229, 124, 106, 79, 1, 1, 1, 111, 112,
1775 188, 114, 115, 116, 229, 172, 119, 176, 177, 197,
1776 229, 97, 1, 172, 229, 124, 172, 132, 1074, 1075,
1777 1076, 25, 26, 100, 229, 100, 197, 229, 32, 172,
1778 19, 144, 118, 148, 229, 227, 151, 152, 153, 124,
1779 230, 154, 155, 156, 157, 158, 159, 160, 1, 38,
1780 230, 100, 219, 230, 230, 165, 60, 61, 62, 529,
1781 228, 228, 220, 219, 17, 18, 217, 228, 228, 22,
1782 74, 75, 76, 183, 228, 124, 65, 81, 82, 193,
1783 220, 217, 1, 198, 3, 228, 5, 108, 228, 199,
1784 228, 228, 228, 228, 100, 100, 228, 210, 211, 212,
1785 19, 214, 215, 217, 230, 230, 221, 222, 230, 227,
1786 223, 100, 65, 228, 228, 228, 193, 172, 228, 38,
1787 209, 209, 1, 230, 230, 68, 230, 70, 117, 82,
1788 83, 84, 85, 86, 1, 1, 55, 90, 57, 230,
1789 217, 94, 217, 613, 227, 220, 65, 100, 618, 230,
1790 230, 621, 19, 228, 33, 625, 109, 110, 77, 165,
1791 149, 150, 230, 42, 43, 44, 230, 120, 47, 48,
1792 113, 38, 1, 52, 53, 54, 230, 183, 230, 230,
1793 230, 100, 230, 1, 11, 12, 13, 130, 141, 55,
1794 19, 230, 1, 199, 230, 230, 230, 63, 65, 65,
1795 230, 19, 121, 230, 230, 230, 230, 230, 230, 38,
1796 230, 200, 217, 230, 230, 220, 25, 26, 230, 230,
1797 38, 140, 230, 32, 228, 168, 169, 230, 230, 230,
1798 149, 220, 185, 230, 230, 224, 65, 230, 70, 228,
1799 230, 122, 230, 230, 1, 230, 230, 65, 230, 230,
1800 117, 60, 61, 62, 230, 121, 230, 230, 125, 126,
1801 230, 230, 230, 230, 230, 74, 75, 76, 15, 230,
1802 230, 100, 81, 82, 230, 228, 33, 220, 145, 198,
1803 230, 108, 225, 230, 230, 42, 43, 44, 117, 230,
1804 47, 48, 39, 230, 230, 52, 53, 54, 130, 117,
1805 230, 230, 221, 230, 230, 230, 230, 125, 126, 228,
1806 230, 122, 230, 230, 230, 4, 230, 1, 230, 230,
1807 149, 150, 6, 7, 71, 9, 10, 145, 230, 161,
1808 14, 20, 21, 230, 230, 230, 230, 169, 108, 23,
1809 24, 30, 230, 230, 230, 122, 178, 31, 108, 228,
1810 34, 35, 36, 220, 101, 102, 227, 41, 108, 108,
1811 107, 228, 108, 133, 134, 135, 136, 137, 138, 139,
1812 202, 200, 204, 205, 58, 59, 108, 227, 67, 68,
1813 227, 70, 230, 227, 131, 69, 218, 230, 72, 73,
1814 230, 220, 230, 225, 230, 224, 80, 230, 122, 146,
1815 230, 108, 220, 87, 230, 89, 230, 91, 97, 93,
1816 230, 95, 96, 230, 230, 230, 105, 230, 230, 227,
1817 230, 1217, 106, 230, 230, 230, 230, 111, 112, 230,
1818 114, 115, 116, 230, 230, 119, 230, 230, 127, 230,
1819 129, 130, 230, 230, 230, 1, 230, 3, 230, 5,
1820 230, 230, 108, 209, 209, 1, 108, 108, 147, 108,
1821 144, 208, 108, 19, 209, 209, 209, 108, 108, 108,
1822 154, 155, 156, 157, 158, 159, 160, 70, 108, 226,
1823 169, 27, 38, 29, 108, 174, 108, 108, 209, 178,
1824 230, 230, 209, 182, 209, 209, 209, 209, 187, 55,
1825 209, 57, 191, 209, 209, 108, 209, 209, 227, 65,
1826 56, 227, 230, 202, 122, 204, 205, 227, 207, 230,
1827 66, 77, 230, 122, 122, 122, 210, 211, 212, 218,
1828 214, 215, 230, 230, 230, 230, 225, 130, 230, 223,
1829 230, 227, 88, 230, 100, 230, 92, 230, 227, 230,
1830 230, 0, 1, 227, 100, 4, 108, 103, 104, 230,
1831 230, 230, 230, 230, 230, 121, 230, 16, 161, 230,
1832 19, 230, 21, 227, 209, 230, 169, 230, 209, 28,
1833 209, 209, 209, 209, 140, 178, 132, 122, 122, 227,
1834 209, 40, 108, 149, 108, 122, 45, 46, 122, 122,
1835 122, 122, 148, 122, 122, 151, 152, 153, 209, 202,
1836 122, 204, 205, 122, 1, 64, 122, 122, 227, 68,
1837 227, 122, 227, 227, 230, 218, 108, 229, 108, 78,
1838 17, 18, 225, 227, 230, 22, 47, 108, 49, 50,
1839 230, 230, 198, 230, 227, 230, 230, 227, 227, 98,
1840 99, 227, 198, 227, 809, 810, 811, 812, 813, 814,
1841 815, 227, 227, 227, 113, 221, 227, 227, 227, 227,
1842 227, 108, 227, 227, 108, 221, 222, 230, 65, 108,
1843 108, 130, 122, 108, 47, 108, 49, 50, 108, 227,
1844 122, 122, 209, 142, 143, 82, 83, 84, 85, 86,
1845 122, 122, 230, 90, 122, 122, 108, 94, 122, 122,
1846 122, 108, 122, 100, 227, 122, 122, 166, 122, 227,
1847 227, 122, 109, 110, 47, 227, 122, 227, 227, 227,
1848 179, 227, 227, 120, 227, 184, 227, 227, 227, 227,
1849 189, 227, 227, 192, 227, 122, 227, 122, 227, 227,
1850 227, 162, 163, 164, 141, 227, 167, 168, 227, 170,
1851 171, 227, 173, 227, 175, 227, 227, 178, 227, 180,
1852 181, 227, 227, 227, 227, 186, 227, 227, 230, 190,
1853 227, 227, 227, 194, 195, 196, 227, 122, 227, 227,
1854 201, 227, 227, 122, 227, 206, 122, 227, 185, 162,
1855 163, 164, 122, 227, 167, 168, 122, 170, 171, 209,
1856 173, 227, 175, 122, 108, 178, 122, 180, 181, 227,
1857 122, 230, 227, 186, 227, 122, 209, 190, 227, 227,
1858 122, 194, 195, 196, 227, 227, 227, 227, 201, 162,
1859 163, 164, 230, 206, 167, 168, 122, 170, 171, 122,
1860 173, 209, 175, 122, 230, 178, 122, 180, 181, 227,
1861 122, 122, 122, 186, 122, 227, 227, 190, 227, 122,
1862 227, 194, 195, 196, 227, 227, 227, 227, 201, 227,
1863 227, 227, 227, 206, 227, 227, 227, 227, 227, 227,
1864 227, 227, 122, 227, 227, 227, 227, 227, 122, 227,
1865 227, 122, 122, 227, 122, 230, 227, 108, 227, 227,
1866 232, 122, 227, 230, 227, 227, 227, 227, 232, 227,
1867 227, 128, 227, 227, 227, 130, 227, 227, 227, 227,
1868 128, 227, 227, 130, 227, 128, 227, 227, 227, 227,
1869 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1870 227, 128, 227, 227, 77, 227, 227, 227, 491, 227,
1871 227, 575, 227, 227, 227, 216, 1302, 1034, 227, 506,
1872 227, 227, 227, 1264, 1262, 227, 332, 231, 227, 227,
1873 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1874 227, 227, 1136, 1240, 227, 230, 230, 455, 227, 227,
1875 227, 227, 227, 215, 227, 1251, 1249, 522, 478, 1273,
1876 232, 261, 227, 232, 561, 232, 232, 230, 227, 227,
1877 588, 227, 1266, 1245, 468, 385, 112, 162, 395, 94,
1878 1106, 1104, 232, -1, -1, -1, -1, -1, -1, -1,
1879 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1880 -1, 283, -1, -1, -1, -1, -1, -1, -1, -1,
1881 291, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1882 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1883 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1884 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1885 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1886 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1887 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1888 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1889 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1890 -1, -1, 366
1891 };
1892
1893 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1894 symbol of state STATE-NUM. */
1895 static const yytype_uint16 yystos[] =
1896 {
1897 0, 234, 0, 1, 4, 16, 19, 21, 28, 40,
1898 45, 46, 64, 68, 78, 98, 99, 113, 130, 142,
1899 143, 166, 179, 184, 189, 192, 235, 240, 245, 265,
1900 271, 277, 285, 299, 319, 343, 357, 372, 379, 383,
1901 393, 402, 423, 429, 435, 439, 445, 499, 513, 227,
1902 228, 229, 229, 320, 403, 430, 229, 440, 229, 358,
1903 424, 344, 229, 272, 300, 373, 229, 229, 394, 229,
1904 278, 229, 384, 1, 29, 37, 100, 266, 267, 268,
1905 269, 270, 1, 25, 26, 32, 60, 61, 62, 74,
1906 75, 76, 81, 82, 500, 501, 502, 503, 504, 505,
1907 506, 507, 508, 509, 510, 511, 512, 229, 229, 229,
1908 1, 63, 436, 437, 438, 229, 1, 6, 7, 9,
1909 10, 14, 23, 24, 31, 34, 35, 36, 41, 58,
1910 59, 69, 72, 73, 80, 87, 89, 91, 93, 95,
1911 96, 106, 111, 112, 114, 115, 116, 119, 144, 154,
1912 155, 156, 157, 158, 159, 160, 210, 211, 212, 214,
1913 215, 223, 446, 447, 448, 449, 450, 451, 452, 453,
1914 454, 455, 456, 457, 458, 459, 460, 461, 462, 463,
1915 464, 465, 466, 467, 468, 469, 470, 471, 472, 473,
1916 474, 475, 476, 477, 478, 479, 480, 481, 482, 483,
1917 484, 485, 486, 487, 488, 492, 496, 497, 498, 229,
1918 229, 229, 1, 97, 118, 241, 242, 243, 244, 229,
1919 229, 229, 1, 33, 42, 43, 44, 47, 48, 52,
1920 53, 54, 514, 515, 516, 517, 518, 519, 520, 521,
1921 522, 523, 524, 1, 27, 29, 56, 66, 88, 92,
1922 100, 103, 104, 132, 148, 151, 152, 153, 198, 221,
1923 222, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1924 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1925 229, 1, 219, 286, 287, 288, 289, 290, 229, 1,
1926 100, 380, 381, 382, 229, 227, 230, 230, 230, 228,
1927 267, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1928 230, 230, 228, 501, 1, 17, 18, 22, 65, 82,
1929 83, 84, 85, 86, 90, 94, 100, 109, 110, 120,
1930 141, 185, 321, 322, 323, 324, 325, 326, 327, 328,
1931 329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
1932 339, 1, 3, 5, 19, 38, 55, 57, 65, 77,
1933 100, 121, 140, 149, 198, 221, 404, 405, 406, 407,
1934 408, 409, 410, 411, 412, 413, 414, 418, 419, 420,
1935 421, 422, 1, 63, 124, 431, 432, 433, 434, 230,
1936 228, 437, 1, 100, 124, 441, 442, 443, 444, 230,
1937 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1938 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1939 230, 230, 230, 230, 493, 489, 230, 230, 230, 230,
1940 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1941 230, 230, 230, 230, 228, 447, 1, 19, 38, 65,
1942 117, 125, 126, 145, 220, 359, 360, 361, 362, 363,
1943 364, 365, 369, 370, 371, 1, 124, 220, 425, 426,
1944 427, 428, 1, 55, 63, 65, 121, 345, 349, 350,
1945 351, 355, 356, 227, 230, 230, 228, 242, 1, 79,
1946 172, 273, 274, 275, 276, 1, 19, 38, 65, 100,
1947 117, 149, 150, 200, 220, 224, 301, 302, 303, 304,
1948 305, 306, 307, 308, 309, 310, 311, 315, 1, 40,
1949 79, 124, 374, 375, 376, 377, 378, 230, 230, 230,
1950 230, 230, 230, 230, 230, 230, 228, 515, 227, 230,
1951 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1952 230, 230, 230, 230, 230, 230, 228, 247, 1, 100,
1953 217, 395, 396, 397, 398, 227, 230, 228, 287, 172,
1954 1, 100, 165, 183, 199, 279, 280, 281, 282, 283,
1955 284, 230, 228, 381, 1, 100, 217, 220, 385, 386,
1956 387, 388, 389, 122, 122, 122, 227, 108, 108, 237,
1957 209, 108, 237, 237, 108, 237, 237, 108, 108, 227,
1958 227, 230, 230, 230, 340, 230, 230, 230, 230, 230,
1959 230, 230, 230, 230, 230, 230, 230, 230, 228, 322,
1960 227, 230, 230, 230, 230, 230, 230, 415, 230, 230,
1961 230, 230, 230, 230, 230, 228, 405, 230, 230, 228,
1962 432, 122, 227, 230, 230, 228, 442, 209, 237, 108,
1963 237, 237, 209, 108, 209, 108, 108, 108, 209, 209,
1964 209, 237, 108, 108, 108, 108, 237, 108, 108, 108,
1965 108, 209, 230, 230, 209, 237, 237, 209, 209, 209,
1966 209, 213, 209, 213, 209, 209, 209, 209, 108, 237,
1967 209, 237, 237, 209, 227, 227, 230, 230, 366, 230,
1968 230, 230, 230, 230, 228, 360, 230, 230, 228, 426,
1969 227, 230, 230, 346, 230, 228, 350, 122, 122, 227,
1970 227, 230, 230, 228, 274, 227, 230, 230, 316, 230,
1971 230, 230, 230, 312, 230, 230, 228, 302, 227, 230,
1972 230, 230, 228, 375, 209, 209, 237, 122, 209, 122,
1973 209, 209, 209, 227, 108, 122, 209, 122, 108, 108,
1974 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
1975 122, 227, 227, 230, 399, 228, 396, 209, 227, 229,
1976 227, 230, 230, 230, 230, 228, 280, 122, 227, 227,
1977 230, 390, 230, 228, 386, 227, 227, 227, 227, 133,
1978 134, 135, 136, 137, 138, 139, 236, 237, 227, 227,
1979 227, 227, 227, 227, 227, 227, 227, 227, 108, 108,
1980 237, 230, 108, 108, 108, 237, 108, 108, 237, 122,
1981 108, 108, 237, 108, 239, 239, 227, 122, 176, 177,
1982 122, 209, 122, 122, 230, 122, 122, 108, 122, 122,
1983 122, 122, 227, 122, 122, 227, 227, 122, 122, 227,
1984 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1985 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1986 227, 227, 227, 227, 227, 47, 162, 163, 164, 167,
1987 168, 170, 171, 173, 175, 178, 180, 181, 186, 190,
1988 194, 195, 196, 201, 206, 494, 495, 47, 49, 50,
1989 162, 163, 164, 167, 168, 170, 171, 173, 175, 178,
1990 180, 181, 186, 190, 194, 195, 196, 201, 206, 490,
1991 491, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1992 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1993 227, 122, 209, 230, 122, 108, 122, 122, 122, 227,
1994 122, 122, 227, 122, 122, 230, 108, 353, 354, 227,
1995 227, 227, 122, 122, 227, 122, 209, 230, 122, 122,
1996 122, 209, 230, 122, 122, 227, 122, 122, 122, 227,
1997 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1998 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1999 227, 227, 227, 227, 227, 227, 122, 230, 227, 227,
2000 1, 100, 193, 217, 291, 292, 293, 294, 295, 122,
2001 122, 122, 122, 227, 227, 122, 230, 122, 227, 236,
2002 236, 236, 236, 236, 236, 236, 227, 227, 227, 51,
2003 123, 341, 342, 227, 227, 227, 227, 227, 227, 227,
2004 227, 227, 227, 227, 11, 12, 13, 238, 239, 227,
2005 227, 227, 227, 227, 227, 227, 227, 227, 8, 197,
2006 416, 417, 227, 227, 227, 227, 227, 227, 227, 227,
2007 227, 227, 227, 227, 231, 227, 231, 227, 227, 15,
2008 39, 71, 101, 102, 107, 131, 146, 208, 226, 367,
2009 368, 227, 227, 227, 227, 227, 227, 227, 227, 227,
2010 47, 188, 197, 347, 348, 216, 231, 352, 227, 227,
2011 227, 227, 4, 20, 21, 30, 67, 68, 70, 97,
2012 105, 127, 129, 130, 147, 169, 174, 178, 182, 187,
2013 191, 202, 204, 205, 207, 218, 225, 317, 318, 227,
2014 227, 227, 227, 47, 49, 50, 162, 163, 164, 167,
2015 168, 170, 171, 173, 175, 178, 180, 181, 186, 190,
2016 194, 195, 196, 201, 206, 313, 314, 227, 227, 227,
2017 227, 227, 227, 70, 130, 161, 169, 178, 202, 204,
2018 205, 218, 225, 400, 401, 227, 230, 230, 296, 228,
2019 292, 227, 227, 227, 227, 227, 70, 130, 161, 169,
2020 178, 202, 204, 205, 218, 225, 391, 392, 227, 227,
2021 231, 238, 238, 238, 227, 231, 495, 491, 227, 231,
2022 227, 231, 108, 354, 227, 232, 232, 232, 232, 232,
2023 232, 227, 231, 227, 231, 227, 231, 122, 203, 239,
2024 230, 227, 227, 231, 342, 417, 368, 348, 128, 130,
2025 128, 130, 128, 128, 318, 314, 401, 227, 227, 227,
2026 68, 70, 113, 130, 168, 169, 220, 225, 297, 298,
2027 392, 227, 231, 298
2028 };
2029
2030 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
2031 static const yytype_uint16 yyr1[] =
2032 {
2033 0, 233, 234, 234, 235, 235, 235, 235, 235, 235,
2034 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
2035 235, 235, 235, 235, 235, 235, 235, 235, 236, 236,
2036 237, 237, 237, 237, 237, 237, 237, 237, 238, 238,
2037 239, 239, 239, 239, 240, 241, 241, 242, 242, 242,
2038 243, 244, 245, 246, 246, 247, 247, 247, 247, 247,
2039 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
2040 247, 247, 247, 248, 249, 250, 251, 252, 253, 254,
2041 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
2042 265, 266, 266, 267, 267, 267, 267, 268, 269, 270,
2043 272, 271, 273, 273, 274, 274, 274, 275, 276, 278,
2044 277, 279, 279, 280, 280, 280, 280, 280, 281, 282,
2045 283, 284, 285, 286, 286, 287, 287, 287, 288, 290,
2046 289, 291, 291, 292, 292, 292, 292, 293, 294, 294,
2047 296, 295, 297, 297, 298, 298, 298, 298, 298, 298,
2048 298, 298, 300, 299, 301, 301, 302, 302, 302, 302,
2049 302, 302, 302, 302, 302, 302, 302, 303, 304, 305,
2050 306, 307, 308, 309, 310, 312, 311, 313, 313, 314,
2051 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
2052 314, 314, 314, 314, 314, 314, 314, 314, 314, 314,
2053 314, 316, 315, 317, 317, 318, 318, 318, 318, 318,
2054 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
2055 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
2056 318, 318, 318, 318, 320, 319, 321, 321, 322, 322,
2057 322, 322, 322, 322, 322, 322, 322, 322, 322, 322,
2058 322, 322, 322, 322, 322, 322, 323, 324, 325, 326,
2059 327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
2060 337, 338, 340, 339, 341, 341, 342, 342, 344, 343,
2061 346, 345, 347, 347, 348, 348, 348, 349, 349, 350,
2062 350, 350, 350, 350, 352, 351, 353, 353, 354, 354,
2063 355, 356, 358, 357, 359, 359, 360, 360, 360, 360,
2064 360, 360, 360, 360, 360, 361, 362, 363, 364, 366,
2065 365, 367, 367, 368, 368, 368, 368, 368, 368, 368,
2066 368, 368, 368, 369, 370, 371, 373, 372, 374, 374,
2067 375, 375, 375, 375, 376, 377, 378, 379, 380, 380,
2068 381, 381, 382, 384, 383, 385, 385, 386, 386, 386,
2069 386, 387, 388, 390, 389, 391, 391, 392, 392, 392,
2070 392, 392, 392, 392, 392, 392, 392, 394, 393, 395,
2071 395, 396, 396, 396, 397, 399, 398, 400, 400, 401,
2072 401, 401, 401, 401, 401, 401, 401, 401, 401, 403,
2073 402, 404, 404, 405, 405, 405, 405, 405, 405, 405,
2074 405, 405, 405, 405, 405, 405, 405, 405, 406, 407,
2075 408, 409, 410, 411, 412, 413, 413, 415, 414, 416,
2076 416, 417, 417, 418, 419, 420, 421, 422, 424, 423,
2077 425, 425, 426, 426, 426, 427, 428, 430, 429, 431,
2078 431, 432, 432, 432, 433, 434, 435, 436, 436, 437,
2079 437, 438, 440, 439, 441, 441, 442, 442, 442, 443,
2080 444, 445, 446, 446, 447, 447, 447, 447, 447, 447,
2081 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
2082 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
2083 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
2084 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
2085 448, 449, 450, 451, 452, 453, 454, 455, 456, 457,
2086 458, 459, 460, 461, 462, 463, 464, 465, 466, 467,
2087 468, 469, 470, 471, 472, 473, 474, 474, 475, 475,
2088 476, 477, 478, 479, 480, 481, 482, 483, 484, 485,
2089 486, 487, 489, 488, 490, 490, 491, 491, 491, 491,
2090 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
2091 491, 491, 491, 491, 491, 491, 491, 491, 493, 492,
2092 494, 494, 495, 495, 495, 495, 495, 495, 495, 495,
2093 495, 495, 495, 495, 495, 495, 495, 495, 495, 495,
2094 495, 495, 496, 497, 498, 499, 500, 500, 501, 501,
2095 501, 501, 501, 501, 501, 501, 501, 501, 501, 501,
2096 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,
2097 512, 513, 514, 514, 515, 515, 515, 515, 515, 515,
2098 515, 515, 515, 515, 516, 517, 518, 519, 520, 521,
2099 522, 523, 524
2100 };
2101
2102 /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
2103 static const yytype_uint8 yyr2[] =
2104 {
2105 0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
2106 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2107 1, 1, 1, 1, 1, 1, 2, 2, 0, 1,
2108 2, 3, 3, 3, 3, 3, 3, 3, 0, 1,
2109 2, 3, 3, 3, 5, 2, 1, 1, 1, 2,
2110 4, 4, 5, 2, 1, 1, 1, 1, 1, 1,
2111 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2112 1, 1, 2, 4, 4, 4, 4, 4, 4, 4,
2113 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2114 5, 2, 1, 1, 1, 1, 2, 4, 4, 4,
2115 0, 6, 2, 1, 1, 1, 2, 4, 4, 0,
2116 6, 2, 1, 1, 1, 1, 1, 2, 4, 4,
2117 4, 4, 5, 2, 1, 1, 1, 2, 4, 0,
2118 6, 2, 1, 1, 1, 1, 2, 4, 4, 4,
2119 0, 5, 3, 1, 1, 1, 1, 1, 1, 1,
2120 1, 1, 0, 6, 2, 1, 1, 1, 1, 1,
2121 1, 1, 1, 1, 1, 1, 2, 4, 4, 4,
2122 4, 4, 4, 4, 4, 0, 5, 3, 1, 1,
2123 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2124 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2125 1, 0, 5, 3, 1, 3, 1, 3, 1, 3,
2126 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
2127 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
2128 3, 1, 1, 1, 0, 6, 2, 1, 1, 1,
2129 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2130 1, 1, 1, 1, 1, 2, 4, 4, 4, 4,
2131 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2132 4, 4, 0, 5, 3, 1, 1, 1, 0, 6,
2133 0, 5, 3, 1, 1, 1, 1, 2, 1, 1,
2134 1, 1, 1, 2, 0, 5, 3, 1, 1, 3,
2135 4, 4, 0, 6, 2, 1, 1, 1, 1, 1,
2136 1, 1, 1, 1, 2, 4, 4, 4, 4, 0,
2137 5, 3, 1, 1, 1, 1, 1, 1, 1, 1,
2138 1, 1, 1, 4, 4, 4, 0, 6, 2, 1,
2139 1, 1, 1, 2, 4, 4, 4, 5, 2, 1,
2140 1, 1, 4, 0, 6, 2, 1, 1, 1, 1,
2141 2, 4, 4, 0, 5, 3, 1, 1, 1, 1,
2142 1, 1, 1, 1, 1, 1, 1, 0, 6, 2,
2143 1, 1, 1, 2, 4, 0, 5, 3, 1, 1,
2144 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
2145 6, 2, 1, 1, 1, 1, 1, 1, 1, 1,
2146 1, 1, 1, 1, 1, 1, 1, 2, 4, 4,
2147 4, 4, 4, 4, 4, 4, 4, 0, 5, 3,
2148 1, 1, 1, 4, 4, 4, 4, 4, 0, 6,
2149 2, 1, 1, 1, 1, 4, 4, 0, 6, 2,
2150 1, 1, 1, 1, 4, 4, 5, 2, 1, 1,
2151 1, 4, 0, 6, 2, 1, 1, 1, 1, 4,
2152 4, 5, 2, 1, 1, 1, 1, 1, 1, 1,
2153 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2154 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2155 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2156 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2157 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2158 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2159 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2160 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2161 4, 4, 0, 5, 3, 1, 1, 1, 1, 1,
2162 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2163 1, 1, 1, 1, 1, 1, 1, 1, 0, 5,
2164 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2165 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2166 1, 1, 4, 4, 4, 5, 2, 1, 1, 1,
2167 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2168 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2169 4, 5, 2, 1, 1, 1, 1, 1, 1, 1,
2170 1, 1, 1, 1, 4, 4, 4, 4, 4, 4,
2171 4, 4, 4
2172 };
2173
2174
2175 #define yyerrok (yyerrstatus = 0)
2176 #define yyclearin (yychar = YYEMPTY)
2177 #define YYEMPTY (-2)
2178 #define YYEOF 0
2179
2180 #define YYACCEPT goto yyacceptlab
2181 #define YYABORT goto yyabortlab
2182 #define YYERROR goto yyerrorlab
2183
2184
2185 #define YYRECOVERING() (!!yyerrstatus)
2186
2187 #define YYBACKUP(Token, Value) \
2188 do \
2189 if (yychar == YYEMPTY) \
2190 { \
2191 yychar = (Token); \
2192 yylval = (Value); \
2193 YYPOPSTACK (yylen); \
2194 yystate = *yyssp; \
2195 goto yybackup; \
2196 } \
2197 else \
2198 { \
2199 yyerror (YY_("syntax error: cannot back up")); \
2200 YYERROR; \
2201 } \
2202 while (0)
2203
2204 /* Error token number */
2205 #define YYTERROR 1
2206 #define YYERRCODE 256
2207
2208
2209
2210 /* Enable debugging if requested. */
2211 #if YYDEBUG
2212
2213 # ifndef YYFPRINTF
2214 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2215 # define YYFPRINTF fprintf
2216 # endif
2217
2218 # define YYDPRINTF(Args) \
2219 do { \
2220 if (yydebug) \
2221 YYFPRINTF Args; \
2222 } while (0)
2223
2224 /* This macro is provided for backward compatibility. */
2225 #ifndef YY_LOCATION_PRINT
2226 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2227 #endif
2228
2229
2230 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2231 do { \
2232 if (yydebug) \
2233 { \
2234 YYFPRINTF (stderr, "%s ", Title); \
2235 yy_symbol_print (stderr, \
2236 Type, Value); \
2237 YYFPRINTF (stderr, "\n"); \
2238 } \
2239 } while (0)
2240
2241
2242 /*----------------------------------------.
2243 | Print this symbol's value on YYOUTPUT. |
2244 `----------------------------------------*/
2245
2246 static void
2247 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2248 {
2249 FILE *yyo = yyoutput;
2250 YYUSE (yyo);
2251 if (!yyvaluep)
2252 return;
2253 # ifdef YYPRINT
2254 if (yytype < YYNTOKENS)
2255 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2256 # endif
2257 YYUSE (yytype);
2258 }
2259
2260
2261 /*--------------------------------.
2262 | Print this symbol on YYOUTPUT. |
2263 `--------------------------------*/
2264
2265 static void
2266 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2267 {
2268 YYFPRINTF (yyoutput, "%s %s (",
2269 yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
2270
2271 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
2272 YYFPRINTF (yyoutput, ")");
2273 }
2274
2275 /*------------------------------------------------------------------.
2276 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2277 | TOP (included). |
2278 `------------------------------------------------------------------*/
2279
2280 static void
2281 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2282 {
2283 YYFPRINTF (stderr, "Stack now");
2284 for (; yybottom <= yytop; yybottom++)
2285 {
2286 int yybot = *yybottom;
2287 YYFPRINTF (stderr, " %d", yybot);
2288 }
2289 YYFPRINTF (stderr, "\n");
2290 }
2291
2292 # define YY_STACK_PRINT(Bottom, Top) \
2293 do { \
2294 if (yydebug) \
2295 yy_stack_print ((Bottom), (Top)); \
2296 } while (0)
2297
2298
2299 /*------------------------------------------------.
2300 | Report that the YYRULE is going to be reduced. |
2301 `------------------------------------------------*/
2302
2303 static void
2304 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
2305 {
2306 unsigned long int yylno = yyrline[yyrule];
2307 int yynrhs = yyr2[yyrule];
2308 int yyi;
2309 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2310 yyrule - 1, yylno);
2311 /* The symbols being reduced. */
2312 for (yyi = 0; yyi < yynrhs; yyi++)
2313 {
2314 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2315 yy_symbol_print (stderr,
2316 yystos[yyssp[yyi + 1 - yynrhs]],
2317 &(yyvsp[(yyi + 1) - (yynrhs)])
2318 );
2319 YYFPRINTF (stderr, "\n");
2320 }
2321 }
2322
2323 # define YY_REDUCE_PRINT(Rule) \
2324 do { \
2325 if (yydebug) \
2326 yy_reduce_print (yyssp, yyvsp, Rule); \
2327 } while (0)
2328
2329 /* Nonzero means print parse trace. It is left uninitialized so that
2330 multiple parsers can coexist. */
2331 int yydebug;
2332 #else /* !YYDEBUG */
2333 # define YYDPRINTF(Args)
2334 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2335 # define YY_STACK_PRINT(Bottom, Top)
2336 # define YY_REDUCE_PRINT(Rule)
2337 #endif /* !YYDEBUG */
2338
2339
2340 /* YYINITDEPTH -- initial size of the parser's stacks. */
2341 #ifndef YYINITDEPTH
2342 # define YYINITDEPTH 200
2343 #endif
2344
2345 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2346 if the built-in stack extension method is used).
2347
2348 Do not make this value too large; the results are undefined if
2349 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2350 evaluated with infinite-precision integer arithmetic. */
2351
2352 #ifndef YYMAXDEPTH
2353 # define YYMAXDEPTH 10000
2354 #endif
2355
2356
2357 #if YYERROR_VERBOSE
2358
2359 # ifndef yystrlen
2360 # if defined __GLIBC__ && defined _STRING_H
2361 # define yystrlen strlen
2362 # else
2363 /* Return the length of YYSTR. */
2364 static YYSIZE_T
2365 yystrlen (const char *yystr)
2366 {
2367 YYSIZE_T yylen;
2368 for (yylen = 0; yystr[yylen]; yylen++)
2369 continue;
2370 return yylen;
2371 }
2372 # endif
2373 # endif
2374
2375 # ifndef yystpcpy
2376 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2377 # define yystpcpy stpcpy
2378 # else
2379 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2380 YYDEST. */
2381 static char *
2382 yystpcpy (char *yydest, const char *yysrc)
2383 {
2384 char *yyd = yydest;
2385 const char *yys = yysrc;
2386
2387 while ((*yyd++ = *yys++) != '\0')
2388 continue;
2389
2390 return yyd - 1;
2391 }
2392 # endif
2393 # endif
2394
2395 # ifndef yytnamerr
2396 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2397 quotes and backslashes, so that it's suitable for yyerror. The
2398 heuristic is that double-quoting is unnecessary unless the string
2399 contains an apostrophe, a comma, or backslash (other than
2400 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2401 null, do not copy; instead, return the length of what the result
2402 would have been. */
2403 static YYSIZE_T
2404 yytnamerr (char *yyres, const char *yystr)
2405 {
2406 if (*yystr == '"')
2407 {
2408 YYSIZE_T yyn = 0;
2409 char const *yyp = yystr;
2410
2411 for (;;)
2412 switch (*++yyp)
2413 {
2414 case '\'':
2415 case ',':
2416 goto do_not_strip_quotes;
2417
2418 case '\\':
2419 if (*++yyp != '\\')
2420 goto do_not_strip_quotes;
2421 /* Fall through. */
2422 default:
2423 if (yyres)
2424 yyres[yyn] = *yyp;
2425 yyn++;
2426 break;
2427
2428 case '"':
2429 if (yyres)
2430 yyres[yyn] = '\0';
2431 return yyn;
2432 }
2433 do_not_strip_quotes: ;
2434 }
2435
2436 if (! yyres)
2437 return yystrlen (yystr);
2438
2439 return yystpcpy (yyres, yystr) - yyres;
2440 }
2441 # endif
2442
2443 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2444 about the unexpected token YYTOKEN for the state stack whose top is
2445 YYSSP.
2446
2447 Return 0 if *YYMSG was successfully written. Return 1 if *YYMSG is
2448 not large enough to hold the message. In that case, also set
2449 *YYMSG_ALLOC to the required number of bytes. Return 2 if the
2450 required number of bytes is too large to store. */
2451 static int
2452 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
2453 yytype_int16 *yyssp, int yytoken)
2454 {
2455 YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
2456 YYSIZE_T yysize = yysize0;
2457 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2458 /* Internationalized format string. */
2459 const char *yyformat = YY_NULLPTR;
2460 /* Arguments of yyformat. */
2461 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2462 /* Number of reported tokens (one for the "unexpected", one per
2463 "expected"). */
2464 int yycount = 0;
2465
2466 /* There are many possibilities here to consider:
2467 - If this state is a consistent state with a default action, then
2468 the only way this function was invoked is if the default action
2469 is an error action. In that case, don't check for expected
2470 tokens because there are none.
2471 - The only way there can be no lookahead present (in yychar) is if
2472 this state is a consistent state with a default action. Thus,
2473 detecting the absence of a lookahead is sufficient to determine
2474 that there is no unexpected or expected token to report. In that
2475 case, just report a simple "syntax error".
2476 - Don't assume there isn't a lookahead just because this state is a
2477 consistent state with a default action. There might have been a
2478 previous inconsistent state, consistent state with a non-default
2479 action, or user semantic action that manipulated yychar.
2480 - Of course, the expected token list depends on states to have
2481 correct lookahead information, and it depends on the parser not
2482 to perform extra reductions after fetching a lookahead from the
2483 scanner and before detecting a syntax error. Thus, state merging
2484 (from LALR or IELR) and default reductions corrupt the expected
2485 token list. However, the list is correct for canonical LR with
2486 one exception: it will still contain any token that will not be
2487 accepted due to an error action in a later state.
2488 */
2489 if (yytoken != YYEMPTY)
2490 {
2491 int yyn = yypact[*yyssp];
2492 yyarg[yycount++] = yytname[yytoken];
2493 if (!yypact_value_is_default (yyn))
2494 {
2495 /* Start YYX at -YYN if negative to avoid negative indexes in
2496 YYCHECK. In other words, skip the first -YYN actions for
2497 this state because they are default actions. */
2498 int yyxbegin = yyn < 0 ? -yyn : 0;
2499 /* Stay within bounds of both yycheck and yytname. */
2500 int yychecklim = YYLAST - yyn + 1;
2501 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2502 int yyx;
2503
2504 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2505 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
2506 && !yytable_value_is_error (yytable[yyx + yyn]))
2507 {
2508 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2509 {
2510 yycount = 1;
2511 yysize = yysize0;
2512 break;
2513 }
2514 yyarg[yycount++] = yytname[yyx];
2515 {
2516 YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
2517 if (! (yysize <= yysize1
2518 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2519 return 2;
2520 yysize = yysize1;
2521 }
2522 }
2523 }
2524 }
2525
2526 switch (yycount)
2527 {
2528 # define YYCASE_(N, S) \
2529 case N: \
2530 yyformat = S; \
2531 break
2532 YYCASE_(0, YY_("syntax error"));
2533 YYCASE_(1, YY_("syntax error, unexpected %s"));
2534 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2535 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2536 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2537 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2538 # undef YYCASE_
2539 }
2540
2541 {
2542 YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
2543 if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
2544 return 2;
2545 yysize = yysize1;
2546 }
2547
2548 if (*yymsg_alloc < yysize)
2549 {
2550 *yymsg_alloc = 2 * yysize;
2551 if (! (yysize <= *yymsg_alloc
2552 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2553 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2554 return 1;
2555 }
2556
2557 /* Avoid sprintf, as that infringes on the user's name space.
2558 Don't have undefined behavior even if the translation
2559 produced a string with the wrong number of "%s"s. */
2560 {
2561 char *yyp = *yymsg;
2562 int yyi = 0;
2563 while ((*yyp = *yyformat) != '\0')
2564 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2565 {
2566 yyp += yytnamerr (yyp, yyarg[yyi++]);
2567 yyformat += 2;
2568 }
2569 else
2570 {
2571 yyp++;
2572 yyformat++;
2573 }
2574 }
2575 return 0;
2576 }
2577 #endif /* YYERROR_VERBOSE */
2578
2579 /*-----------------------------------------------.
2580 | Release the memory associated to this symbol. |
2581 `-----------------------------------------------*/
2582
2583 static void
2584 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
2585 {
2586 YYUSE (yyvaluep);
2587 if (!yymsg)
2588 yymsg = "Deleting";
2589 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2590
2591 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2592 YYUSE (yytype);
2593 YY_IGNORE_MAYBE_UNINITIALIZED_END
2594 }
2595
2596
2597
2598
2599 /* The lookahead symbol. */
2600 int yychar;
2601
2602 /* The semantic value of the lookahead symbol. */
2603 YYSTYPE yylval;
2604 /* Number of syntax errors so far. */
2605 int yynerrs;
2606
2607
2608 /*----------.
2609 | yyparse. |
2610 `----------*/
2611
2612 int
2613 yyparse (void)
2614 {
2615 int yystate;
2616 /* Number of tokens to shift before error messages enabled. */
2617 int yyerrstatus;
2618
2619 /* The stacks and their tools:
2620 'yyss': related to states.
2621 'yyvs': related to semantic values.
2622
2623 Refer to the stacks through separate pointers, to allow yyoverflow
2624 to reallocate them elsewhere. */
2625
2626 /* The state stack. */
2627 yytype_int16 yyssa[YYINITDEPTH];
2628 yytype_int16 *yyss;
2629 yytype_int16 *yyssp;
2630
2631 /* The semantic value stack. */
2632 YYSTYPE yyvsa[YYINITDEPTH];
2633 YYSTYPE *yyvs;
2634 YYSTYPE *yyvsp;
2635
2636 YYSIZE_T yystacksize;
2637
2638 int yyn;
2639 int yyresult;
2640 /* Lookahead token as an internal (translated) token number. */
2641 int yytoken = 0;
2642 /* The variables used to return semantic value and location from the
2643 action routines. */
2644 YYSTYPE yyval;
2645
2646 #if YYERROR_VERBOSE
2647 /* Buffer for error messages, and its allocated size. */
2648 char yymsgbuf[128];
2649 char *yymsg = yymsgbuf;
2650 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
2651 #endif
2652
2653 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
2654
2655 /* The number of symbols on the RHS of the reduced rule.
2656 Keep to zero when no symbol should be popped. */
2657 int yylen = 0;
2658
2659 yyssp = yyss = yyssa;
2660 yyvsp = yyvs = yyvsa;
2661 yystacksize = YYINITDEPTH;
2662
2663 YYDPRINTF ((stderr, "Starting parse\n"));
2664
2665 yystate = 0;
2666 yyerrstatus = 0;
2667 yynerrs = 0;
2668 yychar = YYEMPTY; /* Cause a token to be read. */
2669 goto yysetstate;
2670
2671 /*------------------------------------------------------------.
2672 | yynewstate -- Push a new state, which is found in yystate. |
2673 `------------------------------------------------------------*/
2674 yynewstate:
2675 /* In all cases, when you get here, the value and location stacks
2676 have just been pushed. So pushing a state here evens the stacks. */
2677 yyssp++;
2678
2679 yysetstate:
2680 *yyssp = yystate;
2681
2682 if (yyss + yystacksize - 1 <= yyssp)
2683 {
2684 /* Get the current used size of the three stacks, in elements. */
2685 YYSIZE_T yysize = yyssp - yyss + 1;
2686
2687 #ifdef yyoverflow
2688 {
2689 /* Give user a chance to reallocate the stack. Use copies of
2690 these so that the &'s don't force the real ones into
2691 memory. */
2692 YYSTYPE *yyvs1 = yyvs;
2693 yytype_int16 *yyss1 = yyss;
2694
2695 /* Each stack pointer address is followed by the size of the
2696 data in use in that stack, in bytes. This used to be a
2697 conditional around just the two extra args, but that might
2698 be undefined if yyoverflow is a macro. */
2699 yyoverflow (YY_("memory exhausted"),
2700 &yyss1, yysize * sizeof (*yyssp),
2701 &yyvs1, yysize * sizeof (*yyvsp),
2702 &yystacksize);
2703
2704 yyss = yyss1;
2705 yyvs = yyvs1;
2706 }
2707 #else /* no yyoverflow */
2708 # ifndef YYSTACK_RELOCATE
2709 goto yyexhaustedlab;
2710 # else
2711 /* Extend the stack our own way. */
2712 if (YYMAXDEPTH <= yystacksize)
2713 goto yyexhaustedlab;
2714 yystacksize *= 2;
2715 if (YYMAXDEPTH < yystacksize)
2716 yystacksize = YYMAXDEPTH;
2717
2718 {
2719 yytype_int16 *yyss1 = yyss;
2720 union yyalloc *yyptr =
2721 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2722 if (! yyptr)
2723 goto yyexhaustedlab;
2724 YYSTACK_RELOCATE (yyss_alloc, yyss);
2725 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2726 # undef YYSTACK_RELOCATE
2727 if (yyss1 != yyssa)
2728 YYSTACK_FREE (yyss1);
2729 }
2730 # endif
2731 #endif /* no yyoverflow */
2732
2733 yyssp = yyss + yysize - 1;
2734 yyvsp = yyvs + yysize - 1;
2735
2736 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2737 (unsigned long int) yystacksize));
2738
2739 if (yyss + yystacksize - 1 <= yyssp)
2740 YYABORT;
2741 }
2742
2743 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2744
2745 if (yystate == YYFINAL)
2746 YYACCEPT;
2747
2748 goto yybackup;
2749
2750 /*-----------.
2751 | yybackup. |
2752 `-----------*/
2753 yybackup:
2754
2755 /* Do appropriate processing given the current state. Read a
2756 lookahead token if we need one and don't already have one. */
2757
2758 /* First try to decide what to do without reference to lookahead token. */
2759 yyn = yypact[yystate];
2760 if (yypact_value_is_default (yyn))
2761 goto yydefault;
2762
2763 /* Not known => get a lookahead token if don't already have one. */
2764
2765 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
2766 if (yychar == YYEMPTY)
2767 {
2768 YYDPRINTF ((stderr, "Reading a token: "));
2769 yychar = yylex ();
2770 }
2771
2772 if (yychar <= YYEOF)
2773 {
2774 yychar = yytoken = YYEOF;
2775 YYDPRINTF ((stderr, "Now at end of input.\n"));
2776 }
2777 else
2778 {
2779 yytoken = YYTRANSLATE (yychar);
2780 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2781 }
2782
2783 /* If the proper action on seeing token YYTOKEN is to reduce or to
2784 detect an error, take that action. */
2785 yyn += yytoken;
2786 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2787 goto yydefault;
2788 yyn = yytable[yyn];
2789 if (yyn <= 0)
2790 {
2791 if (yytable_value_is_error (yyn))
2792 goto yyerrlab;
2793 yyn = -yyn;
2794 goto yyreduce;
2795 }
2796
2797 /* Count tokens shifted since error; after three, turn off error
2798 status. */
2799 if (yyerrstatus)
2800 yyerrstatus--;
2801
2802 /* Shift the lookahead token. */
2803 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2804
2805 /* Discard the shifted token. */
2806 yychar = YYEMPTY;
2807
2808 yystate = yyn;
2809 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2810 *++yyvsp = yylval;
2811 YY_IGNORE_MAYBE_UNINITIALIZED_END
2812
2813 goto yynewstate;
2814
2815
2816 /*-----------------------------------------------------------.
2817 | yydefault -- do the default action for the current state. |
2818 `-----------------------------------------------------------*/
2819 yydefault:
2820 yyn = yydefact[yystate];
2821 if (yyn == 0)
2822 goto yyerrlab;
2823 goto yyreduce;
2824
2825
2826 /*-----------------------------.
2827 | yyreduce -- Do a reduction. |
2828 `-----------------------------*/
2829 yyreduce:
2830 /* yyn is the number of a rule to reduce with. */
2831 yylen = yyr2[yyn];
2832
2833 /* If YYLEN is nonzero, implement the default value of the action:
2834 '$$ = $1'.
2835
2836 Otherwise, the following line sets YYVAL to garbage.
2837 This behavior is undocumented and Bison
2838 users should not rely upon it. Assigning to YYVAL
2839 unconditionally makes the parser a bit smaller, and it avoids a
2840 GCC warning that YYVAL may be used uninitialized. */
2841 yyval = yyvsp[1-yylen];
2842
2843
2844 YY_REDUCE_PRINT (yyn);
2845 switch (yyn)
2846 {
2847 case 28:
2848 #line 401 "conf_parser.y" /* yacc.c:1646 */
2849 { (yyval.number) = 0; }
2850 #line 2851 "conf_parser.c" /* yacc.c:1646 */
2851 break;
2852
2853 case 30:
2854 #line 402 "conf_parser.y" /* yacc.c:1646 */
2855 { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2856 #line 2857 "conf_parser.c" /* yacc.c:1646 */
2857 break;
2858
2859 case 31:
2860 #line 403 "conf_parser.y" /* yacc.c:1646 */
2861 { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2862 #line 2863 "conf_parser.c" /* yacc.c:1646 */
2863 break;
2864
2865 case 32:
2866 #line 404 "conf_parser.y" /* yacc.c:1646 */
2867 { (yyval.number) = (yyvsp[-2].number) * 60 + (yyvsp[0].number); }
2868 #line 2869 "conf_parser.c" /* yacc.c:1646 */
2869 break;
2870
2871 case 33:
2872 #line 405 "conf_parser.y" /* yacc.c:1646 */
2873 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 + (yyvsp[0].number); }
2874 #line 2875 "conf_parser.c" /* yacc.c:1646 */
2875 break;
2876
2877 case 34:
2878 #line 406 "conf_parser.y" /* yacc.c:1646 */
2879 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 + (yyvsp[0].number); }
2880 #line 2881 "conf_parser.c" /* yacc.c:1646 */
2881 break;
2882
2883 case 35:
2884 #line 407 "conf_parser.y" /* yacc.c:1646 */
2885 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 + (yyvsp[0].number); }
2886 #line 2887 "conf_parser.c" /* yacc.c:1646 */
2887 break;
2888
2889 case 36:
2890 #line 408 "conf_parser.y" /* yacc.c:1646 */
2891 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 7 * 4 + (yyvsp[0].number); }
2892 #line 2893 "conf_parser.c" /* yacc.c:1646 */
2893 break;
2894
2895 case 37:
2896 #line 409 "conf_parser.y" /* yacc.c:1646 */
2897 { (yyval.number) = (yyvsp[-2].number) * 60 * 60 * 24 * 365 + (yyvsp[0].number); }
2898 #line 2899 "conf_parser.c" /* yacc.c:1646 */
2899 break;
2900
2901 case 38:
2902 #line 412 "conf_parser.y" /* yacc.c:1646 */
2903 { (yyval.number) = 0; }
2904 #line 2905 "conf_parser.c" /* yacc.c:1646 */
2905 break;
2906
2907 case 40:
2908 #line 413 "conf_parser.y" /* yacc.c:1646 */
2909 { (yyval.number) = (yyvsp[-1].number) + (yyvsp[0].number); }
2910 #line 2911 "conf_parser.c" /* yacc.c:1646 */
2911 break;
2912
2913 case 41:
2914 #line 414 "conf_parser.y" /* yacc.c:1646 */
2915 { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
2916 #line 2917 "conf_parser.c" /* yacc.c:1646 */
2917 break;
2918
2919 case 42:
2920 #line 415 "conf_parser.y" /* yacc.c:1646 */
2921 { (yyval.number) = (yyvsp[-2].number) * 1024 + (yyvsp[0].number); }
2922 #line 2923 "conf_parser.c" /* yacc.c:1646 */
2923 break;
2924
2925 case 43:
2926 #line 416 "conf_parser.y" /* yacc.c:1646 */
2927 { (yyval.number) = (yyvsp[-2].number) * 1024 * 1024 + (yyvsp[0].number); }
2928 #line 2929 "conf_parser.c" /* yacc.c:1646 */
2929 break;
2930
2931 case 50:
2932 #line 429 "conf_parser.y" /* yacc.c:1646 */
2933 {
2934 if (conf_parser_ctx.pass == 2)
2935 add_conf_module(libio_basename(yylval.string));
2936 }
2937 #line 2938 "conf_parser.c" /* yacc.c:1646 */
2938 break;
2939
2940 case 51:
2941 #line 435 "conf_parser.y" /* yacc.c:1646 */
2942 {
2943 if (conf_parser_ctx.pass == 2)
2944 mod_add_path(yylval.string);
2945 }
2946 #line 2947 "conf_parser.c" /* yacc.c:1646 */
2947 break;
2948
2949 case 73:
2950 #line 468 "conf_parser.y" /* yacc.c:1646 */
2951 {
2952 if (conf_parser_ctx.pass == 2)
2953 {
2954 xfree(ConfigServerInfo.ssl_certificate_file);
2955 ConfigServerInfo.ssl_certificate_file = xstrdup(yylval.string);
2956 }
2957 }
2958 #line 2959 "conf_parser.c" /* yacc.c:1646 */
2959 break;
2960
2961 case 74:
2962 #line 477 "conf_parser.y" /* yacc.c:1646 */
2963 {
2964 if (conf_parser_ctx.pass == 2)
2965 {
2966 xfree(ConfigServerInfo.rsa_private_key_file);
2967 ConfigServerInfo.rsa_private_key_file = xstrdup(yylval.string);
2968 }
2969 }
2970 #line 2971 "conf_parser.c" /* yacc.c:1646 */
2971 break;
2972
2973 case 75:
2974 #line 486 "conf_parser.y" /* yacc.c:1646 */
2975 {
2976 if (conf_parser_ctx.pass == 2)
2977 {
2978 xfree(ConfigServerInfo.ssl_dh_param_file);
2979 ConfigServerInfo.ssl_dh_param_file = xstrdup(yylval.string);
2980 }
2981 }
2982 #line 2983 "conf_parser.c" /* yacc.c:1646 */
2983 break;
2984
2985 case 76:
2986 #line 495 "conf_parser.y" /* yacc.c:1646 */
2987 {
2988 if (conf_parser_ctx.pass == 2)
2989 {
2990 xfree(ConfigServerInfo.ssl_cipher_list);
2991 ConfigServerInfo.ssl_cipher_list = xstrdup(yylval.string);
2992 }
2993 }
2994 #line 2995 "conf_parser.c" /* yacc.c:1646 */
2995 break;
2996
2997 case 77:
2998 #line 504 "conf_parser.y" /* yacc.c:1646 */
2999 {
3000 if (conf_parser_ctx.pass == 2)
3001 {
3002 xfree(ConfigServerInfo.ssl_message_digest_algorithm);
3003 ConfigServerInfo.ssl_message_digest_algorithm = xstrdup(yylval.string);
3004 }
3005 }
3006 #line 3007 "conf_parser.c" /* yacc.c:1646 */
3007 break;
3008
3009 case 78:
3010 #line 513 "conf_parser.y" /* yacc.c:1646 */
3011 {
3012 if (conf_parser_ctx.pass == 2)
3013 {
3014 xfree(ConfigServerInfo.ssl_dh_elliptic_curve);
3015 ConfigServerInfo.ssl_dh_elliptic_curve = xstrdup(yylval.string);
3016 }
3017 }
3018 #line 3019 "conf_parser.c" /* yacc.c:1646 */
3019 break;
3020
3021 case 79:
3022 #line 522 "conf_parser.y" /* yacc.c:1646 */
3023 {
3024 /* This isn't rehashable */
3025 if (conf_parser_ctx.pass == 2 && !ConfigServerInfo.name)
3026 {
3027 if (valid_servname(yylval.string))
3028 ConfigServerInfo.name = xstrdup(yylval.string);
3029 else
3030 {
3031 conf_error_report("Ignoring serverinfo::name -- invalid name. Aborting.");
3032 exit(EXIT_FAILURE);
3033 }
3034 }
3035 }
3036 #line 3037 "conf_parser.c" /* yacc.c:1646 */
3037 break;
3038
3039 case 80:
3040 #line 537 "conf_parser.y" /* yacc.c:1646 */
3041 {
3042 /* This isn't rehashable */
3043 if (conf_parser_ctx.pass == 2 && !ConfigServerInfo.sid)
3044 {
3045 if (valid_sid(yylval.string))
3046 ConfigServerInfo.sid = xstrdup(yylval.string);
3047 else
3048 {
3049 conf_error_report("Ignoring serverinfo::sid -- invalid SID. Aborting.");
3050 exit(EXIT_FAILURE);
3051 }
3052 }
3053 }
3054 #line 3055 "conf_parser.c" /* yacc.c:1646 */
3055 break;
3056
3057 case 81:
3058 #line 552 "conf_parser.y" /* yacc.c:1646 */
3059 {
3060 if (conf_parser_ctx.pass == 2)
3061 {
3062 xfree(ConfigServerInfo.description);
3063 ConfigServerInfo.description = xstrdup(yylval.string);
3064 strlcpy(me.info, ConfigServerInfo.description, sizeof(me.info));
3065 }
3066 }
3067 #line 3068 "conf_parser.c" /* yacc.c:1646 */
3068 break;
3069
3070 case 82:
3071 #line 562 "conf_parser.y" /* yacc.c:1646 */
3072 {
3073 if (conf_parser_ctx.pass == 2)
3074 {
3075 char *p;
3076
3077 if ((p = strchr(yylval.string, ' ')))
3078 *p = '\0';
3079
3080 xfree(ConfigServerInfo.network_name);
3081 ConfigServerInfo.network_name = xstrdup(yylval.string);
3082 }
3083 }
3084 #line 3085 "conf_parser.c" /* yacc.c:1646 */
3085 break;
3086
3087 case 83:
3088 #line 576 "conf_parser.y" /* yacc.c:1646 */
3089 {
3090 if (conf_parser_ctx.pass != 2)
3091 break;
3092
3093 xfree(ConfigServerInfo.network_desc);
3094 ConfigServerInfo.network_desc = xstrdup(yylval.string);
3095 }
3096 #line 3097 "conf_parser.c" /* yacc.c:1646 */
3097 break;
3098
3099 case 84:
3100 #line 585 "conf_parser.y" /* yacc.c:1646 */
3101 {
3102 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3103 {
3104 struct addrinfo hints, *res;
3105
3106 memset(&hints, 0, sizeof(hints));
3107
3108 hints.ai_family = AF_UNSPEC;
3109 hints.ai_socktype = SOCK_STREAM;
3110 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3111
3112 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3113 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", yylval.string);
3114 else
3115 {
3116 assert(res);
3117
3118 memcpy(&ConfigServerInfo.ip, res->ai_addr, res->ai_addrlen);
3119 ConfigServerInfo.ip.ss.ss_family = res->ai_family;
3120 ConfigServerInfo.ip.ss_len = res->ai_addrlen;
3121 freeaddrinfo(res);
3122
3123 ConfigServerInfo.specific_ipv4_vhost = 1;
3124 }
3125 }
3126 }
3127 #line 3128 "conf_parser.c" /* yacc.c:1646 */
3128 break;
3129
3130 case 85:
3131 #line 613 "conf_parser.y" /* yacc.c:1646 */
3132 {
3133 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3134 {
3135 struct addrinfo hints, *res;
3136
3137 memset(&hints, 0, sizeof(hints));
3138
3139 hints.ai_family = AF_UNSPEC;
3140 hints.ai_socktype = SOCK_STREAM;
3141 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3142
3143 if (getaddrinfo(yylval.string, NULL, &hints, &res))
3144 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost6(%s)", yylval.string);
3145 else
3146 {
3147 assert(res);
3148
3149 memcpy(&ConfigServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3150 ConfigServerInfo.ip6.ss.ss_family = res->ai_family;
3151 ConfigServerInfo.ip6.ss_len = res->ai_addrlen;
3152 freeaddrinfo(res);
3153
3154 ConfigServerInfo.specific_ipv6_vhost = 1;
3155 }
3156 }
3157 }
3158 #line 3159 "conf_parser.c" /* yacc.c:1646 */
3159 break;
3160
3161 case 86:
3162 #line 641 "conf_parser.y" /* yacc.c:1646 */
3163 {
3164 if (conf_parser_ctx.pass != 2)
3165 break;
3166
3167 if ((yyvsp[-1].number) < MAXCLIENTS_MIN)
3168 {
3169 char buf[IRCD_BUFSIZE] = "";
3170
3171 snprintf(buf, sizeof(buf), "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3172 conf_error_report(buf);
3173 ConfigServerInfo.default_max_clients = MAXCLIENTS_MIN;
3174 }
3175 else if ((yyvsp[-1].number) > MAXCLIENTS_MAX)
3176 {
3177 char buf[IRCD_BUFSIZE] = "";
3178
3179 snprintf(buf, sizeof(buf), "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3180 conf_error_report(buf);
3181 ConfigServerInfo.default_max_clients = MAXCLIENTS_MAX;
3182 }
3183 else
3184 ConfigServerInfo.default_max_clients = (yyvsp[-1].number);
3185 }
3186 #line 3187 "conf_parser.c" /* yacc.c:1646 */
3187 break;
3188
3189 case 87:
3190 #line 666 "conf_parser.y" /* yacc.c:1646 */
3191 {
3192 if (conf_parser_ctx.pass != 2)
3193 break;
3194
3195 if ((yyvsp[-1].number) < 9)
3196 {
3197 conf_error_report("max_nick_length too low, setting to 9");
3198 ConfigServerInfo.max_nick_length = 9;
3199 }
3200 else if ((yyvsp[-1].number) > NICKLEN)
3201 {
3202 char buf[IRCD_BUFSIZE] = "";
3203
3204 snprintf(buf, sizeof(buf), "max_nick_length too high, setting to %d", NICKLEN);
3205 conf_error_report(buf);
3206 ConfigServerInfo.max_nick_length = NICKLEN;
3207 }
3208 else
3209 ConfigServerInfo.max_nick_length = (yyvsp[-1].number);
3210 }
3211 #line 3212 "conf_parser.c" /* yacc.c:1646 */
3212 break;
3213
3214 case 88:
3215 #line 688 "conf_parser.y" /* yacc.c:1646 */
3216 {
3217 if (conf_parser_ctx.pass != 2)
3218 break;
3219
3220 if ((yyvsp[-1].number) < 80)
3221 {
3222 conf_error_report("max_topic_length too low, setting to 80");
3223 ConfigServerInfo.max_topic_length = 80;
3224 }
3225 else if ((yyvsp[-1].number) > TOPICLEN)
3226 {
3227 char buf[IRCD_BUFSIZE] = "";
3228
3229 snprintf(buf, sizeof(buf), "max_topic_length too high, setting to %d", TOPICLEN);
3230 conf_error_report(buf);
3231 ConfigServerInfo.max_topic_length = TOPICLEN;
3232 }
3233 else
3234 ConfigServerInfo.max_topic_length = (yyvsp[-1].number);
3235 }
3236 #line 3237 "conf_parser.c" /* yacc.c:1646 */
3237 break;
3238
3239 case 89:
3240 #line 710 "conf_parser.y" /* yacc.c:1646 */
3241 {
3242 if (conf_parser_ctx.pass == 2)
3243 ConfigServerInfo.hub = yylval.number;
3244 }
3245 #line 3246 "conf_parser.c" /* yacc.c:1646 */
3246 break;
3247
3248 case 97:
3249 #line 728 "conf_parser.y" /* yacc.c:1646 */
3250 {
3251 if (conf_parser_ctx.pass != 2)
3252 break;
3253
3254 xfree(ConfigAdminInfo.name);
3255 ConfigAdminInfo.name = xstrdup(yylval.string);
3256 }
3257 #line 3258 "conf_parser.c" /* yacc.c:1646 */
3258 break;
3259
3260 case 98:
3261 #line 737 "conf_parser.y" /* yacc.c:1646 */
3262 {
3263 if (conf_parser_ctx.pass != 2)
3264 break;
3265
3266 xfree(ConfigAdminInfo.email);
3267 ConfigAdminInfo.email = xstrdup(yylval.string);
3268 }
3269 #line 3270 "conf_parser.c" /* yacc.c:1646 */
3270 break;
3271
3272 case 99:
3273 #line 746 "conf_parser.y" /* yacc.c:1646 */
3274 {
3275 if (conf_parser_ctx.pass != 2)
3276 break;
3277
3278 xfree(ConfigAdminInfo.description);
3279 ConfigAdminInfo.description = xstrdup(yylval.string);
3280 }
3281 #line 3282 "conf_parser.c" /* yacc.c:1646 */
3282 break;
3283
3284 case 100:
3285 #line 759 "conf_parser.y" /* yacc.c:1646 */
3286 {
3287 if (conf_parser_ctx.pass == 2)
3288 reset_block_state();
3289 }
3290 #line 3291 "conf_parser.c" /* yacc.c:1646 */
3291 break;
3292
3293 case 101:
3294 #line 763 "conf_parser.y" /* yacc.c:1646 */
3295 {
3296 dlink_node *node = NULL;
3297
3298 if (conf_parser_ctx.pass != 2)
3299 break;
3300
3301 if (!block_state.file.buf[0])
3302 break;
3303
3304 DLINK_FOREACH(node, block_state.mask.list.head)
3305 motd_add(node->data, block_state.file.buf);
3306 }
3307 #line 3308 "conf_parser.c" /* yacc.c:1646 */
3308 break;
3309
3310 case 107:
3311 #line 780 "conf_parser.y" /* yacc.c:1646 */
3312 {
3313 if (conf_parser_ctx.pass == 2)
3314 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3315 }
3316 #line 3317 "conf_parser.c" /* yacc.c:1646 */
3317 break;
3318
3319 case 108:
3320 #line 786 "conf_parser.y" /* yacc.c:1646 */
3321 {
3322 if (conf_parser_ctx.pass == 2)
3323 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3324 }
3325 #line 3326 "conf_parser.c" /* yacc.c:1646 */
3326 break;
3327
3328 case 109:
3329 #line 796 "conf_parser.y" /* yacc.c:1646 */
3330 {
3331 if (conf_parser_ctx.pass == 2)
3332 reset_block_state();
3333 }
3334 #line 3335 "conf_parser.c" /* yacc.c:1646 */
3335 break;
3336
3337 case 110:
3338 #line 800 "conf_parser.y" /* yacc.c:1646 */
3339 {
3340 if (conf_parser_ctx.pass != 2)
3341 break;
3342
3343 if (!block_state.command.buf[0] ||
3344 !block_state.name.buf[0] ||
3345 !block_state.nick.buf[0] ||
3346 !block_state.host.buf[0])
3347 break;
3348
3349 pseudo_register(block_state.name.buf, block_state.nick.buf, block_state.host.buf,
3350 block_state.prepend.buf, block_state.command.buf);
3351 }
3352 #line 3353 "conf_parser.c" /* yacc.c:1646 */
3353 break;
3354
3355 case 118:
3356 #line 818 "conf_parser.y" /* yacc.c:1646 */
3357 {
3358 if (conf_parser_ctx.pass == 2)
3359 strlcpy(block_state.command.buf, yylval.string, sizeof(block_state.command.buf));
3360 }
3361 #line 3362 "conf_parser.c" /* yacc.c:1646 */
3362 break;
3363
3364 case 119:
3365 #line 824 "conf_parser.y" /* yacc.c:1646 */
3366 {
3367 if (conf_parser_ctx.pass == 2)
3368 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3369 }
3370 #line 3371 "conf_parser.c" /* yacc.c:1646 */
3371 break;
3372
3373 case 120:
3374 #line 830 "conf_parser.y" /* yacc.c:1646 */
3375 {
3376 if (conf_parser_ctx.pass == 2)
3377 strlcpy(block_state.prepend.buf, yylval.string, sizeof(block_state.prepend.buf));
3378 }
3379 #line 3380 "conf_parser.c" /* yacc.c:1646 */
3380 break;
3381
3382 case 121:
3383 #line 836 "conf_parser.y" /* yacc.c:1646 */
3384 {
3385 if (conf_parser_ctx.pass == 2)
3386 {
3387 struct split_nuh_item nuh;
3388
3389 nuh.nuhmask = yylval.string;
3390 nuh.nickptr = NULL;
3391 nuh.userptr = block_state.nick.buf;
3392 nuh.hostptr = block_state.host.buf;
3393 nuh.nicksize = 0;
3394 nuh.usersize = sizeof(block_state.nick.buf);
3395 nuh.hostsize = sizeof(block_state.host.buf);
3396
3397 split_nuh(&nuh);
3398 }
3399 }
3400 #line 3401 "conf_parser.c" /* yacc.c:1646 */
3401 break;
3402
3403 case 128:
3404 #line 864 "conf_parser.y" /* yacc.c:1646 */
3405 {
3406 if (conf_parser_ctx.pass == 2)
3407 ConfigLog.use_logging = yylval.number;
3408 }
3409 #line 3410 "conf_parser.c" /* yacc.c:1646 */
3410 break;
3411
3412 case 129:
3413 #line 870 "conf_parser.y" /* yacc.c:1646 */
3414 {
3415 if (conf_parser_ctx.pass == 2)
3416 reset_block_state();
3417 }
3418 #line 3419 "conf_parser.c" /* yacc.c:1646 */
3419 break;
3420
3421 case 130:
3422 #line 874 "conf_parser.y" /* yacc.c:1646 */
3423 {
3424 if (conf_parser_ctx.pass != 2)
3425 break;
3426
3427 if (block_state.type.value && block_state.file.buf[0])
3428 log_set_file(block_state.type.value, block_state.size.value,
3429 block_state.file.buf);
3430 }
3431 #line 3432 "conf_parser.c" /* yacc.c:1646 */
3432 break;
3433
3434 case 137:
3435 #line 890 "conf_parser.y" /* yacc.c:1646 */
3436 {
3437 if (conf_parser_ctx.pass != 2)
3438 break;
3439
3440 strlcpy(block_state.file.buf, yylval.string, sizeof(block_state.file.buf));
3441 }
3442 #line 3443 "conf_parser.c" /* yacc.c:1646 */
3443 break;
3444
3445 case 138:
3446 #line 898 "conf_parser.y" /* yacc.c:1646 */
3447 {
3448 block_state.size.value = (yyvsp[-1].number);
3449 }
3450 #line 3451 "conf_parser.c" /* yacc.c:1646 */
3451 break;
3452
3453 case 139:
3454 #line 901 "conf_parser.y" /* yacc.c:1646 */
3455 {
3456 block_state.size.value = 0;
3457 }
3458 #line 3459 "conf_parser.c" /* yacc.c:1646 */
3459 break;
3460
3461 case 140:
3462 #line 906 "conf_parser.y" /* yacc.c:1646 */
3463 {
3464 if (conf_parser_ctx.pass == 2)
3465 block_state.type.value = 0;
3466 }
3467 #line 3468 "conf_parser.c" /* yacc.c:1646 */
3468 break;
3469
3470 case 144:
3471 #line 913 "conf_parser.y" /* yacc.c:1646 */
3472 {
3473 if (conf_parser_ctx.pass == 2)
3474 block_state.type.value = LOG_TYPE_USER;
3475 }
3476 #line 3477 "conf_parser.c" /* yacc.c:1646 */
3477 break;
3478
3479 case 145:
3480 #line 917 "conf_parser.y" /* yacc.c:1646 */
3481 {
3482 if (conf_parser_ctx.pass == 2)
3483 block_state.type.value = LOG_TYPE_OPER;
3484 }
3485 #line 3486 "conf_parser.c" /* yacc.c:1646 */
3486 break;
3487
3488 case 146:
3489 #line 921 "conf_parser.y" /* yacc.c:1646 */
3490 {
3491 if (conf_parser_ctx.pass == 2)
3492 block_state.type.value = LOG_TYPE_XLINE;
3493 }
3494 #line 3495 "conf_parser.c" /* yacc.c:1646 */
3495 break;
3496
3497 case 147:
3498 #line 925 "conf_parser.y" /* yacc.c:1646 */
3499 {
3500 if (conf_parser_ctx.pass == 2)
3501 block_state.type.value = LOG_TYPE_RESV;
3502 }
3503 #line 3504 "conf_parser.c" /* yacc.c:1646 */
3504 break;
3505
3506 case 148:
3507 #line 929 "conf_parser.y" /* yacc.c:1646 */
3508 {
3509 if (conf_parser_ctx.pass == 2)
3510 block_state.type.value = LOG_TYPE_DLINE;
3511 }
3512 #line 3513 "conf_parser.c" /* yacc.c:1646 */
3513 break;
3514
3515 case 149:
3516 #line 933 "conf_parser.y" /* yacc.c:1646 */
3517 {
3518 if (conf_parser_ctx.pass == 2)
3519 block_state.type.value = LOG_TYPE_KLINE;
3520 }
3521 #line 3522 "conf_parser.c" /* yacc.c:1646 */
3522 break;
3523
3524 case 150:
3525 #line 937 "conf_parser.y" /* yacc.c:1646 */
3526 {
3527 if (conf_parser_ctx.pass == 2)
3528 block_state.type.value = LOG_TYPE_KILL;
3529 }
3530 #line 3531 "conf_parser.c" /* yacc.c:1646 */
3531 break;
3532
3533 case 151:
3534 #line 941 "conf_parser.y" /* yacc.c:1646 */
3535 {
3536 if (conf_parser_ctx.pass == 2)
3537 block_state.type.value = LOG_TYPE_DEBUG;
3538 }
3539 #line 3540 "conf_parser.c" /* yacc.c:1646 */
3540 break;
3541
3542 case 152:
3543 #line 951 "conf_parser.y" /* yacc.c:1646 */
3544 {
3545 if (conf_parser_ctx.pass != 2)
3546 break;
3547
3548 reset_block_state();
3549 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3550 }
3551 #line 3552 "conf_parser.c" /* yacc.c:1646 */
3552 break;
3553
3554 case 153:
3555 #line 958 "conf_parser.y" /* yacc.c:1646 */
3556 {
3557 dlink_node *node = NULL;
3558
3559 if (conf_parser_ctx.pass != 2)
3560 break;
3561
3562 if (!block_state.name.buf[0])
3563 break;
3564
3565 if (!block_state.rpass.buf[0])
3566 break;
3567
3568 DLINK_FOREACH(node, block_state.mask.list.head)
3569 {
3570 struct MaskItem *conf = NULL;
3571 struct split_nuh_item nuh;
3572
3573 nuh.nuhmask = node->data;
3574 nuh.nickptr = NULL;
3575 nuh.userptr = block_state.user.buf;
3576 nuh.hostptr = block_state.host.buf;
3577 nuh.nicksize = 0;
3578 nuh.usersize = sizeof(block_state.user.buf);
3579 nuh.hostsize = sizeof(block_state.host.buf);
3580 split_nuh(&nuh);
3581
3582 conf = conf_make(CONF_OPER);
3583 conf->name = xstrdup(block_state.name.buf);
3584 conf->user = xstrdup(block_state.user.buf);
3585 conf->host = xstrdup(block_state.host.buf);
3586
3587 if (block_state.cert.buf[0])
3588 conf->certfp = xstrdup(block_state.cert.buf);
3589
3590 if (block_state.rpass.buf[0])
3591 conf->passwd = xstrdup(block_state.rpass.buf);
3592
3593 if (block_state.whois.buf[0])
3594 conf->whois = xstrdup(block_state.whois.buf);
3595
3596 conf->flags = block_state.flags.value;
3597 conf->modes = block_state.modes.value;
3598 conf->port = block_state.port.value;
3599 conf->htype = parse_netmask(conf->host, &conf->addr, &conf->bits);
3600
3601 conf_add_class_to_conf(conf, block_state.class.buf);
3602 }
3603 }
3604 #line 3605 "conf_parser.c" /* yacc.c:1646 */
3605 break;
3606
3607 case 167:
3608 #line 1021 "conf_parser.y" /* yacc.c:1646 */
3609 {
3610 if (conf_parser_ctx.pass == 2)
3611 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
3612 }
3613 #line 3614 "conf_parser.c" /* yacc.c:1646 */
3614 break;
3615
3616 case 168:
3617 #line 1027 "conf_parser.y" /* yacc.c:1646 */
3618 {
3619 if (conf_parser_ctx.pass == 2)
3620 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
3621 }
3622 #line 3623 "conf_parser.c" /* yacc.c:1646 */
3623 break;
3624
3625 case 169:
3626 #line 1033 "conf_parser.y" /* yacc.c:1646 */
3627 {
3628 if (conf_parser_ctx.pass == 2)
3629 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
3630 }
3631 #line 3632 "conf_parser.c" /* yacc.c:1646 */
3632 break;
3633
3634 case 170:
3635 #line 1039 "conf_parser.y" /* yacc.c:1646 */
3636 {
3637 if (conf_parser_ctx.pass == 2)
3638 strlcpy(block_state.whois.buf, yylval.string, sizeof(block_state.whois.buf));
3639 }
3640 #line 3641 "conf_parser.c" /* yacc.c:1646 */
3641 break;
3642
3643 case 171:
3644 #line 1045 "conf_parser.y" /* yacc.c:1646 */
3645 {
3646 if (conf_parser_ctx.pass != 2)
3647 break;
3648
3649 if (yylval.number)
3650 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
3651 else
3652 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
3653 }
3654 #line 3655 "conf_parser.c" /* yacc.c:1646 */
3655 break;
3656
3657 case 172:
3658 #line 1056 "conf_parser.y" /* yacc.c:1646 */
3659 {
3660 if (conf_parser_ctx.pass == 2)
3661 strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
3662 }
3663 #line 3664 "conf_parser.c" /* yacc.c:1646 */
3664 break;
3665
3666 case 173:
3667 #line 1062 "conf_parser.y" /* yacc.c:1646 */
3668 {
3669 if (conf_parser_ctx.pass != 2)
3670 break;
3671
3672 if (yylval.number)
3673 block_state.flags.value |= CONF_FLAGS_SSL;
3674 else
3675 block_state.flags.value &= ~CONF_FLAGS_SSL;
3676 }
3677 #line 3678 "conf_parser.c" /* yacc.c:1646 */
3678 break;
3679
3680 case 174:
3681 #line 1073 "conf_parser.y" /* yacc.c:1646 */
3682 {
3683 if (conf_parser_ctx.pass == 2)
3684 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
3685 }
3686 #line 3687 "conf_parser.c" /* yacc.c:1646 */
3687 break;
3688
3689 case 175:
3690 #line 1079 "conf_parser.y" /* yacc.c:1646 */
3691 {
3692 if (conf_parser_ctx.pass == 2)
3693 block_state.modes.value = 0;
3694 }
3695 #line 3696 "conf_parser.c" /* yacc.c:1646 */
3696 break;
3697
3698 case 179:
3699 #line 1086 "conf_parser.y" /* yacc.c:1646 */
3700 {
3701 if (conf_parser_ctx.pass == 2)
3702 block_state.modes.value |= UMODE_BOTS;
3703 }
3704 #line 3705 "conf_parser.c" /* yacc.c:1646 */
3705 break;
3706
3707 case 180:
3708 #line 1090 "conf_parser.y" /* yacc.c:1646 */
3709 {
3710 if (conf_parser_ctx.pass == 2)
3711 block_state.modes.value |= UMODE_CCONN;
3712 }
3713 #line 3714 "conf_parser.c" /* yacc.c:1646 */
3714 break;
3715
3716 case 181:
3717 #line 1094 "conf_parser.y" /* yacc.c:1646 */
3718 {
3719 if (conf_parser_ctx.pass == 2)
3720 block_state.modes.value |= UMODE_DEAF;
3721 }
3722 #line 3723 "conf_parser.c" /* yacc.c:1646 */
3723 break;
3724
3725 case 182:
3726 #line 1098 "conf_parser.y" /* yacc.c:1646 */
3727 {
3728 if (conf_parser_ctx.pass == 2)
3729 block_state.modes.value |= UMODE_DEBUG;
3730 }
3731 #line 3732 "conf_parser.c" /* yacc.c:1646 */
3732 break;
3733
3734 case 183:
3735 #line 1102 "conf_parser.y" /* yacc.c:1646 */
3736 {
3737 if (conf_parser_ctx.pass == 2)
3738 block_state.modes.value |= UMODE_FULL;
3739 }
3740 #line 3741 "conf_parser.c" /* yacc.c:1646 */
3741 break;
3742
3743 case 184:
3744 #line 1106 "conf_parser.y" /* yacc.c:1646 */
3745 {
3746 if (conf_parser_ctx.pass == 2)
3747 block_state.modes.value |= UMODE_HIDDEN;
3748 }
3749 #line 3750 "conf_parser.c" /* yacc.c:1646 */
3750 break;
3751
3752 case 185:
3753 #line 1110 "conf_parser.y" /* yacc.c:1646 */
3754 {
3755 if (conf_parser_ctx.pass == 2)
3756 block_state.modes.value |= UMODE_HIDECHANS;
3757 }
3758 #line 3759 "conf_parser.c" /* yacc.c:1646 */
3759 break;
3760
3761 case 186:
3762 #line 1114 "conf_parser.y" /* yacc.c:1646 */
3763 {
3764 if (conf_parser_ctx.pass == 2)
3765 block_state.modes.value |= UMODE_HIDEIDLE;
3766 }
3767 #line 3768 "conf_parser.c" /* yacc.c:1646 */
3768 break;
3769
3770 case 187:
3771 #line 1118 "conf_parser.y" /* yacc.c:1646 */
3772 {
3773 if (conf_parser_ctx.pass == 2)
3774 block_state.modes.value |= UMODE_SKILL;
3775 }
3776 #line 3777 "conf_parser.c" /* yacc.c:1646 */
3777 break;
3778
3779 case 188:
3780 #line 1122 "conf_parser.y" /* yacc.c:1646 */
3781 {
3782 if (conf_parser_ctx.pass == 2)
3783 block_state.modes.value |= UMODE_NCHANGE;
3784 }
3785 #line 3786 "conf_parser.c" /* yacc.c:1646 */
3786 break;
3787
3788 case 189:
3789 #line 1126 "conf_parser.y" /* yacc.c:1646 */
3790 {
3791 if (conf_parser_ctx.pass == 2)
3792 block_state.modes.value |= UMODE_REJ;
3793 }
3794 #line 3795 "conf_parser.c" /* yacc.c:1646 */
3795 break;
3796
3797 case 190:
3798 #line 1130 "conf_parser.y" /* yacc.c:1646 */
3799 {
3800 if (conf_parser_ctx.pass == 2)
3801 block_state.modes.value |= UMODE_UNAUTH;
3802 }
3803 #line 3804 "conf_parser.c" /* yacc.c:1646 */
3804 break;
3805
3806 case 191:
3807 #line 1134 "conf_parser.y" /* yacc.c:1646 */
3808 {
3809 if (conf_parser_ctx.pass == 2)
3810 block_state.modes.value |= UMODE_SPY;
3811 }
3812 #line 3813 "conf_parser.c" /* yacc.c:1646 */
3813 break;
3814
3815 case 192:
3816 #line 1138 "conf_parser.y" /* yacc.c:1646 */
3817 {
3818 if (conf_parser_ctx.pass == 2)
3819 block_state.modes.value |= UMODE_EXTERNAL;
3820 }
3821 #line 3822 "conf_parser.c" /* yacc.c:1646 */
3822 break;
3823
3824 case 193:
3825 #line 1142 "conf_parser.y" /* yacc.c:1646 */
3826 {
3827 if (conf_parser_ctx.pass == 2)
3828 block_state.modes.value |= UMODE_SERVNOTICE;
3829 }
3830 #line 3831 "conf_parser.c" /* yacc.c:1646 */
3831 break;
3832
3833 case 194:
3834 #line 1146 "conf_parser.y" /* yacc.c:1646 */
3835 {
3836 if (conf_parser_ctx.pass == 2)
3837 block_state.modes.value |= UMODE_INVISIBLE;
3838 }
3839 #line 3840 "conf_parser.c" /* yacc.c:1646 */
3840 break;
3841
3842 case 195:
3843 #line 1150 "conf_parser.y" /* yacc.c:1646 */
3844 {
3845 if (conf_parser_ctx.pass == 2)
3846 block_state.modes.value |= UMODE_WALLOP;
3847 }
3848 #line 3849 "conf_parser.c" /* yacc.c:1646 */
3849 break;
3850
3851 case 196:
3852 #line 1154 "conf_parser.y" /* yacc.c:1646 */
3853 {
3854 if (conf_parser_ctx.pass == 2)
3855 block_state.modes.value |= UMODE_SOFTCALLERID;
3856 }
3857 #line 3858 "conf_parser.c" /* yacc.c:1646 */
3858 break;
3859
3860 case 197:
3861 #line 1158 "conf_parser.y" /* yacc.c:1646 */
3862 {
3863 if (conf_parser_ctx.pass == 2)
3864 block_state.modes.value |= UMODE_CALLERID;
3865 }
3866 #line 3867 "conf_parser.c" /* yacc.c:1646 */
3867 break;
3868
3869 case 198:
3870 #line 1162 "conf_parser.y" /* yacc.c:1646 */
3871 {
3872 if (conf_parser_ctx.pass == 2)
3873 block_state.modes.value |= UMODE_LOCOPS;
3874 }
3875 #line 3876 "conf_parser.c" /* yacc.c:1646 */
3876 break;
3877
3878 case 199:
3879 #line 1166 "conf_parser.y" /* yacc.c:1646 */
3880 {
3881 if (conf_parser_ctx.pass == 2)
3882 block_state.modes.value |= UMODE_REGONLY;
3883 }
3884 #line 3885 "conf_parser.c" /* yacc.c:1646 */
3885 break;
3886
3887 case 200:
3888 #line 1170 "conf_parser.y" /* yacc.c:1646 */
3889 {
3890 if (conf_parser_ctx.pass == 2)
3891 block_state.modes.value |= UMODE_FARCONNECT;
3892 }
3893 #line 3894 "conf_parser.c" /* yacc.c:1646 */
3894 break;
3895
3896 case 201:
3897 #line 1176 "conf_parser.y" /* yacc.c:1646 */
3898 {
3899 if (conf_parser_ctx.pass == 2)
3900 block_state.port.value = 0;
3901 }
3902 #line 3903 "conf_parser.c" /* yacc.c:1646 */
3903 break;
3904
3905 case 205:
3906 #line 1183 "conf_parser.y" /* yacc.c:1646 */
3907 {
3908 if (conf_parser_ctx.pass == 2)
3909 block_state.port.value |= OPER_FLAG_KILL_REMOTE;
3910 }
3911 #line 3912 "conf_parser.c" /* yacc.c:1646 */
3912 break;
3913
3914 case 206:
3915 #line 1187 "conf_parser.y" /* yacc.c:1646 */
3916 {
3917 if (conf_parser_ctx.pass == 2)
3918 block_state.port.value |= OPER_FLAG_KILL;
3919 }
3920 #line 3921 "conf_parser.c" /* yacc.c:1646 */
3921 break;
3922
3923 case 207:
3924 #line 1191 "conf_parser.y" /* yacc.c:1646 */
3925 {
3926 if (conf_parser_ctx.pass == 2)
3927 block_state.port.value |= OPER_FLAG_CONNECT_REMOTE;
3928 }
3929 #line 3930 "conf_parser.c" /* yacc.c:1646 */
3930 break;
3931
3932 case 208:
3933 #line 1195 "conf_parser.y" /* yacc.c:1646 */
3934 {
3935 if (conf_parser_ctx.pass == 2)
3936 block_state.port.value |= OPER_FLAG_CONNECT;
3937 }
3938 #line 3939 "conf_parser.c" /* yacc.c:1646 */
3939 break;
3940
3941 case 209:
3942 #line 1199 "conf_parser.y" /* yacc.c:1646 */
3943 {
3944 if (conf_parser_ctx.pass == 2)
3945 block_state.port.value |= OPER_FLAG_SQUIT_REMOTE;
3946 }
3947 #line 3948 "conf_parser.c" /* yacc.c:1646 */
3948 break;
3949
3950 case 210:
3951 #line 1203 "conf_parser.y" /* yacc.c:1646 */
3952 {
3953 if (conf_parser_ctx.pass == 2)
3954 block_state.port.value |= OPER_FLAG_SQUIT;
3955 }
3956 #line 3957 "conf_parser.c" /* yacc.c:1646 */
3957 break;
3958
3959 case 211:
3960 #line 1207 "conf_parser.y" /* yacc.c:1646 */
3961 {
3962 if (conf_parser_ctx.pass == 2)
3963 block_state.port.value |= OPER_FLAG_KLINE;
3964 }
3965 #line 3966 "conf_parser.c" /* yacc.c:1646 */
3966 break;
3967
3968 case 212:
3969 #line 1211 "conf_parser.y" /* yacc.c:1646 */
3970 {
3971 if (conf_parser_ctx.pass == 2)
3972 block_state.port.value |= OPER_FLAG_UNKLINE;
3973 }
3974 #line 3975 "conf_parser.c" /* yacc.c:1646 */
3975 break;
3976
3977 case 213:
3978 #line 1215 "conf_parser.y" /* yacc.c:1646 */
3979 {
3980 if (conf_parser_ctx.pass == 2)
3981 block_state.port.value |= OPER_FLAG_DLINE;
3982 }
3983 #line 3984 "conf_parser.c" /* yacc.c:1646 */
3984 break;
3985
3986 case 214:
3987 #line 1219 "conf_parser.y" /* yacc.c:1646 */
3988 {
3989 if (conf_parser_ctx.pass == 2)
3990 block_state.port.value |= OPER_FLAG_UNDLINE;
3991 }
3992 #line 3993 "conf_parser.c" /* yacc.c:1646 */
3993 break;
3994
3995 case 215:
3996 #line 1223 "conf_parser.y" /* yacc.c:1646 */
3997 {
3998 if (conf_parser_ctx.pass == 2)
3999 block_state.port.value |= OPER_FLAG_XLINE;
4000 }
4001 #line 4002 "conf_parser.c" /* yacc.c:1646 */
4002 break;
4003
4004 case 216:
4005 #line 1227 "conf_parser.y" /* yacc.c:1646 */
4006 {
4007 if (conf_parser_ctx.pass == 2)
4008 block_state.port.value |= OPER_FLAG_UNXLINE;
4009 }
4010 #line 4011 "conf_parser.c" /* yacc.c:1646 */
4011 break;
4012
4013 case 217:
4014 #line 1231 "conf_parser.y" /* yacc.c:1646 */
4015 {
4016 if (conf_parser_ctx.pass == 2)
4017 block_state.port.value |= OPER_FLAG_DIE;
4018 }
4019 #line 4020 "conf_parser.c" /* yacc.c:1646 */
4020 break;
4021
4022 case 218:
4023 #line 1235 "conf_parser.y" /* yacc.c:1646 */
4024 {
4025 if (conf_parser_ctx.pass == 2)
4026 block_state.port.value |= OPER_FLAG_RESTART;
4027 }
4028 #line 4029 "conf_parser.c" /* yacc.c:1646 */
4029 break;
4030
4031 case 219:
4032 #line 1239 "conf_parser.y" /* yacc.c:1646 */
4033 {
4034 if (conf_parser_ctx.pass == 2)
4035 block_state.port.value |= OPER_FLAG_REHASH_REMOTE;
4036 }
4037 #line 4038 "conf_parser.c" /* yacc.c:1646 */
4038 break;
4039
4040 case 220:
4041 #line 1243 "conf_parser.y" /* yacc.c:1646 */
4042 {
4043 if (conf_parser_ctx.pass == 2)
4044 block_state.port.value |= OPER_FLAG_REHASH;
4045 }
4046 #line 4047 "conf_parser.c" /* yacc.c:1646 */
4047 break;
4048
4049 case 221:
4050 #line 1247 "conf_parser.y" /* yacc.c:1646 */
4051 {
4052 if (conf_parser_ctx.pass == 2)
4053 block_state.port.value |= OPER_FLAG_ADMIN;
4054 }
4055 #line 4056 "conf_parser.c" /* yacc.c:1646 */
4056 break;
4057
4058 case 222:
4059 #line 1251 "conf_parser.y" /* yacc.c:1646 */
4060 {
4061 if (conf_parser_ctx.pass == 2)
4062 block_state.port.value |= OPER_FLAG_GLOBOPS;
4063 }
4064 #line 4065 "conf_parser.c" /* yacc.c:1646 */
4065 break;
4066
4067 case 223:
4068 #line 1255 "conf_parser.y" /* yacc.c:1646 */
4069 {
4070 if (conf_parser_ctx.pass == 2)
4071 block_state.port.value |= OPER_FLAG_WALLOPS;
4072 }
4073 #line 4074 "conf_parser.c" /* yacc.c:1646 */
4074 break;
4075
4076 case 224:
4077 #line 1259 "conf_parser.y" /* yacc.c:1646 */
4078 {
4079 if (conf_parser_ctx.pass == 2)
4080 block_state.port.value |= OPER_FLAG_LOCOPS;
4081 }
4082 #line 4083 "conf_parser.c" /* yacc.c:1646 */
4083 break;
4084
4085 case 225:
4086 #line 1263 "conf_parser.y" /* yacc.c:1646 */
4087 {
4088 if (conf_parser_ctx.pass == 2)
4089 block_state.port.value |= OPER_FLAG_REMOTEBAN;
4090 }
4091 #line 4092 "conf_parser.c" /* yacc.c:1646 */
4092 break;
4093
4094 case 226:
4095 #line 1267 "conf_parser.y" /* yacc.c:1646 */
4096 {
4097 if (conf_parser_ctx.pass == 2)
4098 block_state.port.value |= OPER_FLAG_SET;
4099 }
4100 #line 4101 "conf_parser.c" /* yacc.c:1646 */
4101 break;
4102
4103 case 227:
4104 #line 1271 "conf_parser.y" /* yacc.c:1646 */
4105 {
4106 if (conf_parser_ctx.pass == 2)
4107 block_state.port.value |= OPER_FLAG_MODULE;
4108 }
4109 #line 4110 "conf_parser.c" /* yacc.c:1646 */
4110 break;
4111
4112 case 228:
4113 #line 1275 "conf_parser.y" /* yacc.c:1646 */
4114 {
4115 if (conf_parser_ctx.pass == 2)
4116 block_state.port.value |= OPER_FLAG_OPME;
4117 }
4118 #line 4119 "conf_parser.c" /* yacc.c:1646 */
4119 break;
4120
4121 case 229:
4122 #line 1279 "conf_parser.y" /* yacc.c:1646 */
4123 {
4124 if (conf_parser_ctx.pass == 2)
4125 block_state.port.value |= OPER_FLAG_NICK_RESV;
4126 }
4127 #line 4128 "conf_parser.c" /* yacc.c:1646 */
4128 break;
4129
4130 case 230:
4131 #line 1283 "conf_parser.y" /* yacc.c:1646 */
4132 {
4133 if (conf_parser_ctx.pass == 2)
4134 block_state.port.value |= OPER_FLAG_JOIN_RESV;
4135 }
4136 #line 4137 "conf_parser.c" /* yacc.c:1646 */
4137 break;
4138
4139 case 231:
4140 #line 1287 "conf_parser.y" /* yacc.c:1646 */
4141 {
4142 if (conf_parser_ctx.pass == 2)
4143 block_state.port.value |= OPER_FLAG_RESV;
4144 }
4145 #line 4146 "conf_parser.c" /* yacc.c:1646 */
4146 break;
4147
4148 case 232:
4149 #line 1291 "conf_parser.y" /* yacc.c:1646 */
4150 {
4151 if (conf_parser_ctx.pass == 2)
4152 block_state.port.value |= OPER_FLAG_UNRESV;
4153 }
4154 #line 4155 "conf_parser.c" /* yacc.c:1646 */
4155 break;
4156
4157 case 233:
4158 #line 1295 "conf_parser.y" /* yacc.c:1646 */
4159 {
4160 if (conf_parser_ctx.pass == 2)
4161 block_state.port.value |= OPER_FLAG_CLOSE;
4162 }
4163 #line 4164 "conf_parser.c" /* yacc.c:1646 */
4164 break;
4165
4166 case 234:
4167 #line 1305 "conf_parser.y" /* yacc.c:1646 */
4168 {
4169 if (conf_parser_ctx.pass != 1)
4170 break;
4171
4172 reset_block_state();
4173
4174 block_state.ping_freq.value = DEFAULT_PINGFREQUENCY;
4175 block_state.con_freq.value = DEFAULT_CONNECTFREQUENCY;
4176 block_state.max_total.value = MAXIMUM_LINKS_DEFAULT;
4177 block_state.max_sendq.value = DEFAULT_SENDQ;
4178 block_state.max_recvq.value = DEFAULT_RECVQ;
4179 }
4180 #line 4181 "conf_parser.c" /* yacc.c:1646 */
4181 break;
4182
4183 case 235:
4184 #line 1317 "conf_parser.y" /* yacc.c:1646 */
4185 {
4186 struct ClassItem *class = NULL;
4187
4188 if (conf_parser_ctx.pass != 1)
4189 break;
4190
4191 if (!block_state.class.buf[0])
4192 break;
4193
4194 if (!(class = class_find(block_state.class.buf, 0)))
4195 class = class_make();
4196
4197 class->active = 1;
4198 xfree(class->name);
4199 class->name = xstrdup(block_state.class.buf);
4200 class->ping_freq = block_state.ping_freq.value;
4201 class->max_perip = block_state.max_perip.value;
4202 class->con_freq = block_state.con_freq.value;
4203 class->max_total = block_state.max_total.value;
4204 class->max_global = block_state.max_global.value;
4205 class->max_local = block_state.max_local.value;
4206 class->max_ident = block_state.max_ident.value;
4207 class->max_sendq = block_state.max_sendq.value;
4208 class->max_recvq = block_state.max_recvq.value;
4209 class->max_channels = block_state.max_channels.value;
4210
4211 if (block_state.min_idle.value > block_state.max_idle.value)
4212 {
4213 block_state.min_idle.value = 0;
4214 block_state.max_idle.value = 0;
4215 block_state.flags.value &= ~CLASS_FLAGS_FAKE_IDLE;
4216 }
4217
4218 class->flags = block_state.flags.value;
4219 class->min_idle = block_state.min_idle.value;
4220 class->max_idle = block_state.max_idle.value;
4221
4222 rebuild_cidr_list(class);
4223
4224 class->cidr_bitlen_ipv4 = block_state.cidr_bitlen_ipv4.value;
4225 class->cidr_bitlen_ipv6 = block_state.cidr_bitlen_ipv6.value;
4226 class->number_per_cidr = block_state.number_per_cidr.value;
4227 }
4228 #line 4229 "conf_parser.c" /* yacc.c:1646 */
4229 break;
4230
4231 case 256:
4232 #line 1381 "conf_parser.y" /* yacc.c:1646 */
4233 {
4234 if (conf_parser_ctx.pass == 1)
4235 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4236 }
4237 #line 4238 "conf_parser.c" /* yacc.c:1646 */
4238 break;
4239
4240 case 257:
4241 #line 1387 "conf_parser.y" /* yacc.c:1646 */
4242 {
4243 if (conf_parser_ctx.pass == 1)
4244 block_state.ping_freq.value = (yyvsp[-1].number);
4245 }
4246 #line 4247 "conf_parser.c" /* yacc.c:1646 */
4247 break;
4248
4249 case 258:
4250 #line 1393 "conf_parser.y" /* yacc.c:1646 */
4251 {
4252 if (conf_parser_ctx.pass == 1)
4253 block_state.max_perip.value = (yyvsp[-1].number);
4254 }
4255 #line 4256 "conf_parser.c" /* yacc.c:1646 */
4256 break;
4257
4258 case 259:
4259 #line 1399 "conf_parser.y" /* yacc.c:1646 */
4260 {
4261 if (conf_parser_ctx.pass == 1)
4262 block_state.con_freq.value = (yyvsp[-1].number);
4263 }
4264 #line 4265 "conf_parser.c" /* yacc.c:1646 */
4265 break;
4266
4267 case 260:
4268 #line 1405 "conf_parser.y" /* yacc.c:1646 */
4269 {
4270 if (conf_parser_ctx.pass == 1)
4271 block_state.max_channels.value = (yyvsp[-1].number);
4272 }
4273 #line 4274 "conf_parser.c" /* yacc.c:1646 */
4274 break;
4275
4276 case 261:
4277 #line 1411 "conf_parser.y" /* yacc.c:1646 */
4278 {
4279 if (conf_parser_ctx.pass == 1)
4280 block_state.max_total.value = (yyvsp[-1].number);
4281 }
4282 #line 4283 "conf_parser.c" /* yacc.c:1646 */
4283 break;
4284
4285 case 262:
4286 #line 1417 "conf_parser.y" /* yacc.c:1646 */
4287 {
4288 if (conf_parser_ctx.pass == 1)
4289 block_state.max_global.value = (yyvsp[-1].number);
4290 }
4291 #line 4292 "conf_parser.c" /* yacc.c:1646 */
4292 break;
4293
4294 case 263:
4295 #line 1423 "conf_parser.y" /* yacc.c:1646 */
4296 {
4297 if (conf_parser_ctx.pass == 1)
4298 block_state.max_local.value = (yyvsp[-1].number);
4299 }
4300 #line 4301 "conf_parser.c" /* yacc.c:1646 */
4301 break;
4302
4303 case 264:
4304 #line 1429 "conf_parser.y" /* yacc.c:1646 */
4305 {
4306 if (conf_parser_ctx.pass == 1)
4307 block_state.max_ident.value = (yyvsp[-1].number);
4308 }
4309 #line 4310 "conf_parser.c" /* yacc.c:1646 */
4310 break;
4311
4312 case 265:
4313 #line 1435 "conf_parser.y" /* yacc.c:1646 */
4314 {
4315 if (conf_parser_ctx.pass == 1)
4316 block_state.max_sendq.value = (yyvsp[-1].number);
4317 }
4318 #line 4319 "conf_parser.c" /* yacc.c:1646 */
4319 break;
4320
4321 case 266:
4322 #line 1441 "conf_parser.y" /* yacc.c:1646 */
4323 {
4324 if (conf_parser_ctx.pass == 1)
4325 if ((yyvsp[-1].number) >= CLIENT_FLOOD_MIN && (yyvsp[-1].number) <= CLIENT_FLOOD_MAX)
4326 block_state.max_recvq.value = (yyvsp[-1].number);
4327 }
4328 #line 4329 "conf_parser.c" /* yacc.c:1646 */
4329 break;
4330
4331 case 267:
4332 #line 1448 "conf_parser.y" /* yacc.c:1646 */
4333 {
4334 if (conf_parser_ctx.pass == 1)
4335 block_state.cidr_bitlen_ipv4.value = (yyvsp[-1].number) > 32 ? 32 : (yyvsp[-1].number);
4336 }
4337 #line 4338 "conf_parser.c" /* yacc.c:1646 */
4338 break;
4339
4340 case 268:
4341 #line 1454 "conf_parser.y" /* yacc.c:1646 */
4342 {
4343 if (conf_parser_ctx.pass == 1)
4344 block_state.cidr_bitlen_ipv6.value = (yyvsp[-1].number) > 128 ? 128 : (yyvsp[-1].number);
4345 }
4346 #line 4347 "conf_parser.c" /* yacc.c:1646 */
4347 break;
4348
4349 case 269:
4350 #line 1460 "conf_parser.y" /* yacc.c:1646 */
4351 {
4352 if (conf_parser_ctx.pass == 1)
4353 block_state.number_per_cidr.value = (yyvsp[-1].number);
4354 }
4355 #line 4356 "conf_parser.c" /* yacc.c:1646 */
4356 break;
4357
4358 case 270:
4359 #line 1466 "conf_parser.y" /* yacc.c:1646 */
4360 {
4361 if (conf_parser_ctx.pass != 1)
4362 break;
4363
4364 block_state.min_idle.value = (yyvsp[-1].number);
4365 block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4366 }
4367 #line 4368 "conf_parser.c" /* yacc.c:1646 */
4368 break;
4369
4370 case 271:
4371 #line 1475 "conf_parser.y" /* yacc.c:1646 */
4372 {
4373 if (conf_parser_ctx.pass != 1)
4374 break;
4375
4376 block_state.max_idle.value = (yyvsp[-1].number);
4377 block_state.flags.value |= CLASS_FLAGS_FAKE_IDLE;
4378 }
4379 #line 4380 "conf_parser.c" /* yacc.c:1646 */
4380 break;
4381
4382 case 272:
4383 #line 1484 "conf_parser.y" /* yacc.c:1646 */
4384 {
4385 if (conf_parser_ctx.pass == 1)
4386 block_state.flags.value &= CLASS_FLAGS_FAKE_IDLE;
4387 }
4388 #line 4389 "conf_parser.c" /* yacc.c:1646 */
4389 break;
4390
4391 case 276:
4392 #line 1491 "conf_parser.y" /* yacc.c:1646 */
4393 {
4394 if (conf_parser_ctx.pass == 1)
4395 block_state.flags.value |= CLASS_FLAGS_RANDOM_IDLE;
4396 }
4397 #line 4398 "conf_parser.c" /* yacc.c:1646 */
4398 break;
4399
4400 case 277:
4401 #line 1495 "conf_parser.y" /* yacc.c:1646 */
4402 {
4403 if (conf_parser_ctx.pass == 1)
4404 block_state.flags.value |= CLASS_FLAGS_HIDE_IDLE_FROM_OPERS;
4405 }
4406 #line 4407 "conf_parser.c" /* yacc.c:1646 */
4407 break;
4408
4409 case 278:
4410 #line 1505 "conf_parser.y" /* yacc.c:1646 */
4411 {
4412 if (conf_parser_ctx.pass == 2)
4413 reset_block_state();
4414 }
4415 #line 4416 "conf_parser.c" /* yacc.c:1646 */
4416 break;
4417
4418 case 280:
4419 #line 1511 "conf_parser.y" /* yacc.c:1646 */
4420 {
4421 block_state.flags.value = 0;
4422 }
4423 #line 4424 "conf_parser.c" /* yacc.c:1646 */
4424 break;
4425
4426 case 284:
4427 #line 1517 "conf_parser.y" /* yacc.c:1646 */
4428 {
4429 if (conf_parser_ctx.pass == 2)
4430 block_state.flags.value |= LISTENER_SSL;
4431 }
4432 #line 4433 "conf_parser.c" /* yacc.c:1646 */
4433 break;
4434
4435 case 285:
4436 #line 1521 "conf_parser.y" /* yacc.c:1646 */
4437 {
4438 if (conf_parser_ctx.pass == 2)
4439 block_state.flags.value |= LISTENER_HIDDEN;
4440 }
4441 #line 4442 "conf_parser.c" /* yacc.c:1646 */
4442 break;
4443
4444 case 286:
4445 #line 1525 "conf_parser.y" /* yacc.c:1646 */
4446 {
4447 if (conf_parser_ctx.pass == 2)
4448 block_state.flags.value |= LISTENER_SERVER;
4449 }
4450 #line 4451 "conf_parser.c" /* yacc.c:1646 */
4451 break;
4452
4453 case 294:
4454 #line 1533 "conf_parser.y" /* yacc.c:1646 */
4455 { block_state.flags.value = 0; }
4456 #line 4457 "conf_parser.c" /* yacc.c:1646 */
4457 break;
4458
4459 case 298:
4460 #line 1538 "conf_parser.y" /* yacc.c:1646 */
4461 {
4462 if (conf_parser_ctx.pass == 2)
4463 {
4464 #ifndef HAVE_TLS
4465 if (block_state.flags.value & LISTENER_SSL)
4466 {
4467 conf_error_report("TLS not available - port closed");
4468 break;
4469 }
4470 #endif
4471 listener_add((yyvsp[0].number), block_state.addr.buf, block_state.flags.value);
4472 }
4473 }
4474 #line 4475 "conf_parser.c" /* yacc.c:1646 */
4475 break;
4476
4477 case 299:
4478 #line 1551 "conf_parser.y" /* yacc.c:1646 */
4479 {
4480 if (conf_parser_ctx.pass == 2)
4481 {
4482 #ifndef HAVE_TLS
4483 if (block_state.flags.value & LISTENER_SSL)
4484 {
4485 conf_error_report("TLS not available - port closed");
4486 break;
4487 }
4488 #endif
4489
4490 for (int i = (yyvsp[-2].number); i <= (yyvsp[0].number); ++i)
4491 listener_add(i, block_state.addr.buf, block_state.flags.value);
4492 }
4493 }
4494 #line 4495 "conf_parser.c" /* yacc.c:1646 */
4495 break;
4496
4497 case 300:
4498 #line 1568 "conf_parser.y" /* yacc.c:1646 */
4499 {
4500 if (conf_parser_ctx.pass == 2)
4501 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4502 }
4503 #line 4504 "conf_parser.c" /* yacc.c:1646 */
4504 break;
4505
4506 case 301:
4507 #line 1574 "conf_parser.y" /* yacc.c:1646 */
4508 {
4509 if (conf_parser_ctx.pass == 2)
4510 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
4511 }
4512 #line 4513 "conf_parser.c" /* yacc.c:1646 */
4513 break;
4514
4515 case 302:
4516 #line 1584 "conf_parser.y" /* yacc.c:1646 */
4517 {
4518 if (conf_parser_ctx.pass == 2)
4519 reset_block_state();
4520 }
4521 #line 4522 "conf_parser.c" /* yacc.c:1646 */
4522 break;
4523
4524 case 303:
4525 #line 1588 "conf_parser.y" /* yacc.c:1646 */
4526 {
4527 dlink_node *node = NULL;
4528
4529 if (conf_parser_ctx.pass != 2)
4530 break;
4531
4532 DLINK_FOREACH(node, block_state.mask.list.head)
4533 {
4534 struct MaskItem *conf = NULL;
4535 struct split_nuh_item nuh;
4536
4537 nuh.nuhmask = node->data;
4538 nuh.nickptr = NULL;
4539 nuh.userptr = block_state.user.buf;
4540 nuh.hostptr = block_state.host.buf;
4541 nuh.nicksize = 0;
4542 nuh.usersize = sizeof(block_state.user.buf);
4543 nuh.hostsize = sizeof(block_state.host.buf);
4544 split_nuh(&nuh);
4545
4546 conf = conf_make(CONF_CLIENT);
4547 conf->user = xstrdup(block_state.user.buf);
4548 conf->host = xstrdup(block_state.host.buf);
4549
4550 if (block_state.rpass.buf[0])
4551 conf->passwd = xstrdup(block_state.rpass.buf);
4552 if (block_state.name.buf[0])
4553 conf->name = xstrdup(block_state.name.buf);
4554
4555 conf->flags = block_state.flags.value;
4556 conf->port = block_state.port.value;
4557
4558 conf_add_class_to_conf(conf, block_state.class.buf);
4559 add_conf_by_address(CONF_CLIENT, conf);
4560 }
4561 }
4562 #line 4563 "conf_parser.c" /* yacc.c:1646 */
4563 break;
4564
4565 case 315:
4566 #line 1637 "conf_parser.y" /* yacc.c:1646 */
4567 {
4568 if (conf_parser_ctx.pass == 2)
4569 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4570 }
4571 #line 4572 "conf_parser.c" /* yacc.c:1646 */
4572 break;
4573
4574 case 316:
4575 #line 1643 "conf_parser.y" /* yacc.c:1646 */
4576 {
4577 if (conf_parser_ctx.pass == 2)
4578 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4579 }
4580 #line 4581 "conf_parser.c" /* yacc.c:1646 */
4581 break;
4582
4583 case 317:
4584 #line 1649 "conf_parser.y" /* yacc.c:1646 */
4585 {
4586 if (conf_parser_ctx.pass == 2)
4587 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
4588 }
4589 #line 4590 "conf_parser.c" /* yacc.c:1646 */
4590 break;
4591
4592 case 318:
4593 #line 1655 "conf_parser.y" /* yacc.c:1646 */
4594 {
4595 if (conf_parser_ctx.pass == 2)
4596 {
4597 if (yylval.number)
4598 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
4599 else
4600 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
4601 }
4602 }
4603 #line 4604 "conf_parser.c" /* yacc.c:1646 */
4604 break;
4605
4606 case 319:
4607 #line 1666 "conf_parser.y" /* yacc.c:1646 */
4608 {
4609 if (conf_parser_ctx.pass == 2)
4610 block_state.flags.value &= (CONF_FLAGS_ENCRYPTED | CONF_FLAGS_SPOOF_IP);
4611 }
4612 #line 4613 "conf_parser.c" /* yacc.c:1646 */
4613 break;
4614
4615 case 323:
4616 #line 1673 "conf_parser.y" /* yacc.c:1646 */
4617 {
4618 if (conf_parser_ctx.pass == 2)
4619 block_state.flags.value |= CONF_FLAGS_SPOOF_NOTICE;
4620 }
4621 #line 4622 "conf_parser.c" /* yacc.c:1646 */
4622 break;
4623
4624 case 324:
4625 #line 1677 "conf_parser.y" /* yacc.c:1646 */
4626 {
4627 if (conf_parser_ctx.pass == 2)
4628 block_state.flags.value |= CONF_FLAGS_NOLIMIT;
4629 }
4630 #line 4631 "conf_parser.c" /* yacc.c:1646 */
4631 break;
4632
4633 case 325:
4634 #line 1681 "conf_parser.y" /* yacc.c:1646 */
4635 {
4636 if (conf_parser_ctx.pass == 2)
4637 block_state.flags.value |= CONF_FLAGS_EXEMPTKLINE;
4638 }
4639 #line 4640 "conf_parser.c" /* yacc.c:1646 */
4640 break;
4641
4642 case 326:
4643 #line 1685 "conf_parser.y" /* yacc.c:1646 */
4644 {
4645 if (conf_parser_ctx.pass == 2)
4646 block_state.flags.value |= CONF_FLAGS_EXEMPTXLINE;
4647 }
4648 #line 4649 "conf_parser.c" /* yacc.c:1646 */
4649 break;
4650
4651 case 327:
4652 #line 1689 "conf_parser.y" /* yacc.c:1646 */
4653 {
4654 if (conf_parser_ctx.pass == 2)
4655 block_state.flags.value |= CONF_FLAGS_NEED_IDENTD;
4656 }
4657 #line 4658 "conf_parser.c" /* yacc.c:1646 */
4658 break;
4659
4660 case 328:
4661 #line 1693 "conf_parser.y" /* yacc.c:1646 */
4662 {
4663 if (conf_parser_ctx.pass == 2)
4664 block_state.flags.value |= CONF_FLAGS_CAN_FLOOD;
4665 }
4666 #line 4667 "conf_parser.c" /* yacc.c:1646 */
4667 break;
4668
4669 case 329:
4670 #line 1697 "conf_parser.y" /* yacc.c:1646 */
4671 {
4672 if (conf_parser_ctx.pass == 2)
4673 block_state.flags.value |= CONF_FLAGS_NO_TILDE;
4674 }
4675 #line 4676 "conf_parser.c" /* yacc.c:1646 */
4676 break;
4677
4678 case 330:
4679 #line 1701 "conf_parser.y" /* yacc.c:1646 */
4680 {
4681 if (conf_parser_ctx.pass == 2)
4682 block_state.flags.value |= CONF_FLAGS_EXEMPTRESV;
4683 }
4684 #line 4685 "conf_parser.c" /* yacc.c:1646 */
4685 break;
4686
4687 case 331:
4688 #line 1705 "conf_parser.y" /* yacc.c:1646 */
4689 {
4690 if (conf_parser_ctx.pass == 2)
4691 block_state.flags.value |= CONF_FLAGS_WEBIRC;
4692 }
4693 #line 4694 "conf_parser.c" /* yacc.c:1646 */
4694 break;
4695
4696 case 332:
4697 #line 1709 "conf_parser.y" /* yacc.c:1646 */
4698 {
4699 if (conf_parser_ctx.pass == 2)
4700 block_state.flags.value |= CONF_FLAGS_NEED_PASSWORD;
4701 }
4702 #line 4703 "conf_parser.c" /* yacc.c:1646 */
4703 break;
4704
4705 case 333:
4706 #line 1715 "conf_parser.y" /* yacc.c:1646 */
4707 {
4708 if (conf_parser_ctx.pass != 2)
4709 break;
4710
4711 if (valid_hostname(yylval.string))
4712 {
4713 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4714 block_state.flags.value |= CONF_FLAGS_SPOOF_IP;
4715 }
4716 else
4717 ilog(LOG_TYPE_IRCD, "Spoof either is too long or contains invalid characters. Ignoring it.");
4718 }
4719 #line 4720 "conf_parser.c" /* yacc.c:1646 */
4720 break;
4721
4722 case 334:
4723 #line 1729 "conf_parser.y" /* yacc.c:1646 */
4724 {
4725 if (conf_parser_ctx.pass != 2)
4726 break;
4727
4728 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4729 block_state.flags.value |= CONF_FLAGS_REDIR;
4730 }
4731 #line 4732 "conf_parser.c" /* yacc.c:1646 */
4732 break;
4733
4734 case 335:
4735 #line 1738 "conf_parser.y" /* yacc.c:1646 */
4736 {
4737 if (conf_parser_ctx.pass != 2)
4738 break;
4739
4740 block_state.flags.value |= CONF_FLAGS_REDIR;
4741 block_state.port.value = (yyvsp[-1].number);
4742 }
4743 #line 4744 "conf_parser.c" /* yacc.c:1646 */
4744 break;
4745
4746 case 336:
4747 #line 1751 "conf_parser.y" /* yacc.c:1646 */
4748 {
4749 if (conf_parser_ctx.pass != 2)
4750 break;
4751
4752 reset_block_state();
4753 strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
4754 }
4755 #line 4756 "conf_parser.c" /* yacc.c:1646 */
4756 break;
4757
4758 case 337:
4759 #line 1758 "conf_parser.y" /* yacc.c:1646 */
4760 {
4761 if (conf_parser_ctx.pass != 2)
4762 break;
4763
4764 create_resv(block_state.name.buf, block_state.rpass.buf, &block_state.mask.list);
4765 }
4766 #line 4767 "conf_parser.c" /* yacc.c:1646 */
4767 break;
4768
4769 case 344:
4770 #line 1769 "conf_parser.y" /* yacc.c:1646 */
4771 {
4772 if (conf_parser_ctx.pass == 2)
4773 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4774 }
4775 #line 4776 "conf_parser.c" /* yacc.c:1646 */
4776 break;
4777
4778 case 345:
4779 #line 1775 "conf_parser.y" /* yacc.c:1646 */
4780 {
4781 if (conf_parser_ctx.pass == 2)
4782 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
4783 }
4784 #line 4785 "conf_parser.c" /* yacc.c:1646 */
4785 break;
4786
4787 case 346:
4788 #line 1781 "conf_parser.y" /* yacc.c:1646 */
4789 {
4790 if (conf_parser_ctx.pass == 2)
4791 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.mask.list);
4792 }
4793 #line 4794 "conf_parser.c" /* yacc.c:1646 */
4794 break;
4795
4796 case 352:
4797 #line 1796 "conf_parser.y" /* yacc.c:1646 */
4798 {
4799 if (conf_parser_ctx.pass != 2)
4800 break;
4801
4802 if (valid_servname(yylval.string))
4803 {
4804 struct MaskItem *conf = conf_make(CONF_SERVICE);
4805 conf->name = xstrdup(yylval.string);
4806 }
4807 }
4808 #line 4809 "conf_parser.c" /* yacc.c:1646 */
4809 break;
4810
4811 case 353:
4812 #line 1812 "conf_parser.y" /* yacc.c:1646 */
4813 {
4814 if (conf_parser_ctx.pass != 2)
4815 break;
4816
4817 reset_block_state();
4818
4819 strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4820 strlcpy(block_state.user.buf, "*", sizeof(block_state.user.buf));
4821 strlcpy(block_state.host.buf, "*", sizeof(block_state.host.buf));
4822 block_state.flags.value = SHARED_ALL;
4823 }
4824 #line 4825 "conf_parser.c" /* yacc.c:1646 */
4825 break;
4826
4827 case 354:
4828 #line 1823 "conf_parser.y" /* yacc.c:1646 */
4829 {
4830 if (conf_parser_ctx.pass != 2)
4831 break;
4832
4833 struct SharedItem *shared = shared_make();
4834 shared->type = block_state.flags.value;
4835 shared->server = xstrdup(block_state.name.buf);
4836 shared->user = xstrdup(block_state.user.buf);
4837 shared->host = xstrdup(block_state.host.buf);
4838 }
4839 #line 4840 "conf_parser.c" /* yacc.c:1646 */
4840 break;
4841
4842 case 361:
4843 #line 1838 "conf_parser.y" /* yacc.c:1646 */
4844 {
4845 if (conf_parser_ctx.pass == 2)
4846 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
4847 }
4848 #line 4849 "conf_parser.c" /* yacc.c:1646 */
4849 break;
4850
4851 case 362:
4852 #line 1844 "conf_parser.y" /* yacc.c:1646 */
4853 {
4854 if (conf_parser_ctx.pass == 2)
4855 {
4856 struct split_nuh_item nuh;
4857
4858 nuh.nuhmask = yylval.string;
4859 nuh.nickptr = NULL;
4860 nuh.userptr = block_state.user.buf;
4861 nuh.hostptr = block_state.host.buf;
4862
4863 nuh.nicksize = 0;
4864 nuh.usersize = sizeof(block_state.user.buf);
4865 nuh.hostsize = sizeof(block_state.host.buf);
4866
4867 split_nuh(&nuh);
4868 }
4869 }
4870 #line 4871 "conf_parser.c" /* yacc.c:1646 */
4871 break;
4872
4873 case 363:
4874 #line 1863 "conf_parser.y" /* yacc.c:1646 */
4875 {
4876 if (conf_parser_ctx.pass == 2)
4877 block_state.flags.value = 0;
4878 }
4879 #line 4880 "conf_parser.c" /* yacc.c:1646 */
4880 break;
4881
4882 case 367:
4883 #line 1870 "conf_parser.y" /* yacc.c:1646 */
4884 {
4885 if (conf_parser_ctx.pass == 2)
4886 block_state.flags.value |= SHARED_KLINE;
4887 }
4888 #line 4889 "conf_parser.c" /* yacc.c:1646 */
4889 break;
4890
4891 case 368:
4892 #line 1874 "conf_parser.y" /* yacc.c:1646 */
4893 {
4894 if (conf_parser_ctx.pass == 2)
4895 block_state.flags.value |= SHARED_UNKLINE;
4896 }
4897 #line 4898 "conf_parser.c" /* yacc.c:1646 */
4898 break;
4899
4900 case 369:
4901 #line 1878 "conf_parser.y" /* yacc.c:1646 */
4902 {
4903 if (conf_parser_ctx.pass == 2)
4904 block_state.flags.value |= SHARED_DLINE;
4905 }
4906 #line 4907 "conf_parser.c" /* yacc.c:1646 */
4907 break;
4908
4909 case 370:
4910 #line 1882 "conf_parser.y" /* yacc.c:1646 */
4911 {
4912 if (conf_parser_ctx.pass == 2)
4913 block_state.flags.value |= SHARED_UNDLINE;
4914 }
4915 #line 4916 "conf_parser.c" /* yacc.c:1646 */
4916 break;
4917
4918 case 371:
4919 #line 1886 "conf_parser.y" /* yacc.c:1646 */
4920 {
4921 if (conf_parser_ctx.pass == 2)
4922 block_state.flags.value |= SHARED_XLINE;
4923 }
4924 #line 4925 "conf_parser.c" /* yacc.c:1646 */
4925 break;
4926
4927 case 372:
4928 #line 1890 "conf_parser.y" /* yacc.c:1646 */
4929 {
4930 if (conf_parser_ctx.pass == 2)
4931 block_state.flags.value |= SHARED_UNXLINE;
4932 }
4933 #line 4934 "conf_parser.c" /* yacc.c:1646 */
4934 break;
4935
4936 case 373:
4937 #line 1894 "conf_parser.y" /* yacc.c:1646 */
4938 {
4939 if (conf_parser_ctx.pass == 2)
4940 block_state.flags.value |= SHARED_RESV;
4941 }
4942 #line 4943 "conf_parser.c" /* yacc.c:1646 */
4943 break;
4944
4945 case 374:
4946 #line 1898 "conf_parser.y" /* yacc.c:1646 */
4947 {
4948 if (conf_parser_ctx.pass == 2)
4949 block_state.flags.value |= SHARED_UNRESV;
4950 }
4951 #line 4952 "conf_parser.c" /* yacc.c:1646 */
4952 break;
4953
4954 case 375:
4955 #line 1902 "conf_parser.y" /* yacc.c:1646 */
4956 {
4957 if (conf_parser_ctx.pass == 2)
4958 block_state.flags.value |= SHARED_LOCOPS;
4959 }
4960 #line 4961 "conf_parser.c" /* yacc.c:1646 */
4961 break;
4962
4963 case 376:
4964 #line 1906 "conf_parser.y" /* yacc.c:1646 */
4965 {
4966 if (conf_parser_ctx.pass == 2)
4967 block_state.flags.value = SHARED_ALL;
4968 }
4969 #line 4970 "conf_parser.c" /* yacc.c:1646 */
4970 break;
4971
4972 case 377:
4973 #line 1916 "conf_parser.y" /* yacc.c:1646 */
4974 {
4975 if (conf_parser_ctx.pass != 2)
4976 break;
4977
4978 reset_block_state();
4979
4980 strlcpy(block_state.name.buf, "*", sizeof(block_state.name.buf));
4981 block_state.flags.value = CLUSTER_ALL;
4982 }
4983 #line 4984 "conf_parser.c" /* yacc.c:1646 */
4984 break;
4985
4986 case 378:
4987 #line 1925 "conf_parser.y" /* yacc.c:1646 */
4988 {
4989 if (conf_parser_ctx.pass != 2)
4990 break;
4991
4992 struct ClusterItem *cluster = cluster_make();
4993 cluster->type = block_state.flags.value;
4994 cluster->server = xstrdup(block_state.name.buf);
4995 }
4996 #line 4997 "conf_parser.c" /* yacc.c:1646 */
4997 break;
4998
4999 case 384:
5000 #line 1938 "conf_parser.y" /* yacc.c:1646 */
5001 {
5002 if (conf_parser_ctx.pass == 2)
5003 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5004 }
5005 #line 5006 "conf_parser.c" /* yacc.c:1646 */
5006 break;
5007
5008 case 385:
5009 #line 1944 "conf_parser.y" /* yacc.c:1646 */
5010 {
5011 if (conf_parser_ctx.pass == 2)
5012 block_state.flags.value = 0;
5013 }
5014 #line 5015 "conf_parser.c" /* yacc.c:1646 */
5015 break;
5016
5017 case 389:
5018 #line 1951 "conf_parser.y" /* yacc.c:1646 */
5019 {
5020 if (conf_parser_ctx.pass == 2)
5021 block_state.flags.value |= CLUSTER_KLINE;
5022 }
5023 #line 5024 "conf_parser.c" /* yacc.c:1646 */
5024 break;
5025
5026 case 390:
5027 #line 1955 "conf_parser.y" /* yacc.c:1646 */
5028 {
5029 if (conf_parser_ctx.pass == 2)
5030 block_state.flags.value |= CLUSTER_UNKLINE;
5031 }
5032 #line 5033 "conf_parser.c" /* yacc.c:1646 */
5033 break;
5034
5035 case 391:
5036 #line 1959 "conf_parser.y" /* yacc.c:1646 */
5037 {
5038 if (conf_parser_ctx.pass == 2)
5039 block_state.flags.value |= CLUSTER_DLINE;
5040 }
5041 #line 5042 "conf_parser.c" /* yacc.c:1646 */
5042 break;
5043
5044 case 392:
5045 #line 1963 "conf_parser.y" /* yacc.c:1646 */
5046 {
5047 if (conf_parser_ctx.pass == 2)
5048 block_state.flags.value |= CLUSTER_UNDLINE;
5049 }
5050 #line 5051 "conf_parser.c" /* yacc.c:1646 */
5051 break;
5052
5053 case 393:
5054 #line 1967 "conf_parser.y" /* yacc.c:1646 */
5055 {
5056 if (conf_parser_ctx.pass == 2)
5057 block_state.flags.value |= CLUSTER_XLINE;
5058 }
5059 #line 5060 "conf_parser.c" /* yacc.c:1646 */
5060 break;
5061
5062 case 394:
5063 #line 1971 "conf_parser.y" /* yacc.c:1646 */
5064 {
5065 if (conf_parser_ctx.pass == 2)
5066 block_state.flags.value |= CLUSTER_UNXLINE;
5067 }
5068 #line 5069 "conf_parser.c" /* yacc.c:1646 */
5069 break;
5070
5071 case 395:
5072 #line 1975 "conf_parser.y" /* yacc.c:1646 */
5073 {
5074 if (conf_parser_ctx.pass == 2)
5075 block_state.flags.value |= CLUSTER_RESV;
5076 }
5077 #line 5078 "conf_parser.c" /* yacc.c:1646 */
5078 break;
5079
5080 case 396:
5081 #line 1979 "conf_parser.y" /* yacc.c:1646 */
5082 {
5083 if (conf_parser_ctx.pass == 2)
5084 block_state.flags.value |= CLUSTER_UNRESV;
5085 }
5086 #line 5087 "conf_parser.c" /* yacc.c:1646 */
5087 break;
5088
5089 case 397:
5090 #line 1983 "conf_parser.y" /* yacc.c:1646 */
5091 {
5092 if (conf_parser_ctx.pass == 2)
5093 block_state.flags.value |= CLUSTER_LOCOPS;
5094 }
5095 #line 5096 "conf_parser.c" /* yacc.c:1646 */
5096 break;
5097
5098 case 398:
5099 #line 1987 "conf_parser.y" /* yacc.c:1646 */
5100 {
5101 if (conf_parser_ctx.pass == 2)
5102 block_state.flags.value = CLUSTER_ALL;
5103 }
5104 #line 5105 "conf_parser.c" /* yacc.c:1646 */
5105 break;
5106
5107 case 399:
5108 #line 1997 "conf_parser.y" /* yacc.c:1646 */
5109 {
5110
5111 if (conf_parser_ctx.pass != 2)
5112 break;
5113
5114 reset_block_state();
5115 block_state.aftype.value = AF_INET;
5116 block_state.port.value = PORTNUM;
5117 }
5118 #line 5119 "conf_parser.c" /* yacc.c:1646 */
5119 break;
5120
5121 case 400:
5122 #line 2006 "conf_parser.y" /* yacc.c:1646 */
5123 {
5124 struct MaskItem *conf = NULL;
5125 struct addrinfo hints, *res;
5126
5127 if (conf_parser_ctx.pass != 2)
5128 break;
5129
5130 if (!block_state.name.buf[0] ||
5131 !block_state.host.buf[0])
5132 break;
5133
5134 if (!block_state.rpass.buf[0] ||
5135 !block_state.spass.buf[0])
5136 break;
5137
5138 if (has_wildcards(block_state.name.buf) ||
5139 has_wildcards(block_state.host.buf))
5140 break;
5141
5142 conf = conf_make(CONF_SERVER);
5143 conf->port = block_state.port.value;
5144 conf->flags = block_state.flags.value;
5145 conf->aftype = block_state.aftype.value;
5146 conf->host = xstrdup(block_state.host.buf);
5147 conf->name = xstrdup(block_state.name.buf);
5148 conf->passwd = xstrdup(block_state.rpass.buf);
5149 conf->spasswd = xstrdup(block_state.spass.buf);
5150
5151 if (block_state.cert.buf[0])
5152 conf->certfp = xstrdup(block_state.cert.buf);
5153
5154 if (block_state.ciph.buf[0])
5155 conf->cipher_list = xstrdup(block_state.ciph.buf);
5156
5157 dlinkMoveList(&block_state.leaf.list, &conf->leaf_list);
5158 dlinkMoveList(&block_state.hub.list, &conf->hub_list);
5159
5160 if (block_state.bind.buf[0])
5161 {
5162 memset(&hints, 0, sizeof(hints));
5163
5164 hints.ai_family = AF_UNSPEC;
5165 hints.ai_socktype = SOCK_STREAM;
5166 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
5167
5168 if (getaddrinfo(block_state.bind.buf, NULL, &hints, &res))
5169 ilog(LOG_TYPE_IRCD, "Invalid netmask for server vhost(%s)", block_state.bind.buf);
5170 else
5171 {
5172 assert(res);
5173
5174 memcpy(&conf->bind, res->ai_addr, res->ai_addrlen);
5175 conf->bind.ss.ss_family = res->ai_family;
5176 conf->bind.ss_len = res->ai_addrlen;
5177 freeaddrinfo(res);
5178 }
5179 }
5180
5181 conf_add_class_to_conf(conf, block_state.class.buf);
5182 lookup_confhost(conf);
5183 }
5184 #line 5185 "conf_parser.c" /* yacc.c:1646 */
5185 break;
5186
5187 case 418:
5188 #line 2086 "conf_parser.y" /* yacc.c:1646 */
5189 {
5190 if (conf_parser_ctx.pass == 2)
5191 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5192 }
5193 #line 5194 "conf_parser.c" /* yacc.c:1646 */
5194 break;
5195
5196 case 419:
5197 #line 2092 "conf_parser.y" /* yacc.c:1646 */
5198 {
5199 if (conf_parser_ctx.pass == 2)
5200 strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
5201 }
5202 #line 5203 "conf_parser.c" /* yacc.c:1646 */
5203 break;
5204
5205 case 420:
5206 #line 2098 "conf_parser.y" /* yacc.c:1646 */
5207 {
5208 if (conf_parser_ctx.pass == 2)
5209 strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
5210 }
5211 #line 5212 "conf_parser.c" /* yacc.c:1646 */
5212 break;
5213
5214 case 421:
5215 #line 2104 "conf_parser.y" /* yacc.c:1646 */
5216 {
5217 if (conf_parser_ctx.pass != 2)
5218 break;
5219
5220 if ((yyvsp[-1].string)[0] == ':')
5221 conf_error_report("Server passwords cannot begin with a colon");
5222 else if (strchr((yyvsp[-1].string), ' '))
5223 conf_error_report("Server passwords cannot contain spaces");
5224 else
5225 strlcpy(block_state.spass.buf, yylval.string, sizeof(block_state.spass.buf));
5226 }
5227 #line 5228 "conf_parser.c" /* yacc.c:1646 */
5228 break;
5229
5230 case 422:
5231 #line 2117 "conf_parser.y" /* yacc.c:1646 */
5232 {
5233 if (conf_parser_ctx.pass != 2)
5234 break;
5235
5236 if ((yyvsp[-1].string)[0] == ':')
5237 conf_error_report("Server passwords cannot begin with a colon");
5238 else if (strchr((yyvsp[-1].string), ' '))
5239 conf_error_report("Server passwords cannot contain spaces");
5240 else
5241 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5242 }
5243 #line 5244 "conf_parser.c" /* yacc.c:1646 */
5244 break;
5245
5246 case 423:
5247 #line 2130 "conf_parser.y" /* yacc.c:1646 */
5248 {
5249 if (conf_parser_ctx.pass == 2)
5250 strlcpy(block_state.cert.buf, yylval.string, sizeof(block_state.cert.buf));
5251 }
5252 #line 5253 "conf_parser.c" /* yacc.c:1646 */
5253 break;
5254
5255 case 424:
5256 #line 2136 "conf_parser.y" /* yacc.c:1646 */
5257 {
5258 if (conf_parser_ctx.pass == 2)
5259 block_state.port.value = (yyvsp[-1].number);
5260 }
5261 #line 5262 "conf_parser.c" /* yacc.c:1646 */
5262 break;
5263
5264 case 425:
5265 #line 2142 "conf_parser.y" /* yacc.c:1646 */
5266 {
5267 if (conf_parser_ctx.pass == 2)
5268 block_state.aftype.value = AF_INET;
5269 }
5270 #line 5271 "conf_parser.c" /* yacc.c:1646 */
5271 break;
5272
5273 case 426:
5274 #line 2146 "conf_parser.y" /* yacc.c:1646 */
5275 {
5276 if (conf_parser_ctx.pass == 2)
5277 block_state.aftype.value = AF_INET6;
5278 }
5279 #line 5280 "conf_parser.c" /* yacc.c:1646 */
5280 break;
5281
5282 case 427:
5283 #line 2152 "conf_parser.y" /* yacc.c:1646 */
5284 {
5285 block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
5286 }
5287 #line 5288 "conf_parser.c" /* yacc.c:1646 */
5288 break;
5289
5290 case 431:
5291 #line 2158 "conf_parser.y" /* yacc.c:1646 */
5292 {
5293 if (conf_parser_ctx.pass == 2)
5294 block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
5295 }
5296 #line 5297 "conf_parser.c" /* yacc.c:1646 */
5297 break;
5298
5299 case 432:
5300 #line 2162 "conf_parser.y" /* yacc.c:1646 */
5301 {
5302 if (conf_parser_ctx.pass == 2)
5303 block_state.flags.value |= CONF_FLAGS_SSL;
5304 }
5305 #line 5306 "conf_parser.c" /* yacc.c:1646 */
5306 break;
5307
5308 case 433:
5309 #line 2168 "conf_parser.y" /* yacc.c:1646 */
5310 {
5311 if (conf_parser_ctx.pass == 2)
5312 {
5313 if (yylval.number)
5314 block_state.flags.value |= CONF_FLAGS_ENCRYPTED;
5315 else
5316 block_state.flags.value &= ~CONF_FLAGS_ENCRYPTED;
5317 }
5318 }
5319 #line 5320 "conf_parser.c" /* yacc.c:1646 */
5320 break;
5321
5322 case 434:
5323 #line 2179 "conf_parser.y" /* yacc.c:1646 */
5324 {
5325 if (conf_parser_ctx.pass == 2)
5326 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
5327 }
5328 #line 5329 "conf_parser.c" /* yacc.c:1646 */
5329 break;
5330
5331 case 435:
5332 #line 2185 "conf_parser.y" /* yacc.c:1646 */
5333 {
5334 if (conf_parser_ctx.pass == 2)
5335 dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
5336 }
5337 #line 5338 "conf_parser.c" /* yacc.c:1646 */
5338 break;
5339
5340 case 436:
5341 #line 2191 "conf_parser.y" /* yacc.c:1646 */
5342 {
5343 if (conf_parser_ctx.pass == 2)
5344 strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
5345 }
5346 #line 5347 "conf_parser.c" /* yacc.c:1646 */
5347 break;
5348
5349 case 437:
5350 #line 2197 "conf_parser.y" /* yacc.c:1646 */
5351 {
5352 #ifdef HAVE_TLS
5353 if (conf_parser_ctx.pass == 2)
5354 strlcpy(block_state.ciph.buf, yylval.string, sizeof(block_state.ciph.buf));
5355 #else
5356 if (conf_parser_ctx.pass == 2)
5357 conf_error_report("Ignoring connect::ciphers -- no TLS support");
5358 #endif
5359 }
5360 #line 5361 "conf_parser.c" /* yacc.c:1646 */
5361 break;
5362
5363 case 438:
5364 #line 2212 "conf_parser.y" /* yacc.c:1646 */
5365 {
5366 if (conf_parser_ctx.pass == 2)
5367 reset_block_state();
5368 }
5369 #line 5370 "conf_parser.c" /* yacc.c:1646 */
5370 break;
5371
5372 case 439:
5373 #line 2216 "conf_parser.y" /* yacc.c:1646 */
5374 {
5375 struct MaskItem *conf = NULL;
5376
5377 if (conf_parser_ctx.pass != 2)
5378 break;
5379
5380 if (!block_state.user.buf[0] ||
5381 !block_state.host.buf[0])
5382 break;
5383
5384 conf = conf_make(CONF_KLINE);
5385 conf->user = xstrdup(block_state.user.buf);
5386 conf->host = xstrdup(block_state.host.buf);
5387
5388 if (block_state.rpass.buf[0])
5389 conf->reason = xstrdup(block_state.rpass.buf);
5390 else
5391 conf->reason = xstrdup(CONF_NOREASON);
5392 add_conf_by_address(CONF_KLINE, conf);
5393 }
5394 #line 5395 "conf_parser.c" /* yacc.c:1646 */
5395 break;
5396
5397 case 445:
5398 #line 2241 "conf_parser.y" /* yacc.c:1646 */
5399 {
5400
5401 if (conf_parser_ctx.pass == 2)
5402 {
5403 struct split_nuh_item nuh;
5404
5405 nuh.nuhmask = yylval.string;
5406 nuh.nickptr = NULL;
5407 nuh.userptr = block_state.user.buf;
5408 nuh.hostptr = block_state.host.buf;
5409
5410 nuh.nicksize = 0;
5411 nuh.usersize = sizeof(block_state.user.buf);
5412 nuh.hostsize = sizeof(block_state.host.buf);
5413
5414 split_nuh(&nuh);
5415 }
5416 }
5417 #line 5418 "conf_parser.c" /* yacc.c:1646 */
5418 break;
5419
5420 case 446:
5421 #line 2261 "conf_parser.y" /* yacc.c:1646 */
5422 {
5423 if (conf_parser_ctx.pass == 2)
5424 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5425 }
5426 #line 5427 "conf_parser.c" /* yacc.c:1646 */
5427 break;
5428
5429 case 447:
5430 #line 2271 "conf_parser.y" /* yacc.c:1646 */
5431 {
5432 if (conf_parser_ctx.pass == 2)
5433 reset_block_state();
5434 }
5435 #line 5436 "conf_parser.c" /* yacc.c:1646 */
5436 break;
5437
5438 case 448:
5439 #line 2275 "conf_parser.y" /* yacc.c:1646 */
5440 {
5441 struct MaskItem *conf = NULL;
5442
5443 if (conf_parser_ctx.pass != 2)
5444 break;
5445
5446 if (!block_state.addr.buf[0])
5447 break;
5448
5449 if (parse_netmask(block_state.addr.buf, NULL, NULL) != HM_HOST)
5450 {
5451 conf = conf_make(CONF_DLINE);
5452 conf->host = xstrdup(block_state.addr.buf);
5453
5454 if (block_state.rpass.buf[0])
5455 conf->reason = xstrdup(block_state.rpass.buf);
5456 else
5457 conf->reason = xstrdup(CONF_NOREASON);
5458 add_conf_by_address(CONF_DLINE, conf);
5459 }
5460 }
5461 #line 5462 "conf_parser.c" /* yacc.c:1646 */
5462 break;
5463
5464 case 454:
5465 #line 2301 "conf_parser.y" /* yacc.c:1646 */
5466 {
5467 if (conf_parser_ctx.pass == 2)
5468 strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
5469 }
5470 #line 5471 "conf_parser.c" /* yacc.c:1646 */
5471 break;
5472
5473 case 455:
5474 #line 2307 "conf_parser.y" /* yacc.c:1646 */
5475 {
5476 if (conf_parser_ctx.pass == 2)
5477 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5478 }
5479 #line 5480 "conf_parser.c" /* yacc.c:1646 */
5480 break;
5481
5482 case 461:
5483 #line 2322 "conf_parser.y" /* yacc.c:1646 */
5484 {
5485 if (conf_parser_ctx.pass == 2)
5486 {
5487 if (*yylval.string && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
5488 {
5489 struct MaskItem *conf = conf_make(CONF_EXEMPT);
5490 conf->host = xstrdup(yylval.string);
5491
5492 add_conf_by_address(CONF_EXEMPT, conf);
5493 }
5494 }
5495 }
5496 #line 5497 "conf_parser.c" /* yacc.c:1646 */
5497 break;
5498
5499 case 462:
5500 #line 2339 "conf_parser.y" /* yacc.c:1646 */
5501 {
5502 if (conf_parser_ctx.pass == 2)
5503 reset_block_state();
5504 }
5505 #line 5506 "conf_parser.c" /* yacc.c:1646 */
5506 break;
5507
5508 case 463:
5509 #line 2343 "conf_parser.y" /* yacc.c:1646 */
5510 {
5511 struct MaskItem *conf = NULL;
5512
5513 if (conf_parser_ctx.pass != 2)
5514 break;
5515
5516 if (!block_state.name.buf[0])
5517 break;
5518
5519 conf = conf_make(CONF_XLINE);
5520 conf->name = xstrdup(block_state.name.buf);
5521
5522 if (block_state.rpass.buf[0])
5523 conf->reason = xstrdup(block_state.rpass.buf);
5524 else
5525 conf->reason = xstrdup(CONF_NOREASON);
5526 }
5527 #line 5528 "conf_parser.c" /* yacc.c:1646 */
5528 break;
5529
5530 case 469:
5531 #line 2365 "conf_parser.y" /* yacc.c:1646 */
5532 {
5533 if (conf_parser_ctx.pass == 2)
5534 strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
5535 }
5536 #line 5537 "conf_parser.c" /* yacc.c:1646 */
5537 break;
5538
5539 case 470:
5540 #line 2371 "conf_parser.y" /* yacc.c:1646 */
5541 {
5542 if (conf_parser_ctx.pass == 2)
5543 strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
5544 }
5545 #line 5546 "conf_parser.c" /* yacc.c:1646 */
5546 break;
5547
5548 case 520:
5549 #line 2432 "conf_parser.y" /* yacc.c:1646 */
5550 {
5551 ConfigGeneral.away_count = (yyvsp[-1].number);
5552 }
5553 #line 5554 "conf_parser.c" /* yacc.c:1646 */
5554 break;
5555
5556 case 521:
5557 #line 2437 "conf_parser.y" /* yacc.c:1646 */
5558 {
5559 ConfigGeneral.away_time = (yyvsp[-1].number);
5560 }
5561 #line 5562 "conf_parser.c" /* yacc.c:1646 */
5562 break;
5563
5564 case 522:
5565 #line 2442 "conf_parser.y" /* yacc.c:1646 */
5566 {
5567 ConfigGeneral.max_watch = (yyvsp[-1].number);
5568 }
5569 #line 5570 "conf_parser.c" /* yacc.c:1646 */
5570 break;
5571
5572 case 523:
5573 #line 2447 "conf_parser.y" /* yacc.c:1646 */
5574 {
5575 if (conf_parser_ctx.pass == 2)
5576 ConfigGeneral.cycle_on_host_change = yylval.number;
5577 }
5578 #line 5579 "conf_parser.c" /* yacc.c:1646 */
5579 break;
5580
5581 case 524:
5582 #line 2453 "conf_parser.y" /* yacc.c:1646 */
5583 {
5584 ConfigGeneral.dline_min_cidr = (yyvsp[-1].number);
5585 }
5586 #line 5587 "conf_parser.c" /* yacc.c:1646 */
5587 break;
5588
5589 case 525:
5590 #line 2458 "conf_parser.y" /* yacc.c:1646 */
5591 {
5592 ConfigGeneral.dline_min_cidr6 = (yyvsp[-1].number);
5593 }
5594 #line 5595 "conf_parser.c" /* yacc.c:1646 */
5595 break;
5596
5597 case 526:
5598 #line 2463 "conf_parser.y" /* yacc.c:1646 */
5599 {
5600 ConfigGeneral.kline_min_cidr = (yyvsp[-1].number);
5601 }
5602 #line 5603 "conf_parser.c" /* yacc.c:1646 */
5603 break;
5604
5605 case 527:
5606 #line 2468 "conf_parser.y" /* yacc.c:1646 */
5607 {
5608 ConfigGeneral.kline_min_cidr6 = (yyvsp[-1].number);
5609 }
5610 #line 5611 "conf_parser.c" /* yacc.c:1646 */
5611 break;
5612
5613 case 528:
5614 #line 2473 "conf_parser.y" /* yacc.c:1646 */
5615 {
5616 ConfigGeneral.tkline_expire_notices = yylval.number;
5617 }
5618 #line 5619 "conf_parser.c" /* yacc.c:1646 */
5619 break;
5620
5621 case 529:
5622 #line 2478 "conf_parser.y" /* yacc.c:1646 */
5623 {
5624 ConfigGeneral.kill_chase_time_limit = (yyvsp[-1].number);
5625 }
5626 #line 5627 "conf_parser.c" /* yacc.c:1646 */
5627 break;
5628
5629 case 530:
5630 #line 2483 "conf_parser.y" /* yacc.c:1646 */
5631 {
5632 ConfigGeneral.ignore_bogus_ts = yylval.number;
5633 }
5634 #line 5635 "conf_parser.c" /* yacc.c:1646 */
5635 break;
5636
5637 case 531:
5638 #line 2488 "conf_parser.y" /* yacc.c:1646 */
5639 {
5640 ConfigGeneral.failed_oper_notice = yylval.number;
5641 }
5642 #line 5643 "conf_parser.c" /* yacc.c:1646 */
5643 break;
5644
5645 case 532:
5646 #line 2493 "conf_parser.y" /* yacc.c:1646 */
5647 {
5648 ConfigGeneral.anti_nick_flood = yylval.number;
5649 }
5650 #line 5651 "conf_parser.c" /* yacc.c:1646 */
5651 break;
5652
5653 case 533:
5654 #line 2498 "conf_parser.y" /* yacc.c:1646 */
5655 {
5656 ConfigGeneral.max_nick_time = (yyvsp[-1].number);
5657 }
5658 #line 5659 "conf_parser.c" /* yacc.c:1646 */
5659 break;
5660
5661 case 534:
5662 #line 2503 "conf_parser.y" /* yacc.c:1646 */
5663 {
5664 ConfigGeneral.max_nick_changes = (yyvsp[-1].number);
5665 }
5666 #line 5667 "conf_parser.c" /* yacc.c:1646 */
5667 break;
5668
5669 case 535:
5670 #line 2508 "conf_parser.y" /* yacc.c:1646 */
5671 {
5672 ConfigGeneral.max_accept = (yyvsp[-1].number);
5673 }
5674 #line 5675 "conf_parser.c" /* yacc.c:1646 */
5675 break;
5676
5677 case 536:
5678 #line 2513 "conf_parser.y" /* yacc.c:1646 */
5679 {
5680 ConfigGeneral.anti_spam_exit_message_time = (yyvsp[-1].number);
5681 }
5682 #line 5683 "conf_parser.c" /* yacc.c:1646 */
5683 break;
5684
5685 case 537:
5686 #line 2518 "conf_parser.y" /* yacc.c:1646 */
5687 {
5688 ConfigGeneral.ts_warn_delta = (yyvsp[-1].number);
5689 }
5690 #line 5691 "conf_parser.c" /* yacc.c:1646 */
5691 break;
5692
5693 case 538:
5694 #line 2523 "conf_parser.y" /* yacc.c:1646 */
5695 {
5696 if (conf_parser_ctx.pass == 2)
5697 ConfigGeneral.ts_max_delta = (yyvsp[-1].number);
5698 }
5699 #line 5700 "conf_parser.c" /* yacc.c:1646 */
5700 break;
5701
5702 case 539:
5703 #line 2529 "conf_parser.y" /* yacc.c:1646 */
5704 {
5705 ConfigGeneral.invisible_on_connect = yylval.number;
5706 }
5707 #line 5708 "conf_parser.c" /* yacc.c:1646 */
5708 break;
5709
5710 case 540:
5711 #line 2534 "conf_parser.y" /* yacc.c:1646 */
5712 {
5713 ConfigGeneral.warn_no_connect_block = yylval.number;
5714 }
5715 #line 5716 "conf_parser.c" /* yacc.c:1646 */
5716 break;
5717
5718 case 541:
5719 #line 2539 "conf_parser.y" /* yacc.c:1646 */
5720 {
5721 ConfigGeneral.stats_e_disabled = yylval.number;
5722 }
5723 #line 5724 "conf_parser.c" /* yacc.c:1646 */
5724 break;
5725
5726 case 542:
5727 #line 2544 "conf_parser.y" /* yacc.c:1646 */
5728 {
5729 ConfigGeneral.stats_m_oper_only = yylval.number;
5730 }
5731 #line 5732 "conf_parser.c" /* yacc.c:1646 */
5732 break;
5733
5734 case 543:
5735 #line 2549 "conf_parser.y" /* yacc.c:1646 */
5736 {
5737 ConfigGeneral.stats_o_oper_only = yylval.number;
5738 }
5739 #line 5740 "conf_parser.c" /* yacc.c:1646 */
5740 break;
5741
5742 case 544:
5743 #line 2554 "conf_parser.y" /* yacc.c:1646 */
5744 {
5745 ConfigGeneral.stats_P_oper_only = yylval.number;
5746 }
5747 #line 5748 "conf_parser.c" /* yacc.c:1646 */
5748 break;
5749
5750 case 545:
5751 #line 2559 "conf_parser.y" /* yacc.c:1646 */
5752 {
5753 ConfigGeneral.stats_u_oper_only = yylval.number;
5754 }
5755 #line 5756 "conf_parser.c" /* yacc.c:1646 */
5756 break;
5757
5758 case 546:
5759 #line 2564 "conf_parser.y" /* yacc.c:1646 */
5760 {
5761 ConfigGeneral.stats_k_oper_only = 2 * yylval.number;
5762 }
5763 #line 5764 "conf_parser.c" /* yacc.c:1646 */
5764 break;
5765
5766 case 547:
5767 #line 2567 "conf_parser.y" /* yacc.c:1646 */
5768 {
5769 ConfigGeneral.stats_k_oper_only = 1;
5770 }
5771 #line 5772 "conf_parser.c" /* yacc.c:1646 */
5772 break;
5773
5774 case 548:
5775 #line 2572 "conf_parser.y" /* yacc.c:1646 */
5776 {
5777 ConfigGeneral.stats_i_oper_only = 2 * yylval.number;
5778 }
5779 #line 5780 "conf_parser.c" /* yacc.c:1646 */
5780 break;
5781
5782 case 549:
5783 #line 2575 "conf_parser.y" /* yacc.c:1646 */
5784 {
5785 ConfigGeneral.stats_i_oper_only = 1;
5786 }
5787 #line 5788 "conf_parser.c" /* yacc.c:1646 */
5788 break;
5789
5790 case 550:
5791 #line 2580 "conf_parser.y" /* yacc.c:1646 */
5792 {
5793 ConfigGeneral.pace_wait = (yyvsp[-1].number);
5794 }
5795 #line 5796 "conf_parser.c" /* yacc.c:1646 */
5796 break;
5797
5798 case 551:
5799 #line 2585 "conf_parser.y" /* yacc.c:1646 */
5800 {
5801 ConfigGeneral.caller_id_wait = (yyvsp[-1].number);
5802 }
5803 #line 5804 "conf_parser.c" /* yacc.c:1646 */
5804 break;
5805
5806 case 552:
5807 #line 2590 "conf_parser.y" /* yacc.c:1646 */
5808 {
5809 ConfigGeneral.opers_bypass_callerid = yylval.number;
5810 }
5811 #line 5812 "conf_parser.c" /* yacc.c:1646 */
5812 break;
5813
5814 case 553:
5815 #line 2595 "conf_parser.y" /* yacc.c:1646 */
5816 {
5817 ConfigGeneral.pace_wait_simple = (yyvsp[-1].number);
5818 }
5819 #line 5820 "conf_parser.c" /* yacc.c:1646 */
5820 break;
5821
5822 case 554:
5823 #line 2600 "conf_parser.y" /* yacc.c:1646 */
5824 {
5825 ConfigGeneral.short_motd = yylval.number;
5826 }
5827 #line 5828 "conf_parser.c" /* yacc.c:1646 */
5828 break;
5829
5830 case 555:
5831 #line 2605 "conf_parser.y" /* yacc.c:1646 */
5832 {
5833 ConfigGeneral.no_oper_flood = yylval.number;
5834 }
5835 #line 5836 "conf_parser.c" /* yacc.c:1646 */
5836 break;
5837
5838 case 556:
5839 #line 2610 "conf_parser.y" /* yacc.c:1646 */
5840 {
5841 ConfigGeneral.dots_in_ident = (yyvsp[-1].number);
5842 }
5843 #line 5844 "conf_parser.c" /* yacc.c:1646 */
5844 break;
5845
5846 case 557:
5847 #line 2615 "conf_parser.y" /* yacc.c:1646 */
5848 {
5849 ConfigGeneral.max_targets = (yyvsp[-1].number);
5850 }
5851 #line 5852 "conf_parser.c" /* yacc.c:1646 */
5852 break;
5853
5854 case 558:
5855 #line 2620 "conf_parser.y" /* yacc.c:1646 */
5856 {
5857 ConfigGeneral.ping_cookie = yylval.number;
5858 }
5859 #line 5860 "conf_parser.c" /* yacc.c:1646 */
5860 break;
5861
5862 case 559:
5863 #line 2625 "conf_parser.y" /* yacc.c:1646 */
5864 {
5865 ConfigGeneral.disable_auth = yylval.number;
5866 }
5867 #line 5868 "conf_parser.c" /* yacc.c:1646 */
5868 break;
5869
5870 case 560:
5871 #line 2630 "conf_parser.y" /* yacc.c:1646 */
5872 {
5873 ConfigGeneral.throttle_count = (yyvsp[-1].number);
5874 }
5875 #line 5876 "conf_parser.c" /* yacc.c:1646 */
5876 break;
5877
5878 case 561:
5879 #line 2635 "conf_parser.y" /* yacc.c:1646 */
5880 {
5881 ConfigGeneral.throttle_time = (yyvsp[-1].number);
5882 }
5883 #line 5884 "conf_parser.c" /* yacc.c:1646 */
5884 break;
5885
5886 case 562:
5887 #line 2640 "conf_parser.y" /* yacc.c:1646 */
5888 {
5889 ConfigGeneral.oper_umodes = 0;
5890 }
5891 #line 5892 "conf_parser.c" /* yacc.c:1646 */
5892 break;
5893
5894 case 566:
5895 #line 2646 "conf_parser.y" /* yacc.c:1646 */
5896 {
5897 ConfigGeneral.oper_umodes |= UMODE_BOTS;
5898 }
5899 #line 5900 "conf_parser.c" /* yacc.c:1646 */
5900 break;
5901
5902 case 567:
5903 #line 2649 "conf_parser.y" /* yacc.c:1646 */
5904 {
5905 ConfigGeneral.oper_umodes |= UMODE_CCONN;
5906 }
5907 #line 5908 "conf_parser.c" /* yacc.c:1646 */
5908 break;
5909
5910 case 568:
5911 #line 2652 "conf_parser.y" /* yacc.c:1646 */
5912 {
5913 ConfigGeneral.oper_umodes |= UMODE_DEAF;
5914 }
5915 #line 5916 "conf_parser.c" /* yacc.c:1646 */
5916 break;
5917
5918 case 569:
5919 #line 2655 "conf_parser.y" /* yacc.c:1646 */
5920 {
5921 ConfigGeneral.oper_umodes |= UMODE_DEBUG;
5922 }
5923 #line 5924 "conf_parser.c" /* yacc.c:1646 */
5924 break;
5925
5926 case 570:
5927 #line 2658 "conf_parser.y" /* yacc.c:1646 */
5928 {
5929 ConfigGeneral.oper_umodes |= UMODE_FULL;
5930 }
5931 #line 5932 "conf_parser.c" /* yacc.c:1646 */
5932 break;
5933
5934 case 571:
5935 #line 2661 "conf_parser.y" /* yacc.c:1646 */
5936 {
5937 ConfigGeneral.oper_umodes |= UMODE_HIDDEN;
5938 }
5939 #line 5940 "conf_parser.c" /* yacc.c:1646 */
5940 break;
5941
5942 case 572:
5943 #line 2664 "conf_parser.y" /* yacc.c:1646 */
5944 {
5945 ConfigGeneral.oper_umodes |= UMODE_HIDECHANS;
5946 }
5947 #line 5948 "conf_parser.c" /* yacc.c:1646 */
5948 break;
5949
5950 case 573:
5951 #line 2667 "conf_parser.y" /* yacc.c:1646 */
5952 {
5953 ConfigGeneral.oper_umodes |= UMODE_HIDEIDLE;
5954 }
5955 #line 5956 "conf_parser.c" /* yacc.c:1646 */
5956 break;
5957
5958 case 574:
5959 #line 2670 "conf_parser.y" /* yacc.c:1646 */
5960 {
5961 ConfigGeneral.oper_umodes |= UMODE_SKILL;
5962 }
5963 #line 5964 "conf_parser.c" /* yacc.c:1646 */
5964 break;
5965
5966 case 575:
5967 #line 2673 "conf_parser.y" /* yacc.c:1646 */
5968 {
5969 ConfigGeneral.oper_umodes |= UMODE_NCHANGE;
5970 }
5971 #line 5972 "conf_parser.c" /* yacc.c:1646 */
5972 break;
5973
5974 case 576:
5975 #line 2676 "conf_parser.y" /* yacc.c:1646 */
5976 {
5977 ConfigGeneral.oper_umodes |= UMODE_REJ;
5978 }
5979 #line 5980 "conf_parser.c" /* yacc.c:1646 */
5980 break;
5981
5982 case 577:
5983 #line 2679 "conf_parser.y" /* yacc.c:1646 */
5984 {
5985 ConfigGeneral.oper_umodes |= UMODE_UNAUTH;
5986 }
5987 #line 5988 "conf_parser.c" /* yacc.c:1646 */
5988 break;
5989
5990 case 578:
5991 #line 2682 "conf_parser.y" /* yacc.c:1646 */
5992 {
5993 ConfigGeneral.oper_umodes |= UMODE_SPY;
5994 }
5995 #line 5996 "conf_parser.c" /* yacc.c:1646 */
5996 break;
5997
5998 case 579:
5999 #line 2685 "conf_parser.y" /* yacc.c:1646 */
6000 {
6001 ConfigGeneral.oper_umodes |= UMODE_EXTERNAL;
6002 }
6003 #line 6004 "conf_parser.c" /* yacc.c:1646 */
6004 break;
6005
6006 case 580:
6007 #line 2688 "conf_parser.y" /* yacc.c:1646 */
6008 {
6009 ConfigGeneral.oper_umodes |= UMODE_SERVNOTICE;
6010 }
6011 #line 6012 "conf_parser.c" /* yacc.c:1646 */
6012 break;
6013
6014 case 581:
6015 #line 2691 "conf_parser.y" /* yacc.c:1646 */
6016 {
6017 ConfigGeneral.oper_umodes |= UMODE_INVISIBLE;
6018 }
6019 #line 6020 "conf_parser.c" /* yacc.c:1646 */
6020 break;
6021
6022 case 582:
6023 #line 2694 "conf_parser.y" /* yacc.c:1646 */
6024 {
6025 ConfigGeneral.oper_umodes |= UMODE_WALLOP;
6026 }
6027 #line 6028 "conf_parser.c" /* yacc.c:1646 */
6028 break;
6029
6030 case 583:
6031 #line 2697 "conf_parser.y" /* yacc.c:1646 */
6032 {
6033 ConfigGeneral.oper_umodes |= UMODE_SOFTCALLERID;
6034 }
6035 #line 6036 "conf_parser.c" /* yacc.c:1646 */
6036 break;
6037
6038 case 584:
6039 #line 2700 "conf_parser.y" /* yacc.c:1646 */
6040 {
6041 ConfigGeneral.oper_umodes |= UMODE_CALLERID;
6042 }
6043 #line 6044 "conf_parser.c" /* yacc.c:1646 */
6044 break;
6045
6046 case 585:
6047 #line 2703 "conf_parser.y" /* yacc.c:1646 */
6048 {
6049 ConfigGeneral.oper_umodes |= UMODE_LOCOPS;
6050 }
6051 #line 6052 "conf_parser.c" /* yacc.c:1646 */
6052 break;
6053
6054 case 586:
6055 #line 2706 "conf_parser.y" /* yacc.c:1646 */
6056 {
6057 ConfigGeneral.oper_umodes |= UMODE_REGONLY;
6058 }
6059 #line 6060 "conf_parser.c" /* yacc.c:1646 */
6060 break;
6061
6062 case 587:
6063 #line 2709 "conf_parser.y" /* yacc.c:1646 */
6064 {
6065 ConfigGeneral.oper_umodes |= UMODE_FARCONNECT;
6066 }
6067 #line 6068 "conf_parser.c" /* yacc.c:1646 */
6068 break;
6069
6070 case 588:
6071 #line 2714 "conf_parser.y" /* yacc.c:1646 */
6072 {
6073 ConfigGeneral.oper_only_umodes = 0;
6074 }
6075 #line 6076 "conf_parser.c" /* yacc.c:1646 */
6076 break;
6077
6078 case 592:
6079 #line 2720 "conf_parser.y" /* yacc.c:1646 */
6080 {
6081 ConfigGeneral.oper_only_umodes |= UMODE_BOTS;
6082 }
6083 #line 6084 "conf_parser.c" /* yacc.c:1646 */
6084 break;
6085
6086 case 593:
6087 #line 2723 "conf_parser.y" /* yacc.c:1646 */
6088 {
6089 ConfigGeneral.oper_only_umodes |= UMODE_CCONN;
6090 }
6091 #line 6092 "conf_parser.c" /* yacc.c:1646 */
6092 break;
6093
6094 case 594:
6095 #line 2726 "conf_parser.y" /* yacc.c:1646 */
6096 {
6097 ConfigGeneral.oper_only_umodes |= UMODE_DEAF;
6098 }
6099 #line 6100 "conf_parser.c" /* yacc.c:1646 */
6100 break;
6101
6102 case 595:
6103 #line 2729 "conf_parser.y" /* yacc.c:1646 */
6104 {
6105 ConfigGeneral.oper_only_umodes |= UMODE_DEBUG;
6106 }
6107 #line 6108 "conf_parser.c" /* yacc.c:1646 */
6108 break;
6109
6110 case 596:
6111 #line 2732 "conf_parser.y" /* yacc.c:1646 */
6112 {
6113 ConfigGeneral.oper_only_umodes |= UMODE_FULL;
6114 }
6115 #line 6116 "conf_parser.c" /* yacc.c:1646 */
6116 break;
6117
6118 case 597:
6119 #line 2735 "conf_parser.y" /* yacc.c:1646 */
6120 {
6121 ConfigGeneral.oper_only_umodes |= UMODE_SKILL;
6122 }
6123 #line 6124 "conf_parser.c" /* yacc.c:1646 */
6124 break;
6125
6126 case 598:
6127 #line 2738 "conf_parser.y" /* yacc.c:1646 */
6128 {
6129 ConfigGeneral.oper_only_umodes |= UMODE_HIDDEN;
6130 }
6131 #line 6132 "conf_parser.c" /* yacc.c:1646 */
6132 break;
6133
6134 case 599:
6135 #line 2741 "conf_parser.y" /* yacc.c:1646 */
6136 {
6137 ConfigGeneral.oper_only_umodes |= UMODE_NCHANGE;
6138 }
6139 #line 6140 "conf_parser.c" /* yacc.c:1646 */
6140 break;
6141
6142 case 600:
6143 #line 2744 "conf_parser.y" /* yacc.c:1646 */
6144 {
6145 ConfigGeneral.oper_only_umodes |= UMODE_REJ;
6146 }
6147 #line 6148 "conf_parser.c" /* yacc.c:1646 */
6148 break;
6149
6150 case 601:
6151 #line 2747 "conf_parser.y" /* yacc.c:1646 */
6152 {
6153 ConfigGeneral.oper_only_umodes |= UMODE_UNAUTH;
6154 }
6155 #line 6156 "conf_parser.c" /* yacc.c:1646 */
6156 break;
6157
6158 case 602:
6159 #line 2750 "conf_parser.y" /* yacc.c:1646 */
6160 {
6161 ConfigGeneral.oper_only_umodes |= UMODE_SPY;
6162 }
6163 #line 6164 "conf_parser.c" /* yacc.c:1646 */
6164 break;
6165
6166 case 603:
6167 #line 2753 "conf_parser.y" /* yacc.c:1646 */
6168 {
6169 ConfigGeneral.oper_only_umodes |= UMODE_EXTERNAL;
6170 }
6171 #line 6172 "conf_parser.c" /* yacc.c:1646 */
6172 break;
6173
6174 case 604:
6175 #line 2756 "conf_parser.y" /* yacc.c:1646 */
6176 {
6177 ConfigGeneral.oper_only_umodes |= UMODE_SERVNOTICE;
6178 }
6179 #line 6180 "conf_parser.c" /* yacc.c:1646 */
6180 break;
6181
6182 case 605:
6183 #line 2759 "conf_parser.y" /* yacc.c:1646 */
6184 {
6185 ConfigGeneral.oper_only_umodes |= UMODE_INVISIBLE;
6186 }
6187 #line 6188 "conf_parser.c" /* yacc.c:1646 */
6188 break;
6189
6190 case 606:
6191 #line 2762 "conf_parser.y" /* yacc.c:1646 */
6192 {
6193 ConfigGeneral.oper_only_umodes |= UMODE_WALLOP;
6194 }
6195 #line 6196 "conf_parser.c" /* yacc.c:1646 */
6196 break;
6197
6198 case 607:
6199 #line 2765 "conf_parser.y" /* yacc.c:1646 */
6200 {
6201 ConfigGeneral.oper_only_umodes |= UMODE_SOFTCALLERID;
6202 }
6203 #line 6204 "conf_parser.c" /* yacc.c:1646 */
6204 break;
6205
6206 case 608:
6207 #line 2768 "conf_parser.y" /* yacc.c:1646 */
6208 {
6209 ConfigGeneral.oper_only_umodes |= UMODE_CALLERID;
6210 }
6211 #line 6212 "conf_parser.c" /* yacc.c:1646 */
6212 break;
6213
6214 case 609:
6215 #line 2771 "conf_parser.y" /* yacc.c:1646 */
6216 {
6217 ConfigGeneral.oper_only_umodes |= UMODE_LOCOPS;
6218 }
6219 #line 6220 "conf_parser.c" /* yacc.c:1646 */
6220 break;
6221
6222 case 610:
6223 #line 2774 "conf_parser.y" /* yacc.c:1646 */
6224 {
6225 ConfigGeneral.oper_only_umodes |= UMODE_REGONLY;
6226 }
6227 #line 6228 "conf_parser.c" /* yacc.c:1646 */
6228 break;
6229
6230 case 611:
6231 #line 2777 "conf_parser.y" /* yacc.c:1646 */
6232 {
6233 ConfigGeneral.oper_only_umodes |= UMODE_FARCONNECT;
6234 }
6235 #line 6236 "conf_parser.c" /* yacc.c:1646 */
6236 break;
6237
6238 case 612:
6239 #line 2782 "conf_parser.y" /* yacc.c:1646 */
6240 {
6241 ConfigGeneral.min_nonwildcard = (yyvsp[-1].number);
6242 }
6243 #line 6244 "conf_parser.c" /* yacc.c:1646 */
6244 break;
6245
6246 case 613:
6247 #line 2787 "conf_parser.y" /* yacc.c:1646 */
6248 {
6249 ConfigGeneral.min_nonwildcard_simple = (yyvsp[-1].number);
6250 }
6251 #line 6252 "conf_parser.c" /* yacc.c:1646 */
6252 break;
6253
6254 case 614:
6255 #line 2792 "conf_parser.y" /* yacc.c:1646 */
6256 {
6257 ConfigGeneral.default_floodcount = (yyvsp[-1].number);
6258 }
6259 #line 6260 "conf_parser.c" /* yacc.c:1646 */
6260 break;
6261
6262 case 630:
6263 #line 2817 "conf_parser.y" /* yacc.c:1646 */
6264 {
6265 ConfigChannel.disable_fake_channels = yylval.number;
6266 }
6267 #line 6268 "conf_parser.c" /* yacc.c:1646 */
6268 break;
6269
6270 case 631:
6271 #line 2822 "conf_parser.y" /* yacc.c:1646 */
6272 {
6273 ConfigChannel.invite_client_count = (yyvsp[-1].number);
6274 }
6275 #line 6276 "conf_parser.c" /* yacc.c:1646 */
6276 break;
6277
6278 case 632:
6279 #line 2827 "conf_parser.y" /* yacc.c:1646 */
6280 {
6281 ConfigChannel.invite_client_time = (yyvsp[-1].number);
6282 }
6283 #line 6284 "conf_parser.c" /* yacc.c:1646 */
6284 break;
6285
6286 case 633:
6287 #line 2832 "conf_parser.y" /* yacc.c:1646 */
6288 {
6289 ConfigChannel.invite_delay_channel = (yyvsp[-1].number);
6290 }
6291 #line 6292 "conf_parser.c" /* yacc.c:1646 */
6292 break;
6293
6294 case 634:
6295 #line 2837 "conf_parser.y" /* yacc.c:1646 */
6296 {
6297 ConfigChannel.knock_client_count = (yyvsp[-1].number);
6298 }
6299 #line 6300 "conf_parser.c" /* yacc.c:1646 */
6300 break;
6301
6302 case 635:
6303 #line 2842 "conf_parser.y" /* yacc.c:1646 */
6304 {
6305 ConfigChannel.knock_client_time = (yyvsp[-1].number);
6306 }
6307 #line 6308 "conf_parser.c" /* yacc.c:1646 */
6308 break;
6309
6310 case 636:
6311 #line 2847 "conf_parser.y" /* yacc.c:1646 */
6312 {
6313 ConfigChannel.knock_delay_channel = (yyvsp[-1].number);
6314 }
6315 #line 6316 "conf_parser.c" /* yacc.c:1646 */
6316 break;
6317
6318 case 637:
6319 #line 2852 "conf_parser.y" /* yacc.c:1646 */
6320 {
6321 ConfigChannel.max_channels = (yyvsp[-1].number);
6322 }
6323 #line 6324 "conf_parser.c" /* yacc.c:1646 */
6324 break;
6325
6326 case 638:
6327 #line 2857 "conf_parser.y" /* yacc.c:1646 */
6328 {
6329 ConfigChannel.max_bans = (yyvsp[-1].number);
6330 }
6331 #line 6332 "conf_parser.c" /* yacc.c:1646 */
6332 break;
6333
6334 case 639:
6335 #line 2862 "conf_parser.y" /* yacc.c:1646 */
6336 {
6337 ConfigChannel.default_join_flood_count = yylval.number;
6338 }
6339 #line 6340 "conf_parser.c" /* yacc.c:1646 */
6340 break;
6341
6342 case 640:
6343 #line 2867 "conf_parser.y" /* yacc.c:1646 */
6344 {
6345 ConfigChannel.default_join_flood_time = (yyvsp[-1].number);
6346 }
6347 #line 6348 "conf_parser.c" /* yacc.c:1646 */
6348 break;
6349
6350 case 654:
6351 #line 2890 "conf_parser.y" /* yacc.c:1646 */
6352 {
6353 if (conf_parser_ctx.pass == 2)
6354 ConfigServerHide.flatten_links = yylval.number;
6355 }
6356 #line 6357 "conf_parser.c" /* yacc.c:1646 */
6357 break;
6358
6359 case 655:
6360 #line 2896 "conf_parser.y" /* yacc.c:1646 */
6361 {
6362 if (conf_parser_ctx.pass == 2)
6363 {
6364 if ((yyvsp[-1].number) > 0)
6365 {
6366 event_write_links_file.when = (yyvsp[-1].number);
6367 event_add(&event_write_links_file, NULL);
6368 }
6369 else
6370 event_delete(&event_write_links_file);
6371
6372 ConfigServerHide.flatten_links_delay = (yyvsp[-1].number);
6373 }
6374 }
6375 #line 6376 "conf_parser.c" /* yacc.c:1646 */
6376 break;
6377
6378 case 656:
6379 #line 2912 "conf_parser.y" /* yacc.c:1646 */
6380 {
6381 if (conf_parser_ctx.pass == 2)
6382 {
6383 xfree(ConfigServerHide.flatten_links_file);
6384 ConfigServerHide.flatten_links_file = xstrdup(yylval.string);
6385 }
6386 }
6387 #line 6388 "conf_parser.c" /* yacc.c:1646 */
6388 break;
6389
6390 case 657:
6391 #line 2921 "conf_parser.y" /* yacc.c:1646 */
6392 {
6393 if (conf_parser_ctx.pass == 2)
6394 ConfigServerHide.disable_remote_commands = yylval.number;
6395 }
6396 #line 6397 "conf_parser.c" /* yacc.c:1646 */
6397 break;
6398
6399 case 658:
6400 #line 2927 "conf_parser.y" /* yacc.c:1646 */
6401 {
6402 if (conf_parser_ctx.pass == 2)
6403 ConfigServerHide.hide_servers = yylval.number;
6404 }
6405 #line 6406 "conf_parser.c" /* yacc.c:1646 */
6406 break;
6407
6408 case 659:
6409 #line 2933 "conf_parser.y" /* yacc.c:1646 */
6410 {
6411 if (conf_parser_ctx.pass == 2)
6412 ConfigServerHide.hide_services = yylval.number;
6413 }
6414 #line 6415 "conf_parser.c" /* yacc.c:1646 */
6415 break;
6416
6417 case 660:
6418 #line 2939 "conf_parser.y" /* yacc.c:1646 */
6419 {
6420 if (conf_parser_ctx.pass == 2)
6421 {
6422 xfree(ConfigServerHide.hidden_name);
6423 ConfigServerHide.hidden_name = xstrdup(yylval.string);
6424 }
6425 }
6426 #line 6427 "conf_parser.c" /* yacc.c:1646 */
6427 break;
6428
6429 case 661:
6430 #line 2948 "conf_parser.y" /* yacc.c:1646 */
6431 {
6432 if (conf_parser_ctx.pass == 2)
6433 ConfigServerHide.hidden = yylval.number;
6434 }
6435 #line 6436 "conf_parser.c" /* yacc.c:1646 */
6436 break;
6437
6438 case 662:
6439 #line 2954 "conf_parser.y" /* yacc.c:1646 */
6440 {
6441 if (conf_parser_ctx.pass == 2)
6442 ConfigServerHide.hide_server_ips = yylval.number;
6443 }
6444 #line 6445 "conf_parser.c" /* yacc.c:1646 */
6445 break;
6446
6447
6448 #line 6449 "conf_parser.c" /* yacc.c:1646 */
6449 default: break;
6450 }
6451 /* User semantic actions sometimes alter yychar, and that requires
6452 that yytoken be updated with the new translation. We take the
6453 approach of translating immediately before every use of yytoken.
6454 One alternative is translating here after every semantic action,
6455 but that translation would be missed if the semantic action invokes
6456 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
6457 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
6458 incorrect destructor might then be invoked immediately. In the
6459 case of YYERROR or YYBACKUP, subsequent parser actions might lead
6460 to an incorrect destructor call or verbose syntax error message
6461 before the lookahead is translated. */
6462 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
6463
6464 YYPOPSTACK (yylen);
6465 yylen = 0;
6466 YY_STACK_PRINT (yyss, yyssp);
6467
6468 *++yyvsp = yyval;
6469
6470 /* Now 'shift' the result of the reduction. Determine what state
6471 that goes to, based on the state we popped back to and the rule
6472 number reduced by. */
6473
6474 yyn = yyr1[yyn];
6475
6476 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
6477 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
6478 yystate = yytable[yystate];
6479 else
6480 yystate = yydefgoto[yyn - YYNTOKENS];
6481
6482 goto yynewstate;
6483
6484
6485 /*--------------------------------------.
6486 | yyerrlab -- here on detecting error. |
6487 `--------------------------------------*/
6488 yyerrlab:
6489 /* Make sure we have latest lookahead translation. See comments at
6490 user semantic actions for why this is necessary. */
6491 yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
6492
6493 /* If not already recovering from an error, report this error. */
6494 if (!yyerrstatus)
6495 {
6496 ++yynerrs;
6497 #if ! YYERROR_VERBOSE
6498 yyerror (YY_("syntax error"));
6499 #else
6500 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
6501 yyssp, yytoken)
6502 {
6503 char const *yymsgp = YY_("syntax error");
6504 int yysyntax_error_status;
6505 yysyntax_error_status = YYSYNTAX_ERROR;
6506 if (yysyntax_error_status == 0)
6507 yymsgp = yymsg;
6508 else if (yysyntax_error_status == 1)
6509 {
6510 if (yymsg != yymsgbuf)
6511 YYSTACK_FREE (yymsg);
6512 yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
6513 if (!yymsg)
6514 {
6515 yymsg = yymsgbuf;
6516 yymsg_alloc = sizeof yymsgbuf;
6517 yysyntax_error_status = 2;
6518 }
6519 else
6520 {
6521 yysyntax_error_status = YYSYNTAX_ERROR;
6522 yymsgp = yymsg;
6523 }
6524 }
6525 yyerror (yymsgp);
6526 if (yysyntax_error_status == 2)
6527 goto yyexhaustedlab;
6528 }
6529 # undef YYSYNTAX_ERROR
6530 #endif
6531 }
6532
6533
6534
6535 if (yyerrstatus == 3)
6536 {
6537 /* If just tried and failed to reuse lookahead token after an
6538 error, discard it. */
6539
6540 if (yychar <= YYEOF)
6541 {
6542 /* Return failure if at end of input. */
6543 if (yychar == YYEOF)
6544 YYABORT;
6545 }
6546 else
6547 {
6548 yydestruct ("Error: discarding",
6549 yytoken, &yylval);
6550 yychar = YYEMPTY;
6551 }
6552 }
6553
6554 /* Else will try to reuse lookahead token after shifting the error
6555 token. */
6556 goto yyerrlab1;
6557
6558
6559 /*---------------------------------------------------.
6560 | yyerrorlab -- error raised explicitly by YYERROR. |
6561 `---------------------------------------------------*/
6562 yyerrorlab:
6563
6564 /* Pacify compilers like GCC when the user code never invokes
6565 YYERROR and the label yyerrorlab therefore never appears in user
6566 code. */
6567 if (/*CONSTCOND*/ 0)
6568 goto yyerrorlab;
6569
6570 /* Do not reclaim the symbols of the rule whose action triggered
6571 this YYERROR. */
6572 YYPOPSTACK (yylen);
6573 yylen = 0;
6574 YY_STACK_PRINT (yyss, yyssp);
6575 yystate = *yyssp;
6576 goto yyerrlab1;
6577
6578
6579 /*-------------------------------------------------------------.
6580 | yyerrlab1 -- common code for both syntax error and YYERROR. |
6581 `-------------------------------------------------------------*/
6582 yyerrlab1:
6583 yyerrstatus = 3; /* Each real token shifted decrements this. */
6584
6585 for (;;)
6586 {
6587 yyn = yypact[yystate];
6588 if (!yypact_value_is_default (yyn))
6589 {
6590 yyn += YYTERROR;
6591 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
6592 {
6593 yyn = yytable[yyn];
6594 if (0 < yyn)
6595 break;
6596 }
6597 }
6598
6599 /* Pop the current state because it cannot handle the error token. */
6600 if (yyssp == yyss)
6601 YYABORT;
6602
6603
6604 yydestruct ("Error: popping",
6605 yystos[yystate], yyvsp);
6606 YYPOPSTACK (1);
6607 yystate = *yyssp;
6608 YY_STACK_PRINT (yyss, yyssp);
6609 }
6610
6611 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6612 *++yyvsp = yylval;
6613 YY_IGNORE_MAYBE_UNINITIALIZED_END
6614
6615
6616 /* Shift the error token. */
6617 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
6618
6619 yystate = yyn;
6620 goto yynewstate;
6621
6622
6623 /*-------------------------------------.
6624 | yyacceptlab -- YYACCEPT comes here. |
6625 `-------------------------------------*/
6626 yyacceptlab:
6627 yyresult = 0;
6628 goto yyreturn;
6629
6630 /*-----------------------------------.
6631 | yyabortlab -- YYABORT comes here. |
6632 `-----------------------------------*/
6633 yyabortlab:
6634 yyresult = 1;
6635 goto yyreturn;
6636
6637 #if !defined yyoverflow || YYERROR_VERBOSE
6638 /*-------------------------------------------------.
6639 | yyexhaustedlab -- memory exhaustion comes here. |
6640 `-------------------------------------------------*/
6641 yyexhaustedlab:
6642 yyerror (YY_("memory exhausted"));
6643 yyresult = 2;
6644 /* Fall through. */
6645 #endif
6646
6647 yyreturn:
6648 if (yychar != YYEMPTY)
6649 {
6650 /* Make sure we have latest lookahead translation. See comments at
6651 user semantic actions for why this is necessary. */
6652 yytoken = YYTRANSLATE (yychar);
6653 yydestruct ("Cleanup: discarding lookahead",
6654 yytoken, &yylval);
6655 }
6656 /* Do not reclaim the symbols of the rule whose action triggered
6657 this YYABORT or YYACCEPT. */
6658 YYPOPSTACK (yylen);
6659 YY_STACK_PRINT (yyss, yyssp);
6660 while (yyssp != yyss)
6661 {
6662 yydestruct ("Cleanup: popping",
6663 yystos[*yyssp], yyvsp);
6664 YYPOPSTACK (1);
6665 }
6666 #ifndef yyoverflow
6667 if (yyss != yyssa)
6668 YYSTACK_FREE (yyss);
6669 #endif
6670 #if YYERROR_VERBOSE
6671 if (yymsg != yymsgbuf)
6672 YYSTACK_FREE (yymsg);
6673 #endif
6674 return yyresult;
6675 }

Properties

Name Value
svn:eol-style native
svn:keywords Id Revision