ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 8760
Committed: Tue Jan 1 14:46:52 2019 UTC (6 years, 7 months ago) by michael
Content type: text/x-csrc
File size: 220249 byte(s)
Log Message:
- Recreate autogenerated files

File Contents

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

Properties

Name Value
svn:eol-style native