ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 9225
Committed: Sun Jan 26 14:00:16 2020 UTC (5 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 217774 byte(s)
Log Message:
- Re-create parser files

File Contents

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

Properties

Name Value
svn:eol-style native