ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 1072
Committed: Wed Feb 17 22:58:23 2010 UTC (15 years, 6 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.3/src/ircd_parser.c
File size: 258072 byte(s)
Log Message:
- remove old dot_in_ip6_addr configuration option. this is now obsolete.

File Contents

# Content
1
2 /* A Bison parser, made by GNU Bison 2.4.1. */
3
4 /* Skeleton implementation for Bison's Yacc-like parsers in C
5
6 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
7 Free Software Foundation, Inc.
8
9 This program is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
21
22 /* As a special exception, you may create a larger work that contains
23 part or all of the Bison parser skeleton and distribute that work
24 under terms of your choice, so long as that work isn't itself a
25 parser generator using the skeleton or a modified version thereof
26 as a parser skeleton. Alternatively, if you modify or redistribute
27 the parser skeleton itself, you may (at your option) remove this
28 special exception, which will cause the skeleton and the resulting
29 Bison output files to be licensed under the GNU General Public
30 License without this special exception.
31
32 This special exception was added by the Free Software Foundation in
33 version 2.2 of Bison. */
34
35 /* C LALR(1) parser skeleton written by Richard Stallman, by
36 simplifying the original so-called "semantic" parser. */
37
38 /* All symbols defined below should begin with yy or YY, to avoid
39 infringing on user name space. This should be done even for local
40 variables, as they might otherwise be expanded by user macros.
41 There are some unavoidable exceptions within include files to
42 define necessary library symbols; they are noted "INFRINGES ON
43 USER NAME SPACE" below. */
44
45 /* Identify Bison output. */
46 #define YYBISON 1
47
48 /* Bison version. */
49 #define YYBISON_VERSION "2.4.1"
50
51 /* Skeleton name. */
52 #define YYSKELETON_NAME "yacc.c"
53
54 /* Pure parsers. */
55 #define YYPURE 0
56
57 /* Push parsers. */
58 #define YYPUSH 0
59
60 /* Pull parsers. */
61 #define YYPULL 1
62
63 /* Using locations. */
64 #define YYLSP_NEEDED 0
65
66
67
68 /* Copy the first part of user declarations. */
69
70 /* Line 189 of yacc.c */
71 #line 25 "ircd_parser.y"
72
73
74 #define YY_NO_UNPUT
75 #include <sys/types.h>
76 #include <string.h>
77
78 #include "config.h"
79 #include "stdinc.h"
80 #include "ircd.h"
81 #include "list.h"
82 #include "s_conf.h"
83 #include "event.h"
84 #include "s_log.h"
85 #include "client.h" /* for UMODE_ALL only */
86 #include "irc_string.h"
87 #include "irc_getaddrinfo.h"
88 #include "sprintf_irc.h"
89 #include "memory.h"
90 #include "modules.h"
91 #include "s_serv.h"
92 #include "hostmask.h"
93 #include "send.h"
94 #include "listener.h"
95 #include "resv.h"
96 #include "numeric.h"
97 #include "s_user.h"
98
99 #ifdef HAVE_LIBCRYPTO
100 #include <openssl/rsa.h>
101 #include <openssl/bio.h>
102 #include <openssl/pem.h>
103 #endif
104
105 static char *class_name = NULL;
106 static struct ConfItem *yy_conf = NULL;
107 static struct AccessItem *yy_aconf = NULL;
108 static struct MatchItem *yy_match_item = NULL;
109 static struct ClassItem *yy_class = NULL;
110 static char *yy_class_name = NULL;
111
112 static dlink_list col_conf_list = { NULL, NULL, 0 };
113 static dlink_list hub_conf_list = { NULL, NULL, 0 };
114 static dlink_list leaf_conf_list = { NULL, NULL, 0 };
115 static unsigned int listener_flags = 0;
116 static unsigned int regex_ban = 0;
117 static char userbuf[IRCD_BUFSIZE];
118 static char hostbuf[IRCD_BUFSIZE];
119 static char reasonbuf[REASONLEN + 1];
120 static char gecos_name[REALLEN * 4];
121
122 static char *resv_reason = NULL;
123 static char *listener_address = NULL;
124 static int not_atom = 0;
125
126 struct CollectItem
127 {
128 dlink_node node;
129 char *name;
130 char *user;
131 char *host;
132 char *passwd;
133 int port;
134 int flags;
135 #ifdef HAVE_LIBCRYPTO
136 char *rsa_public_key_file;
137 RSA *rsa_public_key;
138 #endif
139 };
140
141 static void
142 free_collect_item(struct CollectItem *item)
143 {
144 MyFree(item->name);
145 MyFree(item->user);
146 MyFree(item->host);
147 MyFree(item->passwd);
148 #ifdef HAVE_LIBCRYPTO
149 MyFree(item->rsa_public_key_file);
150 #endif
151 MyFree(item);
152 }
153
154 static void
155 unhook_hub_leaf_confs(void)
156 {
157 dlink_node *ptr;
158 dlink_node *next_ptr;
159 struct CollectItem *yy_hconf;
160 struct CollectItem *yy_lconf;
161
162 DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
163 {
164 yy_hconf = ptr->data;
165 dlinkDelete(&yy_hconf->node, &hub_conf_list);
166 free_collect_item(yy_hconf);
167 }
168
169 DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
170 {
171 yy_lconf = ptr->data;
172 dlinkDelete(&yy_lconf->node, &leaf_conf_list);
173 free_collect_item(yy_lconf);
174 }
175 }
176
177
178
179 /* Line 189 of yacc.c */
180 #line 181 "ircd_parser.c"
181
182 /* Enabling traces. */
183 #ifndef YYDEBUG
184 # define YYDEBUG 0
185 #endif
186
187 /* Enabling verbose error messages. */
188 #ifdef YYERROR_VERBOSE
189 # undef YYERROR_VERBOSE
190 # define YYERROR_VERBOSE 1
191 #else
192 # define YYERROR_VERBOSE 0
193 #endif
194
195 /* Enabling the token table. */
196 #ifndef YYTOKEN_TABLE
197 # define YYTOKEN_TABLE 0
198 #endif
199
200
201 /* Tokens. */
202 #ifndef YYTOKENTYPE
203 # define YYTOKENTYPE
204 /* Put the tokens into the symbol table, so that GDB and other debuggers
205 know about them. */
206 enum yytokentype {
207 ACCEPT_PASSWORD = 258,
208 ACTION = 259,
209 ADMIN = 260,
210 AFTYPE = 261,
211 T_ALLOW = 262,
212 ANTI_NICK_FLOOD = 263,
213 ANTI_SPAM_EXIT_MESSAGE_TIME = 264,
214 AUTOCONN = 265,
215 T_BLOCK = 266,
216 BURST_AWAY = 267,
217 BURST_TOPICWHO = 268,
218 BYTES = 269,
219 KBYTES = 270,
220 MBYTES = 271,
221 GBYTES = 272,
222 TBYTES = 273,
223 CALLER_ID_WAIT = 274,
224 CAN_FLOOD = 275,
225 CAN_IDLE = 276,
226 CHANNEL = 277,
227 CIDR_BITLEN_IPV4 = 278,
228 CIDR_BITLEN_IPV6 = 279,
229 CIPHER_PREFERENCE = 280,
230 CLASS = 281,
231 COMPRESSED = 282,
232 COMPRESSION_LEVEL = 283,
233 CONNECT = 284,
234 CONNECTFREQ = 285,
235 CRYPTLINK = 286,
236 DEFAULT_CIPHER_PREFERENCE = 287,
237 DEFAULT_FLOODCOUNT = 288,
238 DEFAULT_SPLIT_SERVER_COUNT = 289,
239 DEFAULT_SPLIT_USER_COUNT = 290,
240 DENY = 291,
241 DESCRIPTION = 292,
242 DIE = 293,
243 DISABLE_AUTH = 294,
244 DISABLE_FAKE_CHANNELS = 295,
245 DISABLE_HIDDEN = 296,
246 DISABLE_LOCAL_CHANNELS = 297,
247 DISABLE_REMOTE_COMMANDS = 298,
248 DOTS_IN_IDENT = 299,
249 DURATION = 300,
250 EGDPOOL_PATH = 301,
251 EMAIL = 302,
252 ENABLE = 303,
253 ENCRYPTED = 304,
254 EXCEED_LIMIT = 305,
255 EXEMPT = 306,
256 FAILED_OPER_NOTICE = 307,
257 FAKENAME = 308,
258 IRCD_FLAGS = 309,
259 FLATTEN_LINKS = 310,
260 FFAILED_OPERLOG = 311,
261 FKILLLOG = 312,
262 FKLINELOG = 313,
263 FGLINELOG = 314,
264 FIOERRLOG = 315,
265 FOPERLOG = 316,
266 FOPERSPYLOG = 317,
267 FUSERLOG = 318,
268 GECOS = 319,
269 GENERAL = 320,
270 GLINE = 321,
271 GLINES = 322,
272 GLINE_EXEMPT = 323,
273 GLINE_LOG = 324,
274 GLINE_TIME = 325,
275 GLINE_MIN_CIDR = 326,
276 GLINE_MIN_CIDR6 = 327,
277 GLOBAL_KILL = 328,
278 IRCD_AUTH = 329,
279 NEED_IDENT = 330,
280 HAVENT_READ_CONF = 331,
281 HIDDEN = 332,
282 HIDDEN_ADMIN = 333,
283 HIDDEN_NAME = 334,
284 HIDDEN_OPER = 335,
285 HIDE_SERVER_IPS = 336,
286 HIDE_SERVERS = 337,
287 HIDE_SPOOF_IPS = 338,
288 HOST = 339,
289 HUB = 340,
290 HUB_MASK = 341,
291 IDLETIME = 342,
292 IGNORE_BOGUS_TS = 343,
293 INVISIBLE_ON_CONNECT = 344,
294 IP = 345,
295 KILL = 346,
296 KILL_CHASE_TIME_LIMIT = 347,
297 KLINE = 348,
298 KLINE_EXEMPT = 349,
299 KLINE_REASON = 350,
300 KLINE_WITH_REASON = 351,
301 KNOCK_DELAY = 352,
302 KNOCK_DELAY_CHANNEL = 353,
303 LEAF_MASK = 354,
304 LINKS_DELAY = 355,
305 LISTEN = 356,
306 T_LOG = 357,
307 LOGGING = 358,
308 LOG_LEVEL = 359,
309 MAX_ACCEPT = 360,
310 MAX_BANS = 361,
311 MAX_CHANS_PER_USER = 362,
312 MAX_GLOBAL = 363,
313 MAX_IDENT = 364,
314 MAX_LOCAL = 365,
315 MAX_NICK_CHANGES = 366,
316 MAX_NICK_TIME = 367,
317 MAX_NUMBER = 368,
318 MAX_TARGETS = 369,
319 MAX_WATCH = 370,
320 MESSAGE_LOCALE = 371,
321 MIN_NONWILDCARD = 372,
322 MIN_NONWILDCARD_SIMPLE = 373,
323 MODULE = 374,
324 MODULES = 375,
325 NAME = 376,
326 NEED_PASSWORD = 377,
327 NETWORK_DESC = 378,
328 NETWORK_NAME = 379,
329 NICK = 380,
330 NICK_CHANGES = 381,
331 NO_CREATE_ON_SPLIT = 382,
332 NO_JOIN_ON_SPLIT = 383,
333 NO_OPER_FLOOD = 384,
334 NO_TILDE = 385,
335 NOT = 386,
336 NUMBER = 387,
337 NUMBER_PER_IDENT = 388,
338 NUMBER_PER_CIDR = 389,
339 NUMBER_PER_IP = 390,
340 NUMBER_PER_IP_GLOBAL = 391,
341 OPERATOR = 392,
342 OPERS_BYPASS_CALLERID = 393,
343 OPER_LOG = 394,
344 OPER_ONLY_UMODES = 395,
345 OPER_PASS_RESV = 396,
346 OPER_SPY_T = 397,
347 OPER_UMODES = 398,
348 JOIN_FLOOD_COUNT = 399,
349 JOIN_FLOOD_TIME = 400,
350 PACE_WAIT = 401,
351 PACE_WAIT_SIMPLE = 402,
352 PASSWORD = 403,
353 PATH = 404,
354 PING_COOKIE = 405,
355 PING_TIME = 406,
356 PING_WARNING = 407,
357 PORT = 408,
358 QSTRING = 409,
359 QUIET_ON_BAN = 410,
360 REASON = 411,
361 REDIRPORT = 412,
362 REDIRSERV = 413,
363 REGEX_T = 414,
364 REHASH = 415,
365 TREJECT_HOLD_TIME = 416,
366 REMOTE = 417,
367 REMOTEBAN = 418,
368 RESTRICT_CHANNELS = 419,
369 RESTRICTED = 420,
370 RSA_PRIVATE_KEY_FILE = 421,
371 RSA_PUBLIC_KEY_FILE = 422,
372 SSL_CERTIFICATE_FILE = 423,
373 T_SSL_CONNECTION_METHOD = 424,
374 T_SSLV3 = 425,
375 T_TLSV1 = 426,
376 RESV = 427,
377 RESV_EXEMPT = 428,
378 SECONDS = 429,
379 MINUTES = 430,
380 HOURS = 431,
381 DAYS = 432,
382 WEEKS = 433,
383 SENDQ = 434,
384 SEND_PASSWORD = 435,
385 SERVERHIDE = 436,
386 SERVERINFO = 437,
387 SERVLINK_PATH = 438,
388 IRCD_SID = 439,
389 TKLINE_EXPIRE_NOTICES = 440,
390 T_SHARED = 441,
391 T_CLUSTER = 442,
392 TYPE = 443,
393 SHORT_MOTD = 444,
394 SILENT = 445,
395 SPOOF = 446,
396 SPOOF_NOTICE = 447,
397 STATS_E_DISABLED = 448,
398 STATS_I_OPER_ONLY = 449,
399 STATS_K_OPER_ONLY = 450,
400 STATS_O_OPER_ONLY = 451,
401 STATS_P_OPER_ONLY = 452,
402 TBOOL = 453,
403 TMASKED = 454,
404 T_REJECT = 455,
405 TS_MAX_DELTA = 456,
406 TS_WARN_DELTA = 457,
407 TWODOTS = 458,
408 T_ALL = 459,
409 T_BOTS = 460,
410 T_SOFTCALLERID = 461,
411 T_CALLERID = 462,
412 T_CCONN = 463,
413 T_CCONN_FULL = 464,
414 T_CLIENT_FLOOD = 465,
415 T_DEAF = 466,
416 T_DEBUG = 467,
417 T_DRONE = 468,
418 T_EXTERNAL = 469,
419 T_FULL = 470,
420 T_INVISIBLE = 471,
421 T_IPV4 = 472,
422 T_IPV6 = 473,
423 T_LOCOPS = 474,
424 T_LOGPATH = 475,
425 T_L_CRIT = 476,
426 T_L_DEBUG = 477,
427 T_L_ERROR = 478,
428 T_L_INFO = 479,
429 T_L_NOTICE = 480,
430 T_L_TRACE = 481,
431 T_L_WARN = 482,
432 T_MAX_CLIENTS = 483,
433 T_NCHANGE = 484,
434 T_OPERWALL = 485,
435 T_REJ = 486,
436 T_SERVER = 487,
437 T_SERVNOTICE = 488,
438 T_SKILL = 489,
439 T_SPY = 490,
440 T_SSL = 491,
441 T_UMODES = 492,
442 T_UNAUTH = 493,
443 T_UNRESV = 494,
444 T_UNXLINE = 495,
445 T_WALLOP = 496,
446 THROTTLE_TIME = 497,
447 TOPICBURST = 498,
448 TRUE_NO_OPER_FLOOD = 499,
449 TKLINE = 500,
450 TXLINE = 501,
451 TRESV = 502,
452 UNKLINE = 503,
453 USER = 504,
454 USE_EGD = 505,
455 USE_EXCEPT = 506,
456 USE_INVEX = 507,
457 USE_KNOCK = 508,
458 USE_LOGGING = 509,
459 USE_WHOIS_ACTUALLY = 510,
460 VHOST = 511,
461 VHOST6 = 512,
462 XLINE = 513,
463 WARN = 514,
464 WARN_NO_NLINE = 515
465 };
466 #endif
467 /* Tokens. */
468 #define ACCEPT_PASSWORD 258
469 #define ACTION 259
470 #define ADMIN 260
471 #define AFTYPE 261
472 #define T_ALLOW 262
473 #define ANTI_NICK_FLOOD 263
474 #define ANTI_SPAM_EXIT_MESSAGE_TIME 264
475 #define AUTOCONN 265
476 #define T_BLOCK 266
477 #define BURST_AWAY 267
478 #define BURST_TOPICWHO 268
479 #define BYTES 269
480 #define KBYTES 270
481 #define MBYTES 271
482 #define GBYTES 272
483 #define TBYTES 273
484 #define CALLER_ID_WAIT 274
485 #define CAN_FLOOD 275
486 #define CAN_IDLE 276
487 #define CHANNEL 277
488 #define CIDR_BITLEN_IPV4 278
489 #define CIDR_BITLEN_IPV6 279
490 #define CIPHER_PREFERENCE 280
491 #define CLASS 281
492 #define COMPRESSED 282
493 #define COMPRESSION_LEVEL 283
494 #define CONNECT 284
495 #define CONNECTFREQ 285
496 #define CRYPTLINK 286
497 #define DEFAULT_CIPHER_PREFERENCE 287
498 #define DEFAULT_FLOODCOUNT 288
499 #define DEFAULT_SPLIT_SERVER_COUNT 289
500 #define DEFAULT_SPLIT_USER_COUNT 290
501 #define DENY 291
502 #define DESCRIPTION 292
503 #define DIE 293
504 #define DISABLE_AUTH 294
505 #define DISABLE_FAKE_CHANNELS 295
506 #define DISABLE_HIDDEN 296
507 #define DISABLE_LOCAL_CHANNELS 297
508 #define DISABLE_REMOTE_COMMANDS 298
509 #define DOTS_IN_IDENT 299
510 #define DURATION 300
511 #define EGDPOOL_PATH 301
512 #define EMAIL 302
513 #define ENABLE 303
514 #define ENCRYPTED 304
515 #define EXCEED_LIMIT 305
516 #define EXEMPT 306
517 #define FAILED_OPER_NOTICE 307
518 #define FAKENAME 308
519 #define IRCD_FLAGS 309
520 #define FLATTEN_LINKS 310
521 #define FFAILED_OPERLOG 311
522 #define FKILLLOG 312
523 #define FKLINELOG 313
524 #define FGLINELOG 314
525 #define FIOERRLOG 315
526 #define FOPERLOG 316
527 #define FOPERSPYLOG 317
528 #define FUSERLOG 318
529 #define GECOS 319
530 #define GENERAL 320
531 #define GLINE 321
532 #define GLINES 322
533 #define GLINE_EXEMPT 323
534 #define GLINE_LOG 324
535 #define GLINE_TIME 325
536 #define GLINE_MIN_CIDR 326
537 #define GLINE_MIN_CIDR6 327
538 #define GLOBAL_KILL 328
539 #define IRCD_AUTH 329
540 #define NEED_IDENT 330
541 #define HAVENT_READ_CONF 331
542 #define HIDDEN 332
543 #define HIDDEN_ADMIN 333
544 #define HIDDEN_NAME 334
545 #define HIDDEN_OPER 335
546 #define HIDE_SERVER_IPS 336
547 #define HIDE_SERVERS 337
548 #define HIDE_SPOOF_IPS 338
549 #define HOST 339
550 #define HUB 340
551 #define HUB_MASK 341
552 #define IDLETIME 342
553 #define IGNORE_BOGUS_TS 343
554 #define INVISIBLE_ON_CONNECT 344
555 #define IP 345
556 #define KILL 346
557 #define KILL_CHASE_TIME_LIMIT 347
558 #define KLINE 348
559 #define KLINE_EXEMPT 349
560 #define KLINE_REASON 350
561 #define KLINE_WITH_REASON 351
562 #define KNOCK_DELAY 352
563 #define KNOCK_DELAY_CHANNEL 353
564 #define LEAF_MASK 354
565 #define LINKS_DELAY 355
566 #define LISTEN 356
567 #define T_LOG 357
568 #define LOGGING 358
569 #define LOG_LEVEL 359
570 #define MAX_ACCEPT 360
571 #define MAX_BANS 361
572 #define MAX_CHANS_PER_USER 362
573 #define MAX_GLOBAL 363
574 #define MAX_IDENT 364
575 #define MAX_LOCAL 365
576 #define MAX_NICK_CHANGES 366
577 #define MAX_NICK_TIME 367
578 #define MAX_NUMBER 368
579 #define MAX_TARGETS 369
580 #define MAX_WATCH 370
581 #define MESSAGE_LOCALE 371
582 #define MIN_NONWILDCARD 372
583 #define MIN_NONWILDCARD_SIMPLE 373
584 #define MODULE 374
585 #define MODULES 375
586 #define NAME 376
587 #define NEED_PASSWORD 377
588 #define NETWORK_DESC 378
589 #define NETWORK_NAME 379
590 #define NICK 380
591 #define NICK_CHANGES 381
592 #define NO_CREATE_ON_SPLIT 382
593 #define NO_JOIN_ON_SPLIT 383
594 #define NO_OPER_FLOOD 384
595 #define NO_TILDE 385
596 #define NOT 386
597 #define NUMBER 387
598 #define NUMBER_PER_IDENT 388
599 #define NUMBER_PER_CIDR 389
600 #define NUMBER_PER_IP 390
601 #define NUMBER_PER_IP_GLOBAL 391
602 #define OPERATOR 392
603 #define OPERS_BYPASS_CALLERID 393
604 #define OPER_LOG 394
605 #define OPER_ONLY_UMODES 395
606 #define OPER_PASS_RESV 396
607 #define OPER_SPY_T 397
608 #define OPER_UMODES 398
609 #define JOIN_FLOOD_COUNT 399
610 #define JOIN_FLOOD_TIME 400
611 #define PACE_WAIT 401
612 #define PACE_WAIT_SIMPLE 402
613 #define PASSWORD 403
614 #define PATH 404
615 #define PING_COOKIE 405
616 #define PING_TIME 406
617 #define PING_WARNING 407
618 #define PORT 408
619 #define QSTRING 409
620 #define QUIET_ON_BAN 410
621 #define REASON 411
622 #define REDIRPORT 412
623 #define REDIRSERV 413
624 #define REGEX_T 414
625 #define REHASH 415
626 #define TREJECT_HOLD_TIME 416
627 #define REMOTE 417
628 #define REMOTEBAN 418
629 #define RESTRICT_CHANNELS 419
630 #define RESTRICTED 420
631 #define RSA_PRIVATE_KEY_FILE 421
632 #define RSA_PUBLIC_KEY_FILE 422
633 #define SSL_CERTIFICATE_FILE 423
634 #define T_SSL_CONNECTION_METHOD 424
635 #define T_SSLV3 425
636 #define T_TLSV1 426
637 #define RESV 427
638 #define RESV_EXEMPT 428
639 #define SECONDS 429
640 #define MINUTES 430
641 #define HOURS 431
642 #define DAYS 432
643 #define WEEKS 433
644 #define SENDQ 434
645 #define SEND_PASSWORD 435
646 #define SERVERHIDE 436
647 #define SERVERINFO 437
648 #define SERVLINK_PATH 438
649 #define IRCD_SID 439
650 #define TKLINE_EXPIRE_NOTICES 440
651 #define T_SHARED 441
652 #define T_CLUSTER 442
653 #define TYPE 443
654 #define SHORT_MOTD 444
655 #define SILENT 445
656 #define SPOOF 446
657 #define SPOOF_NOTICE 447
658 #define STATS_E_DISABLED 448
659 #define STATS_I_OPER_ONLY 449
660 #define STATS_K_OPER_ONLY 450
661 #define STATS_O_OPER_ONLY 451
662 #define STATS_P_OPER_ONLY 452
663 #define TBOOL 453
664 #define TMASKED 454
665 #define T_REJECT 455
666 #define TS_MAX_DELTA 456
667 #define TS_WARN_DELTA 457
668 #define TWODOTS 458
669 #define T_ALL 459
670 #define T_BOTS 460
671 #define T_SOFTCALLERID 461
672 #define T_CALLERID 462
673 #define T_CCONN 463
674 #define T_CCONN_FULL 464
675 #define T_CLIENT_FLOOD 465
676 #define T_DEAF 466
677 #define T_DEBUG 467
678 #define T_DRONE 468
679 #define T_EXTERNAL 469
680 #define T_FULL 470
681 #define T_INVISIBLE 471
682 #define T_IPV4 472
683 #define T_IPV6 473
684 #define T_LOCOPS 474
685 #define T_LOGPATH 475
686 #define T_L_CRIT 476
687 #define T_L_DEBUG 477
688 #define T_L_ERROR 478
689 #define T_L_INFO 479
690 #define T_L_NOTICE 480
691 #define T_L_TRACE 481
692 #define T_L_WARN 482
693 #define T_MAX_CLIENTS 483
694 #define T_NCHANGE 484
695 #define T_OPERWALL 485
696 #define T_REJ 486
697 #define T_SERVER 487
698 #define T_SERVNOTICE 488
699 #define T_SKILL 489
700 #define T_SPY 490
701 #define T_SSL 491
702 #define T_UMODES 492
703 #define T_UNAUTH 493
704 #define T_UNRESV 494
705 #define T_UNXLINE 495
706 #define T_WALLOP 496
707 #define THROTTLE_TIME 497
708 #define TOPICBURST 498
709 #define TRUE_NO_OPER_FLOOD 499
710 #define TKLINE 500
711 #define TXLINE 501
712 #define TRESV 502
713 #define UNKLINE 503
714 #define USER 504
715 #define USE_EGD 505
716 #define USE_EXCEPT 506
717 #define USE_INVEX 507
718 #define USE_KNOCK 508
719 #define USE_LOGGING 509
720 #define USE_WHOIS_ACTUALLY 510
721 #define VHOST 511
722 #define VHOST6 512
723 #define XLINE 513
724 #define WARN 514
725 #define WARN_NO_NLINE 515
726
727
728
729
730 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
731 typedef union YYSTYPE
732 {
733
734 /* Line 214 of yacc.c */
735 #line 132 "ircd_parser.y"
736
737 int number;
738 char *string;
739
740
741
742 /* Line 214 of yacc.c */
743 #line 744 "ircd_parser.c"
744 } YYSTYPE;
745 # define YYSTYPE_IS_TRIVIAL 1
746 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
747 # define YYSTYPE_IS_DECLARED 1
748 #endif
749
750
751 /* Copy the second part of user declarations. */
752
753
754 /* Line 264 of yacc.c */
755 #line 756 "ircd_parser.c"
756
757 #ifdef short
758 # undef short
759 #endif
760
761 #ifdef YYTYPE_UINT8
762 typedef YYTYPE_UINT8 yytype_uint8;
763 #else
764 typedef unsigned char yytype_uint8;
765 #endif
766
767 #ifdef YYTYPE_INT8
768 typedef YYTYPE_INT8 yytype_int8;
769 #elif (defined __STDC__ || defined __C99__FUNC__ \
770 || defined __cplusplus || defined _MSC_VER)
771 typedef signed char yytype_int8;
772 #else
773 typedef short int yytype_int8;
774 #endif
775
776 #ifdef YYTYPE_UINT16
777 typedef YYTYPE_UINT16 yytype_uint16;
778 #else
779 typedef unsigned short int yytype_uint16;
780 #endif
781
782 #ifdef YYTYPE_INT16
783 typedef YYTYPE_INT16 yytype_int16;
784 #else
785 typedef short int yytype_int16;
786 #endif
787
788 #ifndef YYSIZE_T
789 # ifdef __SIZE_TYPE__
790 # define YYSIZE_T __SIZE_TYPE__
791 # elif defined size_t
792 # define YYSIZE_T size_t
793 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
794 || defined __cplusplus || defined _MSC_VER)
795 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
796 # define YYSIZE_T size_t
797 # else
798 # define YYSIZE_T unsigned int
799 # endif
800 #endif
801
802 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
803
804 #ifndef YY_
805 # if YYENABLE_NLS
806 # if ENABLE_NLS
807 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
808 # define YY_(msgid) dgettext ("bison-runtime", msgid)
809 # endif
810 # endif
811 # ifndef YY_
812 # define YY_(msgid) msgid
813 # endif
814 #endif
815
816 /* Suppress unused-variable warnings by "using" E. */
817 #if ! defined lint || defined __GNUC__
818 # define YYUSE(e) ((void) (e))
819 #else
820 # define YYUSE(e) /* empty */
821 #endif
822
823 /* Identity function, used to suppress warnings about constant conditions. */
824 #ifndef lint
825 # define YYID(n) (n)
826 #else
827 #if (defined __STDC__ || defined __C99__FUNC__ \
828 || defined __cplusplus || defined _MSC_VER)
829 static int
830 YYID (int yyi)
831 #else
832 static int
833 YYID (yyi)
834 int yyi;
835 #endif
836 {
837 return yyi;
838 }
839 #endif
840
841 #if ! defined yyoverflow || YYERROR_VERBOSE
842
843 /* The parser invokes alloca or malloc; define the necessary symbols. */
844
845 # ifdef YYSTACK_USE_ALLOCA
846 # if YYSTACK_USE_ALLOCA
847 # ifdef __GNUC__
848 # define YYSTACK_ALLOC __builtin_alloca
849 # elif defined __BUILTIN_VA_ARG_INCR
850 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
851 # elif defined _AIX
852 # define YYSTACK_ALLOC __alloca
853 # elif defined _MSC_VER
854 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
855 # define alloca _alloca
856 # else
857 # define YYSTACK_ALLOC alloca
858 # if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
859 || defined __cplusplus || defined _MSC_VER)
860 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
861 # ifndef _STDLIB_H
862 # define _STDLIB_H 1
863 # endif
864 # endif
865 # endif
866 # endif
867 # endif
868
869 # ifdef YYSTACK_ALLOC
870 /* Pacify GCC's `empty if-body' warning. */
871 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
872 # ifndef YYSTACK_ALLOC_MAXIMUM
873 /* The OS might guarantee only one guard page at the bottom of the stack,
874 and a page size can be as small as 4096 bytes. So we cannot safely
875 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
876 to allow for a few compiler-allocated temporary stack slots. */
877 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
878 # endif
879 # else
880 # define YYSTACK_ALLOC YYMALLOC
881 # define YYSTACK_FREE YYFREE
882 # ifndef YYSTACK_ALLOC_MAXIMUM
883 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
884 # endif
885 # if (defined __cplusplus && ! defined _STDLIB_H \
886 && ! ((defined YYMALLOC || defined malloc) \
887 && (defined YYFREE || defined free)))
888 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
889 # ifndef _STDLIB_H
890 # define _STDLIB_H 1
891 # endif
892 # endif
893 # ifndef YYMALLOC
894 # define YYMALLOC malloc
895 # if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
896 || defined __cplusplus || defined _MSC_VER)
897 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
898 # endif
899 # endif
900 # ifndef YYFREE
901 # define YYFREE free
902 # if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
903 || defined __cplusplus || defined _MSC_VER)
904 void free (void *); /* INFRINGES ON USER NAME SPACE */
905 # endif
906 # endif
907 # endif
908 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
909
910
911 #if (! defined yyoverflow \
912 && (! defined __cplusplus \
913 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
914
915 /* A type that is properly aligned for any stack member. */
916 union yyalloc
917 {
918 yytype_int16 yyss_alloc;
919 YYSTYPE yyvs_alloc;
920 };
921
922 /* The size of the maximum gap between one aligned stack and the next. */
923 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
924
925 /* The size of an array large to enough to hold all stacks, each with
926 N elements. */
927 # define YYSTACK_BYTES(N) \
928 ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
929 + YYSTACK_GAP_MAXIMUM)
930
931 /* Copy COUNT objects from FROM to TO. The source and destination do
932 not overlap. */
933 # ifndef YYCOPY
934 # if defined __GNUC__ && 1 < __GNUC__
935 # define YYCOPY(To, From, Count) \
936 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
937 # else
938 # define YYCOPY(To, From, Count) \
939 do \
940 { \
941 YYSIZE_T yyi; \
942 for (yyi = 0; yyi < (Count); yyi++) \
943 (To)[yyi] = (From)[yyi]; \
944 } \
945 while (YYID (0))
946 # endif
947 # endif
948
949 /* Relocate STACK from its old location to the new one. The
950 local variables YYSIZE and YYSTACKSIZE give the old and new number of
951 elements in the stack, and YYPTR gives the new location of the
952 stack. Advance YYPTR to a properly aligned location for the next
953 stack. */
954 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
955 do \
956 { \
957 YYSIZE_T yynewbytes; \
958 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
959 Stack = &yyptr->Stack_alloc; \
960 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
961 yyptr += yynewbytes / sizeof (*yyptr); \
962 } \
963 while (YYID (0))
964
965 #endif
966
967 /* YYFINAL -- State number of the termination state. */
968 #define YYFINAL 2
969 /* YYLAST -- Last index in YYTABLE. */
970 #define YYLAST 1409
971
972 /* YYNTOKENS -- Number of terminals. */
973 #define YYNTOKENS 266
974 /* YYNNTS -- Number of nonterminals. */
975 #define YYNNTS 345
976 /* YYNRULES -- Number of rules. */
977 #define YYNRULES 741
978 /* YYNRULES -- Number of states. */
979 #define YYNSTATES 1489
980
981 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
982 #define YYUNDEFTOK 2
983 #define YYMAXUTOK 515
984
985 #define YYTRANSLATE(YYX) \
986 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
987
988 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
989 static const yytype_uint16 yytranslate[] =
990 {
991 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
992 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
993 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
994 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
995 2, 2, 2, 2, 265, 2, 2, 2, 2, 2,
996 2, 2, 2, 2, 2, 2, 2, 2, 2, 261,
997 2, 264, 2, 2, 2, 2, 2, 2, 2, 2,
998 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
999 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1000 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1001 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1002 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1003 2, 2, 2, 263, 2, 262, 2, 2, 2, 2,
1004 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1005 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1006 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1007 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1008 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1009 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1010 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1011 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1012 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1013 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1014 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1015 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1016 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
1017 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
1018 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1019 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
1020 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
1021 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1022 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
1023 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
1024 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
1025 85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
1026 95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1027 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1028 115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
1029 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1030 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
1031 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1032 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
1033 165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
1034 175, 176, 177, 178, 179, 180, 181, 182, 183, 184,
1035 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,
1036 195, 196, 197, 198, 199, 200, 201, 202, 203, 204,
1037 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
1038 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1039 225, 226, 227, 228, 229, 230, 231, 232, 233, 234,
1040 235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
1041 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,
1042 255, 256, 257, 258, 259, 260
1043 };
1044
1045 #if YYDEBUG
1046 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
1047 YYRHS. */
1048 static const yytype_uint16 yyprhs[] =
1049 {
1050 0, 0, 3, 4, 7, 9, 11, 13, 15, 17,
1051 19, 21, 23, 25, 27, 29, 31, 33, 35, 37,
1052 39, 41, 43, 45, 47, 50, 53, 54, 56, 59,
1053 63, 67, 71, 75, 79, 80, 82, 85, 89, 93,
1054 97, 103, 106, 108, 110, 112, 115, 120, 125, 131,
1055 134, 136, 138, 140, 142, 144, 146, 148, 150, 152,
1056 154, 156, 158, 160, 163, 164, 170, 174, 176, 178,
1057 180, 185, 190, 195, 200, 205, 210, 215, 220, 225,
1058 230, 235, 241, 244, 246, 248, 250, 252, 255, 260,
1059 265, 270, 276, 279, 281, 283, 285, 287, 289, 291,
1060 293, 295, 297, 299, 301, 303, 305, 308, 313, 318,
1061 323, 328, 333, 338, 343, 348, 353, 358, 363, 368,
1062 373, 378, 383, 388, 393, 398, 399, 407, 408, 410,
1063 413, 415, 417, 419, 421, 423, 425, 427, 429, 431,
1064 433, 435, 437, 439, 441, 443, 445, 447, 449, 451,
1065 453, 455, 457, 459, 462, 467, 469, 474, 479, 484,
1066 489, 494, 495, 501, 505, 507, 509, 511, 513, 515,
1067 517, 519, 521, 523, 525, 527, 529, 531, 533, 535,
1068 537, 539, 541, 543, 545, 550, 555, 560, 565, 570,
1069 575, 580, 585, 590, 595, 600, 605, 610, 615, 616,
1070 622, 626, 628, 629, 633, 634, 637, 639, 641, 643,
1071 645, 647, 649, 651, 653, 655, 657, 659, 661, 663,
1072 665, 667, 669, 670, 678, 679, 681, 684, 686, 688,
1073 690, 692, 694, 696, 698, 700, 702, 704, 706, 708,
1074 710, 712, 715, 720, 722, 727, 732, 737, 742, 747,
1075 752, 757, 762, 767, 772, 777, 782, 783, 790, 791,
1076 797, 801, 803, 805, 807, 809, 812, 814, 816, 818,
1077 820, 822, 825, 826, 832, 836, 838, 840, 844, 849,
1078 854, 855, 862, 865, 867, 869, 871, 873, 875, 877,
1079 879, 881, 883, 885, 887, 889, 891, 893, 895, 897,
1080 899, 902, 907, 912, 917, 922, 927, 928, 934, 938,
1081 940, 941, 945, 946, 949, 951, 953, 955, 957, 959,
1082 961, 963, 965, 967, 969, 974, 979, 984, 989, 994,
1083 999, 1004, 1009, 1014, 1019, 1020, 1027, 1030, 1032, 1034,
1084 1036, 1038, 1041, 1046, 1051, 1056, 1057, 1064, 1067, 1069,
1085 1071, 1073, 1075, 1078, 1083, 1088, 1089, 1095, 1099, 1101,
1086 1103, 1105, 1107, 1109, 1111, 1113, 1115, 1117, 1119, 1121,
1087 1123, 1124, 1131, 1134, 1136, 1138, 1140, 1143, 1148, 1149,
1088 1155, 1159, 1161, 1163, 1165, 1167, 1169, 1171, 1173, 1175,
1089 1177, 1179, 1181, 1183, 1184, 1192, 1193, 1195, 1198, 1200,
1090 1202, 1204, 1206, 1208, 1210, 1212, 1214, 1216, 1218, 1220,
1091 1222, 1224, 1226, 1228, 1230, 1232, 1234, 1236, 1238, 1241,
1092 1246, 1248, 1253, 1258, 1263, 1268, 1273, 1278, 1283, 1288,
1093 1289, 1295, 1299, 1301, 1302, 1306, 1307, 1310, 1312, 1314,
1094 1316, 1318, 1320, 1325, 1330, 1335, 1340, 1345, 1350, 1355,
1095 1360, 1365, 1370, 1371, 1378, 1379, 1385, 1389, 1391, 1393,
1096 1396, 1398, 1400, 1402, 1404, 1406, 1411, 1416, 1417, 1424,
1097 1427, 1429, 1431, 1433, 1435, 1440, 1445, 1451, 1454, 1456,
1098 1458, 1460, 1465, 1466, 1473, 1474, 1480, 1484, 1486, 1488,
1099 1491, 1493, 1495, 1497, 1499, 1501, 1506, 1511, 1517, 1520,
1100 1522, 1524, 1526, 1528, 1530, 1532, 1534, 1536, 1538, 1540,
1101 1542, 1544, 1546, 1548, 1550, 1552, 1554, 1556, 1558, 1560,
1102 1562, 1564, 1566, 1568, 1570, 1572, 1574, 1576, 1578, 1580,
1103 1582, 1584, 1586, 1588, 1590, 1592, 1594, 1596, 1598, 1600,
1104 1602, 1604, 1606, 1608, 1610, 1612, 1614, 1616, 1618, 1620,
1105 1622, 1624, 1626, 1628, 1630, 1632, 1634, 1639, 1644, 1649,
1106 1654, 1659, 1664, 1669, 1674, 1679, 1684, 1689, 1694, 1699,
1107 1704, 1709, 1714, 1719, 1724, 1729, 1734, 1739, 1744, 1749,
1108 1754, 1759, 1764, 1769, 1774, 1779, 1784, 1789, 1794, 1799,
1109 1804, 1809, 1814, 1819, 1824, 1829, 1834, 1839, 1844, 1849,
1110 1854, 1859, 1864, 1869, 1874, 1879, 1884, 1889, 1890, 1896,
1111 1900, 1902, 1904, 1906, 1908, 1910, 1912, 1914, 1916, 1918,
1112 1920, 1922, 1924, 1926, 1928, 1930, 1932, 1934, 1936, 1938,
1113 1940, 1941, 1947, 1951, 1953, 1955, 1957, 1959, 1961, 1963,
1114 1965, 1967, 1969, 1971, 1973, 1975, 1977, 1979, 1981, 1983,
1115 1985, 1987, 1989, 1991, 1996, 2001, 2006, 2011, 2012, 2019,
1116 2022, 2024, 2026, 2028, 2030, 2032, 2034, 2036, 2038, 2043,
1117 2048, 2049, 2055, 2059, 2061, 2063, 2065, 2070, 2075, 2076,
1118 2082, 2086, 2088, 2090, 2092, 2098, 2101, 2103, 2105, 2107,
1119 2109, 2111, 2113, 2115, 2117, 2119, 2121, 2123, 2125, 2127,
1120 2129, 2131, 2133, 2135, 2137, 2139, 2141, 2146, 2151, 2156,
1121 2161, 2166, 2171, 2176, 2181, 2186, 2191, 2196, 2201, 2206,
1122 2211, 2216, 2221, 2226, 2231, 2237, 2240, 2242, 2244, 2246,
1123 2248, 2250, 2252, 2254, 2256, 2258, 2263, 2268, 2273, 2278,
1124 2283, 2288
1125 };
1126
1127 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
1128 static const yytype_int16 yyrhs[] =
1129 {
1130 267, 0, -1, -1, 267, 268, -1, 296, -1, 302,
1131 -1, 317, -1, 580, -1, 354, -1, 373, -1, 387,
1132 -1, 278, -1, 601, -1, 413, -1, 420, -1, 430,
1133 -1, 439, -1, 470, -1, 480, -1, 486, -1, 500,
1134 -1, 564, -1, 490, -1, 273, -1, 1, 261, -1,
1135 1, 262, -1, -1, 270, -1, 132, 269, -1, 132,
1136 174, 269, -1, 132, 175, 269, -1, 132, 176, 269,
1137 -1, 132, 177, 269, -1, 132, 178, 269, -1, -1,
1138 272, -1, 132, 271, -1, 132, 14, 271, -1, 132,
1139 15, 271, -1, 132, 16, 271, -1, 120, 263, 274,
1140 262, 261, -1, 274, 275, -1, 275, -1, 276, -1,
1141 277, -1, 1, 261, -1, 119, 264, 154, 261, -1,
1142 149, 264, 154, 261, -1, 182, 263, 279, 262, 261,
1143 -1, 279, 280, -1, 280, -1, 287, -1, 292, -1,
1144 295, -1, 289, -1, 290, -1, 291, -1, 294, -1,
1145 286, -1, 293, -1, 288, -1, 285, -1, 281, -1,
1146 1, 261, -1, -1, 169, 282, 264, 283, 261, -1,
1147 283, 265, 284, -1, 284, -1, 170, -1, 171, -1,
1148 168, 264, 154, 261, -1, 166, 264, 154, 261, -1,
1149 121, 264, 154, 261, -1, 184, 264, 154, 261, -1,
1150 37, 264, 154, 261, -1, 124, 264, 154, 261, -1,
1151 123, 264, 154, 261, -1, 256, 264, 154, 261, -1,
1152 257, 264, 154, 261, -1, 228, 264, 132, 261, -1,
1153 85, 264, 198, 261, -1, 5, 263, 297, 262, 261,
1154 -1, 297, 298, -1, 298, -1, 299, -1, 301, -1,
1155 300, -1, 1, 261, -1, 121, 264, 154, 261, -1,
1156 47, 264, 154, 261, -1, 37, 264, 154, 261, -1,
1157 103, 263, 303, 262, 261, -1, 303, 304, -1, 304,
1158 -1, 305, -1, 306, -1, 315, -1, 316, -1, 307,
1159 -1, 309, -1, 311, -1, 312, -1, 314, -1, 310,
1160 -1, 313, -1, 308, -1, 1, 261, -1, 220, 264,
1161 154, 261, -1, 139, 264, 154, 261, -1, 63, 264,
1162 154, 261, -1, 56, 264, 154, 261, -1, 61, 264,
1163 154, 261, -1, 62, 264, 154, 261, -1, 59, 264,
1164 154, 261, -1, 58, 264, 154, 261, -1, 60, 264,
1165 154, 261, -1, 57, 264, 154, 261, -1, 104, 264,
1166 221, 261, -1, 104, 264, 223, 261, -1, 104, 264,
1167 227, 261, -1, 104, 264, 225, 261, -1, 104, 264,
1168 226, 261, -1, 104, 264, 224, 261, -1, 104, 264,
1169 222, 261, -1, 254, 264, 198, 261, -1, -1, 137,
1170 318, 319, 263, 320, 262, 261, -1, -1, 323, -1,
1171 320, 321, -1, 321, -1, 322, -1, 324, -1, 325,
1172 -1, 344, -1, 345, -1, 329, -1, 328, -1, 333,
1173 -1, 334, -1, 336, -1, 337, -1, 338, -1, 339,
1174 -1, 340, -1, 335, -1, 341, -1, 342, -1, 343,
1175 -1, 346, -1, 326, -1, 327, -1, 347, -1, 1,
1176 261, -1, 121, 264, 154, 261, -1, 154, -1, 249,
1177 264, 154, 261, -1, 148, 264, 154, 261, -1, 49,
1178 264, 198, 261, -1, 167, 264, 154, 261, -1, 26,
1179 264, 154, 261, -1, -1, 237, 330, 264, 331, 261,
1180 -1, 331, 265, 332, -1, 332, -1, 205, -1, 208,
1181 -1, 209, -1, 211, -1, 212, -1, 215, -1, 234,
1182 -1, 229, -1, 231, -1, 238, -1, 235, -1, 214,
1183 -1, 230, -1, 233, -1, 216, -1, 241, -1, 206,
1184 -1, 207, -1, 219, -1, 73, 264, 198, 261, -1,
1185 162, 264, 198, 261, -1, 163, 264, 198, 261, -1,
1186 93, 264, 198, 261, -1, 258, 264, 198, 261, -1,
1187 248, 264, 198, 261, -1, 66, 264, 198, 261, -1,
1188 126, 264, 198, 261, -1, 38, 264, 198, 261, -1,
1189 160, 264, 198, 261, -1, 5, 264, 198, 261, -1,
1190 78, 264, 198, 261, -1, 80, 264, 198, 261, -1,
1191 230, 264, 198, 261, -1, -1, 54, 348, 264, 349,
1192 261, -1, 349, 265, 350, -1, 350, -1, -1, 131,
1193 351, 353, -1, -1, 352, 353, -1, 73, -1, 162,
1194 -1, 93, -1, 248, -1, 258, -1, 66, -1, 38,
1195 -1, 160, -1, 5, -1, 78, -1, 126, -1, 230,
1196 -1, 142, -1, 80, -1, 163, -1, 49, -1, -1,
1197 26, 355, 356, 263, 357, 262, 261, -1, -1, 360,
1198 -1, 357, 358, -1, 358, -1, 359, -1, 370, -1,
1199 371, -1, 361, -1, 362, -1, 372, -1, 363, -1,
1200 364, -1, 365, -1, 366, -1, 367, -1, 368, -1,
1201 369, -1, 1, 261, -1, 121, 264, 154, 261, -1,
1202 154, -1, 151, 264, 270, 261, -1, 152, 264, 270,
1203 261, -1, 135, 264, 132, 261, -1, 30, 264, 270,
1204 261, -1, 113, 264, 132, 261, -1, 108, 264, 132,
1205 261, -1, 110, 264, 132, 261, -1, 109, 264, 132,
1206 261, -1, 179, 264, 272, 261, -1, 23, 264, 132,
1207 261, -1, 24, 264, 132, 261, -1, 134, 264, 132,
1208 261, -1, -1, 101, 374, 263, 379, 262, 261, -1,
1209 -1, 54, 376, 264, 377, 261, -1, 377, 265, 378,
1210 -1, 378, -1, 236, -1, 77, -1, 232, -1, 379,
1211 380, -1, 380, -1, 381, -1, 375, -1, 385, -1,
1212 386, -1, 1, 261, -1, -1, 153, 264, 383, 382,
1213 261, -1, 383, 265, 384, -1, 384, -1, 132, -1,
1214 132, 203, 132, -1, 90, 264, 154, 261, -1, 84,
1215 264, 154, 261, -1, -1, 74, 388, 263, 389, 262,
1216 261, -1, 389, 390, -1, 390, -1, 391, -1, 392,
1217 -1, 394, -1, 396, -1, 403, -1, 404, -1, 405,
1218 -1, 407, -1, 408, -1, 409, -1, 393, -1, 410,
1219 -1, 411, -1, 406, -1, 412, -1, 395, -1, 1,
1220 261, -1, 249, 264, 154, 261, -1, 148, 264, 154,
1221 261, -1, 192, 264, 198, 261, -1, 26, 264, 154,
1222 261, -1, 49, 264, 198, 261, -1, -1, 54, 397,
1223 264, 398, 261, -1, 398, 265, 399, -1, 399, -1,
1224 -1, 131, 400, 402, -1, -1, 401, 402, -1, 192,
1225 -1, 50, -1, 94, -1, 75, -1, 20, -1, 21,
1226 -1, 130, -1, 68, -1, 173, -1, 122, -1, 94,
1227 264, 198, 261, -1, 75, 264, 198, 261, -1, 50,
1228 264, 198, 261, -1, 20, 264, 198, 261, -1, 130,
1229 264, 198, 261, -1, 68, 264, 198, 261, -1, 191,
1230 264, 154, 261, -1, 158, 264, 154, 261, -1, 157,
1231 264, 132, 261, -1, 122, 264, 198, 261, -1, -1,
1232 172, 414, 263, 415, 262, 261, -1, 415, 416, -1,
1233 416, -1, 417, -1, 418, -1, 419, -1, 1, 261,
1234 -1, 156, 264, 154, 261, -1, 22, 264, 154, 261,
1235 -1, 125, 264, 154, 261, -1, -1, 186, 421, 263,
1236 422, 262, 261, -1, 422, 423, -1, 423, -1, 424,
1237 -1, 425, -1, 426, -1, 1, 261, -1, 121, 264,
1238 154, 261, -1, 249, 264, 154, 261, -1, -1, 188,
1239 427, 264, 428, 261, -1, 428, 265, 429, -1, 429,
1240 -1, 93, -1, 245, -1, 248, -1, 258, -1, 246,
1241 -1, 240, -1, 172, -1, 247, -1, 239, -1, 219,
1242 -1, 204, -1, -1, 187, 431, 263, 432, 262, 261,
1243 -1, 432, 433, -1, 433, -1, 434, -1, 435, -1,
1244 1, 261, -1, 121, 264, 154, 261, -1, -1, 188,
1245 436, 264, 437, 261, -1, 437, 265, 438, -1, 438,
1246 -1, 93, -1, 245, -1, 248, -1, 258, -1, 246,
1247 -1, 240, -1, 172, -1, 247, -1, 239, -1, 219,
1248 -1, 204, -1, -1, 29, 440, 441, 263, 442, 262,
1249 261, -1, -1, 445, -1, 442, 443, -1, 443, -1,
1250 444, -1, 446, -1, 447, -1, 448, -1, 449, -1,
1251 451, -1, 450, -1, 452, -1, 453, -1, 466, -1,
1252 467, -1, 468, -1, 464, -1, 461, -1, 463, -1,
1253 462, -1, 460, -1, 469, -1, 465, -1, 1, 261,
1254 -1, 121, 264, 154, 261, -1, 154, -1, 84, 264,
1255 154, 261, -1, 256, 264, 154, 261, -1, 180, 264,
1256 154, 261, -1, 3, 264, 154, 261, -1, 153, 264,
1257 132, 261, -1, 6, 264, 217, 261, -1, 6, 264,
1258 218, 261, -1, 53, 264, 154, 261, -1, -1, 54,
1259 454, 264, 455, 261, -1, 455, 265, 456, -1, 456,
1260 -1, -1, 131, 457, 459, -1, -1, 458, 459, -1,
1261 27, -1, 31, -1, 10, -1, 12, -1, 243, -1,
1262 167, 264, 154, 261, -1, 49, 264, 198, 261, -1,
1263 31, 264, 198, 261, -1, 27, 264, 198, 261, -1,
1264 10, 264, 198, 261, -1, 243, 264, 198, 261, -1,
1265 86, 264, 154, 261, -1, 99, 264, 154, 261, -1,
1266 26, 264, 154, 261, -1, 25, 264, 154, 261, -1,
1267 -1, 91, 471, 263, 476, 262, 261, -1, -1, 188,
1268 473, 264, 474, 261, -1, 474, 265, 475, -1, 475,
1269 -1, 159, -1, 476, 477, -1, 477, -1, 478, -1,
1270 479, -1, 472, -1, 1, -1, 249, 264, 154, 261,
1271 -1, 156, 264, 154, 261, -1, -1, 36, 481, 263,
1272 482, 262, 261, -1, 482, 483, -1, 483, -1, 484,
1273 -1, 485, -1, 1, -1, 90, 264, 154, 261, -1,
1274 156, 264, 154, 261, -1, 51, 263, 487, 262, 261,
1275 -1, 487, 488, -1, 488, -1, 489, -1, 1, -1,
1276 90, 264, 154, 261, -1, -1, 64, 491, 263, 496,
1277 262, 261, -1, -1, 188, 493, 264, 494, 261, -1,
1278 494, 265, 495, -1, 495, -1, 159, -1, 496, 497,
1279 -1, 497, -1, 498, -1, 499, -1, 492, -1, 1,
1280 -1, 121, 264, 154, 261, -1, 156, 264, 154, 261,
1281 -1, 65, 263, 501, 262, 261, -1, 501, 502, -1,
1282 502, -1, 511, -1, 512, -1, 514, -1, 515, -1,
1283 516, -1, 517, -1, 518, -1, 519, -1, 520, -1,
1284 521, -1, 510, -1, 523, -1, 524, -1, 525, -1,
1285 526, -1, 542, -1, 528, -1, 530, -1, 532, -1,
1286 531, -1, 535, -1, 529, -1, 536, -1, 537, -1,
1287 538, -1, 539, -1, 541, -1, 540, -1, 556, -1,
1288 543, -1, 547, -1, 548, -1, 552, -1, 533, -1,
1289 534, -1, 562, -1, 560, -1, 561, -1, 544, -1,
1290 513, -1, 545, -1, 546, -1, 563, -1, 551, -1,
1291 522, -1, 549, -1, 550, -1, 506, -1, 509, -1,
1292 504, -1, 505, -1, 507, -1, 508, -1, 527, -1,
1293 503, -1, 1, -1, 115, 264, 132, 261, -1, 71,
1294 264, 132, 261, -1, 72, 264, 132, 261, -1, 12,
1295 264, 198, 261, -1, 255, 264, 198, 261, -1, 161,
1296 264, 270, 261, -1, 185, 264, 198, 261, -1, 92,
1297 264, 132, 261, -1, 83, 264, 198, 261, -1, 88,
1298 264, 198, 261, -1, 43, 264, 198, 261, -1, 52,
1299 264, 198, 261, -1, 8, 264, 198, 261, -1, 112,
1300 264, 270, 261, -1, 111, 264, 132, 261, -1, 105,
1301 264, 132, 261, -1, 9, 264, 270, 261, -1, 202,
1302 264, 270, 261, -1, 201, 264, 270, 261, -1, 76,
1303 264, 132, 261, -1, 96, 264, 198, 261, -1, 95,
1304 264, 154, 261, -1, 89, 264, 198, 261, -1, 260,
1305 264, 198, 261, -1, 193, 264, 198, 261, -1, 196,
1306 264, 198, 261, -1, 197, 264, 198, 261, -1, 195,
1307 264, 198, 261, -1, 195, 264, 199, 261, -1, 194,
1308 264, 198, 261, -1, 194, 264, 199, 261, -1, 146,
1309 264, 270, 261, -1, 19, 264, 270, 261, -1, 138,
1310 264, 198, 261, -1, 147, 264, 270, 261, -1, 189,
1311 264, 198, 261, -1, 129, 264, 198, 261, -1, 244,
1312 264, 198, 261, -1, 141, 264, 198, 261, -1, 116,
1313 264, 154, 261, -1, 87, 264, 270, 261, -1, 44,
1314 264, 132, 261, -1, 114, 264, 132, 261, -1, 183,
1315 264, 154, 261, -1, 32, 264, 154, 261, -1, 28,
1316 264, 132, 261, -1, 250, 264, 198, 261, -1, 46,
1317 264, 154, 261, -1, 150, 264, 198, 261, -1, 39,
1318 264, 198, 261, -1, 242, 264, 270, 261, -1, -1,
1319 143, 553, 264, 554, 261, -1, 554, 265, 555, -1,
1320 555, -1, 205, -1, 208, -1, 209, -1, 211, -1,
1321 212, -1, 215, -1, 234, -1, 229, -1, 231, -1,
1322 238, -1, 235, -1, 214, -1, 230, -1, 233, -1,
1323 216, -1, 241, -1, 206, -1, 207, -1, 219, -1,
1324 -1, 140, 557, 264, 558, 261, -1, 558, 265, 559,
1325 -1, 559, -1, 205, -1, 208, -1, 209, -1, 211,
1326 -1, 212, -1, 215, -1, 234, -1, 229, -1, 231,
1327 -1, 238, -1, 235, -1, 214, -1, 230, -1, 233,
1328 -1, 216, -1, 241, -1, 206, -1, 207, -1, 219,
1329 -1, 117, 264, 132, 261, -1, 118, 264, 132, 261,
1330 -1, 33, 264, 132, 261, -1, 210, 264, 272, 261,
1331 -1, -1, 67, 565, 263, 566, 262, 261, -1, 566,
1332 567, -1, 567, -1, 568, -1, 569, -1, 570, -1,
1333 574, -1, 575, -1, 576, -1, 1, -1, 48, 264,
1334 198, 261, -1, 45, 264, 270, 261, -1, -1, 103,
1335 571, 264, 572, 261, -1, 572, 265, 573, -1, 573,
1336 -1, 200, -1, 11, -1, 249, 264, 154, 261, -1,
1337 121, 264, 154, 261, -1, -1, 4, 577, 264, 578,
1338 261, -1, 578, 265, 579, -1, 579, -1, 200, -1,
1339 11, -1, 22, 263, 581, 262, 261, -1, 581, 582,
1340 -1, 582, -1, 585, -1, 586, -1, 587, -1, 588,
1341 -1, 593, -1, 589, -1, 590, -1, 591, -1, 592,
1342 -1, 594, -1, 595, -1, 596, -1, 584, -1, 597,
1343 -1, 598, -1, 599, -1, 600, -1, 583, -1, 1,
1344 -1, 40, 264, 198, 261, -1, 164, 264, 198, 261,
1345 -1, 42, 264, 198, 261, -1, 251, 264, 198, 261,
1346 -1, 252, 264, 198, 261, -1, 253, 264, 198, 261,
1347 -1, 97, 264, 270, 261, -1, 98, 264, 270, 261,
1348 -1, 107, 264, 132, 261, -1, 155, 264, 198, 261,
1349 -1, 106, 264, 132, 261, -1, 35, 264, 132, 261,
1350 -1, 34, 264, 132, 261, -1, 127, 264, 198, 261,
1351 -1, 128, 264, 198, 261, -1, 13, 264, 198, 261,
1352 -1, 144, 264, 132, 261, -1, 145, 264, 270, 261,
1353 -1, 181, 263, 602, 262, 261, -1, 602, 603, -1,
1354 603, -1, 604, -1, 605, -1, 607, -1, 609, -1,
1355 608, -1, 606, -1, 610, -1, 1, -1, 55, 264,
1356 198, 261, -1, 82, 264, 198, 261, -1, 79, 264,
1357 154, 261, -1, 100, 264, 270, 261, -1, 77, 264,
1358 198, 261, -1, 41, 264, 198, 261, -1, 81, 264,
1359 198, 261, -1
1360 };
1361
1362 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
1363 static const yytype_uint16 yyrline[] =
1364 {
1365 0, 396, 396, 397, 400, 401, 402, 403, 404, 405,
1366 406, 407, 408, 409, 410, 411, 412, 413, 414, 415,
1367 416, 417, 418, 419, 420, 421, 425, 425, 426, 430,
1368 434, 438, 442, 446, 452, 452, 453, 454, 455, 456,
1369 463, 466, 466, 467, 467, 467, 469, 477, 486, 488,
1370 488, 489, 489, 490, 490, 491, 491, 492, 493, 493,
1371 494, 494, 495, 496, 500, 499, 518, 518, 519, 525,
1372 533, 567, 627, 641, 656, 665, 679, 688, 716, 746,
1373 769, 791, 793, 793, 794, 794, 795, 795, 797, 806,
1374 815, 828, 830, 831, 833, 833, 834, 835, 835, 836,
1375 836, 837, 837, 838, 838, 839, 840, 842, 846, 850,
1376 857, 864, 871, 878, 885, 892, 899, 906, 910, 914,
1377 918, 922, 926, 930, 936, 946, 945, 1039, 1039, 1040,
1378 1040, 1041, 1041, 1041, 1041, 1042, 1042, 1043, 1043, 1043,
1379 1044, 1044, 1044, 1045, 1045, 1045, 1046, 1046, 1046, 1046,
1380 1047, 1047, 1048, 1048, 1050, 1062, 1074, 1108, 1120, 1131,
1381 1173, 1183, 1182, 1188, 1188, 1189, 1193, 1197, 1201, 1205,
1382 1209, 1213, 1217, 1221, 1225, 1229, 1233, 1237, 1241, 1245,
1383 1249, 1253, 1257, 1261, 1267, 1278, 1289, 1300, 1311, 1322,
1384 1333, 1344, 1355, 1366, 1377, 1388, 1399, 1410, 1422, 1421,
1385 1425, 1425, 1426, 1426, 1427, 1427, 1429, 1436, 1443, 1450,
1386 1457, 1464, 1471, 1478, 1485, 1492, 1499, 1506, 1513, 1520,
1387 1527, 1534, 1548, 1547, 1597, 1597, 1599, 1599, 1600, 1601,
1388 1601, 1602, 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610,
1389 1611, 1612, 1614, 1623, 1632, 1638, 1644, 1650, 1656, 1662,
1390 1668, 1674, 1680, 1686, 1692, 1698, 1708, 1707, 1724, 1723,
1391 1728, 1728, 1729, 1733, 1737, 1745, 1745, 1746, 1746, 1746,
1392 1746, 1746, 1748, 1748, 1750, 1750, 1752, 1766, 1786, 1795,
1393 1808, 1807, 1876, 1876, 1877, 1877, 1877, 1877, 1878, 1878,
1394 1879, 1879, 1879, 1880, 1880, 1881, 1881, 1881, 1882, 1882,
1395 1882, 1884, 1921, 1934, 1945, 1954, 1966, 1965, 1969, 1969,
1396 1970, 1970, 1971, 1971, 1973, 1981, 1988, 1995, 2002, 2009,
1397 2016, 2023, 2030, 2037, 2046, 2057, 2068, 2079, 2090, 2101,
1398 2113, 2132, 2142, 2151, 2167, 2166, 2182, 2182, 2183, 2183,
1399 2183, 2183, 2185, 2194, 2209, 2223, 2222, 2238, 2238, 2239,
1400 2239, 2239, 2239, 2241, 2250, 2273, 2272, 2278, 2278, 2279,
1401 2283, 2287, 2291, 2295, 2299, 2303, 2307, 2311, 2315, 2319,
1402 2329, 2328, 2345, 2345, 2346, 2346, 2346, 2348, 2355, 2354,
1403 2360, 2360, 2361, 2365, 2369, 2373, 2377, 2381, 2385, 2389,
1404 2393, 2397, 2401, 2411, 2410, 2556, 2556, 2557, 2557, 2558,
1405 2558, 2558, 2559, 2559, 2560, 2560, 2561, 2561, 2561, 2562,
1406 2562, 2562, 2563, 2563, 2563, 2564, 2564, 2565, 2565, 2567,
1407 2579, 2591, 2600, 2626, 2644, 2662, 2668, 2672, 2680, 2690,
1408 2689, 2693, 2693, 2694, 2694, 2695, 2695, 2697, 2708, 2715,
1409 2722, 2729, 2739, 2780, 2791, 2802, 2817, 2828, 2839, 2852,
1410 2865, 2874, 2910, 2909, 2973, 2972, 2976, 2976, 2977, 2983,
1411 2983, 2984, 2984, 2984, 2984, 2986, 3005, 3015, 3014, 3037,
1412 3037, 3038, 3038, 3038, 3040, 3046, 3055, 3057, 3057, 3058,
1413 3058, 3060, 3079, 3078, 3126, 3125, 3129, 3129, 3130, 3136,
1414 3136, 3137, 3137, 3137, 3137, 3139, 3145, 3154, 3157, 3157,
1415 3158, 3158, 3159, 3159, 3160, 3160, 3161, 3161, 3162, 3162,
1416 3163, 3163, 3164, 3164, 3165, 3165, 3166, 3166, 3167, 3167,
1417 3168, 3168, 3169, 3169, 3170, 3170, 3171, 3171, 3172, 3172,
1418 3173, 3173, 3174, 3174, 3175, 3175, 3176, 3176, 3177, 3177,
1419 3178, 3179, 3179, 3180, 3180, 3181, 3182, 3182, 3183, 3183,
1420 3184, 3184, 3185, 3185, 3186, 3187, 3190, 3195, 3200, 3205,
1421 3210, 3215, 3220, 3225, 3230, 3235, 3240, 3245, 3250, 3255,
1422 3260, 3265, 3270, 3275, 3280, 3286, 3297, 3302, 3311, 3316,
1423 3321, 3326, 3331, 3336, 3339, 3344, 3347, 3352, 3357, 3362,
1424 3367, 3372, 3377, 3382, 3387, 3392, 3403, 3408, 3413, 3418,
1425 3427, 3459, 3477, 3482, 3491, 3496, 3501, 3507, 3506, 3511,
1426 3511, 3512, 3515, 3518, 3521, 3524, 3527, 3530, 3533, 3536,
1427 3539, 3542, 3545, 3548, 3551, 3554, 3557, 3560, 3563, 3566,
1428 3572, 3571, 3576, 3576, 3577, 3580, 3583, 3586, 3589, 3592,
1429 3595, 3598, 3601, 3604, 3607, 3610, 3613, 3616, 3619, 3622,
1430 3625, 3628, 3631, 3636, 3641, 3646, 3651, 3661, 3660, 3684,
1431 3684, 3685, 3686, 3687, 3688, 3689, 3690, 3691, 3693, 3699,
1432 3706, 3705, 3710, 3710, 3711, 3715, 3721, 3755, 3765, 3764,
1433 3814, 3814, 3815, 3819, 3828, 3831, 3831, 3832, 3832, 3833,
1434 3833, 3834, 3834, 3835, 3835, 3836, 3836, 3837, 3838, 3838,
1435 3839, 3839, 3840, 3840, 3841, 3841, 3843, 3848, 3853, 3858,
1436 3863, 3868, 3873, 3878, 3883, 3888, 3893, 3898, 3903, 3908,
1437 3913, 3918, 3923, 3928, 3936, 3939, 3939, 3940, 3940, 3941,
1438 3942, 3943, 3943, 3944, 3945, 3947, 3953, 3959, 3968, 3982,
1439 3988, 3994
1440 };
1441 #endif
1442
1443 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
1444 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1445 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1446 static const char *const yytname[] =
1447 {
1448 "$end", "error", "$undefined", "ACCEPT_PASSWORD", "ACTION", "ADMIN",
1449 "AFTYPE", "T_ALLOW", "ANTI_NICK_FLOOD", "ANTI_SPAM_EXIT_MESSAGE_TIME",
1450 "AUTOCONN", "T_BLOCK", "BURST_AWAY", "BURST_TOPICWHO", "BYTES", "KBYTES",
1451 "MBYTES", "GBYTES", "TBYTES", "CALLER_ID_WAIT", "CAN_FLOOD", "CAN_IDLE",
1452 "CHANNEL", "CIDR_BITLEN_IPV4", "CIDR_BITLEN_IPV6", "CIPHER_PREFERENCE",
1453 "CLASS", "COMPRESSED", "COMPRESSION_LEVEL", "CONNECT", "CONNECTFREQ",
1454 "CRYPTLINK", "DEFAULT_CIPHER_PREFERENCE", "DEFAULT_FLOODCOUNT",
1455 "DEFAULT_SPLIT_SERVER_COUNT", "DEFAULT_SPLIT_USER_COUNT", "DENY",
1456 "DESCRIPTION", "DIE", "DISABLE_AUTH", "DISABLE_FAKE_CHANNELS",
1457 "DISABLE_HIDDEN", "DISABLE_LOCAL_CHANNELS", "DISABLE_REMOTE_COMMANDS",
1458 "DOTS_IN_IDENT", "DURATION", "EGDPOOL_PATH", "EMAIL", "ENABLE",
1459 "ENCRYPTED", "EXCEED_LIMIT", "EXEMPT", "FAILED_OPER_NOTICE", "FAKENAME",
1460 "IRCD_FLAGS", "FLATTEN_LINKS", "FFAILED_OPERLOG", "FKILLLOG",
1461 "FKLINELOG", "FGLINELOG", "FIOERRLOG", "FOPERLOG", "FOPERSPYLOG",
1462 "FUSERLOG", "GECOS", "GENERAL", "GLINE", "GLINES", "GLINE_EXEMPT",
1463 "GLINE_LOG", "GLINE_TIME", "GLINE_MIN_CIDR", "GLINE_MIN_CIDR6",
1464 "GLOBAL_KILL", "IRCD_AUTH", "NEED_IDENT", "HAVENT_READ_CONF", "HIDDEN",
1465 "HIDDEN_ADMIN", "HIDDEN_NAME", "HIDDEN_OPER", "HIDE_SERVER_IPS",
1466 "HIDE_SERVERS", "HIDE_SPOOF_IPS", "HOST", "HUB", "HUB_MASK", "IDLETIME",
1467 "IGNORE_BOGUS_TS", "INVISIBLE_ON_CONNECT", "IP", "KILL",
1468 "KILL_CHASE_TIME_LIMIT", "KLINE", "KLINE_EXEMPT", "KLINE_REASON",
1469 "KLINE_WITH_REASON", "KNOCK_DELAY", "KNOCK_DELAY_CHANNEL", "LEAF_MASK",
1470 "LINKS_DELAY", "LISTEN", "T_LOG", "LOGGING", "LOG_LEVEL", "MAX_ACCEPT",
1471 "MAX_BANS", "MAX_CHANS_PER_USER", "MAX_GLOBAL", "MAX_IDENT", "MAX_LOCAL",
1472 "MAX_NICK_CHANGES", "MAX_NICK_TIME", "MAX_NUMBER", "MAX_TARGETS",
1473 "MAX_WATCH", "MESSAGE_LOCALE", "MIN_NONWILDCARD",
1474 "MIN_NONWILDCARD_SIMPLE", "MODULE", "MODULES", "NAME", "NEED_PASSWORD",
1475 "NETWORK_DESC", "NETWORK_NAME", "NICK", "NICK_CHANGES",
1476 "NO_CREATE_ON_SPLIT", "NO_JOIN_ON_SPLIT", "NO_OPER_FLOOD", "NO_TILDE",
1477 "NOT", "NUMBER", "NUMBER_PER_IDENT", "NUMBER_PER_CIDR", "NUMBER_PER_IP",
1478 "NUMBER_PER_IP_GLOBAL", "OPERATOR", "OPERS_BYPASS_CALLERID", "OPER_LOG",
1479 "OPER_ONLY_UMODES", "OPER_PASS_RESV", "OPER_SPY_T", "OPER_UMODES",
1480 "JOIN_FLOOD_COUNT", "JOIN_FLOOD_TIME", "PACE_WAIT", "PACE_WAIT_SIMPLE",
1481 "PASSWORD", "PATH", "PING_COOKIE", "PING_TIME", "PING_WARNING", "PORT",
1482 "QSTRING", "QUIET_ON_BAN", "REASON", "REDIRPORT", "REDIRSERV", "REGEX_T",
1483 "REHASH", "TREJECT_HOLD_TIME", "REMOTE", "REMOTEBAN",
1484 "RESTRICT_CHANNELS", "RESTRICTED", "RSA_PRIVATE_KEY_FILE",
1485 "RSA_PUBLIC_KEY_FILE", "SSL_CERTIFICATE_FILE", "T_SSL_CONNECTION_METHOD",
1486 "T_SSLV3", "T_TLSV1", "RESV", "RESV_EXEMPT", "SECONDS", "MINUTES",
1487 "HOURS", "DAYS", "WEEKS", "SENDQ", "SEND_PASSWORD", "SERVERHIDE",
1488 "SERVERINFO", "SERVLINK_PATH", "IRCD_SID", "TKLINE_EXPIRE_NOTICES",
1489 "T_SHARED", "T_CLUSTER", "TYPE", "SHORT_MOTD", "SILENT", "SPOOF",
1490 "SPOOF_NOTICE", "STATS_E_DISABLED", "STATS_I_OPER_ONLY",
1491 "STATS_K_OPER_ONLY", "STATS_O_OPER_ONLY", "STATS_P_OPER_ONLY", "TBOOL",
1492 "TMASKED", "T_REJECT", "TS_MAX_DELTA", "TS_WARN_DELTA", "TWODOTS",
1493 "T_ALL", "T_BOTS", "T_SOFTCALLERID", "T_CALLERID", "T_CCONN",
1494 "T_CCONN_FULL", "T_CLIENT_FLOOD", "T_DEAF", "T_DEBUG", "T_DRONE",
1495 "T_EXTERNAL", "T_FULL", "T_INVISIBLE", "T_IPV4", "T_IPV6", "T_LOCOPS",
1496 "T_LOGPATH", "T_L_CRIT", "T_L_DEBUG", "T_L_ERROR", "T_L_INFO",
1497 "T_L_NOTICE", "T_L_TRACE", "T_L_WARN", "T_MAX_CLIENTS", "T_NCHANGE",
1498 "T_OPERWALL", "T_REJ", "T_SERVER", "T_SERVNOTICE", "T_SKILL", "T_SPY",
1499 "T_SSL", "T_UMODES", "T_UNAUTH", "T_UNRESV", "T_UNXLINE", "T_WALLOP",
1500 "THROTTLE_TIME", "TOPICBURST", "TRUE_NO_OPER_FLOOD", "TKLINE", "TXLINE",
1501 "TRESV", "UNKLINE", "USER", "USE_EGD", "USE_EXCEPT", "USE_INVEX",
1502 "USE_KNOCK", "USE_LOGGING", "USE_WHOIS_ACTUALLY", "VHOST", "VHOST6",
1503 "XLINE", "WARN", "WARN_NO_NLINE", "';'", "'}'", "'{'", "'='", "','",
1504 "$accept", "conf", "conf_item", "timespec_", "timespec", "sizespec_",
1505 "sizespec", "modules_entry", "modules_items", "modules_item",
1506 "modules_module", "modules_path", "serverinfo_entry", "serverinfo_items",
1507 "serverinfo_item", "serverinfo_ssl_connection_method", "$@1",
1508 "method_types", "method_type_item", "serverinfo_ssl_certificate_file",
1509 "serverinfo_rsa_private_key_file", "serverinfo_name", "serverinfo_sid",
1510 "serverinfo_description", "serverinfo_network_name",
1511 "serverinfo_network_desc", "serverinfo_vhost", "serverinfo_vhost6",
1512 "serverinfo_max_clients", "serverinfo_hub", "admin_entry", "admin_items",
1513 "admin_item", "admin_name", "admin_email", "admin_description",
1514 "logging_entry", "logging_items", "logging_item", "logging_path",
1515 "logging_oper_log", "logging_fuserlog", "logging_ffailed_operlog",
1516 "logging_foperlog", "logging_foperspylog", "logging_fglinelog",
1517 "logging_fklinelog", "logging_ioerrlog", "logging_killlog",
1518 "logging_log_level", "logging_use_logging", "oper_entry", "$@2",
1519 "oper_name_b", "oper_items", "oper_item", "oper_name", "oper_name_t",
1520 "oper_user", "oper_password", "oper_encrypted",
1521 "oper_rsa_public_key_file", "oper_class", "oper_umodes", "$@3",
1522 "oper_umodes_items", "oper_umodes_item", "oper_global_kill",
1523 "oper_remote", "oper_remoteban", "oper_kline", "oper_xline",
1524 "oper_unkline", "oper_gline", "oper_nick_changes", "oper_die",
1525 "oper_rehash", "oper_admin", "oper_hidden_admin", "oper_hidden_oper",
1526 "oper_operwall", "oper_flags", "$@4", "oper_flags_items",
1527 "oper_flags_item", "$@5", "$@6", "oper_flags_item_atom", "class_entry",
1528 "$@7", "class_name_b", "class_items", "class_item", "class_name",
1529 "class_name_t", "class_ping_time", "class_ping_warning",
1530 "class_number_per_ip", "class_connectfreq", "class_max_number",
1531 "class_max_global", "class_max_local", "class_max_ident", "class_sendq",
1532 "class_cidr_bitlen_ipv4", "class_cidr_bitlen_ipv6",
1533 "class_number_per_cidr", "listen_entry", "$@8", "listen_flags", "$@9",
1534 "listen_flags_items", "listen_flags_item", "listen_items", "listen_item",
1535 "listen_port", "$@10", "port_items", "port_item", "listen_address",
1536 "listen_host", "auth_entry", "$@11", "auth_items", "auth_item",
1537 "auth_user", "auth_passwd", "auth_spoof_notice", "auth_class",
1538 "auth_encrypted", "auth_flags", "$@12", "auth_flags_items",
1539 "auth_flags_item", "$@13", "$@14", "auth_flags_item_atom",
1540 "auth_kline_exempt", "auth_need_ident", "auth_exceed_limit",
1541 "auth_can_flood", "auth_no_tilde", "auth_gline_exempt", "auth_spoof",
1542 "auth_redir_serv", "auth_redir_port", "auth_need_password", "resv_entry",
1543 "$@15", "resv_items", "resv_item", "resv_creason", "resv_channel",
1544 "resv_nick", "shared_entry", "$@16", "shared_items", "shared_item",
1545 "shared_name", "shared_user", "shared_type", "$@17", "shared_types",
1546 "shared_type_item", "cluster_entry", "$@18", "cluster_items",
1547 "cluster_item", "cluster_name", "cluster_type", "$@19", "cluster_types",
1548 "cluster_type_item", "connect_entry", "$@20", "connect_name_b",
1549 "connect_items", "connect_item", "connect_name", "connect_name_t",
1550 "connect_host", "connect_vhost", "connect_send_password",
1551 "connect_accept_password", "connect_port", "connect_aftype",
1552 "connect_fakename", "connect_flags", "$@21", "connect_flags_items",
1553 "connect_flags_item", "$@22", "$@23", "connect_flags_item_atom",
1554 "connect_rsa_public_key_file", "connect_encrypted", "connect_cryptlink",
1555 "connect_compressed", "connect_auto", "connect_topicburst",
1556 "connect_hub_mask", "connect_leaf_mask", "connect_class",
1557 "connect_cipher_preference", "kill_entry", "$@24", "kill_type", "$@25",
1558 "kill_type_items", "kill_type_item", "kill_items", "kill_item",
1559 "kill_user", "kill_reason", "deny_entry", "$@26", "deny_items",
1560 "deny_item", "deny_ip", "deny_reason", "exempt_entry", "exempt_items",
1561 "exempt_item", "exempt_ip", "gecos_entry", "$@27", "gecos_flags", "$@28",
1562 "gecos_flags_items", "gecos_flags_item", "gecos_items", "gecos_item",
1563 "gecos_name", "gecos_reason", "general_entry", "general_items",
1564 "general_item", "general_max_watch", "general_gline_min_cidr",
1565 "general_gline_min_cidr6", "general_burst_away",
1566 "general_use_whois_actually", "general_reject_hold_time",
1567 "general_tkline_expire_notices", "general_kill_chase_time_limit",
1568 "general_hide_spoof_ips", "general_ignore_bogus_ts",
1569 "general_disable_remote_commands", "general_failed_oper_notice",
1570 "general_anti_nick_flood", "general_max_nick_time",
1571 "general_max_nick_changes", "general_max_accept",
1572 "general_anti_spam_exit_message_time", "general_ts_warn_delta",
1573 "general_ts_max_delta", "general_havent_read_conf",
1574 "general_kline_with_reason", "general_kline_reason",
1575 "general_invisible_on_connect", "general_warn_no_nline",
1576 "general_stats_e_disabled", "general_stats_o_oper_only",
1577 "general_stats_P_oper_only", "general_stats_k_oper_only",
1578 "general_stats_i_oper_only", "general_pace_wait",
1579 "general_caller_id_wait", "general_opers_bypass_callerid",
1580 "general_pace_wait_simple", "general_short_motd",
1581 "general_no_oper_flood", "general_true_no_oper_flood",
1582 "general_oper_pass_resv", "general_message_locale", "general_idletime",
1583 "general_dots_in_ident", "general_max_targets", "general_servlink_path",
1584 "general_default_cipher_preference", "general_compression_level",
1585 "general_use_egd", "general_egdpool_path", "general_ping_cookie",
1586 "general_disable_auth", "general_throttle_time", "general_oper_umodes",
1587 "$@29", "umode_oitems", "umode_oitem", "general_oper_only_umodes",
1588 "$@30", "umode_items", "umode_item", "general_min_nonwildcard",
1589 "general_min_nonwildcard_simple", "general_default_floodcount",
1590 "general_client_flood", "gline_entry", "$@31", "gline_items",
1591 "gline_item", "gline_enable", "gline_duration", "gline_logging", "$@32",
1592 "gline_logging_types", "gline_logging_type_item", "gline_user",
1593 "gline_server", "gline_action", "$@33", "gdeny_types", "gdeny_type_item",
1594 "channel_entry", "channel_items", "channel_item",
1595 "channel_disable_fake_channels", "channel_restrict_channels",
1596 "channel_disable_local_channels", "channel_use_except",
1597 "channel_use_invex", "channel_use_knock", "channel_knock_delay",
1598 "channel_knock_delay_channel", "channel_max_chans_per_user",
1599 "channel_quiet_on_ban", "channel_max_bans",
1600 "channel_default_split_user_count", "channel_default_split_server_count",
1601 "channel_no_create_on_split", "channel_no_join_on_split",
1602 "channel_burst_topicwho", "channel_jflood_count", "channel_jflood_time",
1603 "serverhide_entry", "serverhide_items", "serverhide_item",
1604 "serverhide_flatten_links", "serverhide_hide_servers",
1605 "serverhide_hidden_name", "serverhide_links_delay", "serverhide_hidden",
1606 "serverhide_disable_hidden", "serverhide_hide_server_ips", 0
1607 };
1608 #endif
1609
1610 # ifdef YYPRINT
1611 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
1612 token YYLEX-NUM. */
1613 static const yytype_uint16 yytoknum[] =
1614 {
1615 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
1616 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
1617 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
1618 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1619 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
1620 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1621 315, 316, 317, 318, 319, 320, 321, 322, 323, 324,
1622 325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1623 335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1624 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1625 355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1626 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1627 375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1628 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
1629 395, 396, 397, 398, 399, 400, 401, 402, 403, 404,
1630 405, 406, 407, 408, 409, 410, 411, 412, 413, 414,
1631 415, 416, 417, 418, 419, 420, 421, 422, 423, 424,
1632 425, 426, 427, 428, 429, 430, 431, 432, 433, 434,
1633 435, 436, 437, 438, 439, 440, 441, 442, 443, 444,
1634 445, 446, 447, 448, 449, 450, 451, 452, 453, 454,
1635 455, 456, 457, 458, 459, 460, 461, 462, 463, 464,
1636 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
1637 475, 476, 477, 478, 479, 480, 481, 482, 483, 484,
1638 485, 486, 487, 488, 489, 490, 491, 492, 493, 494,
1639 495, 496, 497, 498, 499, 500, 501, 502, 503, 504,
1640 505, 506, 507, 508, 509, 510, 511, 512, 513, 514,
1641 515, 59, 125, 123, 61, 44
1642 };
1643 # endif
1644
1645 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1646 static const yytype_uint16 yyr1[] =
1647 {
1648 0, 266, 267, 267, 268, 268, 268, 268, 268, 268,
1649 268, 268, 268, 268, 268, 268, 268, 268, 268, 268,
1650 268, 268, 268, 268, 268, 268, 269, 269, 270, 270,
1651 270, 270, 270, 270, 271, 271, 272, 272, 272, 272,
1652 273, 274, 274, 275, 275, 275, 276, 277, 278, 279,
1653 279, 280, 280, 280, 280, 280, 280, 280, 280, 280,
1654 280, 280, 280, 280, 282, 281, 283, 283, 284, 284,
1655 285, 286, 287, 288, 289, 290, 291, 292, 293, 294,
1656 295, 296, 297, 297, 298, 298, 298, 298, 299, 300,
1657 301, 302, 303, 303, 304, 304, 304, 304, 304, 304,
1658 304, 304, 304, 304, 304, 304, 304, 305, 306, 307,
1659 308, 309, 310, 311, 312, 313, 314, 315, 315, 315,
1660 315, 315, 315, 315, 316, 318, 317, 319, 319, 320,
1661 320, 321, 321, 321, 321, 321, 321, 321, 321, 321,
1662 321, 321, 321, 321, 321, 321, 321, 321, 321, 321,
1663 321, 321, 321, 321, 322, 323, 324, 325, 326, 327,
1664 328, 330, 329, 331, 331, 332, 332, 332, 332, 332,
1665 332, 332, 332, 332, 332, 332, 332, 332, 332, 332,
1666 332, 332, 332, 332, 333, 334, 335, 336, 337, 338,
1667 339, 340, 341, 342, 343, 344, 345, 346, 348, 347,
1668 349, 349, 351, 350, 352, 350, 353, 353, 353, 353,
1669 353, 353, 353, 353, 353, 353, 353, 353, 353, 353,
1670 353, 353, 355, 354, 356, 356, 357, 357, 358, 358,
1671 358, 358, 358, 358, 358, 358, 358, 358, 358, 358,
1672 358, 358, 359, 360, 361, 362, 363, 364, 365, 366,
1673 367, 368, 369, 370, 371, 372, 374, 373, 376, 375,
1674 377, 377, 378, 378, 378, 379, 379, 380, 380, 380,
1675 380, 380, 382, 381, 383, 383, 384, 384, 385, 386,
1676 388, 387, 389, 389, 390, 390, 390, 390, 390, 390,
1677 390, 390, 390, 390, 390, 390, 390, 390, 390, 390,
1678 390, 391, 392, 393, 394, 395, 397, 396, 398, 398,
1679 400, 399, 401, 399, 402, 402, 402, 402, 402, 402,
1680 402, 402, 402, 402, 403, 404, 405, 406, 407, 408,
1681 409, 410, 411, 412, 414, 413, 415, 415, 416, 416,
1682 416, 416, 417, 418, 419, 421, 420, 422, 422, 423,
1683 423, 423, 423, 424, 425, 427, 426, 428, 428, 429,
1684 429, 429, 429, 429, 429, 429, 429, 429, 429, 429,
1685 431, 430, 432, 432, 433, 433, 433, 434, 436, 435,
1686 437, 437, 438, 438, 438, 438, 438, 438, 438, 438,
1687 438, 438, 438, 440, 439, 441, 441, 442, 442, 443,
1688 443, 443, 443, 443, 443, 443, 443, 443, 443, 443,
1689 443, 443, 443, 443, 443, 443, 443, 443, 443, 444,
1690 445, 446, 447, 448, 449, 450, 451, 451, 452, 454,
1691 453, 455, 455, 457, 456, 458, 456, 459, 459, 459,
1692 459, 459, 460, 461, 462, 463, 464, 465, 466, 467,
1693 468, 469, 471, 470, 473, 472, 474, 474, 475, 476,
1694 476, 477, 477, 477, 477, 478, 479, 481, 480, 482,
1695 482, 483, 483, 483, 484, 485, 486, 487, 487, 488,
1696 488, 489, 491, 490, 493, 492, 494, 494, 495, 496,
1697 496, 497, 497, 497, 497, 498, 499, 500, 501, 501,
1698 502, 502, 502, 502, 502, 502, 502, 502, 502, 502,
1699 502, 502, 502, 502, 502, 502, 502, 502, 502, 502,
1700 502, 502, 502, 502, 502, 502, 502, 502, 502, 502,
1701 502, 502, 502, 502, 502, 502, 502, 502, 502, 502,
1702 502, 502, 502, 502, 502, 502, 502, 502, 502, 502,
1703 502, 502, 502, 502, 502, 502, 503, 504, 505, 506,
1704 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
1705 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
1706 527, 528, 529, 530, 530, 531, 531, 532, 533, 534,
1707 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
1708 545, 546, 547, 548, 549, 550, 551, 553, 552, 554,
1709 554, 555, 555, 555, 555, 555, 555, 555, 555, 555,
1710 555, 555, 555, 555, 555, 555, 555, 555, 555, 555,
1711 557, 556, 558, 558, 559, 559, 559, 559, 559, 559,
1712 559, 559, 559, 559, 559, 559, 559, 559, 559, 559,
1713 559, 559, 559, 560, 561, 562, 563, 565, 564, 566,
1714 566, 567, 567, 567, 567, 567, 567, 567, 568, 569,
1715 571, 570, 572, 572, 573, 573, 574, 575, 577, 576,
1716 578, 578, 579, 579, 580, 581, 581, 582, 582, 582,
1717 582, 582, 582, 582, 582, 582, 582, 582, 582, 582,
1718 582, 582, 582, 582, 582, 582, 583, 584, 585, 586,
1719 587, 588, 589, 590, 591, 592, 593, 594, 595, 596,
1720 597, 598, 599, 600, 601, 602, 602, 603, 603, 603,
1721 603, 603, 603, 603, 603, 604, 605, 606, 607, 608,
1722 609, 610
1723 };
1724
1725 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
1726 static const yytype_uint8 yyr2[] =
1727 {
1728 0, 2, 0, 2, 1, 1, 1, 1, 1, 1,
1729 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1730 1, 1, 1, 1, 2, 2, 0, 1, 2, 3,
1731 3, 3, 3, 3, 0, 1, 2, 3, 3, 3,
1732 5, 2, 1, 1, 1, 2, 4, 4, 5, 2,
1733 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1734 1, 1, 1, 2, 0, 5, 3, 1, 1, 1,
1735 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1736 4, 5, 2, 1, 1, 1, 1, 2, 4, 4,
1737 4, 5, 2, 1, 1, 1, 1, 1, 1, 1,
1738 1, 1, 1, 1, 1, 1, 2, 4, 4, 4,
1739 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1740 4, 4, 4, 4, 4, 0, 7, 0, 1, 2,
1741 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1742 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1743 1, 1, 1, 2, 4, 1, 4, 4, 4, 4,
1744 4, 0, 5, 3, 1, 1, 1, 1, 1, 1,
1745 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1746 1, 1, 1, 1, 4, 4, 4, 4, 4, 4,
1747 4, 4, 4, 4, 4, 4, 4, 4, 0, 5,
1748 3, 1, 0, 3, 0, 2, 1, 1, 1, 1,
1749 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1750 1, 1, 0, 7, 0, 1, 2, 1, 1, 1,
1751 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1752 1, 2, 4, 1, 4, 4, 4, 4, 4, 4,
1753 4, 4, 4, 4, 4, 4, 0, 6, 0, 5,
1754 3, 1, 1, 1, 1, 2, 1, 1, 1, 1,
1755 1, 2, 0, 5, 3, 1, 1, 3, 4, 4,
1756 0, 6, 2, 1, 1, 1, 1, 1, 1, 1,
1757 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1758 2, 4, 4, 4, 4, 4, 0, 5, 3, 1,
1759 0, 3, 0, 2, 1, 1, 1, 1, 1, 1,
1760 1, 1, 1, 1, 4, 4, 4, 4, 4, 4,
1761 4, 4, 4, 4, 0, 6, 2, 1, 1, 1,
1762 1, 2, 4, 4, 4, 0, 6, 2, 1, 1,
1763 1, 1, 2, 4, 4, 0, 5, 3, 1, 1,
1764 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1765 0, 6, 2, 1, 1, 1, 2, 4, 0, 5,
1766 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1767 1, 1, 1, 0, 7, 0, 1, 2, 1, 1,
1768 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1769 1, 1, 1, 1, 1, 1, 1, 1, 2, 4,
1770 1, 4, 4, 4, 4, 4, 4, 4, 4, 0,
1771 5, 3, 1, 0, 3, 0, 2, 1, 1, 1,
1772 1, 1, 4, 4, 4, 4, 4, 4, 4, 4,
1773 4, 4, 0, 6, 0, 5, 3, 1, 1, 2,
1774 1, 1, 1, 1, 1, 4, 4, 0, 6, 2,
1775 1, 1, 1, 1, 4, 4, 5, 2, 1, 1,
1776 1, 4, 0, 6, 0, 5, 3, 1, 1, 2,
1777 1, 1, 1, 1, 1, 4, 4, 5, 2, 1,
1778 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1779 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1780 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1781 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1782 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1783 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
1784 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1785 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1786 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1787 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1788 4, 4, 4, 4, 4, 4, 4, 0, 5, 3,
1789 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1790 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1791 0, 5, 3, 1, 1, 1, 1, 1, 1, 1,
1792 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1793 1, 1, 1, 4, 4, 4, 4, 0, 6, 2,
1794 1, 1, 1, 1, 1, 1, 1, 1, 4, 4,
1795 0, 5, 3, 1, 1, 1, 4, 4, 0, 5,
1796 3, 1, 1, 1, 5, 2, 1, 1, 1, 1,
1797 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1798 1, 1, 1, 1, 1, 1, 4, 4, 4, 4,
1799 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
1800 4, 4, 4, 4, 5, 2, 1, 1, 1, 1,
1801 1, 1, 1, 1, 1, 4, 4, 4, 4, 4,
1802 4, 4
1803 };
1804
1805 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
1806 STATE-NUM when YYTABLE doesn't specify something else to do. Zero
1807 means the default is an error. */
1808 static const yytype_uint16 yydefact[] =
1809 {
1810 2, 0, 1, 0, 0, 0, 222, 393, 467, 0,
1811 482, 0, 657, 280, 452, 256, 0, 0, 125, 334,
1812 0, 0, 345, 370, 3, 23, 11, 4, 5, 6,
1813 8, 9, 10, 13, 14, 15, 16, 17, 18, 19,
1814 22, 20, 21, 7, 12, 24, 25, 0, 0, 224,
1815 395, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1816 0, 127, 0, 0, 0, 0, 0, 0, 0, 0,
1817 0, 0, 83, 84, 86, 85, 705, 0, 0, 0,
1818 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1819 0, 0, 0, 0, 0, 0, 686, 704, 699, 687,
1820 688, 689, 690, 692, 693, 694, 695, 691, 696, 697,
1821 698, 700, 701, 702, 703, 243, 0, 225, 420, 0,
1822 396, 0, 480, 0, 0, 478, 479, 0, 555, 0,
1823 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1824 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1825 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1826 0, 630, 0, 607, 0, 0, 0, 0, 0, 0,
1827 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1828 0, 0, 0, 0, 0, 499, 554, 549, 550, 547,
1829 551, 552, 548, 510, 500, 501, 539, 502, 503, 504,
1830 505, 506, 507, 508, 509, 544, 511, 512, 513, 514,
1831 553, 516, 521, 517, 519, 518, 533, 534, 520, 522,
1832 523, 524, 525, 527, 526, 515, 529, 538, 540, 541,
1833 530, 531, 545, 546, 543, 532, 528, 536, 537, 535,
1834 542, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1835 0, 0, 0, 0, 0, 0, 0, 0, 0, 93,
1836 94, 95, 98, 105, 99, 103, 100, 101, 104, 102,
1837 96, 97, 0, 0, 0, 0, 42, 43, 44, 155,
1838 0, 128, 0, 734, 0, 0, 0, 0, 0, 0,
1839 0, 0, 726, 727, 728, 732, 729, 731, 730, 733,
1840 0, 0, 0, 0, 0, 0, 0, 0, 64, 0,
1841 0, 0, 0, 0, 50, 62, 61, 58, 51, 60,
1842 54, 55, 56, 52, 59, 57, 53, 0, 0, 87,
1843 0, 0, 0, 0, 82, 0, 0, 0, 0, 0,
1844 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1845 0, 0, 0, 0, 685, 0, 0, 473, 0, 0,
1846 0, 470, 471, 472, 0, 0, 477, 494, 0, 0,
1847 484, 493, 0, 490, 491, 492, 0, 0, 0, 0,
1848 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1849 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1850 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1851 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1853 0, 0, 498, 667, 678, 0, 0, 670, 0, 0,
1854 0, 660, 661, 662, 663, 664, 665, 666, 0, 0,
1855 0, 0, 0, 306, 0, 0, 0, 0, 0, 0,
1856 0, 0, 0, 0, 0, 0, 283, 284, 285, 294,
1857 286, 299, 287, 288, 289, 290, 297, 291, 292, 293,
1858 295, 296, 298, 464, 0, 454, 0, 463, 0, 460,
1859 461, 462, 0, 258, 0, 0, 0, 268, 0, 266,
1860 267, 269, 270, 106, 0, 0, 0, 0, 0, 0,
1861 0, 0, 0, 0, 0, 0, 0, 92, 45, 0,
1862 0, 0, 41, 0, 0, 0, 0, 0, 0, 337,
1863 338, 339, 340, 0, 0, 0, 0, 0, 0, 0,
1864 0, 725, 63, 0, 0, 0, 0, 0, 0, 0,
1865 0, 0, 0, 0, 0, 0, 49, 0, 0, 355,
1866 0, 0, 348, 349, 350, 351, 0, 0, 378, 0,
1867 373, 374, 375, 0, 0, 0, 81, 0, 0, 0,
1868 0, 0, 26, 0, 0, 0, 0, 0, 0, 0,
1869 0, 0, 0, 0, 0, 0, 684, 0, 0, 0,
1870 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1871 0, 0, 227, 228, 231, 232, 234, 235, 236, 237,
1872 238, 239, 240, 229, 230, 233, 0, 0, 0, 0,
1873 0, 0, 0, 0, 0, 0, 429, 0, 0, 0,
1874 0, 0, 0, 0, 0, 0, 0, 398, 399, 400,
1875 401, 402, 403, 405, 404, 406, 407, 415, 412, 414,
1876 413, 411, 417, 408, 409, 410, 416, 0, 0, 0,
1877 469, 0, 476, 0, 0, 0, 0, 489, 0, 0,
1878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1879 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1880 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1882 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,
1883 0, 0, 0, 0, 0, 0, 497, 0, 0, 0,
1884 0, 0, 0, 0, 659, 300, 0, 0, 0, 0,
1885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1886 0, 0, 0, 282, 0, 0, 0, 0, 459, 271,
1887 0, 0, 0, 0, 0, 265, 0, 0, 0, 0,
1888 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1889 0, 0, 0, 0, 91, 0, 0, 40, 0, 0,
1890 0, 0, 0, 198, 0, 0, 0, 0, 0, 0,
1891 0, 0, 0, 0, 0, 0, 0, 161, 0, 0,
1892 0, 0, 130, 131, 132, 133, 150, 151, 137, 136,
1893 138, 139, 145, 140, 141, 142, 143, 144, 146, 147,
1894 148, 134, 135, 149, 152, 341, 0, 0, 0, 0,
1895 336, 0, 0, 0, 0, 0, 0, 0, 724, 0,
1896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1897 0, 48, 352, 0, 0, 0, 0, 347, 376, 0,
1898 0, 0, 372, 90, 89, 88, 721, 718, 717, 706,
1899 708, 26, 26, 26, 26, 26, 28, 27, 712, 713,
1900 716, 714, 719, 720, 722, 723, 715, 707, 709, 710,
1901 711, 241, 0, 0, 0, 0, 0, 0, 0, 0,
1902 0, 0, 0, 0, 0, 0, 226, 418, 0, 0,
1903 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1904 0, 0, 0, 0, 0, 0, 0, 0, 397, 0,
1905 0, 468, 481, 0, 0, 0, 483, 568, 572, 559,
1906 588, 601, 600, 655, 605, 566, 597, 603, 567, 557,
1907 558, 575, 564, 596, 565, 578, 563, 577, 576, 571,
1908 570, 569, 598, 556, 595, 653, 654, 592, 589, 634,
1909 650, 651, 635, 636, 637, 638, 645, 639, 648, 652,
1910 641, 646, 642, 647, 640, 644, 643, 649, 0, 633,
1911 594, 611, 627, 628, 612, 613, 614, 615, 622, 616,
1912 625, 629, 618, 623, 619, 624, 617, 621, 620, 626,
1913 0, 610, 587, 590, 604, 561, 599, 562, 591, 580,
1914 585, 586, 583, 584, 581, 582, 574, 573, 34, 34,
1915 34, 36, 35, 656, 606, 593, 602, 560, 579, 0,
1916 0, 0, 0, 0, 0, 658, 0, 0, 0, 0,
1917 312, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1918 0, 0, 281, 0, 0, 0, 453, 0, 0, 0,
1919 276, 272, 275, 257, 110, 116, 114, 113, 115, 111,
1920 112, 109, 117, 123, 118, 122, 120, 121, 119, 108,
1921 107, 124, 46, 47, 153, 0, 0, 0, 0, 0,
1922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1923 0, 0, 0, 0, 0, 0, 0, 0, 129, 0,
1924 0, 0, 335, 740, 735, 739, 737, 741, 736, 738,
1925 74, 80, 72, 76, 75, 71, 70, 68, 69, 0,
1926 67, 73, 79, 77, 78, 0, 0, 0, 346, 0,
1927 0, 371, 29, 30, 31, 32, 33, 0, 0, 0,
1928 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1929 223, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1930 0, 435, 0, 0, 0, 0, 0, 0, 0, 0,
1931 0, 394, 474, 475, 495, 496, 488, 0, 487, 631,
1932 0, 608, 0, 37, 38, 39, 683, 682, 0, 681,
1933 669, 668, 675, 674, 0, 673, 677, 676, 327, 304,
1934 305, 326, 310, 0, 309, 0, 329, 325, 324, 333,
1935 328, 302, 332, 331, 330, 303, 301, 466, 458, 0,
1936 457, 465, 263, 264, 262, 0, 261, 279, 278, 0,
1937 0, 0, 0, 0, 0, 0, 204, 0, 0, 0,
1938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1939 0, 0, 0, 0, 126, 343, 344, 342, 65, 0,
1940 353, 359, 365, 369, 368, 367, 364, 360, 363, 366,
1941 361, 362, 0, 358, 354, 377, 382, 388, 392, 391,
1942 390, 387, 383, 386, 389, 384, 385, 0, 381, 253,
1943 254, 247, 249, 251, 250, 248, 242, 255, 246, 244,
1944 245, 252, 424, 426, 427, 446, 451, 450, 445, 444,
1945 443, 428, 433, 0, 432, 0, 421, 448, 449, 419,
1946 425, 442, 423, 447, 422, 485, 0, 632, 609, 679,
1947 0, 671, 0, 0, 307, 312, 318, 319, 315, 321,
1948 317, 316, 323, 320, 322, 314, 313, 455, 0, 259,
1949 0, 277, 274, 273, 194, 160, 192, 158, 202, 0,
1950 201, 0, 190, 184, 195, 196, 187, 154, 191, 157,
1951 193, 185, 186, 159, 197, 165, 181, 182, 166, 167,
1952 168, 169, 176, 170, 179, 183, 172, 177, 173, 178,
1953 171, 175, 174, 180, 0, 164, 189, 156, 188, 66,
1954 356, 0, 379, 0, 0, 430, 435, 439, 440, 437,
1955 438, 441, 436, 486, 680, 672, 311, 308, 456, 260,
1956 0, 199, 204, 214, 212, 221, 211, 206, 215, 219,
1957 208, 216, 218, 213, 207, 220, 217, 209, 210, 205,
1958 162, 0, 357, 380, 434, 431, 203, 200, 163
1959 };
1960
1961 /* YYDEFGOTO[NTERM-NUM]. */
1962 static const yytype_int16 yydefgoto[] =
1963 {
1964 -1, 1, 24, 896, 897, 1051, 1052, 25, 275, 276,
1965 277, 278, 26, 313, 314, 315, 550, 1159, 1160, 316,
1966 317, 318, 319, 320, 321, 322, 323, 324, 325, 326,
1967 27, 71, 72, 73, 74, 75, 28, 258, 259, 260,
1968 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
1969 271, 29, 61, 280, 821, 822, 823, 281, 824, 825,
1970 826, 827, 828, 829, 1133, 1434, 1435, 830, 831, 832,
1971 833, 834, 835, 836, 837, 838, 839, 840, 841, 842,
1972 843, 844, 1119, 1399, 1400, 1460, 1401, 1479, 30, 49,
1973 116, 611, 612, 613, 117, 614, 615, 616, 617, 618,
1974 619, 620, 621, 622, 623, 624, 625, 31, 58, 497,
1975 770, 1265, 1266, 498, 499, 500, 1271, 1091, 1092, 501,
1976 502, 32, 56, 465, 466, 467, 468, 469, 470, 471,
1977 472, 750, 1243, 1244, 1373, 1245, 1386, 473, 474, 475,
1978 476, 477, 478, 479, 480, 481, 482, 33, 62, 528,
1979 529, 530, 531, 532, 34, 65, 561, 562, 563, 564,
1980 565, 874, 1312, 1313, 35, 66, 569, 570, 571, 572,
1981 880, 1327, 1328, 36, 50, 119, 646, 647, 648, 120,
1982 649, 650, 651, 652, 653, 654, 655, 656, 937, 1353,
1983 1354, 1444, 1355, 1452, 657, 658, 659, 660, 661, 662,
1984 663, 664, 665, 666, 37, 57, 487, 765, 1259, 1260,
1985 488, 489, 490, 491, 38, 51, 360, 361, 362, 363,
1986 39, 124, 125, 126, 40, 53, 371, 675, 1217, 1218,
1987 372, 373, 374, 375, 41, 184, 185, 186, 187, 188,
1988 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
1989 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
1990 209, 210, 211, 212, 213, 214, 215, 216, 217, 218,
1991 219, 220, 221, 222, 223, 224, 225, 226, 227, 228,
1992 229, 230, 231, 232, 233, 234, 235, 410, 1030, 1031,
1993 236, 408, 1008, 1009, 237, 238, 239, 240, 42, 55,
1994 440, 441, 442, 443, 444, 740, 1234, 1235, 445, 446,
1995 447, 737, 1228, 1229, 43, 95, 96, 97, 98, 99,
1996 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
1997 110, 111, 112, 113, 114, 44, 291, 292, 293, 294,
1998 295, 296, 297, 298, 299
1999 };
2000
2001 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
2002 STATE-NUM. */
2003 #define YYPACT_NINF -691
2004 static const yytype_int16 yypact[] =
2005 {
2006 -691, 805, -691, -197, -255, -253, -691, -691, -691, -248,
2007 -691, -233, -691, -691, -691, -691, -227, -222, -691, -691,
2008 -206, -193, -691, -691, -691, -691, -691, -691, -691, -691,
2009 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2010 -691, -691, -691, -691, -691, -691, -691, 142, 757, -78,
2011 -75, -181, 10, -178, 461, -165, -159, -156, -141, 683,
2012 39, -30, -133, 539, 330, -130, -127, -119, -108, -92,
2013 -84, 26, -691, -691, -691, -691, -691, -82, -79, -77,
2014 -74, -37, -34, -25, -20, -17, -15, -6, 15, 16,
2015 43, 49, 52, 53, 64, 259, -691, -691, -691, -691,
2016 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2017 -691, -691, -691, -691, -691, -691, 69, -691, -691, 72,
2018 -691, 12, -691, 74, 13, -691, -691, 27, -691, 76,
2019 78, 82, 83, 97, 98, 100, 118, 119, 120, 126,
2020 129, 130, 136, 141, 143, 145, 149, 156, 157, 158,
2021 160, 161, 164, 165, 166, 167, 168, 169, 179, 180,
2022 181, -691, 184, -691, 185, 186, 188, 191, 192, 193,
2023 194, 195, 199, 200, 203, 204, 208, 210, 211, 212,
2024 213, 214, 215, 217, 23, -691, -691, -691, -691, -691,
2025 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2026 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2027 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2028 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2029 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2030 -691, 344, 783, 3, 202, -21, 222, 223, 224, 227,
2031 233, 238, 239, 242, 244, 245, 251, 252, 378, -691,
2032 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2033 -691, -691, 45, 255, 256, 58, -691, -691, -691, -691,
2034 73, -691, 86, -691, 258, 260, 261, 262, 264, 266,
2035 270, 221, -691, -691, -691, -691, -691, -691, -691, -691,
2036 150, 271, 272, 274, 275, 277, 279, 281, -691, 282,
2037 283, 287, 288, 77, -691, -691, -691, -691, -691, -691,
2038 -691, -691, -691, -691, -691, -691, -691, 8, 44, -691,
2039 176, 189, 312, 151, -691, 294, 353, 391, 356, 357,
2040 427, 427, 428, 429, 366, 367, 435, 427, 386, 387,
2041 393, 397, 398, 328, -691, 838, 673, -691, 333, 336,
2042 67, -691, -691, -691, 449, 345, -691, -691, 341, 346,
2043 -691, -691, 4, -691, -691, -691, 411, 427, 414, 427,
2044 482, 463, 483, 421, 425, 492, 472, 430, 495, 497,
2045 498, 433, 427, 436, 437, 501, 484, 439, 510, 511,
2046 427, 513, 515, 494, 517, 519, 454, 466, 395, 468,
2047 404, 427, 427, 471, 427, 507, 474, 475, 477, -54,
2048 -23, 479, 480, 427, 427, 538, 427, 487, 488, 489,
2049 490, 420, -691, -691, -691, 418, 426, -691, 431, 432,
2050 2, -691, -691, -691, -691, -691, -691, -691, 440, 438,
2051 442, 443, 445, -691, 446, 448, 450, 451, 453, 455,
2052 456, 459, 460, 464, 465, 269, -691, -691, -691, -691,
2053 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2054 -691, -691, -691, -691, 467, -691, 469, -691, 22, -691,
2055 -691, -691, 457, -691, 470, 473, 491, -691, 42, -691,
2056 -691, -691, -691, -691, 535, 537, 540, 543, 576, 578,
2057 584, 594, 147, 597, 598, 558, 500, -691, -691, 608,
2058 609, 503, -691, 587, 505, 504, 509, 512, 79, -691,
2059 -691, -691, -691, 571, 573, 577, 620, 579, 580, 427,
2060 518, -691, -691, 627, 585, 628, 631, 632, 634, 635,
2061 526, 639, 561, 641, 642, 541, -691, 546, 534, -691,
2062 536, 60, -691, -691, -691, -691, 547, 548, -691, 25,
2063 -691, -691, -691, 550, 553, 554, -691, 555, 557, 559,
2064 560, 562, -86, 564, 567, 569, 581, 582, 583, 591,
2065 596, 604, 605, 606, 610, 613, -691, 614, 574, 612,
2066 616, 617, 618, 619, 622, 623, 624, 626, 629, 630,
2067 633, 267, -691, -691, -691, -691, -691, -691, -691, -691,
2068 -691, -691, -691, -691, -691, -691, 637, 636, 640, 645,
2069 646, 647, 651, 654, 655, 656, -691, 658, 659, 660,
2070 662, 663, 664, 666, 668, 670, 228, -691, -691, -691,
2071 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2072 -691, -691, -691, -691, -691, -691, -691, 650, 665, 638,
2073 -691, 675, -691, 692, 694, 674, 678, -691, 682, 688,
2074 689, 693, 695, 696, 697, 699, 701, 702, 703, 704,
2075 705, 706, 707, 709, 710, 715, 717, 718, 719, 720,
2076 721, 722, 724, 727, 732, 733, 734, 735, 736, 737,
2077 828, 739, 865, 740, 741, 742, 743, 744, 745, 746,
2078 750, 752, 753, 754, 755, 760, 761, 762, 763, 310,
2079 768, 769, 784, 785, 787, 788, -691, 680, 427, 603,
2080 691, 738, 799, 789, -691, -691, 820, 887, 853, 854,
2081 790, 855, 857, 858, 862, 866, 911, 759, 913, 914,
2082 877, 924, 821, -691, 929, 822, 931, 826, -691, -691,
2083 824, 935, 936, 959, 831, -691, 832, 836, 840, 841,
2084 843, 844, 851, 859, 861, 863, 864, 867, 868, 869,
2085 873, 878, 880, 881, -691, 883, 884, -691, 885, 874,
2086 886, 888, 889, -691, 890, 891, 892, 893, 894, 895,
2087 896, 897, 898, 899, 900, 901, 903, -691, 904, 905,
2088 906, 148, -691, -691, -691, -691, -691, -691, -691, -691,
2089 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2090 -691, -691, -691, -691, -691, -691, 961, 965, 969, 910,
2091 -691, 912, 915, 916, 917, 918, 919, 920, -691, 921,
2092 922, 923, 925, 926, 927, 928, 66, 930, 932, 933,
2093 934, -691, -691, 972, 908, 973, 937, -691, -691, 993,
2094 938, 939, -691, -691, -691, -691, -691, -691, -691, -691,
2095 -691, 427, 427, 427, 427, 427, -691, -691, -691, -691,
2096 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2097 -691, -691, 1016, 1017, 427, 1019, 1034, 1042, 1043, 1031,
2098 1058, 1060, 427, 427, 538, 940, -691, -691, 1045, -24,
2099 998, 1049, 1050, 999, 1007, 1008, 1053, 944, 1055, 1056,
2100 1057, 1059, 1080, 1061, 1062, 1020, 1063, 953, -691, 958,
2101 960, -691, -691, 962, 963, 1066, -691, -691, -691, -691,
2102 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2103 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2104 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2105 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2106 -691, -691, -691, -691, -691, -691, -691, -691, -243, -691,
2107 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2108 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2109 -240, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2110 -691, -691, -691, -691, -691, -691, -691, -691, 538, 538,
2111 538, -691, -691, -691, -691, -691, -691, -691, -691, 5,
2112 966, 967, 9, 968, 970, -691, 971, 974, 975, 976,
2113 747, 977, 978, 979, 980, 981, 982, 983, 984, 985,
2114 986, 987, -691, 988, 1067, 989, -691, -65, 990, 991,
2115 1027, 955, -691, -691, -691, -691, -691, -691, -691, -691,
2116 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2117 -691, -691, -691, -691, -691, 1024, 1079, 1036, 1064, 992,
2118 1065, 1068, 1069, 1070, 1071, 1099, 1072, 1100, 1073, 1074,
2119 1075, 1101, 1076, 994, 1077, 1103, 1078, 1000, -691, 1003,
2120 1004, 1018, -691, -691, -691, -691, -691, -691, -691, -691,
2121 -691, -691, -691, -691, -691, -691, -691, -691, -691, -232,
2122 -691, -691, -691, -691, -691, 1021, 323, 1022, -691, 1023,
2123 780, -691, -691, -691, -691, -691, -691, 1025, 1026, 1028,
2124 1029, 1030, 1032, 1033, 1035, 1037, 1038, 1039, 1040, 1041,
2125 -691, 1044, 1046, 1047, 1048, 1051, 1052, 1054, 1081, 1082,
2126 1083, 764, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091,
2127 1092, -691, -691, -691, -691, -691, -691, -217, -691, -691,
2128 828, -691, 865, -691, -691, -691, -691, -691, -212, -691,
2129 -691, -691, -691, -691, -207, -691, -691, -691, -691, -691,
2130 -691, -691, -691, -184, -691, 839, -691, -691, -691, -691,
2131 -691, -691, -691, -691, -691, -691, -691, -691, -691, -168,
2132 -691, -691, -691, -691, -691, -152, -691, -691, -691, 1127,
2133 959, 1093, 1094, 1095, 1096, 1097, 1129, 1098, 1102, 1104,
2134 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114,
2135 902, 1115, 1116, 1117, -691, -691, -691, -691, -691, 66,
2136 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2137 -691, -691, -145, -691, -691, -691, -691, -691, -691, -691,
2138 -691, -691, -691, -691, -691, -691, -691, -144, -691, -691,
2139 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2140 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2141 -691, -691, -691, -134, -691, 7, -691, -691, -691, -691,
2142 -691, -691, -691, -691, -691, -691, 1066, -691, -691, -691,
2143 5, -691, 9, 839, -691, 747, -691, -691, -691, -691,
2144 -691, -691, -691, -691, -691, -691, -691, -691, 1067, -691,
2145 -65, -691, -691, -691, -691, -691, -691, -691, -691, -111,
2146 -691, 687, -691, -691, -691, -691, -691, -691, -691, -691,
2147 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2148 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2149 -691, -691, -691, -691, -110, -691, -691, -691, -691, -691,
2150 -691, 323, -691, 780, 7, -691, 764, -691, -691, -691,
2151 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2152 687, -691, 1129, -691, -691, -691, -691, -691, -691, -691,
2153 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2154 -691, 902, -691, -691, -691, -691, -691, -691, -691
2155 };
2156
2157 /* YYPGOTO[NTERM-NUM]. */
2158 static const yytype_int16 yypgoto[] =
2159 {
2160 -691, -691, -691, -541, -340, -690, -423, -691, -691, 1002,
2161 -691, -691, -691, -691, 997, -691, -691, -691, -19, -691,
2162 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2163 -691, -691, 1207, -691, -691, -691, -691, -691, 1121, -691,
2164 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2165 -691, -691, -691, -691, -691, 476, -691, -691, -691, -691,
2166 -691, -691, -691, -691, -691, -691, -200, -691, -691, -691,
2167 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2168 -691, -691, -691, -691, -177, -691, -691, -172, -691, -691,
2169 -691, -691, 681, -691, -691, -691, -691, -691, -691, -691,
2170 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2171 -691, -691, -95, -691, 806, -691, -691, -691, 33, -691,
2172 -691, -691, -691, -691, 846, -691, -691, -691, -691, -691,
2173 -691, -691, -691, -69, -691, -691, -59, -691, -691, -691,
2174 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2175 791, -691, -691, -691, -691, -691, -691, 756, -691, -691,
2176 -691, -691, -691, -125, -691, -691, -691, 749, -691, -691,
2177 -691, -691, -123, -691, -691, -691, -691, 676, -691, -691,
2178 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2179 -122, -691, -691, -121, -691, -691, -691, -691, -691, -691,
2180 -691, -691, -691, -691, -691, -691, -691, -691, -691, -67,
2181 -691, 837, -691, -691, -691, -691, -691, 1001, -691, -691,
2182 -691, -691, 1202, -691, -691, -691, -691, -691, -691, -39,
2183 -691, 956, -691, -691, -691, -691, 1145, -691, -691, -691,
2184 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2185 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2186 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2187 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2188 -691, -691, -691, -691, -691, -691, -691, -691, -691, 108,
2189 -691, -691, -691, 111, -691, -691, -691, -691, -691, -691,
2190 -691, 941, -691, -691, -691, -691, -691, -40, -691, -691,
2191 -691, -691, -691, -36, -691, -691, 1238, -691, -691, -691,
2192 -691, -691, -691, -691, -691, -691, -691, -691, -691, -691,
2193 -691, -691, -691, -691, -691, -691, -691, 1118, -691, -691,
2194 -691, -691, -691, -691, -691
2195 };
2196
2197 /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
2198 positive, shift that token. If negative, reduce the rule which
2199 number is the opposite. If zero, do what YYDEFACT says.
2200 If YYTABLE_NINF, syntax error. */
2201 #define YYTABLE_NINF -1
2202 static const yytype_uint16 yytable[] =
2203 {
2204 583, 584, 730, 433, 483, 367, 434, 590, 47, 557,
2205 48, 122, 1262, 357, 122, 52, 1226, 1447, 1219, 1448,
2206 1232, 1221, 1220, 483, 128, 1222, 566, 67, 367, 1298,
2207 54, 129, 130, 1299, 1449, 131, 59, 679, 1450, 681,
2208 272, 60, 132, 492, 1365, 566, 582, 435, 1366, 1369,
2209 436, 133, 694, 1370, 1371, 134, 135, 63, 1372, 272,
2210 702, 557, 136, 68, 45, 46, 137, 138, 357, 139,
2211 64, 713, 714, 69, 716, 140, 115, 1374, 300, 118,
2212 524, 1375, 121, 727, 728, 127, 731, 524, 891, 892,
2213 893, 894, 895, 1387, 141, 142, 493, 1388, 241, 143,
2214 123, 525, 358, 123, 242, 437, 144, 243, 525, 1389,
2215 145, 146, 147, 1390, 301, 148, 1440, 1442, 149, 150,
2216 1441, 1443, 244, 438, 279, 368, 494, 1445, 151, 558,
2217 282, 1446, 495, 327, 152, 153, 328, 154, 155, 156,
2218 157, 158, 329, 67, 721, 722, 567, 70, 368, 798,
2219 1461, 1480, 159, 799, 1462, 1481, 330, 358, 273, 484,
2220 369, 160, 302, 161, 162, 567, 163, 1263, 359, 164,
2221 165, 1264, 331, 166, 800, 723, 724, 273, 484, 68,
2222 332, 558, 335, 369, 167, 336, 801, 337, 274, 69,
2223 338, 485, 370, 1192, 1193, 496, 559, 802, 303, 857,
2224 304, 305, 803, 492, 526, 1227, 168, 274, 169, 1233,
2225 485, 526, 170, 568, 804, 370, 171, 172, 173, 174,
2226 175, 805, 283, 359, 176, 177, 806, 339, 807, 626,
2227 340, 627, 568, 178, 628, 527, 1157, 1158, 629, 341,
2228 503, 808, 527, 306, 342, 307, 308, 343, 559, 344,
2229 1451, 439, 486, 630, 631, 632, 493, 560, 345, 633,
2230 76, 309, 284, 70, 743, 179, 676, 180, 597, 809,
2231 448, 486, 77, 181, 810, 365, 285, 634, 182, 346,
2232 347, 635, 636, 183, 767, 431, 494, 881, 333, 449,
2233 598, 599, 495, 78, 79, 450, 811, 600, 286, 80,
2234 287, 81, 288, 289, 774, 310, 518, 348, 812, 560,
2235 813, 814, 637, 349, 638, 815, 350, 351, 451, 452,
2236 521, 290, 876, 453, 1048, 1049, 1050, 639, 352, 669,
2237 573, 300, 355, 311, 312, 356, 523, 454, 364, 555,
2238 376, 849, 377, 574, 455, 433, 378, 379, 434, 640,
2239 1172, 1173, 1174, 1175, 1176, 496, 82, 83, 1223, 1224,
2240 1225, 380, 381, 456, 382, 84, 85, 301, 784, 785,
2241 786, 787, 788, 789, 790, 601, 602, 603, 816, 245,
2242 604, 641, 383, 384, 385, 817, 86, 87, 605, 435,
2243 386, 457, 436, 387, 388, 642, 818, 819, 1060, 458,
2244 389, 606, 607, 88, 89, 390, 820, 391, 643, 392,
2245 1137, 542, 576, 393, 90, 302, 1301, 459, 608, 609,
2246 394, 395, 396, 91, 397, 398, 460, 461, 399, 400,
2247 401, 402, 403, 404, 246, 247, 248, 249, 250, 251,
2248 252, 253, 729, 405, 406, 407, 610, 437, 409, 411,
2249 412, 303, 413, 304, 305, 414, 415, 416, 417, 418,
2250 462, 463, 128, 419, 420, 438, 575, 421, 422, 129,
2251 130, 644, 423, 131, 424, 425, 426, 427, 428, 429,
2252 132, 430, 254, 540, 645, 578, 504, 505, 506, 133,
2253 947, 507, 577, 134, 135, 1302, 306, 508, 307, 308,
2254 136, 1189, 509, 510, 137, 138, 511, 139, 512, 513,
2255 92, 93, 94, 140, 309, 514, 515, 255, 464, 519,
2256 520, 353, 533, 579, 534, 535, 536, 1303, 537, 925,
2257 538, 762, 141, 142, 539, 543, 544, 143, 545, 546,
2258 283, 547, 1304, 548, 144, 549, 551, 552, 145, 146,
2259 147, 553, 554, 148, 580, 581, 149, 150, 310, 582,
2260 585, 586, 1305, 1306, 587, 588, 151, 589, 1307, 1308,
2261 1309, 1310, 152, 153, 1179, 154, 155, 156, 157, 158,
2262 284, 1311, 1187, 1188, 591, 592, 311, 312, 798, 596,
2263 159, 593, 799, 439, 285, 594, 595, 667, 256, 160,
2264 668, 161, 162, 671, 163, 673, 672, 164, 165, 678,
2265 674, 166, 680, 800, 682, 684, 286, 683, 287, 685,
2266 288, 289, 167, 686, 687, 801, 688, 690, 689, 691,
2267 692, 693, 257, 697, 695, 696, 802, 699, 698, 290,
2268 516, 803, 700, 701, 168, 703, 169, 704, 705, 706,
2269 170, 707, 708, 804, 171, 172, 173, 174, 175, 710,
2270 805, 717, 176, 177, 709, 806, 711, 807, 712, 715,
2271 729, 178, 718, 719, 626, 720, 627, 725, 726, 628,
2272 808, 736, 738, 629, 245, 732, 733, 734, 735, 776,
2273 739, 777, 1463, 868, 778, 741, 742, 779, 630, 631,
2274 632, 745, 746, 179, 633, 180, 747, 748, 809, 749,
2275 751, 181, 752, 810, 753, 754, 182, 755, 769, 756,
2276 757, 183, 634, 758, 759, 1464, 635, 636, 760, 761,
2277 780, 764, 781, 766, 771, 811, 1465, 772, 782, 246,
2278 247, 248, 249, 250, 251, 252, 253, 812, 783, 813,
2279 814, 791, 792, 1466, 815, 773, 793, 637, 76, 638,
2280 1467, 794, 795, 796, 797, 1468, 845, 1469, 846, 851,
2281 77, 852, 639, 847, 854, 853, 848, 855, 856, 858,
2282 1470, 859, 861, 860, 448, 862, 863, 254, 864, 865,
2283 866, 78, 79, 867, 640, 869, 870, 80, 873, 81,
2284 875, 1061, 871, 449, 949, 2, 3, 872, 878, 450,
2285 4, 883, 879, 1471, 884, 885, 886, 816, 887, 950,
2286 888, 889, 255, 890, 817, 898, 641, 5, 899, 1472,
2287 900, 6, 451, 452, 7, 818, 819, 453, 912, 597,
2288 642, 8, 901, 902, 903, 820, 953, 1473, 954, 1474,
2289 1475, 454, 904, 643, 82, 83, 9, 905, 455, 1376,
2290 1377, 598, 599, 84, 85, 906, 907, 908, 600, 10,
2291 11, 909, 12, 1316, 910, 911, 913, 456, 1242, 13,
2292 914, 915, 916, 917, 86, 87, 918, 919, 920, 1378,
2293 921, 1077, 1063, 922, 923, 1352, 14, 924, 927, 951,
2294 928, 88, 89, 256, 929, 457, 15, 1379, 16, 930,
2295 931, 932, 90, 458, 1380, 933, 644, 1476, 934, 935,
2296 936, 91, 938, 939, 940, 17, 941, 942, 943, 645,
2297 944, 459, 945, 1381, 946, 1477, 952, 257, 955, 956,
2298 460, 461, 18, 957, 1059, 1478, 601, 602, 603, 958,
2299 959, 604, 1317, 1064, 960, 1062, 961, 962, 963, 605,
2300 964, 1382, 965, 966, 967, 968, 969, 970, 971, 1383,
2301 972, 973, 606, 607, 462, 463, 974, 19, 975, 976,
2302 977, 978, 979, 980, 1318, 981, 20, 21, 982, 608,
2303 609, 22, 23, 983, 984, 985, 986, 987, 988, 1319,
2304 1010, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 92, 93,
2305 94, 1039, 1384, 1040, 1041, 1042, 1043, 610, 1066, 1320,
2306 1321, 1044, 1045, 1046, 1047, 1322, 1323, 1324, 1325, 1053,
2307 1054, 1385, 464, 989, 990, 991, 992, 993, 1326, 994,
2308 995, 1067, 996, 997, 998, 1055, 1056, 999, 1057, 1058,
2309 1065, 1068, 1069, 1071, 1070, 1072, 1073, 1000, 1001, 1002,
2310 1074, 1003, 1004, 1005, 1075, 1076, 1006, 1078, 1079, 1007,
2311 1011, 1012, 1013, 1014, 1015, 1080, 1016, 1017, 1081, 1018,
2312 1019, 1020, 1082, 1083, 1021, 1085, 1084, 1086, 1087, 1088,
2313 1089, 1090, 1093, 1094, 1022, 1023, 1024, 1095, 1025, 1026,
2314 1027, 1096, 1097, 1028, 1098, 1099, 1029, 1415, 1416, 1417,
2315 1418, 1419, 1100, 1420, 1421, 1139, 1422, 1423, 1424, 1140,
2316 1101, 1425, 1102, 1141, 1103, 1104, 1165, 1167, 1105, 1106,
2317 1107, 1426, 1427, 1428, 1108, 1429, 1430, 1431, 1115, 1109,
2318 1432, 1110, 1111, 1433, 1112, 1113, 1114, 1169, 1177, 1178,
2319 1116, 1180, 1117, 1118, 1120, 1121, 1122, 1123, 1124, 1125,
2320 1126, 1127, 1128, 1129, 1130, 1131, 1181, 1132, 1134, 1135,
2321 1136, 1142, 1166, 1143, 1182, 1183, 1144, 1145, 1146, 1147,
2322 1148, 1149, 1150, 1151, 1152, 1184, 1153, 1154, 1155, 1156,
2323 1185, 1161, 1186, 1162, 1163, 1164, 1194, 1197, 1168, 1191,
2324 1171, 1190, 1170, 1195, 1196, 1198, 1199, 1200, 1201, 1202,
2325 1203, 1204, 1206, 1205, 1211, 1207, 1208, 1210, 1209, 1212,
2326 1270, 1213, 1272, 1214, 1215, 1216, 1258, 1230, 1231, 1236,
2327 1269, 1237, 1238, 1273, 1274, 1239, 1240, 1241, 1246, 1247,
2328 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257,
2329 1261, 1267, 1268, 1282, 1284, 1288, 1276, 1292, 1290, 1391,
2330 1398, 1294, 1275, 1277, 1295, 1296, 1278, 1279, 1280, 1281,
2331 1283, 1285, 1286, 1287, 1289, 1291, 1293, 522, 334, 1297,
2332 1439, 1488, 1300, 1314, 1315, 1487, 1329, 1330, 1486, 1331,
2333 1332, 1333, 926, 1334, 1335, 1459, 1336, 1138, 1337, 1338,
2334 1339, 1340, 1341, 1392, 775, 1342, 1457, 1343, 1344, 1345,
2335 556, 763, 1346, 1347, 1456, 1348, 1482, 877, 882, 850,
2336 1483, 1458, 948, 1484, 1485, 768, 366, 1453, 677, 432,
2337 1368, 1367, 1455, 354, 1454, 0, 0, 0, 0, 0,
2338 0, 0, 1349, 1350, 1351, 1356, 1357, 1358, 1359, 1360,
2339 1361, 1362, 1363, 1364, 1393, 1394, 1395, 1396, 1397, 1402,
2340 0, 670, 0, 1403, 0, 1404, 1405, 1406, 1407, 1408,
2341 1409, 1410, 1411, 1412, 1413, 1414, 1436, 1437, 1438, 517,
2342 0, 744, 0, 0, 0, 0, 0, 0, 0, 0,
2343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2344 0, 0, 0, 0, 0, 0, 0, 0, 0, 541
2345 };
2346
2347 static const yytype_int16 yycheck[] =
2348 {
2349 340, 341, 425, 1, 1, 1, 4, 347, 263, 1,
2350 263, 1, 77, 1, 1, 263, 11, 10, 261, 12,
2351 11, 261, 265, 1, 1, 265, 1, 1, 1, 261,
2352 263, 8, 9, 265, 27, 12, 263, 377, 31, 379,
2353 1, 263, 19, 1, 261, 1, 132, 45, 265, 261,
2354 48, 28, 392, 265, 261, 32, 33, 263, 265, 1,
2355 400, 1, 39, 37, 261, 262, 43, 44, 1, 46,
2356 263, 411, 412, 47, 414, 52, 154, 261, 1, 154,
2357 1, 265, 263, 423, 424, 263, 426, 1, 174, 175,
2358 176, 177, 178, 261, 71, 72, 54, 265, 263, 76,
2359 90, 22, 90, 90, 263, 103, 83, 263, 22, 261,
2360 87, 88, 89, 265, 37, 92, 261, 261, 95, 96,
2361 265, 265, 263, 121, 154, 121, 84, 261, 105, 121,
2362 263, 265, 90, 263, 111, 112, 263, 114, 115, 116,
2363 117, 118, 261, 1, 198, 199, 121, 121, 121, 1,
2364 261, 261, 129, 5, 265, 265, 264, 90, 119, 156,
2365 156, 138, 85, 140, 141, 121, 143, 232, 156, 146,
2366 147, 236, 264, 150, 26, 198, 199, 119, 156, 37,
2367 264, 121, 264, 156, 161, 264, 38, 264, 149, 47,
2368 264, 188, 188, 217, 218, 153, 188, 49, 121, 539,
2369 123, 124, 54, 1, 125, 200, 183, 149, 185, 200,
2370 188, 125, 189, 188, 66, 188, 193, 194, 195, 196,
2371 197, 73, 1, 156, 201, 202, 78, 264, 80, 1,
2372 264, 3, 188, 210, 6, 156, 170, 171, 10, 264,
2373 261, 93, 156, 166, 264, 168, 169, 264, 188, 264,
2374 243, 249, 249, 25, 26, 27, 54, 249, 264, 31,
2375 1, 184, 41, 121, 262, 242, 262, 244, 1, 121,
2376 1, 249, 13, 250, 126, 262, 55, 49, 255, 264,
2377 264, 53, 54, 260, 262, 262, 84, 262, 262, 20,
2378 23, 24, 90, 34, 35, 26, 148, 30, 77, 40,
2379 79, 42, 81, 82, 262, 228, 261, 264, 160, 249,
2380 162, 163, 84, 264, 86, 167, 264, 264, 49, 50,
2381 262, 100, 262, 54, 14, 15, 16, 99, 264, 262,
2382 154, 1, 263, 256, 257, 263, 263, 68, 264, 262,
2383 264, 262, 264, 154, 75, 1, 264, 264, 4, 121,
2384 891, 892, 893, 894, 895, 153, 97, 98, 1048, 1049,
2385 1050, 264, 264, 94, 264, 106, 107, 37, 221, 222,
2386 223, 224, 225, 226, 227, 108, 109, 110, 230, 1,
2387 113, 153, 264, 264, 264, 237, 127, 128, 121, 45,
2388 264, 122, 48, 264, 264, 167, 248, 249, 738, 130,
2389 264, 134, 135, 144, 145, 264, 258, 264, 180, 264,
2390 262, 261, 261, 264, 155, 85, 93, 148, 151, 152,
2391 264, 264, 264, 164, 264, 264, 157, 158, 264, 264,
2392 264, 264, 264, 264, 56, 57, 58, 59, 60, 61,
2393 62, 63, 132, 264, 264, 264, 179, 103, 264, 264,
2394 264, 121, 264, 123, 124, 264, 264, 264, 264, 264,
2395 191, 192, 1, 264, 264, 121, 154, 264, 264, 8,
2396 9, 243, 264, 12, 264, 264, 264, 264, 264, 264,
2397 19, 264, 104, 262, 256, 132, 264, 264, 264, 28,
2398 262, 264, 198, 32, 33, 172, 166, 264, 168, 169,
2399 39, 924, 264, 264, 43, 44, 264, 46, 264, 264,
2400 251, 252, 253, 52, 184, 264, 264, 139, 249, 264,
2401 264, 262, 264, 132, 264, 264, 264, 204, 264, 262,
2402 264, 262, 71, 72, 264, 264, 264, 76, 264, 264,
2403 1, 264, 219, 264, 83, 264, 264, 264, 87, 88,
2404 89, 264, 264, 92, 198, 198, 95, 96, 228, 132,
2405 132, 132, 239, 240, 198, 198, 105, 132, 245, 246,
2406 247, 248, 111, 112, 914, 114, 115, 116, 117, 118,
2407 41, 258, 922, 923, 198, 198, 256, 257, 1, 261,
2408 129, 198, 5, 249, 55, 198, 198, 264, 220, 138,
2409 264, 140, 141, 154, 143, 264, 261, 146, 147, 198,
2410 264, 150, 198, 26, 132, 132, 77, 154, 79, 198,
2411 81, 82, 161, 198, 132, 38, 154, 132, 198, 132,
2412 132, 198, 254, 132, 198, 198, 49, 198, 154, 100,
2413 262, 54, 132, 132, 183, 132, 185, 132, 154, 132,
2414 189, 132, 198, 66, 193, 194, 195, 196, 197, 264,
2415 73, 154, 201, 202, 198, 78, 198, 80, 264, 198,
2416 132, 210, 198, 198, 1, 198, 3, 198, 198, 6,
2417 93, 261, 264, 10, 1, 198, 198, 198, 198, 154,
2418 264, 154, 5, 132, 154, 264, 264, 154, 25, 26,
2419 27, 261, 264, 242, 31, 244, 264, 264, 121, 264,
2420 264, 250, 264, 126, 264, 264, 255, 264, 261, 264,
2421 264, 260, 49, 264, 264, 38, 53, 54, 264, 264,
2422 154, 264, 154, 264, 264, 148, 49, 264, 154, 56,
2423 57, 58, 59, 60, 61, 62, 63, 160, 154, 162,
2424 163, 154, 154, 66, 167, 264, 198, 84, 1, 86,
2425 73, 261, 154, 154, 261, 78, 261, 80, 264, 198,
2426 13, 198, 99, 264, 154, 198, 264, 198, 198, 261,
2427 93, 154, 154, 198, 1, 154, 154, 104, 154, 154,
2428 264, 34, 35, 154, 121, 154, 154, 40, 264, 42,
2429 264, 198, 261, 20, 154, 0, 1, 261, 261, 26,
2430 5, 261, 264, 126, 261, 261, 261, 230, 261, 154,
2431 261, 261, 139, 261, 237, 261, 153, 22, 261, 142,
2432 261, 26, 49, 50, 29, 248, 249, 54, 264, 1,
2433 167, 36, 261, 261, 261, 258, 154, 160, 154, 162,
2434 163, 68, 261, 180, 97, 98, 51, 261, 75, 20,
2435 21, 23, 24, 106, 107, 261, 261, 261, 30, 64,
2436 65, 261, 67, 93, 261, 261, 264, 94, 131, 74,
2437 264, 264, 264, 264, 127, 128, 264, 264, 264, 50,
2438 264, 132, 154, 264, 264, 131, 91, 264, 261, 261,
2439 264, 144, 145, 220, 264, 122, 101, 68, 103, 264,
2440 264, 264, 155, 130, 75, 264, 243, 230, 264, 264,
2441 264, 164, 264, 264, 264, 120, 264, 264, 264, 256,
2442 264, 148, 264, 94, 264, 248, 261, 254, 264, 261,
2443 157, 158, 137, 261, 264, 258, 108, 109, 110, 261,
2444 261, 113, 172, 154, 261, 264, 261, 261, 261, 121,
2445 261, 122, 261, 261, 261, 261, 261, 261, 261, 130,
2446 261, 261, 134, 135, 191, 192, 261, 172, 261, 261,
2447 261, 261, 261, 261, 204, 261, 181, 182, 261, 151,
2448 152, 186, 187, 261, 261, 261, 261, 261, 261, 219,
2449 261, 261, 261, 261, 261, 261, 261, 261, 251, 252,
2450 253, 261, 173, 261, 261, 261, 261, 179, 198, 239,
2451 240, 261, 261, 261, 261, 245, 246, 247, 248, 261,
2452 261, 192, 249, 205, 206, 207, 208, 209, 258, 211,
2453 212, 154, 214, 215, 216, 261, 261, 219, 261, 261,
2454 261, 198, 198, 198, 264, 198, 198, 229, 230, 231,
2455 198, 233, 234, 235, 198, 154, 238, 154, 154, 241,
2456 205, 206, 207, 208, 209, 198, 211, 212, 154, 214,
2457 215, 216, 261, 154, 219, 154, 264, 261, 264, 154,
2458 154, 132, 261, 261, 229, 230, 231, 261, 233, 234,
2459 235, 261, 261, 238, 261, 261, 241, 205, 206, 207,
2460 208, 209, 261, 211, 212, 154, 214, 215, 216, 154,
2461 261, 219, 261, 154, 261, 261, 154, 154, 261, 261,
2462 261, 229, 230, 231, 261, 233, 234, 235, 264, 261,
2463 238, 261, 261, 241, 261, 261, 261, 154, 132, 132,
2464 264, 132, 264, 264, 264, 264, 264, 264, 264, 264,
2465 264, 264, 264, 264, 264, 264, 132, 264, 264, 264,
2466 264, 261, 264, 261, 132, 132, 261, 261, 261, 261,
2467 261, 261, 261, 261, 261, 154, 261, 261, 261, 261,
2468 132, 261, 132, 261, 261, 261, 198, 198, 261, 154,
2469 261, 261, 264, 154, 154, 198, 198, 154, 264, 154,
2470 154, 154, 132, 154, 261, 154, 154, 154, 198, 261,
2471 265, 261, 198, 261, 261, 159, 159, 261, 261, 261,
2472 203, 261, 261, 154, 198, 261, 261, 261, 261, 261,
2473 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
2474 261, 261, 261, 154, 154, 154, 264, 154, 264, 132,
2475 131, 261, 198, 198, 261, 261, 198, 198, 198, 198,
2476 198, 198, 198, 198, 198, 198, 198, 275, 71, 261,
2477 1299, 1481, 261, 261, 261, 1462, 261, 261, 1460, 261,
2478 261, 261, 611, 261, 261, 1390, 261, 821, 261, 261,
2479 261, 261, 261, 1270, 498, 261, 1375, 261, 261, 261,
2480 313, 465, 261, 261, 1373, 261, 1441, 561, 569, 528,
2481 1443, 1388, 646, 1444, 1446, 488, 124, 1366, 372, 184,
2482 1222, 1220, 1372, 95, 1370, -1, -1, -1, -1, -1,
2483 -1, -1, 261, 261, 261, 261, 261, 261, 261, 261,
2484 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
2485 -1, 360, -1, 261, -1, 261, 261, 261, 261, 261,
2486 261, 261, 261, 261, 261, 261, 261, 261, 261, 258,
2487 -1, 440, -1, -1, -1, -1, -1, -1, -1, -1,
2488 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
2489 -1, -1, -1, -1, -1, -1, -1, -1, -1, 291
2490 };
2491
2492 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
2493 symbol of state STATE-NUM. */
2494 static const yytype_uint16 yystos[] =
2495 {
2496 0, 267, 0, 1, 5, 22, 26, 29, 36, 51,
2497 64, 65, 67, 74, 91, 101, 103, 120, 137, 172,
2498 181, 182, 186, 187, 268, 273, 278, 296, 302, 317,
2499 354, 373, 387, 413, 420, 430, 439, 470, 480, 486,
2500 490, 500, 564, 580, 601, 261, 262, 263, 263, 355,
2501 440, 481, 263, 491, 263, 565, 388, 471, 374, 263,
2502 263, 318, 414, 263, 263, 421, 431, 1, 37, 47,
2503 121, 297, 298, 299, 300, 301, 1, 13, 34, 35,
2504 40, 42, 97, 98, 106, 107, 127, 128, 144, 145,
2505 155, 164, 251, 252, 253, 581, 582, 583, 584, 585,
2506 586, 587, 588, 589, 590, 591, 592, 593, 594, 595,
2507 596, 597, 598, 599, 600, 154, 356, 360, 154, 441,
2508 445, 263, 1, 90, 487, 488, 489, 263, 1, 8,
2509 9, 12, 19, 28, 32, 33, 39, 43, 44, 46,
2510 52, 71, 72, 76, 83, 87, 88, 89, 92, 95,
2511 96, 105, 111, 112, 114, 115, 116, 117, 118, 129,
2512 138, 140, 141, 143, 146, 147, 150, 161, 183, 185,
2513 189, 193, 194, 195, 196, 197, 201, 202, 210, 242,
2514 244, 250, 255, 260, 501, 502, 503, 504, 505, 506,
2515 507, 508, 509, 510, 511, 512, 513, 514, 515, 516,
2516 517, 518, 519, 520, 521, 522, 523, 524, 525, 526,
2517 527, 528, 529, 530, 531, 532, 533, 534, 535, 536,
2518 537, 538, 539, 540, 541, 542, 543, 544, 545, 546,
2519 547, 548, 549, 550, 551, 552, 556, 560, 561, 562,
2520 563, 263, 263, 263, 263, 1, 56, 57, 58, 59,
2521 60, 61, 62, 63, 104, 139, 220, 254, 303, 304,
2522 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
2523 315, 316, 1, 119, 149, 274, 275, 276, 277, 154,
2524 319, 323, 263, 1, 41, 55, 77, 79, 81, 82,
2525 100, 602, 603, 604, 605, 606, 607, 608, 609, 610,
2526 1, 37, 85, 121, 123, 124, 166, 168, 169, 184,
2527 228, 256, 257, 279, 280, 281, 285, 286, 287, 288,
2528 289, 290, 291, 292, 293, 294, 295, 263, 263, 261,
2529 264, 264, 264, 262, 298, 264, 264, 264, 264, 264,
2530 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2531 264, 264, 264, 262, 582, 263, 263, 1, 90, 156,
2532 482, 483, 484, 485, 264, 262, 488, 1, 121, 156,
2533 188, 492, 496, 497, 498, 499, 264, 264, 264, 264,
2534 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2535 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2536 264, 264, 264, 264, 264, 264, 264, 264, 557, 264,
2537 553, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2538 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2539 264, 262, 502, 1, 4, 45, 48, 103, 121, 249,
2540 566, 567, 568, 569, 570, 574, 575, 576, 1, 20,
2541 26, 49, 50, 54, 68, 75, 94, 122, 130, 148,
2542 157, 158, 191, 192, 249, 389, 390, 391, 392, 393,
2543 394, 395, 396, 403, 404, 405, 406, 407, 408, 409,
2544 410, 411, 412, 1, 156, 188, 249, 472, 476, 477,
2545 478, 479, 1, 54, 84, 90, 153, 375, 379, 380,
2546 381, 385, 386, 261, 264, 264, 264, 264, 264, 264,
2547 264, 264, 264, 264, 264, 264, 262, 304, 261, 264,
2548 264, 262, 275, 263, 1, 22, 125, 156, 415, 416,
2549 417, 418, 419, 264, 264, 264, 264, 264, 264, 264,
2550 262, 603, 261, 264, 264, 264, 264, 264, 264, 264,
2551 282, 264, 264, 264, 264, 262, 280, 1, 121, 188,
2552 249, 422, 423, 424, 425, 426, 1, 121, 188, 432,
2553 433, 434, 435, 154, 154, 154, 261, 198, 132, 132,
2554 198, 198, 132, 270, 270, 132, 132, 198, 198, 132,
2555 270, 198, 198, 198, 198, 198, 261, 1, 23, 24,
2556 30, 108, 109, 110, 113, 121, 134, 135, 151, 152,
2557 179, 357, 358, 359, 361, 362, 363, 364, 365, 366,
2558 367, 368, 369, 370, 371, 372, 1, 3, 6, 10,
2559 25, 26, 27, 31, 49, 53, 54, 84, 86, 99,
2560 121, 153, 167, 180, 243, 256, 442, 443, 444, 446,
2561 447, 448, 449, 450, 451, 452, 453, 460, 461, 462,
2562 463, 464, 465, 466, 467, 468, 469, 264, 264, 262,
2563 483, 154, 261, 264, 264, 493, 262, 497, 198, 270,
2564 198, 270, 132, 154, 132, 198, 198, 132, 154, 198,
2565 132, 132, 132, 198, 270, 198, 198, 132, 154, 198,
2566 132, 132, 270, 132, 132, 154, 132, 132, 198, 198,
2567 264, 198, 264, 270, 270, 198, 270, 154, 198, 198,
2568 198, 198, 199, 198, 199, 198, 198, 270, 270, 132,
2569 272, 270, 198, 198, 198, 198, 261, 577, 264, 264,
2570 571, 264, 264, 262, 567, 261, 264, 264, 264, 264,
2571 397, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2572 264, 264, 262, 390, 264, 473, 264, 262, 477, 261,
2573 376, 264, 264, 264, 262, 380, 154, 154, 154, 154,
2574 154, 154, 154, 154, 221, 222, 223, 224, 225, 226,
2575 227, 154, 154, 198, 261, 154, 154, 261, 1, 5,
2576 26, 38, 49, 54, 66, 73, 78, 80, 93, 121,
2577 126, 148, 160, 162, 163, 167, 230, 237, 248, 249,
2578 258, 320, 321, 322, 324, 325, 326, 327, 328, 329,
2579 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
2580 343, 344, 345, 346, 347, 261, 264, 264, 264, 262,
2581 416, 198, 198, 198, 154, 198, 198, 270, 261, 154,
2582 198, 154, 154, 154, 154, 154, 264, 154, 132, 154,
2583 154, 261, 261, 264, 427, 264, 262, 423, 261, 264,
2584 436, 262, 433, 261, 261, 261, 261, 261, 261, 261,
2585 261, 174, 175, 176, 177, 178, 269, 270, 261, 261,
2586 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
2587 261, 261, 264, 264, 264, 264, 264, 264, 264, 264,
2588 264, 264, 264, 264, 264, 262, 358, 261, 264, 264,
2589 264, 264, 264, 264, 264, 264, 264, 454, 264, 264,
2590 264, 264, 264, 264, 264, 264, 264, 262, 443, 154,
2591 154, 261, 261, 154, 154, 264, 261, 261, 261, 261,
2592 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
2593 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
2594 261, 261, 261, 261, 261, 261, 261, 261, 261, 205,
2595 206, 207, 208, 209, 211, 212, 214, 215, 216, 219,
2596 229, 230, 231, 233, 234, 235, 238, 241, 558, 559,
2597 261, 205, 206, 207, 208, 209, 211, 212, 214, 215,
2598 216, 219, 229, 230, 231, 233, 234, 235, 238, 241,
2599 554, 555, 261, 261, 261, 261, 261, 261, 261, 261,
2600 261, 261, 261, 261, 261, 261, 261, 261, 14, 15,
2601 16, 271, 272, 261, 261, 261, 261, 261, 261, 264,
2602 270, 198, 264, 154, 154, 261, 198, 154, 198, 198,
2603 264, 198, 198, 198, 198, 198, 154, 132, 154, 154,
2604 198, 154, 261, 154, 264, 154, 261, 264, 154, 154,
2605 132, 383, 384, 261, 261, 261, 261, 261, 261, 261,
2606 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
2607 261, 261, 261, 261, 261, 264, 264, 264, 264, 348,
2608 264, 264, 264, 264, 264, 264, 264, 264, 264, 264,
2609 264, 264, 264, 330, 264, 264, 264, 262, 321, 154,
2610 154, 154, 261, 261, 261, 261, 261, 261, 261, 261,
2611 261, 261, 261, 261, 261, 261, 261, 170, 171, 283,
2612 284, 261, 261, 261, 261, 154, 264, 154, 261, 154,
2613 264, 261, 269, 269, 269, 269, 269, 132, 132, 270,
2614 132, 132, 132, 132, 154, 132, 132, 270, 270, 272,
2615 261, 154, 217, 218, 198, 154, 154, 198, 198, 198,
2616 154, 264, 154, 154, 154, 154, 132, 154, 154, 198,
2617 154, 261, 261, 261, 261, 261, 159, 494, 495, 261,
2618 265, 261, 265, 271, 271, 271, 11, 200, 578, 579,
2619 261, 261, 11, 200, 572, 573, 261, 261, 261, 261,
2620 261, 261, 131, 398, 399, 401, 261, 261, 261, 261,
2621 261, 261, 261, 261, 261, 261, 261, 261, 159, 474,
2622 475, 261, 77, 232, 236, 377, 378, 261, 261, 203,
2623 265, 382, 198, 154, 198, 198, 264, 198, 198, 198,
2624 198, 198, 154, 198, 154, 198, 198, 198, 154, 198,
2625 264, 198, 154, 198, 261, 261, 261, 261, 261, 265,
2626 261, 93, 172, 204, 219, 239, 240, 245, 246, 247,
2627 248, 258, 428, 429, 261, 261, 93, 172, 204, 219,
2628 239, 240, 245, 246, 247, 248, 258, 437, 438, 261,
2629 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
2630 261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
2631 261, 261, 131, 455, 456, 458, 261, 261, 261, 261,
2632 261, 261, 261, 261, 261, 261, 265, 559, 555, 261,
2633 265, 261, 265, 400, 261, 265, 20, 21, 50, 68,
2634 75, 94, 122, 130, 173, 192, 402, 261, 265, 261,
2635 265, 132, 384, 261, 261, 261, 261, 261, 131, 349,
2636 350, 352, 261, 261, 261, 261, 261, 261, 261, 261,
2637 261, 261, 261, 261, 261, 205, 206, 207, 208, 209,
2638 211, 212, 214, 215, 216, 219, 229, 230, 231, 233,
2639 234, 235, 238, 241, 331, 332, 261, 261, 261, 284,
2640 261, 265, 261, 265, 457, 261, 265, 10, 12, 27,
2641 31, 243, 459, 495, 579, 573, 402, 399, 475, 378,
2642 351, 261, 265, 5, 38, 49, 66, 73, 78, 80,
2643 93, 126, 142, 160, 162, 163, 230, 248, 258, 353,
2644 261, 265, 429, 438, 459, 456, 353, 350, 332
2645 };
2646
2647 #define yyerrok (yyerrstatus = 0)
2648 #define yyclearin (yychar = YYEMPTY)
2649 #define YYEMPTY (-2)
2650 #define YYEOF 0
2651
2652 #define YYACCEPT goto yyacceptlab
2653 #define YYABORT goto yyabortlab
2654 #define YYERROR goto yyerrorlab
2655
2656
2657 /* Like YYERROR except do call yyerror. This remains here temporarily
2658 to ease the transition to the new meaning of YYERROR, for GCC.
2659 Once GCC version 2 has supplanted version 1, this can go. */
2660
2661 #define YYFAIL goto yyerrlab
2662
2663 #define YYRECOVERING() (!!yyerrstatus)
2664
2665 #define YYBACKUP(Token, Value) \
2666 do \
2667 if (yychar == YYEMPTY && yylen == 1) \
2668 { \
2669 yychar = (Token); \
2670 yylval = (Value); \
2671 yytoken = YYTRANSLATE (yychar); \
2672 YYPOPSTACK (1); \
2673 goto yybackup; \
2674 } \
2675 else \
2676 { \
2677 yyerror (YY_("syntax error: cannot back up")); \
2678 YYERROR; \
2679 } \
2680 while (YYID (0))
2681
2682
2683 #define YYTERROR 1
2684 #define YYERRCODE 256
2685
2686
2687 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2688 If N is 0, then set CURRENT to the empty location which ends
2689 the previous symbol: RHS[0] (always defined). */
2690
2691 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2692 #ifndef YYLLOC_DEFAULT
2693 # define YYLLOC_DEFAULT(Current, Rhs, N) \
2694 do \
2695 if (YYID (N)) \
2696 { \
2697 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2698 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2699 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2700 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2701 } \
2702 else \
2703 { \
2704 (Current).first_line = (Current).last_line = \
2705 YYRHSLOC (Rhs, 0).last_line; \
2706 (Current).first_column = (Current).last_column = \
2707 YYRHSLOC (Rhs, 0).last_column; \
2708 } \
2709 while (YYID (0))
2710 #endif
2711
2712
2713 /* YY_LOCATION_PRINT -- Print the location on the stream.
2714 This macro was not mandated originally: define only if we know
2715 we won't break user code: when these are the locations we know. */
2716
2717 #ifndef YY_LOCATION_PRINT
2718 # if YYLTYPE_IS_TRIVIAL
2719 # define YY_LOCATION_PRINT(File, Loc) \
2720 fprintf (File, "%d.%d-%d.%d", \
2721 (Loc).first_line, (Loc).first_column, \
2722 (Loc).last_line, (Loc).last_column)
2723 # else
2724 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2725 # endif
2726 #endif
2727
2728
2729 /* YYLEX -- calling `yylex' with the right arguments. */
2730
2731 #ifdef YYLEX_PARAM
2732 # define YYLEX yylex (YYLEX_PARAM)
2733 #else
2734 # define YYLEX yylex ()
2735 #endif
2736
2737 /* Enable debugging if requested. */
2738 #if YYDEBUG
2739
2740 # ifndef YYFPRINTF
2741 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2742 # define YYFPRINTF fprintf
2743 # endif
2744
2745 # define YYDPRINTF(Args) \
2746 do { \
2747 if (yydebug) \
2748 YYFPRINTF Args; \
2749 } while (YYID (0))
2750
2751 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2752 do { \
2753 if (yydebug) \
2754 { \
2755 YYFPRINTF (stderr, "%s ", Title); \
2756 yy_symbol_print (stderr, \
2757 Type, Value); \
2758 YYFPRINTF (stderr, "\n"); \
2759 } \
2760 } while (YYID (0))
2761
2762
2763 /*--------------------------------.
2764 | Print this symbol on YYOUTPUT. |
2765 `--------------------------------*/
2766
2767 /*ARGSUSED*/
2768 #if (defined __STDC__ || defined __C99__FUNC__ \
2769 || defined __cplusplus || defined _MSC_VER)
2770 static void
2771 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2772 #else
2773 static void
2774 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
2775 FILE *yyoutput;
2776 int yytype;
2777 YYSTYPE const * const yyvaluep;
2778 #endif
2779 {
2780 if (!yyvaluep)
2781 return;
2782 # ifdef YYPRINT
2783 if (yytype < YYNTOKENS)
2784 YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2785 # else
2786 YYUSE (yyoutput);
2787 # endif
2788 switch (yytype)
2789 {
2790 default:
2791 break;
2792 }
2793 }
2794
2795
2796 /*--------------------------------.
2797 | Print this symbol on YYOUTPUT. |
2798 `--------------------------------*/
2799
2800 #if (defined __STDC__ || defined __C99__FUNC__ \
2801 || defined __cplusplus || defined _MSC_VER)
2802 static void
2803 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
2804 #else
2805 static void
2806 yy_symbol_print (yyoutput, yytype, yyvaluep)
2807 FILE *yyoutput;
2808 int yytype;
2809 YYSTYPE const * const yyvaluep;
2810 #endif
2811 {
2812 if (yytype < YYNTOKENS)
2813 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
2814 else
2815 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
2816
2817 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
2818 YYFPRINTF (yyoutput, ")");
2819 }
2820
2821 /*------------------------------------------------------------------.
2822 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2823 | TOP (included). |
2824 `------------------------------------------------------------------*/
2825
2826 #if (defined __STDC__ || defined __C99__FUNC__ \
2827 || defined __cplusplus || defined _MSC_VER)
2828 static void
2829 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2830 #else
2831 static void
2832 yy_stack_print (yybottom, yytop)
2833 yytype_int16 *yybottom;
2834 yytype_int16 *yytop;
2835 #endif
2836 {
2837 YYFPRINTF (stderr, "Stack now");
2838 for (; yybottom <= yytop; yybottom++)
2839 {
2840 int yybot = *yybottom;
2841 YYFPRINTF (stderr, " %d", yybot);
2842 }
2843 YYFPRINTF (stderr, "\n");
2844 }
2845
2846 # define YY_STACK_PRINT(Bottom, Top) \
2847 do { \
2848 if (yydebug) \
2849 yy_stack_print ((Bottom), (Top)); \
2850 } while (YYID (0))
2851
2852
2853 /*------------------------------------------------.
2854 | Report that the YYRULE is going to be reduced. |
2855 `------------------------------------------------*/
2856
2857 #if (defined __STDC__ || defined __C99__FUNC__ \
2858 || defined __cplusplus || defined _MSC_VER)
2859 static void
2860 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
2861 #else
2862 static void
2863 yy_reduce_print (yyvsp, yyrule)
2864 YYSTYPE *yyvsp;
2865 int yyrule;
2866 #endif
2867 {
2868 int yynrhs = yyr2[yyrule];
2869 int yyi;
2870 unsigned long int yylno = yyrline[yyrule];
2871 YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2872 yyrule - 1, yylno);
2873 /* The symbols being reduced. */
2874 for (yyi = 0; yyi < yynrhs; yyi++)
2875 {
2876 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2877 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
2878 &(yyvsp[(yyi + 1) - (yynrhs)])
2879 );
2880 YYFPRINTF (stderr, "\n");
2881 }
2882 }
2883
2884 # define YY_REDUCE_PRINT(Rule) \
2885 do { \
2886 if (yydebug) \
2887 yy_reduce_print (yyvsp, Rule); \
2888 } while (YYID (0))
2889
2890 /* Nonzero means print parse trace. It is left uninitialized so that
2891 multiple parsers can coexist. */
2892 int yydebug;
2893 #else /* !YYDEBUG */
2894 # define YYDPRINTF(Args)
2895 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2896 # define YY_STACK_PRINT(Bottom, Top)
2897 # define YY_REDUCE_PRINT(Rule)
2898 #endif /* !YYDEBUG */
2899
2900
2901 /* YYINITDEPTH -- initial size of the parser's stacks. */
2902 #ifndef YYINITDEPTH
2903 # define YYINITDEPTH 200
2904 #endif
2905
2906 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2907 if the built-in stack extension method is used).
2908
2909 Do not make this value too large; the results are undefined if
2910 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2911 evaluated with infinite-precision integer arithmetic. */
2912
2913 #ifndef YYMAXDEPTH
2914 # define YYMAXDEPTH 10000
2915 #endif
2916
2917
2918
2919 #if YYERROR_VERBOSE
2920
2921 # ifndef yystrlen
2922 # if defined __GLIBC__ && defined _STRING_H
2923 # define yystrlen strlen
2924 # else
2925 /* Return the length of YYSTR. */
2926 #if (defined __STDC__ || defined __C99__FUNC__ \
2927 || defined __cplusplus || defined _MSC_VER)
2928 static YYSIZE_T
2929 yystrlen (const char *yystr)
2930 #else
2931 static YYSIZE_T
2932 yystrlen (yystr)
2933 const char *yystr;
2934 #endif
2935 {
2936 YYSIZE_T yylen;
2937 for (yylen = 0; yystr[yylen]; yylen++)
2938 continue;
2939 return yylen;
2940 }
2941 # endif
2942 # endif
2943
2944 # ifndef yystpcpy
2945 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2946 # define yystpcpy stpcpy
2947 # else
2948 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2949 YYDEST. */
2950 #if (defined __STDC__ || defined __C99__FUNC__ \
2951 || defined __cplusplus || defined _MSC_VER)
2952 static char *
2953 yystpcpy (char *yydest, const char *yysrc)
2954 #else
2955 static char *
2956 yystpcpy (yydest, yysrc)
2957 char *yydest;
2958 const char *yysrc;
2959 #endif
2960 {
2961 char *yyd = yydest;
2962 const char *yys = yysrc;
2963
2964 while ((*yyd++ = *yys++) != '\0')
2965 continue;
2966
2967 return yyd - 1;
2968 }
2969 # endif
2970 # endif
2971
2972 # ifndef yytnamerr
2973 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2974 quotes and backslashes, so that it's suitable for yyerror. The
2975 heuristic is that double-quoting is unnecessary unless the string
2976 contains an apostrophe, a comma, or backslash (other than
2977 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2978 null, do not copy; instead, return the length of what the result
2979 would have been. */
2980 static YYSIZE_T
2981 yytnamerr (char *yyres, const char *yystr)
2982 {
2983 if (*yystr == '"')
2984 {
2985 YYSIZE_T yyn = 0;
2986 char const *yyp = yystr;
2987
2988 for (;;)
2989 switch (*++yyp)
2990 {
2991 case '\'':
2992 case ',':
2993 goto do_not_strip_quotes;
2994
2995 case '\\':
2996 if (*++yyp != '\\')
2997 goto do_not_strip_quotes;
2998 /* Fall through. */
2999 default:
3000 if (yyres)
3001 yyres[yyn] = *yyp;
3002 yyn++;
3003 break;
3004
3005 case '"':
3006 if (yyres)
3007 yyres[yyn] = '\0';
3008 return yyn;
3009 }
3010 do_not_strip_quotes: ;
3011 }
3012
3013 if (! yyres)
3014 return yystrlen (yystr);
3015
3016 return yystpcpy (yyres, yystr) - yyres;
3017 }
3018 # endif
3019
3020 /* Copy into YYRESULT an error message about the unexpected token
3021 YYCHAR while in state YYSTATE. Return the number of bytes copied,
3022 including the terminating null byte. If YYRESULT is null, do not
3023 copy anything; just return the number of bytes that would be
3024 copied. As a special case, return 0 if an ordinary "syntax error"
3025 message will do. Return YYSIZE_MAXIMUM if overflow occurs during
3026 size calculation. */
3027 static YYSIZE_T
3028 yysyntax_error (char *yyresult, int yystate, int yychar)
3029 {
3030 int yyn = yypact[yystate];
3031
3032 if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
3033 return 0;
3034 else
3035 {
3036 int yytype = YYTRANSLATE (yychar);
3037 YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
3038 YYSIZE_T yysize = yysize0;
3039 YYSIZE_T yysize1;
3040 int yysize_overflow = 0;
3041 enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
3042 char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
3043 int yyx;
3044
3045 # if 0
3046 /* This is so xgettext sees the translatable formats that are
3047 constructed on the fly. */
3048 YY_("syntax error, unexpected %s");
3049 YY_("syntax error, unexpected %s, expecting %s");
3050 YY_("syntax error, unexpected %s, expecting %s or %s");
3051 YY_("syntax error, unexpected %s, expecting %s or %s or %s");
3052 YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
3053 # endif
3054 char *yyfmt;
3055 char const *yyf;
3056 static char const yyunexpected[] = "syntax error, unexpected %s";
3057 static char const yyexpecting[] = ", expecting %s";
3058 static char const yyor[] = " or %s";
3059 char yyformat[sizeof yyunexpected
3060 + sizeof yyexpecting - 1
3061 + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
3062 * (sizeof yyor - 1))];
3063 char const *yyprefix = yyexpecting;
3064
3065 /* Start YYX at -YYN if negative to avoid negative indexes in
3066 YYCHECK. */
3067 int yyxbegin = yyn < 0 ? -yyn : 0;
3068
3069 /* Stay within bounds of both yycheck and yytname. */
3070 int yychecklim = YYLAST - yyn + 1;
3071 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
3072 int yycount = 1;
3073
3074 yyarg[0] = yytname[yytype];
3075 yyfmt = yystpcpy (yyformat, yyunexpected);
3076
3077 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
3078 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
3079 {
3080 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
3081 {
3082 yycount = 1;
3083 yysize = yysize0;
3084 yyformat[sizeof yyunexpected - 1] = '\0';
3085 break;
3086 }
3087 yyarg[yycount++] = yytname[yyx];
3088 yysize1 = yysize + yytnamerr (0, yytname[yyx]);
3089 yysize_overflow |= (yysize1 < yysize);
3090 yysize = yysize1;
3091 yyfmt = yystpcpy (yyfmt, yyprefix);
3092 yyprefix = yyor;
3093 }
3094
3095 yyf = YY_(yyformat);
3096 yysize1 = yysize + yystrlen (yyf);
3097 yysize_overflow |= (yysize1 < yysize);
3098 yysize = yysize1;
3099
3100 if (yysize_overflow)
3101 return YYSIZE_MAXIMUM;
3102
3103 if (yyresult)
3104 {
3105 /* Avoid sprintf, as that infringes on the user's name space.
3106 Don't have undefined behavior even if the translation
3107 produced a string with the wrong number of "%s"s. */
3108 char *yyp = yyresult;
3109 int yyi = 0;
3110 while ((*yyp = *yyf) != '\0')
3111 {
3112 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
3113 {
3114 yyp += yytnamerr (yyp, yyarg[yyi++]);
3115 yyf += 2;
3116 }
3117 else
3118 {
3119 yyp++;
3120 yyf++;
3121 }
3122 }
3123 }
3124 return yysize;
3125 }
3126 }
3127 #endif /* YYERROR_VERBOSE */
3128
3129
3130 /*-----------------------------------------------.
3131 | Release the memory associated to this symbol. |
3132 `-----------------------------------------------*/
3133
3134 /*ARGSUSED*/
3135 #if (defined __STDC__ || defined __C99__FUNC__ \
3136 || defined __cplusplus || defined _MSC_VER)
3137 static void
3138 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
3139 #else
3140 static void
3141 yydestruct (yymsg, yytype, yyvaluep)
3142 const char *yymsg;
3143 int yytype;
3144 YYSTYPE *yyvaluep;
3145 #endif
3146 {
3147 YYUSE (yyvaluep);
3148
3149 if (!yymsg)
3150 yymsg = "Deleting";
3151 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
3152
3153 switch (yytype)
3154 {
3155
3156 default:
3157 break;
3158 }
3159 }
3160
3161 /* Prevent warnings from -Wmissing-prototypes. */
3162 #ifdef YYPARSE_PARAM
3163 #if defined __STDC__ || defined __cplusplus
3164 int yyparse (void *YYPARSE_PARAM);
3165 #else
3166 int yyparse ();
3167 #endif
3168 #else /* ! YYPARSE_PARAM */
3169 #if defined __STDC__ || defined __cplusplus
3170 int yyparse (void);
3171 #else
3172 int yyparse ();
3173 #endif
3174 #endif /* ! YYPARSE_PARAM */
3175
3176
3177 /* The lookahead symbol. */
3178 int yychar;
3179
3180 /* The semantic value of the lookahead symbol. */
3181 YYSTYPE yylval;
3182
3183 /* Number of syntax errors so far. */
3184 int yynerrs;
3185
3186
3187
3188 /*-------------------------.
3189 | yyparse or yypush_parse. |
3190 `-------------------------*/
3191
3192 #ifdef YYPARSE_PARAM
3193 #if (defined __STDC__ || defined __C99__FUNC__ \
3194 || defined __cplusplus || defined _MSC_VER)
3195 int
3196 yyparse (void *YYPARSE_PARAM)
3197 #else
3198 int
3199 yyparse (YYPARSE_PARAM)
3200 void *YYPARSE_PARAM;
3201 #endif
3202 #else /* ! YYPARSE_PARAM */
3203 #if (defined __STDC__ || defined __C99__FUNC__ \
3204 || defined __cplusplus || defined _MSC_VER)
3205 int
3206 yyparse (void)
3207 #else
3208 int
3209 yyparse ()
3210
3211 #endif
3212 #endif
3213 {
3214
3215
3216 int yystate;
3217 /* Number of tokens to shift before error messages enabled. */
3218 int yyerrstatus;
3219
3220 /* The stacks and their tools:
3221 `yyss': related to states.
3222 `yyvs': related to semantic values.
3223
3224 Refer to the stacks thru separate pointers, to allow yyoverflow
3225 to reallocate them elsewhere. */
3226
3227 /* The state stack. */
3228 yytype_int16 yyssa[YYINITDEPTH];
3229 yytype_int16 *yyss;
3230 yytype_int16 *yyssp;
3231
3232 /* The semantic value stack. */
3233 YYSTYPE yyvsa[YYINITDEPTH];
3234 YYSTYPE *yyvs;
3235 YYSTYPE *yyvsp;
3236
3237 YYSIZE_T yystacksize;
3238
3239 int yyn;
3240 int yyresult;
3241 /* Lookahead token as an internal (translated) token number. */
3242 int yytoken;
3243 /* The variables used to return semantic value and location from the
3244 action routines. */
3245 YYSTYPE yyval;
3246
3247 #if YYERROR_VERBOSE
3248 /* Buffer for error messages, and its allocated size. */
3249 char yymsgbuf[128];
3250 char *yymsg = yymsgbuf;
3251 YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
3252 #endif
3253
3254 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
3255
3256 /* The number of symbols on the RHS of the reduced rule.
3257 Keep to zero when no symbol should be popped. */
3258 int yylen = 0;
3259
3260 yytoken = 0;
3261 yyss = yyssa;
3262 yyvs = yyvsa;
3263 yystacksize = YYINITDEPTH;
3264
3265 YYDPRINTF ((stderr, "Starting parse\n"));
3266
3267 yystate = 0;
3268 yyerrstatus = 0;
3269 yynerrs = 0;
3270 yychar = YYEMPTY; /* Cause a token to be read. */
3271
3272 /* Initialize stack pointers.
3273 Waste one element of value and location stack
3274 so that they stay on the same level as the state stack.
3275 The wasted elements are never initialized. */
3276 yyssp = yyss;
3277 yyvsp = yyvs;
3278
3279 goto yysetstate;
3280
3281 /*------------------------------------------------------------.
3282 | yynewstate -- Push a new state, which is found in yystate. |
3283 `------------------------------------------------------------*/
3284 yynewstate:
3285 /* In all cases, when you get here, the value and location stacks
3286 have just been pushed. So pushing a state here evens the stacks. */
3287 yyssp++;
3288
3289 yysetstate:
3290 *yyssp = yystate;
3291
3292 if (yyss + yystacksize - 1 <= yyssp)
3293 {
3294 /* Get the current used size of the three stacks, in elements. */
3295 YYSIZE_T yysize = yyssp - yyss + 1;
3296
3297 #ifdef yyoverflow
3298 {
3299 /* Give user a chance to reallocate the stack. Use copies of
3300 these so that the &'s don't force the real ones into
3301 memory. */
3302 YYSTYPE *yyvs1 = yyvs;
3303 yytype_int16 *yyss1 = yyss;
3304
3305 /* Each stack pointer address is followed by the size of the
3306 data in use in that stack, in bytes. This used to be a
3307 conditional around just the two extra args, but that might
3308 be undefined if yyoverflow is a macro. */
3309 yyoverflow (YY_("memory exhausted"),
3310 &yyss1, yysize * sizeof (*yyssp),
3311 &yyvs1, yysize * sizeof (*yyvsp),
3312 &yystacksize);
3313
3314 yyss = yyss1;
3315 yyvs = yyvs1;
3316 }
3317 #else /* no yyoverflow */
3318 # ifndef YYSTACK_RELOCATE
3319 goto yyexhaustedlab;
3320 # else
3321 /* Extend the stack our own way. */
3322 if (YYMAXDEPTH <= yystacksize)
3323 goto yyexhaustedlab;
3324 yystacksize *= 2;
3325 if (YYMAXDEPTH < yystacksize)
3326 yystacksize = YYMAXDEPTH;
3327
3328 {
3329 yytype_int16 *yyss1 = yyss;
3330 union yyalloc *yyptr =
3331 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
3332 if (! yyptr)
3333 goto yyexhaustedlab;
3334 YYSTACK_RELOCATE (yyss_alloc, yyss);
3335 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
3336 # undef YYSTACK_RELOCATE
3337 if (yyss1 != yyssa)
3338 YYSTACK_FREE (yyss1);
3339 }
3340 # endif
3341 #endif /* no yyoverflow */
3342
3343 yyssp = yyss + yysize - 1;
3344 yyvsp = yyvs + yysize - 1;
3345
3346 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
3347 (unsigned long int) yystacksize));
3348
3349 if (yyss + yystacksize - 1 <= yyssp)
3350 YYABORT;
3351 }
3352
3353 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
3354
3355 if (yystate == YYFINAL)
3356 YYACCEPT;
3357
3358 goto yybackup;
3359
3360 /*-----------.
3361 | yybackup. |
3362 `-----------*/
3363 yybackup:
3364
3365 /* Do appropriate processing given the current state. Read a
3366 lookahead token if we need one and don't already have one. */
3367
3368 /* First try to decide what to do without reference to lookahead token. */
3369 yyn = yypact[yystate];
3370 if (yyn == YYPACT_NINF)
3371 goto yydefault;
3372
3373 /* Not known => get a lookahead token if don't already have one. */
3374
3375 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
3376 if (yychar == YYEMPTY)
3377 {
3378 YYDPRINTF ((stderr, "Reading a token: "));
3379 yychar = YYLEX;
3380 }
3381
3382 if (yychar <= YYEOF)
3383 {
3384 yychar = yytoken = YYEOF;
3385 YYDPRINTF ((stderr, "Now at end of input.\n"));
3386 }
3387 else
3388 {
3389 yytoken = YYTRANSLATE (yychar);
3390 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3391 }
3392
3393 /* If the proper action on seeing token YYTOKEN is to reduce or to
3394 detect an error, take that action. */
3395 yyn += yytoken;
3396 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3397 goto yydefault;
3398 yyn = yytable[yyn];
3399 if (yyn <= 0)
3400 {
3401 if (yyn == 0 || yyn == YYTABLE_NINF)
3402 goto yyerrlab;
3403 yyn = -yyn;
3404 goto yyreduce;
3405 }
3406
3407 /* Count tokens shifted since error; after three, turn off error
3408 status. */
3409 if (yyerrstatus)
3410 yyerrstatus--;
3411
3412 /* Shift the lookahead token. */
3413 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3414
3415 /* Discard the shifted token. */
3416 yychar = YYEMPTY;
3417
3418 yystate = yyn;
3419 *++yyvsp = yylval;
3420
3421 goto yynewstate;
3422
3423
3424 /*-----------------------------------------------------------.
3425 | yydefault -- do the default action for the current state. |
3426 `-----------------------------------------------------------*/
3427 yydefault:
3428 yyn = yydefact[yystate];
3429 if (yyn == 0)
3430 goto yyerrlab;
3431 goto yyreduce;
3432
3433
3434 /*-----------------------------.
3435 | yyreduce -- Do a reduction. |
3436 `-----------------------------*/
3437 yyreduce:
3438 /* yyn is the number of a rule to reduce with. */
3439 yylen = yyr2[yyn];
3440
3441 /* If YYLEN is nonzero, implement the default value of the action:
3442 `$$ = $1'.
3443
3444 Otherwise, the following line sets YYVAL to garbage.
3445 This behavior is undocumented and Bison
3446 users should not rely upon it. Assigning to YYVAL
3447 unconditionally makes the parser a bit smaller, and it avoids a
3448 GCC warning that YYVAL may be used uninitialized. */
3449 yyval = yyvsp[1-yylen];
3450
3451
3452 YY_REDUCE_PRINT (yyn);
3453 switch (yyn)
3454 {
3455 case 26:
3456
3457 /* Line 1455 of yacc.c */
3458 #line 425 "ircd_parser.y"
3459 { (yyval.number) = 0; }
3460 break;
3461
3462 case 28:
3463
3464 /* Line 1455 of yacc.c */
3465 #line 427 "ircd_parser.y"
3466 {
3467 (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number);
3468 }
3469 break;
3470
3471 case 29:
3472
3473 /* Line 1455 of yacc.c */
3474 #line 431 "ircd_parser.y"
3475 {
3476 (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);
3477 }
3478 break;
3479
3480 case 30:
3481
3482 /* Line 1455 of yacc.c */
3483 #line 435 "ircd_parser.y"
3484 {
3485 (yyval.number) = (yyvsp[(1) - (3)].number) * 60 + (yyvsp[(3) - (3)].number);
3486 }
3487 break;
3488
3489 case 31:
3490
3491 /* Line 1455 of yacc.c */
3492 #line 439 "ircd_parser.y"
3493 {
3494 (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 + (yyvsp[(3) - (3)].number);
3495 }
3496 break;
3497
3498 case 32:
3499
3500 /* Line 1455 of yacc.c */
3501 #line 443 "ircd_parser.y"
3502 {
3503 (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 + (yyvsp[(3) - (3)].number);
3504 }
3505 break;
3506
3507 case 33:
3508
3509 /* Line 1455 of yacc.c */
3510 #line 447 "ircd_parser.y"
3511 {
3512 (yyval.number) = (yyvsp[(1) - (3)].number) * 60 * 60 * 24 * 7 + (yyvsp[(3) - (3)].number);
3513 }
3514 break;
3515
3516 case 34:
3517
3518 /* Line 1455 of yacc.c */
3519 #line 452 "ircd_parser.y"
3520 { (yyval.number) = 0; }
3521 break;
3522
3523 case 36:
3524
3525 /* Line 1455 of yacc.c */
3526 #line 453 "ircd_parser.y"
3527 { (yyval.number) = (yyvsp[(1) - (2)].number) + (yyvsp[(2) - (2)].number); }
3528 break;
3529
3530 case 37:
3531
3532 /* Line 1455 of yacc.c */
3533 #line 454 "ircd_parser.y"
3534 { (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number); }
3535 break;
3536
3537 case 38:
3538
3539 /* Line 1455 of yacc.c */
3540 #line 455 "ircd_parser.y"
3541 { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 + (yyvsp[(3) - (3)].number); }
3542 break;
3543
3544 case 39:
3545
3546 /* Line 1455 of yacc.c */
3547 #line 456 "ircd_parser.y"
3548 { (yyval.number) = (yyvsp[(1) - (3)].number) * 1024 * 1024 + (yyvsp[(3) - (3)].number); }
3549 break;
3550
3551 case 46:
3552
3553 /* Line 1455 of yacc.c */
3554 #line 470 "ircd_parser.y"
3555 {
3556 #ifndef STATIC_MODULES /* NOOP in the static case */
3557 if (conf_parser_ctx.pass == 2)
3558 add_conf_module(libio_basename(yylval.string));
3559 #endif
3560 }
3561 break;
3562
3563 case 47:
3564
3565 /* Line 1455 of yacc.c */
3566 #line 478 "ircd_parser.y"
3567 {
3568 #ifndef STATIC_MODULES
3569 if (conf_parser_ctx.pass == 2)
3570 mod_add_path(yylval.string);
3571 #endif
3572 }
3573 break;
3574
3575 case 64:
3576
3577 /* Line 1455 of yacc.c */
3578 #line 500 "ircd_parser.y"
3579 {
3580 #ifdef HAVE_LIBCRYPTO
3581 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3582 ServerInfo.tls_version = 0;
3583 #endif
3584 }
3585 break;
3586
3587 case 65:
3588
3589 /* Line 1455 of yacc.c */
3590 #line 506 "ircd_parser.y"
3591 {
3592 #ifdef HAVE_LIBCRYPTO
3593 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3594 {
3595 if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_SSLV3))
3596 SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_SSLv3);
3597 if (!(ServerInfo.tls_version & CONF_SERVER_INFO_TLS_VERSION_TLSV1))
3598 SSL_CTX_set_options(ServerInfo.server_ctx, SSL_OP_NO_TLSv1);
3599 }
3600 #endif
3601 }
3602 break;
3603
3604 case 68:
3605
3606 /* Line 1455 of yacc.c */
3607 #line 520 "ircd_parser.y"
3608 {
3609 #ifdef HAVE_LIBCRYPTO
3610 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3611 ServerInfo.tls_version |= CONF_SERVER_INFO_TLS_VERSION_SSLV3;
3612 #endif
3613 }
3614 break;
3615
3616 case 69:
3617
3618 /* Line 1455 of yacc.c */
3619 #line 526 "ircd_parser.y"
3620 {
3621 #ifdef HAVE_LIBCRYPTO
3622 if (conf_parser_ctx.boot && conf_parser_ctx.pass == 2)
3623 ServerInfo.tls_version |= CONF_SERVER_INFO_TLS_VERSION_TLSV1;
3624 #endif
3625 }
3626 break;
3627
3628 case 70:
3629
3630 /* Line 1455 of yacc.c */
3631 #line 534 "ircd_parser.y"
3632 {
3633 #ifdef HAVE_LIBCRYPTO
3634 if (conf_parser_ctx.pass == 2 && ServerInfo.server_ctx)
3635 {
3636 if (!ServerInfo.rsa_private_key_file)
3637 {
3638 yyerror("No rsa_private_key_file specified, SSL disabled");
3639 break;
3640 }
3641
3642 if (SSL_CTX_use_certificate_file(ServerInfo.server_ctx, yylval.string,
3643 SSL_FILETYPE_PEM) <= 0)
3644 {
3645 yyerror(ERR_lib_error_string(ERR_get_error()));
3646 break;
3647 }
3648
3649 if (SSL_CTX_use_PrivateKey_file(ServerInfo.server_ctx, ServerInfo.rsa_private_key_file,
3650 SSL_FILETYPE_PEM) <= 0)
3651 {
3652 yyerror(ERR_lib_error_string(ERR_get_error()));
3653 break;
3654 }
3655
3656 if (!SSL_CTX_check_private_key(ServerInfo.server_ctx))
3657 {
3658 yyerror(ERR_lib_error_string(ERR_get_error()));
3659 break;
3660 }
3661 }
3662 #endif
3663 }
3664 break;
3665
3666 case 71:
3667
3668 /* Line 1455 of yacc.c */
3669 #line 568 "ircd_parser.y"
3670 {
3671 #ifdef HAVE_LIBCRYPTO
3672 if (conf_parser_ctx.pass == 1)
3673 {
3674 BIO *file;
3675
3676 if (ServerInfo.rsa_private_key)
3677 {
3678 RSA_free(ServerInfo.rsa_private_key);
3679 ServerInfo.rsa_private_key = NULL;
3680 }
3681
3682 if (ServerInfo.rsa_private_key_file)
3683 {
3684 MyFree(ServerInfo.rsa_private_key_file);
3685 ServerInfo.rsa_private_key_file = NULL;
3686 }
3687
3688 DupString(ServerInfo.rsa_private_key_file, yylval.string);
3689
3690 if ((file = BIO_new_file(yylval.string, "r")) == NULL)
3691 {
3692 yyerror("File open failed, ignoring");
3693 break;
3694 }
3695
3696 ServerInfo.rsa_private_key = (RSA *)PEM_read_bio_RSAPrivateKey(file, NULL,
3697 0, NULL);
3698
3699 BIO_set_close(file, BIO_CLOSE);
3700 BIO_free(file);
3701
3702 if (ServerInfo.rsa_private_key == NULL)
3703 {
3704 yyerror("Couldn't extract key, ignoring");
3705 break;
3706 }
3707
3708 if (!RSA_check_key(ServerInfo.rsa_private_key))
3709 {
3710 RSA_free(ServerInfo.rsa_private_key);
3711 ServerInfo.rsa_private_key = NULL;
3712
3713 yyerror("Invalid key, ignoring");
3714 break;
3715 }
3716
3717 /* require 2048 bit (256 byte) key */
3718 if (RSA_size(ServerInfo.rsa_private_key) != 256)
3719 {
3720 RSA_free(ServerInfo.rsa_private_key);
3721 ServerInfo.rsa_private_key = NULL;
3722
3723 yyerror("Not a 2048 bit key, ignoring");
3724 }
3725 }
3726 #endif
3727 }
3728 break;
3729
3730 case 72:
3731
3732 /* Line 1455 of yacc.c */
3733 #line 628 "ircd_parser.y"
3734 {
3735 /* this isn't rehashable */
3736 if (conf_parser_ctx.pass == 2)
3737 {
3738 if (ServerInfo.name == NULL)
3739 {
3740 /* the ircd will exit() in main() if we dont set one */
3741 if (strlen(yylval.string) <= HOSTLEN)
3742 DupString(ServerInfo.name, yylval.string);
3743 }
3744 }
3745 }
3746 break;
3747
3748 case 73:
3749
3750 /* Line 1455 of yacc.c */
3751 #line 642 "ircd_parser.y"
3752 {
3753 /* this isn't rehashable */
3754 if (conf_parser_ctx.pass == 2 && !ServerInfo.sid)
3755 {
3756 if (valid_sid(yylval.string))
3757 DupString(ServerInfo.sid, yylval.string);
3758 else
3759 {
3760 ilog(L_ERROR, "Ignoring config file entry SID -- invalid SID. Aborting.");
3761 exit(0);
3762 }
3763 }
3764 }
3765 break;
3766
3767 case 74:
3768
3769 /* Line 1455 of yacc.c */
3770 #line 657 "ircd_parser.y"
3771 {
3772 if (conf_parser_ctx.pass == 2)
3773 {
3774 MyFree(ServerInfo.description);
3775 DupString(ServerInfo.description,yylval.string);
3776 }
3777 }
3778 break;
3779
3780 case 75:
3781
3782 /* Line 1455 of yacc.c */
3783 #line 666 "ircd_parser.y"
3784 {
3785 if (conf_parser_ctx.pass == 2)
3786 {
3787 char *p;
3788
3789 if ((p = strchr(yylval.string, ' ')) != NULL)
3790 p = '\0';
3791
3792 MyFree(ServerInfo.network_name);
3793 DupString(ServerInfo.network_name, yylval.string);
3794 }
3795 }
3796 break;
3797
3798 case 76:
3799
3800 /* Line 1455 of yacc.c */
3801 #line 680 "ircd_parser.y"
3802 {
3803 if (conf_parser_ctx.pass == 2)
3804 {
3805 MyFree(ServerInfo.network_desc);
3806 DupString(ServerInfo.network_desc, yylval.string);
3807 }
3808 }
3809 break;
3810
3811 case 77:
3812
3813 /* Line 1455 of yacc.c */
3814 #line 689 "ircd_parser.y"
3815 {
3816 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3817 {
3818 struct addrinfo hints, *res;
3819
3820 memset(&hints, 0, sizeof(hints));
3821
3822 hints.ai_family = AF_UNSPEC;
3823 hints.ai_socktype = SOCK_STREAM;
3824 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3825
3826 if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
3827 ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
3828 else
3829 {
3830 assert(res != NULL);
3831
3832 memcpy(&ServerInfo.ip, res->ai_addr, res->ai_addrlen);
3833 ServerInfo.ip.ss.ss_family = res->ai_family;
3834 ServerInfo.ip.ss_len = res->ai_addrlen;
3835 irc_freeaddrinfo(res);
3836
3837 ServerInfo.specific_ipv4_vhost = 1;
3838 }
3839 }
3840 }
3841 break;
3842
3843 case 78:
3844
3845 /* Line 1455 of yacc.c */
3846 #line 717 "ircd_parser.y"
3847 {
3848 #ifdef IPV6
3849 if (conf_parser_ctx.pass == 2 && *yylval.string != '*')
3850 {
3851 struct addrinfo hints, *res;
3852
3853 memset(&hints, 0, sizeof(hints));
3854
3855 hints.ai_family = AF_UNSPEC;
3856 hints.ai_socktype = SOCK_STREAM;
3857 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
3858
3859 if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
3860 ilog(L_ERROR, "Invalid netmask for server vhost6(%s)", yylval.string);
3861 else
3862 {
3863 assert(res != NULL);
3864
3865 memcpy(&ServerInfo.ip6, res->ai_addr, res->ai_addrlen);
3866 ServerInfo.ip6.ss.ss_family = res->ai_family;
3867 ServerInfo.ip6.ss_len = res->ai_addrlen;
3868 irc_freeaddrinfo(res);
3869
3870 ServerInfo.specific_ipv6_vhost = 1;
3871 }
3872 }
3873 #endif
3874 }
3875 break;
3876
3877 case 79:
3878
3879 /* Line 1455 of yacc.c */
3880 #line 747 "ircd_parser.y"
3881 {
3882 if (conf_parser_ctx.pass == 2)
3883 {
3884 recalc_fdlimit(NULL);
3885
3886 if ((yyvsp[(3) - (4)].number) < MAXCLIENTS_MIN)
3887 {
3888 char buf[IRCD_BUFSIZE];
3889 ircsprintf(buf, "MAXCLIENTS too low, setting to %d", MAXCLIENTS_MIN);
3890 yyerror(buf);
3891 }
3892 else if ((yyvsp[(3) - (4)].number) > MAXCLIENTS_MAX)
3893 {
3894 char buf[IRCD_BUFSIZE];
3895 ircsprintf(buf, "MAXCLIENTS too high, setting to %d", MAXCLIENTS_MAX);
3896 yyerror(buf);
3897 }
3898 else
3899 ServerInfo.max_clients = (yyvsp[(3) - (4)].number);
3900 }
3901 }
3902 break;
3903
3904 case 80:
3905
3906 /* Line 1455 of yacc.c */
3907 #line 770 "ircd_parser.y"
3908 {
3909 if (conf_parser_ctx.pass == 2)
3910 {
3911 if (yylval.number)
3912 {
3913 ServerInfo.hub = 1;
3914 delete_capability("HUB");
3915 add_capability("HUB", CAP_HUB, 1);
3916 }
3917 else if (ServerInfo.hub)
3918 {
3919
3920 ServerInfo.hub = 0;
3921 delete_capability("HUB");
3922 }
3923 }
3924 }
3925 break;
3926
3927 case 88:
3928
3929 /* Line 1455 of yacc.c */
3930 #line 798 "ircd_parser.y"
3931 {
3932 if (conf_parser_ctx.pass == 2)
3933 {
3934 MyFree(AdminInfo.name);
3935 DupString(AdminInfo.name, yylval.string);
3936 }
3937 }
3938 break;
3939
3940 case 89:
3941
3942 /* Line 1455 of yacc.c */
3943 #line 807 "ircd_parser.y"
3944 {
3945 if (conf_parser_ctx.pass == 2)
3946 {
3947 MyFree(AdminInfo.email);
3948 DupString(AdminInfo.email, yylval.string);
3949 }
3950 }
3951 break;
3952
3953 case 90:
3954
3955 /* Line 1455 of yacc.c */
3956 #line 816 "ircd_parser.y"
3957 {
3958 if (conf_parser_ctx.pass == 2)
3959 {
3960 MyFree(AdminInfo.description);
3961 DupString(AdminInfo.description, yylval.string);
3962 }
3963 }
3964 break;
3965
3966 case 107:
3967
3968 /* Line 1455 of yacc.c */
3969 #line 843 "ircd_parser.y"
3970 {
3971 }
3972 break;
3973
3974 case 108:
3975
3976 /* Line 1455 of yacc.c */
3977 #line 847 "ircd_parser.y"
3978 {
3979 }
3980 break;
3981
3982 case 109:
3983
3984 /* Line 1455 of yacc.c */
3985 #line 851 "ircd_parser.y"
3986 {
3987 if (conf_parser_ctx.pass == 2)
3988 strlcpy(ConfigLoggingEntry.userlog, yylval.string,
3989 sizeof(ConfigLoggingEntry.userlog));
3990 }
3991 break;
3992
3993 case 110:
3994
3995 /* Line 1455 of yacc.c */
3996 #line 858 "ircd_parser.y"
3997 {
3998 if (conf_parser_ctx.pass == 2)
3999 strlcpy(ConfigLoggingEntry.failed_operlog, yylval.string,
4000 sizeof(ConfigLoggingEntry.failed_operlog));
4001 }
4002 break;
4003
4004 case 111:
4005
4006 /* Line 1455 of yacc.c */
4007 #line 865 "ircd_parser.y"
4008 {
4009 if (conf_parser_ctx.pass == 2)
4010 strlcpy(ConfigLoggingEntry.operlog, yylval.string,
4011 sizeof(ConfigLoggingEntry.operlog));
4012 }
4013 break;
4014
4015 case 112:
4016
4017 /* Line 1455 of yacc.c */
4018 #line 872 "ircd_parser.y"
4019 {
4020 if (conf_parser_ctx.pass == 2)
4021 strlcpy(ConfigLoggingEntry.operspylog, yylval.string,
4022 sizeof(ConfigLoggingEntry.operspylog));
4023 }
4024 break;
4025
4026 case 113:
4027
4028 /* Line 1455 of yacc.c */
4029 #line 879 "ircd_parser.y"
4030 {
4031 if (conf_parser_ctx.pass == 2)
4032 strlcpy(ConfigLoggingEntry.glinelog, yylval.string,
4033 sizeof(ConfigLoggingEntry.glinelog));
4034 }
4035 break;
4036
4037 case 114:
4038
4039 /* Line 1455 of yacc.c */
4040 #line 886 "ircd_parser.y"
4041 {
4042 if (conf_parser_ctx.pass == 2)
4043 strlcpy(ConfigLoggingEntry.klinelog, yylval.string,
4044 sizeof(ConfigLoggingEntry.klinelog));
4045 }
4046 break;
4047
4048 case 115:
4049
4050 /* Line 1455 of yacc.c */
4051 #line 893 "ircd_parser.y"
4052 {
4053 if (conf_parser_ctx.pass == 2)
4054 strlcpy(ConfigLoggingEntry.ioerrlog, yylval.string,
4055 sizeof(ConfigLoggingEntry.ioerrlog));
4056 }
4057 break;
4058
4059 case 116:
4060
4061 /* Line 1455 of yacc.c */
4062 #line 900 "ircd_parser.y"
4063 {
4064 if (conf_parser_ctx.pass == 2)
4065 strlcpy(ConfigLoggingEntry.killlog, yylval.string,
4066 sizeof(ConfigLoggingEntry.killlog));
4067 }
4068 break;
4069
4070 case 117:
4071
4072 /* Line 1455 of yacc.c */
4073 #line 907 "ircd_parser.y"
4074 {
4075 if (conf_parser_ctx.pass == 2)
4076 set_log_level(L_CRIT);
4077 }
4078 break;
4079
4080 case 118:
4081
4082 /* Line 1455 of yacc.c */
4083 #line 911 "ircd_parser.y"
4084 {
4085 if (conf_parser_ctx.pass == 2)
4086 set_log_level(L_ERROR);
4087 }
4088 break;
4089
4090 case 119:
4091
4092 /* Line 1455 of yacc.c */
4093 #line 915 "ircd_parser.y"
4094 {
4095 if (conf_parser_ctx.pass == 2)
4096 set_log_level(L_WARN);
4097 }
4098 break;
4099
4100 case 120:
4101
4102 /* Line 1455 of yacc.c */
4103 #line 919 "ircd_parser.y"
4104 {
4105 if (conf_parser_ctx.pass == 2)
4106 set_log_level(L_NOTICE);
4107 }
4108 break;
4109
4110 case 121:
4111
4112 /* Line 1455 of yacc.c */
4113 #line 923 "ircd_parser.y"
4114 {
4115 if (conf_parser_ctx.pass == 2)
4116 set_log_level(L_TRACE);
4117 }
4118 break;
4119
4120 case 122:
4121
4122 /* Line 1455 of yacc.c */
4123 #line 927 "ircd_parser.y"
4124 {
4125 if (conf_parser_ctx.pass == 2)
4126 set_log_level(L_INFO);
4127 }
4128 break;
4129
4130 case 123:
4131
4132 /* Line 1455 of yacc.c */
4133 #line 931 "ircd_parser.y"
4134 {
4135 if (conf_parser_ctx.pass == 2)
4136 set_log_level(L_DEBUG);
4137 }
4138 break;
4139
4140 case 124:
4141
4142 /* Line 1455 of yacc.c */
4143 #line 937 "ircd_parser.y"
4144 {
4145 if (conf_parser_ctx.pass == 2)
4146 ConfigLoggingEntry.use_logging = yylval.number;
4147 }
4148 break;
4149
4150 case 125:
4151
4152 /* Line 1455 of yacc.c */
4153 #line 946 "ircd_parser.y"
4154 {
4155 if (conf_parser_ctx.pass == 2)
4156 {
4157 yy_conf = make_conf_item(OPER_TYPE);
4158 yy_aconf = map_to_conf(yy_conf);
4159 SetConfEncrypted(yy_aconf); /* Yes, the default is encrypted */
4160 }
4161 else
4162 {
4163 MyFree(class_name);
4164 class_name = NULL;
4165 }
4166 }
4167 break;
4168
4169 case 126:
4170
4171 /* Line 1455 of yacc.c */
4172 #line 959 "ircd_parser.y"
4173 {
4174 if (conf_parser_ctx.pass == 2)
4175 {
4176 struct CollectItem *yy_tmp;
4177 dlink_node *ptr;
4178 dlink_node *next_ptr;
4179
4180 conf_add_class_to_conf(yy_conf, class_name);
4181
4182 /* Now, make sure there is a copy of the "base" given oper
4183 * block in each of the collected copies
4184 */
4185
4186 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
4187 {
4188 struct AccessItem *new_aconf;
4189 struct ConfItem *new_conf;
4190 yy_tmp = ptr->data;
4191
4192 new_conf = make_conf_item(OPER_TYPE);
4193 new_aconf = (struct AccessItem *)map_to_conf(new_conf);
4194
4195 new_aconf->flags = yy_aconf->flags;
4196
4197 if (yy_conf->name != NULL)
4198 DupString(new_conf->name, yy_conf->name);
4199 if (yy_tmp->user != NULL)
4200 DupString(new_aconf->user, yy_tmp->user);
4201 else
4202 DupString(new_aconf->user, "*");
4203 if (yy_tmp->host != NULL)
4204 DupString(new_aconf->host, yy_tmp->host);
4205 else
4206 DupString(new_aconf->host, "*");
4207 conf_add_class_to_conf(new_conf, class_name);
4208 if (yy_aconf->passwd != NULL)
4209 DupString(new_aconf->passwd, yy_aconf->passwd);
4210
4211 new_aconf->port = yy_aconf->port;
4212 #ifdef HAVE_LIBCRYPTO
4213 if (yy_aconf->rsa_public_key_file != NULL)
4214 {
4215 BIO *file;
4216
4217 DupString(new_aconf->rsa_public_key_file,
4218 yy_aconf->rsa_public_key_file);
4219
4220 file = BIO_new_file(yy_aconf->rsa_public_key_file, "r");
4221 new_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file,
4222 NULL, 0, NULL);
4223 BIO_set_close(file, BIO_CLOSE);
4224 BIO_free(file);
4225 }
4226 #endif
4227
4228 #ifdef HAVE_LIBCRYPTO
4229 if (yy_tmp->name && (yy_tmp->passwd || yy_aconf->rsa_public_key)
4230 && yy_tmp->host)
4231 #else
4232 if (yy_tmp->name && yy_tmp->passwd && yy_tmp->host)
4233 #endif
4234 {
4235 conf_add_class_to_conf(new_conf, class_name);
4236 if (yy_tmp->name != NULL)
4237 DupString(new_conf->name, yy_tmp->name);
4238 }
4239
4240 dlinkDelete(&yy_tmp->node, &col_conf_list);
4241 free_collect_item(yy_tmp);
4242 }
4243
4244 yy_conf = NULL;
4245 yy_aconf = NULL;
4246
4247
4248 MyFree(class_name);
4249 class_name = NULL;
4250 }
4251 }
4252 break;
4253
4254 case 154:
4255
4256 /* Line 1455 of yacc.c */
4257 #line 1051 "ircd_parser.y"
4258 {
4259 if (conf_parser_ctx.pass == 2)
4260 {
4261 if (strlen(yylval.string) > OPERNICKLEN)
4262 yylval.string[OPERNICKLEN] = '\0';
4263
4264 MyFree(yy_conf->name);
4265 DupString(yy_conf->name, yylval.string);
4266 }
4267 }
4268 break;
4269
4270 case 155:
4271
4272 /* Line 1455 of yacc.c */
4273 #line 1063 "ircd_parser.y"
4274 {
4275 if (conf_parser_ctx.pass == 2)
4276 {
4277 if (strlen(yylval.string) > OPERNICKLEN)
4278 yylval.string[OPERNICKLEN] = '\0';
4279
4280 MyFree(yy_conf->name);
4281 DupString(yy_conf->name, yylval.string);
4282 }
4283 }
4284 break;
4285
4286 case 156:
4287
4288 /* Line 1455 of yacc.c */
4289 #line 1075 "ircd_parser.y"
4290 {
4291 if (conf_parser_ctx.pass == 2)
4292 {
4293 struct split_nuh_item nuh;
4294
4295 nuh.nuhmask = yylval.string;
4296 nuh.nickptr = NULL;
4297 nuh.userptr = userbuf;
4298 nuh.hostptr = hostbuf;
4299
4300 nuh.nicksize = 0;
4301 nuh.usersize = sizeof(userbuf);
4302 nuh.hostsize = sizeof(hostbuf);
4303
4304 split_nuh(&nuh);
4305
4306 if (yy_aconf->user == NULL)
4307 {
4308 DupString(yy_aconf->user, userbuf);
4309 DupString(yy_aconf->host, hostbuf);
4310 }
4311 else
4312 {
4313 struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
4314
4315 DupString(yy_tmp->user, userbuf);
4316 DupString(yy_tmp->host, hostbuf);
4317
4318 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
4319 }
4320 }
4321 }
4322 break;
4323
4324 case 157:
4325
4326 /* Line 1455 of yacc.c */
4327 #line 1109 "ircd_parser.y"
4328 {
4329 if (conf_parser_ctx.pass == 2)
4330 {
4331 if (yy_aconf->passwd != NULL)
4332 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
4333
4334 MyFree(yy_aconf->passwd);
4335 DupString(yy_aconf->passwd, yylval.string);
4336 }
4337 }
4338 break;
4339
4340 case 158:
4341
4342 /* Line 1455 of yacc.c */
4343 #line 1121 "ircd_parser.y"
4344 {
4345 if (conf_parser_ctx.pass == 2)
4346 {
4347 if (yylval.number)
4348 SetConfEncrypted(yy_aconf);
4349 else
4350 ClearConfEncrypted(yy_aconf);
4351 }
4352 }
4353 break;
4354
4355 case 159:
4356
4357 /* Line 1455 of yacc.c */
4358 #line 1132 "ircd_parser.y"
4359 {
4360 #ifdef HAVE_LIBCRYPTO
4361 if (conf_parser_ctx.pass == 2)
4362 {
4363 BIO *file;
4364
4365 if (yy_aconf->rsa_public_key != NULL)
4366 {
4367 RSA_free(yy_aconf->rsa_public_key);
4368 yy_aconf->rsa_public_key = NULL;
4369 }
4370
4371 if (yy_aconf->rsa_public_key_file != NULL)
4372 {
4373 MyFree(yy_aconf->rsa_public_key_file);
4374 yy_aconf->rsa_public_key_file = NULL;
4375 }
4376
4377 DupString(yy_aconf->rsa_public_key_file, yylval.string);
4378 file = BIO_new_file(yylval.string, "r");
4379
4380 if (file == NULL)
4381 {
4382 yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
4383 break;
4384 }
4385
4386 yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
4387
4388 if (yy_aconf->rsa_public_key == NULL)
4389 {
4390 yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
4391 break;
4392 }
4393
4394 BIO_set_close(file, BIO_CLOSE);
4395 BIO_free(file);
4396 }
4397 #endif /* HAVE_LIBCRYPTO */
4398 }
4399 break;
4400
4401 case 160:
4402
4403 /* Line 1455 of yacc.c */
4404 #line 1174 "ircd_parser.y"
4405 {
4406 if (conf_parser_ctx.pass == 2)
4407 {
4408 MyFree(class_name);
4409 DupString(class_name, yylval.string);
4410 }
4411 }
4412 break;
4413
4414 case 161:
4415
4416 /* Line 1455 of yacc.c */
4417 #line 1183 "ircd_parser.y"
4418 {
4419 if (conf_parser_ctx.pass == 2)
4420 yy_aconf->modes = 0;
4421 }
4422 break;
4423
4424 case 165:
4425
4426 /* Line 1455 of yacc.c */
4427 #line 1190 "ircd_parser.y"
4428 {
4429 if (conf_parser_ctx.pass == 2)
4430 yy_aconf->modes |= UMODE_BOTS;
4431 }
4432 break;
4433
4434 case 166:
4435
4436 /* Line 1455 of yacc.c */
4437 #line 1194 "ircd_parser.y"
4438 {
4439 if (conf_parser_ctx.pass == 2)
4440 yy_aconf->modes |= UMODE_CCONN;
4441 }
4442 break;
4443
4444 case 167:
4445
4446 /* Line 1455 of yacc.c */
4447 #line 1198 "ircd_parser.y"
4448 {
4449 if (conf_parser_ctx.pass == 2)
4450 yy_aconf->modes |= UMODE_CCONN_FULL;
4451 }
4452 break;
4453
4454 case 168:
4455
4456 /* Line 1455 of yacc.c */
4457 #line 1202 "ircd_parser.y"
4458 {
4459 if (conf_parser_ctx.pass == 2)
4460 yy_aconf->modes |= UMODE_DEAF;
4461 }
4462 break;
4463
4464 case 169:
4465
4466 /* Line 1455 of yacc.c */
4467 #line 1206 "ircd_parser.y"
4468 {
4469 if (conf_parser_ctx.pass == 2)
4470 yy_aconf->modes |= UMODE_DEBUG;
4471 }
4472 break;
4473
4474 case 170:
4475
4476 /* Line 1455 of yacc.c */
4477 #line 1210 "ircd_parser.y"
4478 {
4479 if (conf_parser_ctx.pass == 2)
4480 yy_aconf->modes |= UMODE_FULL;
4481 }
4482 break;
4483
4484 case 171:
4485
4486 /* Line 1455 of yacc.c */
4487 #line 1214 "ircd_parser.y"
4488 {
4489 if (conf_parser_ctx.pass == 2)
4490 yy_aconf->modes |= UMODE_SKILL;
4491 }
4492 break;
4493
4494 case 172:
4495
4496 /* Line 1455 of yacc.c */
4497 #line 1218 "ircd_parser.y"
4498 {
4499 if (conf_parser_ctx.pass == 2)
4500 yy_aconf->modes |= UMODE_NCHANGE;
4501 }
4502 break;
4503
4504 case 173:
4505
4506 /* Line 1455 of yacc.c */
4507 #line 1222 "ircd_parser.y"
4508 {
4509 if (conf_parser_ctx.pass == 2)
4510 yy_aconf->modes |= UMODE_REJ;
4511 }
4512 break;
4513
4514 case 174:
4515
4516 /* Line 1455 of yacc.c */
4517 #line 1226 "ircd_parser.y"
4518 {
4519 if (conf_parser_ctx.pass == 2)
4520 yy_aconf->modes |= UMODE_UNAUTH;
4521 }
4522 break;
4523
4524 case 175:
4525
4526 /* Line 1455 of yacc.c */
4527 #line 1230 "ircd_parser.y"
4528 {
4529 if (conf_parser_ctx.pass == 2)
4530 yy_aconf->modes |= UMODE_SPY;
4531 }
4532 break;
4533
4534 case 176:
4535
4536 /* Line 1455 of yacc.c */
4537 #line 1234 "ircd_parser.y"
4538 {
4539 if (conf_parser_ctx.pass == 2)
4540 yy_aconf->modes |= UMODE_EXTERNAL;
4541 }
4542 break;
4543
4544 case 177:
4545
4546 /* Line 1455 of yacc.c */
4547 #line 1238 "ircd_parser.y"
4548 {
4549 if (conf_parser_ctx.pass == 2)
4550 yy_aconf->modes |= UMODE_OPERWALL;
4551 }
4552 break;
4553
4554 case 178:
4555
4556 /* Line 1455 of yacc.c */
4557 #line 1242 "ircd_parser.y"
4558 {
4559 if (conf_parser_ctx.pass == 2)
4560 yy_aconf->modes |= UMODE_SERVNOTICE;
4561 }
4562 break;
4563
4564 case 179:
4565
4566 /* Line 1455 of yacc.c */
4567 #line 1246 "ircd_parser.y"
4568 {
4569 if (conf_parser_ctx.pass == 2)
4570 yy_aconf->modes |= UMODE_INVISIBLE;
4571 }
4572 break;
4573
4574 case 180:
4575
4576 /* Line 1455 of yacc.c */
4577 #line 1250 "ircd_parser.y"
4578 {
4579 if (conf_parser_ctx.pass == 2)
4580 yy_aconf->modes |= UMODE_WALLOP;
4581 }
4582 break;
4583
4584 case 181:
4585
4586 /* Line 1455 of yacc.c */
4587 #line 1254 "ircd_parser.y"
4588 {
4589 if (conf_parser_ctx.pass == 2)
4590 yy_aconf->modes |= UMODE_SOFTCALLERID;
4591 }
4592 break;
4593
4594 case 182:
4595
4596 /* Line 1455 of yacc.c */
4597 #line 1258 "ircd_parser.y"
4598 {
4599 if (conf_parser_ctx.pass == 2)
4600 yy_aconf->modes |= UMODE_CALLERID;
4601 }
4602 break;
4603
4604 case 183:
4605
4606 /* Line 1455 of yacc.c */
4607 #line 1262 "ircd_parser.y"
4608 {
4609 if (conf_parser_ctx.pass == 2)
4610 yy_aconf->modes |= UMODE_LOCOPS;
4611 }
4612 break;
4613
4614 case 184:
4615
4616 /* Line 1455 of yacc.c */
4617 #line 1268 "ircd_parser.y"
4618 {
4619 if (conf_parser_ctx.pass == 2)
4620 {
4621 if (yylval.number)
4622 yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4623 else
4624 yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
4625 }
4626 }
4627 break;
4628
4629 case 185:
4630
4631 /* Line 1455 of yacc.c */
4632 #line 1279 "ircd_parser.y"
4633 {
4634 if (conf_parser_ctx.pass == 2)
4635 {
4636 if (yylval.number)
4637 yy_aconf->port |= OPER_FLAG_REMOTE;
4638 else
4639 yy_aconf->port &= ~OPER_FLAG_REMOTE;
4640 }
4641 }
4642 break;
4643
4644 case 186:
4645
4646 /* Line 1455 of yacc.c */
4647 #line 1290 "ircd_parser.y"
4648 {
4649 if (conf_parser_ctx.pass == 2)
4650 {
4651 if (yylval.number)
4652 yy_aconf->port |= OPER_FLAG_REMOTEBAN;
4653 else
4654 yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
4655 }
4656 }
4657 break;
4658
4659 case 187:
4660
4661 /* Line 1455 of yacc.c */
4662 #line 1301 "ircd_parser.y"
4663 {
4664 if (conf_parser_ctx.pass == 2)
4665 {
4666 if (yylval.number)
4667 yy_aconf->port |= OPER_FLAG_K;
4668 else
4669 yy_aconf->port &= ~OPER_FLAG_K;
4670 }
4671 }
4672 break;
4673
4674 case 188:
4675
4676 /* Line 1455 of yacc.c */
4677 #line 1312 "ircd_parser.y"
4678 {
4679 if (conf_parser_ctx.pass == 2)
4680 {
4681 if (yylval.number)
4682 yy_aconf->port |= OPER_FLAG_X;
4683 else
4684 yy_aconf->port &= ~OPER_FLAG_X;
4685 }
4686 }
4687 break;
4688
4689 case 189:
4690
4691 /* Line 1455 of yacc.c */
4692 #line 1323 "ircd_parser.y"
4693 {
4694 if (conf_parser_ctx.pass == 2)
4695 {
4696 if (yylval.number)
4697 yy_aconf->port |= OPER_FLAG_UNKLINE;
4698 else
4699 yy_aconf->port &= ~OPER_FLAG_UNKLINE;
4700 }
4701 }
4702 break;
4703
4704 case 190:
4705
4706 /* Line 1455 of yacc.c */
4707 #line 1334 "ircd_parser.y"
4708 {
4709 if (conf_parser_ctx.pass == 2)
4710 {
4711 if (yylval.number)
4712 yy_aconf->port |= OPER_FLAG_GLINE;
4713 else
4714 yy_aconf->port &= ~OPER_FLAG_GLINE;
4715 }
4716 }
4717 break;
4718
4719 case 191:
4720
4721 /* Line 1455 of yacc.c */
4722 #line 1345 "ircd_parser.y"
4723 {
4724 if (conf_parser_ctx.pass == 2)
4725 {
4726 if (yylval.number)
4727 yy_aconf->port |= OPER_FLAG_N;
4728 else
4729 yy_aconf->port &= ~OPER_FLAG_N;
4730 }
4731 }
4732 break;
4733
4734 case 192:
4735
4736 /* Line 1455 of yacc.c */
4737 #line 1356 "ircd_parser.y"
4738 {
4739 if (conf_parser_ctx.pass == 2)
4740 {
4741 if (yylval.number)
4742 yy_aconf->port |= OPER_FLAG_DIE;
4743 else
4744 yy_aconf->port &= ~OPER_FLAG_DIE;
4745 }
4746 }
4747 break;
4748
4749 case 193:
4750
4751 /* Line 1455 of yacc.c */
4752 #line 1367 "ircd_parser.y"
4753 {
4754 if (conf_parser_ctx.pass == 2)
4755 {
4756 if (yylval.number)
4757 yy_aconf->port |= OPER_FLAG_REHASH;
4758 else
4759 yy_aconf->port &= ~OPER_FLAG_REHASH;
4760 }
4761 }
4762 break;
4763
4764 case 194:
4765
4766 /* Line 1455 of yacc.c */
4767 #line 1378 "ircd_parser.y"
4768 {
4769 if (conf_parser_ctx.pass == 2)
4770 {
4771 if (yylval.number)
4772 yy_aconf->port |= OPER_FLAG_ADMIN;
4773 else
4774 yy_aconf->port &= ~OPER_FLAG_ADMIN;
4775 }
4776 }
4777 break;
4778
4779 case 195:
4780
4781 /* Line 1455 of yacc.c */
4782 #line 1389 "ircd_parser.y"
4783 {
4784 if (conf_parser_ctx.pass == 2)
4785 {
4786 if (yylval.number)
4787 yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
4788 else
4789 yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
4790 }
4791 }
4792 break;
4793
4794 case 196:
4795
4796 /* Line 1455 of yacc.c */
4797 #line 1400 "ircd_parser.y"
4798 {
4799 if (conf_parser_ctx.pass == 2)
4800 {
4801 if (yylval.number)
4802 yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
4803 else
4804 yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
4805 }
4806 }
4807 break;
4808
4809 case 197:
4810
4811 /* Line 1455 of yacc.c */
4812 #line 1411 "ircd_parser.y"
4813 {
4814 if (conf_parser_ctx.pass == 2)
4815 {
4816 if (yylval.number)
4817 yy_aconf->port |= OPER_FLAG_OPERWALL;
4818 else
4819 yy_aconf->port &= ~OPER_FLAG_OPERWALL;
4820 }
4821 }
4822 break;
4823
4824 case 198:
4825
4826 /* Line 1455 of yacc.c */
4827 #line 1422 "ircd_parser.y"
4828 {
4829 }
4830 break;
4831
4832 case 202:
4833
4834 /* Line 1455 of yacc.c */
4835 #line 1426 "ircd_parser.y"
4836 { not_atom = 1; }
4837 break;
4838
4839 case 204:
4840
4841 /* Line 1455 of yacc.c */
4842 #line 1427 "ircd_parser.y"
4843 { not_atom = 0; }
4844 break;
4845
4846 case 206:
4847
4848 /* Line 1455 of yacc.c */
4849 #line 1430 "ircd_parser.y"
4850 {
4851 if (conf_parser_ctx.pass == 2)
4852 {
4853 if (not_atom)yy_aconf->port &= ~OPER_FLAG_GLOBAL_KILL;
4854 else yy_aconf->port |= OPER_FLAG_GLOBAL_KILL;
4855 }
4856 }
4857 break;
4858
4859 case 207:
4860
4861 /* Line 1455 of yacc.c */
4862 #line 1437 "ircd_parser.y"
4863 {
4864 if (conf_parser_ctx.pass == 2)
4865 {
4866 if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTE;
4867 else yy_aconf->port |= OPER_FLAG_REMOTE;
4868 }
4869 }
4870 break;
4871
4872 case 208:
4873
4874 /* Line 1455 of yacc.c */
4875 #line 1444 "ircd_parser.y"
4876 {
4877 if (conf_parser_ctx.pass == 2)
4878 {
4879 if (not_atom) yy_aconf->port &= ~OPER_FLAG_K;
4880 else yy_aconf->port |= OPER_FLAG_K;
4881 }
4882 }
4883 break;
4884
4885 case 209:
4886
4887 /* Line 1455 of yacc.c */
4888 #line 1451 "ircd_parser.y"
4889 {
4890 if (conf_parser_ctx.pass == 2)
4891 {
4892 if (not_atom) yy_aconf->port &= ~OPER_FLAG_UNKLINE;
4893 else yy_aconf->port |= OPER_FLAG_UNKLINE;
4894 }
4895 }
4896 break;
4897
4898 case 210:
4899
4900 /* Line 1455 of yacc.c */
4901 #line 1458 "ircd_parser.y"
4902 {
4903 if (conf_parser_ctx.pass == 2)
4904 {
4905 if (not_atom) yy_aconf->port &= ~OPER_FLAG_X;
4906 else yy_aconf->port |= OPER_FLAG_X;
4907 }
4908 }
4909 break;
4910
4911 case 211:
4912
4913 /* Line 1455 of yacc.c */
4914 #line 1465 "ircd_parser.y"
4915 {
4916 if (conf_parser_ctx.pass == 2)
4917 {
4918 if (not_atom) yy_aconf->port &= ~OPER_FLAG_GLINE;
4919 else yy_aconf->port |= OPER_FLAG_GLINE;
4920 }
4921 }
4922 break;
4923
4924 case 212:
4925
4926 /* Line 1455 of yacc.c */
4927 #line 1472 "ircd_parser.y"
4928 {
4929 if (conf_parser_ctx.pass == 2)
4930 {
4931 if (not_atom) yy_aconf->port &= ~OPER_FLAG_DIE;
4932 else yy_aconf->port |= OPER_FLAG_DIE;
4933 }
4934 }
4935 break;
4936
4937 case 213:
4938
4939 /* Line 1455 of yacc.c */
4940 #line 1479 "ircd_parser.y"
4941 {
4942 if (conf_parser_ctx.pass == 2)
4943 {
4944 if (not_atom) yy_aconf->port &= ~OPER_FLAG_REHASH;
4945 else yy_aconf->port |= OPER_FLAG_REHASH;
4946 }
4947 }
4948 break;
4949
4950 case 214:
4951
4952 /* Line 1455 of yacc.c */
4953 #line 1486 "ircd_parser.y"
4954 {
4955 if (conf_parser_ctx.pass == 2)
4956 {
4957 if (not_atom) yy_aconf->port &= ~OPER_FLAG_ADMIN;
4958 else yy_aconf->port |= OPER_FLAG_ADMIN;
4959 }
4960 }
4961 break;
4962
4963 case 215:
4964
4965 /* Line 1455 of yacc.c */
4966 #line 1493 "ircd_parser.y"
4967 {
4968 if (conf_parser_ctx.pass == 2)
4969 {
4970 if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_ADMIN;
4971 else yy_aconf->port |= OPER_FLAG_HIDDEN_ADMIN;
4972 }
4973 }
4974 break;
4975
4976 case 216:
4977
4978 /* Line 1455 of yacc.c */
4979 #line 1500 "ircd_parser.y"
4980 {
4981 if (conf_parser_ctx.pass == 2)
4982 {
4983 if (not_atom) yy_aconf->port &= ~OPER_FLAG_N;
4984 else yy_aconf->port |= OPER_FLAG_N;
4985 }
4986 }
4987 break;
4988
4989 case 217:
4990
4991 /* Line 1455 of yacc.c */
4992 #line 1507 "ircd_parser.y"
4993 {
4994 if (conf_parser_ctx.pass == 2)
4995 {
4996 if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPERWALL;
4997 else yy_aconf->port |= OPER_FLAG_OPERWALL;
4998 }
4999 }
5000 break;
5001
5002 case 218:
5003
5004 /* Line 1455 of yacc.c */
5005 #line 1514 "ircd_parser.y"
5006 {
5007 if (conf_parser_ctx.pass == 2)
5008 {
5009 if (not_atom) yy_aconf->port &= ~OPER_FLAG_OPER_SPY;
5010 else yy_aconf->port |= OPER_FLAG_OPER_SPY;
5011 }
5012 }
5013 break;
5014
5015 case 219:
5016
5017 /* Line 1455 of yacc.c */
5018 #line 1521 "ircd_parser.y"
5019 {
5020 if (conf_parser_ctx.pass == 2)
5021 {
5022 if (not_atom) yy_aconf->port &= ~OPER_FLAG_HIDDEN_OPER;
5023 else yy_aconf->port |= OPER_FLAG_HIDDEN_OPER;
5024 }
5025 }
5026 break;
5027
5028 case 220:
5029
5030 /* Line 1455 of yacc.c */
5031 #line 1528 "ircd_parser.y"
5032 {
5033 if (conf_parser_ctx.pass == 2)
5034 {
5035 if (not_atom) yy_aconf->port &= ~OPER_FLAG_REMOTEBAN;
5036 else yy_aconf->port |= OPER_FLAG_REMOTEBAN;
5037 }
5038 }
5039 break;
5040
5041 case 221:
5042
5043 /* Line 1455 of yacc.c */
5044 #line 1535 "ircd_parser.y"
5045 {
5046 if (conf_parser_ctx.pass == 2)
5047 {
5048 if (not_atom) ClearConfEncrypted(yy_aconf);
5049 else SetConfEncrypted(yy_aconf);
5050 }
5051 }
5052 break;
5053
5054 case 222:
5055
5056 /* Line 1455 of yacc.c */
5057 #line 1548 "ircd_parser.y"
5058 {
5059 if (conf_parser_ctx.pass == 1)
5060 {
5061 yy_conf = make_conf_item(CLASS_TYPE);
5062 yy_class = map_to_conf(yy_conf);
5063 }
5064 }
5065 break;
5066
5067 case 223:
5068
5069 /* Line 1455 of yacc.c */
5070 #line 1555 "ircd_parser.y"
5071 {
5072 if (conf_parser_ctx.pass == 1)
5073 {
5074 struct ConfItem *cconf = NULL;
5075 struct ClassItem *class = NULL;
5076
5077 if (yy_class_name == NULL)
5078 delete_conf_item(yy_conf);
5079 else
5080 {
5081 cconf = find_exact_name_conf(CLASS_TYPE, yy_class_name, NULL, NULL);
5082
5083 if (cconf != NULL) /* The class existed already */
5084 {
5085 int user_count = 0;
5086
5087 rebuild_cidr_class(cconf, yy_class);
5088
5089 class = map_to_conf(cconf);
5090
5091 user_count = class->curr_user_count;
5092 memcpy(class, yy_class, sizeof(*class));
5093 class->curr_user_count = user_count;
5094 class->active = 1;
5095
5096 delete_conf_item(yy_conf);
5097
5098 MyFree(cconf->name); /* Allows case change of class name */
5099 cconf->name = yy_class_name;
5100 }
5101 else /* Brand new class */
5102 {
5103 MyFree(yy_conf->name); /* just in case it was allocated */
5104 yy_conf->name = yy_class_name;
5105 yy_class->active = 1;
5106 }
5107 }
5108
5109 yy_class_name = NULL;
5110 }
5111 }
5112 break;
5113
5114 case 242:
5115
5116 /* Line 1455 of yacc.c */
5117 #line 1615 "ircd_parser.y"
5118 {
5119 if (conf_parser_ctx.pass == 1)
5120 {
5121 MyFree(yy_class_name);
5122 DupString(yy_class_name, yylval.string);
5123 }
5124 }
5125 break;
5126
5127 case 243:
5128
5129 /* Line 1455 of yacc.c */
5130 #line 1624 "ircd_parser.y"
5131 {
5132 if (conf_parser_ctx.pass == 1)
5133 {
5134 MyFree(yy_class_name);
5135 DupString(yy_class_name, yylval.string);
5136 }
5137 }
5138 break;
5139
5140 case 244:
5141
5142 /* Line 1455 of yacc.c */
5143 #line 1633 "ircd_parser.y"
5144 {
5145 if (conf_parser_ctx.pass == 1)
5146 PingFreq(yy_class) = (yyvsp[(3) - (4)].number);
5147 }
5148 break;
5149
5150 case 245:
5151
5152 /* Line 1455 of yacc.c */
5153 #line 1639 "ircd_parser.y"
5154 {
5155 if (conf_parser_ctx.pass == 1)
5156 PingWarning(yy_class) = (yyvsp[(3) - (4)].number);
5157 }
5158 break;
5159
5160 case 246:
5161
5162 /* Line 1455 of yacc.c */
5163 #line 1645 "ircd_parser.y"
5164 {
5165 if (conf_parser_ctx.pass == 1)
5166 MaxPerIp(yy_class) = (yyvsp[(3) - (4)].number);
5167 }
5168 break;
5169
5170 case 247:
5171
5172 /* Line 1455 of yacc.c */
5173 #line 1651 "ircd_parser.y"
5174 {
5175 if (conf_parser_ctx.pass == 1)
5176 ConFreq(yy_class) = (yyvsp[(3) - (4)].number);
5177 }
5178 break;
5179
5180 case 248:
5181
5182 /* Line 1455 of yacc.c */
5183 #line 1657 "ircd_parser.y"
5184 {
5185 if (conf_parser_ctx.pass == 1)
5186 MaxTotal(yy_class) = (yyvsp[(3) - (4)].number);
5187 }
5188 break;
5189
5190 case 249:
5191
5192 /* Line 1455 of yacc.c */
5193 #line 1663 "ircd_parser.y"
5194 {
5195 if (conf_parser_ctx.pass == 1)
5196 MaxGlobal(yy_class) = (yyvsp[(3) - (4)].number);
5197 }
5198 break;
5199
5200 case 250:
5201
5202 /* Line 1455 of yacc.c */
5203 #line 1669 "ircd_parser.y"
5204 {
5205 if (conf_parser_ctx.pass == 1)
5206 MaxLocal(yy_class) = (yyvsp[(3) - (4)].number);
5207 }
5208 break;
5209
5210 case 251:
5211
5212 /* Line 1455 of yacc.c */
5213 #line 1675 "ircd_parser.y"
5214 {
5215 if (conf_parser_ctx.pass == 1)
5216 MaxIdent(yy_class) = (yyvsp[(3) - (4)].number);
5217 }
5218 break;
5219
5220 case 252:
5221
5222 /* Line 1455 of yacc.c */
5223 #line 1681 "ircd_parser.y"
5224 {
5225 if (conf_parser_ctx.pass == 1)
5226 MaxSendq(yy_class) = (yyvsp[(3) - (4)].number);
5227 }
5228 break;
5229
5230 case 253:
5231
5232 /* Line 1455 of yacc.c */
5233 #line 1687 "ircd_parser.y"
5234 {
5235 if (conf_parser_ctx.pass == 1)
5236 CidrBitlenIPV4(yy_class) = (yyvsp[(3) - (4)].number);
5237 }
5238 break;
5239
5240 case 254:
5241
5242 /* Line 1455 of yacc.c */
5243 #line 1693 "ircd_parser.y"
5244 {
5245 if (conf_parser_ctx.pass == 1)
5246 CidrBitlenIPV6(yy_class) = (yyvsp[(3) - (4)].number);
5247 }
5248 break;
5249
5250 case 255:
5251
5252 /* Line 1455 of yacc.c */
5253 #line 1699 "ircd_parser.y"
5254 {
5255 if (conf_parser_ctx.pass == 1)
5256 NumberPerCidr(yy_class) = (yyvsp[(3) - (4)].number);
5257 }
5258 break;
5259
5260 case 256:
5261
5262 /* Line 1455 of yacc.c */
5263 #line 1708 "ircd_parser.y"
5264 {
5265 if (conf_parser_ctx.pass == 2)
5266 {
5267 listener_address = NULL;
5268 listener_flags = 0;
5269 }
5270 }
5271 break;
5272
5273 case 257:
5274
5275 /* Line 1455 of yacc.c */
5276 #line 1715 "ircd_parser.y"
5277 {
5278 if (conf_parser_ctx.pass == 2)
5279 {
5280 MyFree(listener_address);
5281 listener_address = NULL;
5282 }
5283 }
5284 break;
5285
5286 case 258:
5287
5288 /* Line 1455 of yacc.c */
5289 #line 1724 "ircd_parser.y"
5290 {
5291 listener_flags = 0;
5292 }
5293 break;
5294
5295 case 262:
5296
5297 /* Line 1455 of yacc.c */
5298 #line 1730 "ircd_parser.y"
5299 {
5300 if (conf_parser_ctx.pass == 2)
5301 listener_flags |= LISTENER_SSL;
5302 }
5303 break;
5304
5305 case 263:
5306
5307 /* Line 1455 of yacc.c */
5308 #line 1734 "ircd_parser.y"
5309 {
5310 if (conf_parser_ctx.pass == 2)
5311 listener_flags |= LISTENER_HIDDEN;
5312 }
5313 break;
5314
5315 case 264:
5316
5317 /* Line 1455 of yacc.c */
5318 #line 1738 "ircd_parser.y"
5319 {
5320 if (conf_parser_ctx.pass == 2)
5321 listener_flags |= LISTENER_SERVER;
5322 }
5323 break;
5324
5325 case 272:
5326
5327 /* Line 1455 of yacc.c */
5328 #line 1748 "ircd_parser.y"
5329 { listener_flags = 0; }
5330 break;
5331
5332 case 276:
5333
5334 /* Line 1455 of yacc.c */
5335 #line 1753 "ircd_parser.y"
5336 {
5337 if (conf_parser_ctx.pass == 2)
5338 {
5339 if ((listener_flags & LISTENER_SSL))
5340 #ifdef HAVE_LIBCRYPTO
5341 if (!ServerInfo.server_ctx)
5342 #endif
5343 {
5344 yyerror("SSL not available - port closed");
5345 break;
5346 }
5347 add_listener((yyvsp[(1) - (1)].number), listener_address, listener_flags);
5348 }
5349 }
5350 break;
5351
5352 case 277:
5353
5354 /* Line 1455 of yacc.c */
5355 #line 1767 "ircd_parser.y"
5356 {
5357 if (conf_parser_ctx.pass == 2)
5358 {
5359 int i;
5360
5361 if ((listener_flags & LISTENER_SSL))
5362 #ifdef HAVE_LIBCRYPTO
5363 if (!ServerInfo.server_ctx)
5364 #endif
5365 {
5366 yyerror("SSL not available - port closed");
5367 break;
5368 }
5369
5370 for (i = (yyvsp[(1) - (3)].number); i <= (yyvsp[(3) - (3)].number); ++i)
5371 add_listener(i, listener_address, listener_flags);
5372 }
5373 }
5374 break;
5375
5376 case 278:
5377
5378 /* Line 1455 of yacc.c */
5379 #line 1787 "ircd_parser.y"
5380 {
5381 if (conf_parser_ctx.pass == 2)
5382 {
5383 MyFree(listener_address);
5384 DupString(listener_address, yylval.string);
5385 }
5386 }
5387 break;
5388
5389 case 279:
5390
5391 /* Line 1455 of yacc.c */
5392 #line 1796 "ircd_parser.y"
5393 {
5394 if (conf_parser_ctx.pass == 2)
5395 {
5396 MyFree(listener_address);
5397 DupString(listener_address, yylval.string);
5398 }
5399 }
5400 break;
5401
5402 case 280:
5403
5404 /* Line 1455 of yacc.c */
5405 #line 1808 "ircd_parser.y"
5406 {
5407 if (conf_parser_ctx.pass == 2)
5408 {
5409 yy_conf = make_conf_item(CLIENT_TYPE);
5410 yy_aconf = map_to_conf(yy_conf);
5411 }
5412 else
5413 {
5414 MyFree(class_name);
5415 class_name = NULL;
5416 }
5417 }
5418 break;
5419
5420 case 281:
5421
5422 /* Line 1455 of yacc.c */
5423 #line 1820 "ircd_parser.y"
5424 {
5425 if (conf_parser_ctx.pass == 2)
5426 {
5427 struct CollectItem *yy_tmp = NULL;
5428 dlink_node *ptr = NULL, *next_ptr = NULL;
5429
5430 if (yy_aconf->user && yy_aconf->host)
5431 {
5432 conf_add_class_to_conf(yy_conf, class_name);
5433 add_conf_by_address(CONF_CLIENT, yy_aconf);
5434 }
5435 else
5436 delete_conf_item(yy_conf);
5437
5438 /* copy over settings from first struct */
5439 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
5440 {
5441 struct AccessItem *new_aconf;
5442 struct ConfItem *new_conf;
5443
5444 new_conf = make_conf_item(CLIENT_TYPE);
5445 new_aconf = map_to_conf(new_conf);
5446
5447 yy_tmp = ptr->data;
5448
5449 assert(yy_tmp->user && yy_tmp->host);
5450
5451 if (yy_aconf->passwd != NULL)
5452 DupString(new_aconf->passwd, yy_aconf->passwd);
5453 if (yy_conf->name != NULL)
5454 DupString(new_conf->name, yy_conf->name);
5455 if (yy_aconf->passwd != NULL)
5456 DupString(new_aconf->passwd, yy_aconf->passwd);
5457
5458 new_aconf->flags = yy_aconf->flags;
5459 new_aconf->port = yy_aconf->port;
5460
5461 DupString(new_aconf->user, yy_tmp->user);
5462 collapse(new_aconf->user);
5463
5464 DupString(new_aconf->host, yy_tmp->host);
5465 collapse(new_aconf->host);
5466
5467 conf_add_class_to_conf(new_conf, class_name);
5468 add_conf_by_address(CONF_CLIENT, new_aconf);
5469 dlinkDelete(&yy_tmp->node, &col_conf_list);
5470 free_collect_item(yy_tmp);
5471 }
5472
5473 MyFree(class_name);
5474 class_name = NULL;
5475 yy_conf = NULL;
5476 yy_aconf = NULL;
5477 }
5478 }
5479 break;
5480
5481 case 301:
5482
5483 /* Line 1455 of yacc.c */
5484 #line 1885 "ircd_parser.y"
5485 {
5486 if (conf_parser_ctx.pass == 2)
5487 {
5488 struct CollectItem *yy_tmp = NULL;
5489 struct split_nuh_item nuh;
5490
5491 nuh.nuhmask = yylval.string;
5492 nuh.nickptr = NULL;
5493 nuh.userptr = userbuf;
5494 nuh.hostptr = hostbuf;
5495
5496 nuh.nicksize = 0;
5497 nuh.usersize = sizeof(userbuf);
5498 nuh.hostsize = sizeof(hostbuf);
5499
5500 split_nuh(&nuh);
5501
5502 if (yy_aconf->user == NULL)
5503 {
5504 DupString(yy_aconf->user, userbuf);
5505 DupString(yy_aconf->host, hostbuf);
5506 }
5507 else
5508 {
5509 yy_tmp = MyMalloc(sizeof(struct CollectItem));
5510
5511 DupString(yy_tmp->user, userbuf);
5512 DupString(yy_tmp->host, hostbuf);
5513
5514 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
5515 }
5516 }
5517 }
5518 break;
5519
5520 case 302:
5521
5522 /* Line 1455 of yacc.c */
5523 #line 1922 "ircd_parser.y"
5524 {
5525 if (conf_parser_ctx.pass == 2)
5526 {
5527 /* be paranoid */
5528 if (yy_aconf->passwd != NULL)
5529 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
5530
5531 MyFree(yy_aconf->passwd);
5532 DupString(yy_aconf->passwd, yylval.string);
5533 }
5534 }
5535 break;
5536
5537 case 303:
5538
5539 /* Line 1455 of yacc.c */
5540 #line 1935 "ircd_parser.y"
5541 {
5542 if (conf_parser_ctx.pass == 2)
5543 {
5544 if (yylval.number)
5545 yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5546 else
5547 yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
5548 }
5549 }
5550 break;
5551
5552 case 304:
5553
5554 /* Line 1455 of yacc.c */
5555 #line 1946 "ircd_parser.y"
5556 {
5557 if (conf_parser_ctx.pass == 2)
5558 {
5559 MyFree(class_name);
5560 DupString(class_name, yylval.string);
5561 }
5562 }
5563 break;
5564
5565 case 305:
5566
5567 /* Line 1455 of yacc.c */
5568 #line 1955 "ircd_parser.y"
5569 {
5570 if (conf_parser_ctx.pass == 2)
5571 {
5572 if (yylval.number)
5573 SetConfEncrypted(yy_aconf);
5574 else
5575 ClearConfEncrypted(yy_aconf);
5576 }
5577 }
5578 break;
5579
5580 case 306:
5581
5582 /* Line 1455 of yacc.c */
5583 #line 1966 "ircd_parser.y"
5584 {
5585 }
5586 break;
5587
5588 case 310:
5589
5590 /* Line 1455 of yacc.c */
5591 #line 1970 "ircd_parser.y"
5592 { not_atom = 1; }
5593 break;
5594
5595 case 312:
5596
5597 /* Line 1455 of yacc.c */
5598 #line 1971 "ircd_parser.y"
5599 { not_atom = 0; }
5600 break;
5601
5602 case 314:
5603
5604 /* Line 1455 of yacc.c */
5605 #line 1974 "ircd_parser.y"
5606 {
5607 if (conf_parser_ctx.pass == 2)
5608 {
5609 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_SPOOF_NOTICE;
5610 else yy_aconf->flags |= CONF_FLAGS_SPOOF_NOTICE;
5611 }
5612
5613 }
5614 break;
5615
5616 case 315:
5617
5618 /* Line 1455 of yacc.c */
5619 #line 1982 "ircd_parser.y"
5620 {
5621 if (conf_parser_ctx.pass == 2)
5622 {
5623 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
5624 else yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5625 }
5626 }
5627 break;
5628
5629 case 316:
5630
5631 /* Line 1455 of yacc.c */
5632 #line 1989 "ircd_parser.y"
5633 {
5634 if (conf_parser_ctx.pass == 2)
5635 {
5636 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
5637 else yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5638 }
5639 }
5640 break;
5641
5642 case 317:
5643
5644 /* Line 1455 of yacc.c */
5645 #line 1996 "ircd_parser.y"
5646 {
5647 if (conf_parser_ctx.pass == 2)
5648 {
5649 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
5650 else yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5651 }
5652 }
5653 break;
5654
5655 case 318:
5656
5657 /* Line 1455 of yacc.c */
5658 #line 2003 "ircd_parser.y"
5659 {
5660 if (conf_parser_ctx.pass == 2)
5661 {
5662 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
5663 else yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5664 }
5665 }
5666 break;
5667
5668 case 319:
5669
5670 /* Line 1455 of yacc.c */
5671 #line 2010 "ircd_parser.y"
5672 {
5673 if (conf_parser_ctx.pass == 2)
5674 {
5675 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_IDLE_LINED;
5676 else yy_aconf->flags |= CONF_FLAGS_IDLE_LINED;
5677 }
5678 }
5679 break;
5680
5681 case 320:
5682
5683 /* Line 1455 of yacc.c */
5684 #line 2017 "ircd_parser.y"
5685 {
5686 if (conf_parser_ctx.pass == 2)
5687 {
5688 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
5689 else yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5690 }
5691 }
5692 break;
5693
5694 case 321:
5695
5696 /* Line 1455 of yacc.c */
5697 #line 2024 "ircd_parser.y"
5698 {
5699 if (conf_parser_ctx.pass == 2)
5700 {
5701 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
5702 else yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5703 }
5704 }
5705 break;
5706
5707 case 322:
5708
5709 /* Line 1455 of yacc.c */
5710 #line 2031 "ircd_parser.y"
5711 {
5712 if (conf_parser_ctx.pass == 2)
5713 {
5714 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_EXEMPTRESV;
5715 else yy_aconf->flags |= CONF_FLAGS_EXEMPTRESV;
5716 }
5717 }
5718 break;
5719
5720 case 323:
5721
5722 /* Line 1455 of yacc.c */
5723 #line 2038 "ircd_parser.y"
5724 {
5725 if (conf_parser_ctx.pass == 2)
5726 {
5727 if (not_atom) yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
5728 else yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
5729 }
5730 }
5731 break;
5732
5733 case 324:
5734
5735 /* Line 1455 of yacc.c */
5736 #line 2047 "ircd_parser.y"
5737 {
5738 if (conf_parser_ctx.pass == 2)
5739 {
5740 if (yylval.number)
5741 yy_aconf->flags |= CONF_FLAGS_EXEMPTKLINE;
5742 else
5743 yy_aconf->flags &= ~CONF_FLAGS_EXEMPTKLINE;
5744 }
5745 }
5746 break;
5747
5748 case 325:
5749
5750 /* Line 1455 of yacc.c */
5751 #line 2058 "ircd_parser.y"
5752 {
5753 if (conf_parser_ctx.pass == 2)
5754 {
5755 if (yylval.number)
5756 yy_aconf->flags |= CONF_FLAGS_NEED_IDENTD;
5757 else
5758 yy_aconf->flags &= ~CONF_FLAGS_NEED_IDENTD;
5759 }
5760 }
5761 break;
5762
5763 case 326:
5764
5765 /* Line 1455 of yacc.c */
5766 #line 2069 "ircd_parser.y"
5767 {
5768 if (conf_parser_ctx.pass == 2)
5769 {
5770 if (yylval.number)
5771 yy_aconf->flags |= CONF_FLAGS_NOLIMIT;
5772 else
5773 yy_aconf->flags &= ~CONF_FLAGS_NOLIMIT;
5774 }
5775 }
5776 break;
5777
5778 case 327:
5779
5780 /* Line 1455 of yacc.c */
5781 #line 2080 "ircd_parser.y"
5782 {
5783 if (conf_parser_ctx.pass == 2)
5784 {
5785 if (yylval.number)
5786 yy_aconf->flags |= CONF_FLAGS_CAN_FLOOD;
5787 else
5788 yy_aconf->flags &= ~CONF_FLAGS_CAN_FLOOD;
5789 }
5790 }
5791 break;
5792
5793 case 328:
5794
5795 /* Line 1455 of yacc.c */
5796 #line 2091 "ircd_parser.y"
5797 {
5798 if (conf_parser_ctx.pass == 2)
5799 {
5800 if (yylval.number)
5801 yy_aconf->flags |= CONF_FLAGS_NO_TILDE;
5802 else
5803 yy_aconf->flags &= ~CONF_FLAGS_NO_TILDE;
5804 }
5805 }
5806 break;
5807
5808 case 329:
5809
5810 /* Line 1455 of yacc.c */
5811 #line 2102 "ircd_parser.y"
5812 {
5813 if (conf_parser_ctx.pass == 2)
5814 {
5815 if (yylval.number)
5816 yy_aconf->flags |= CONF_FLAGS_EXEMPTGLINE;
5817 else
5818 yy_aconf->flags &= ~CONF_FLAGS_EXEMPTGLINE;
5819 }
5820 }
5821 break;
5822
5823 case 330:
5824
5825 /* Line 1455 of yacc.c */
5826 #line 2114 "ircd_parser.y"
5827 {
5828 if (conf_parser_ctx.pass == 2)
5829 {
5830 MyFree(yy_conf->name);
5831
5832 if (strlen(yylval.string) < HOSTLEN)
5833 {
5834 DupString(yy_conf->name, yylval.string);
5835 yy_aconf->flags |= CONF_FLAGS_SPOOF_IP;
5836 }
5837 else
5838 {
5839 ilog(L_ERROR, "Spoofs must be less than %d..ignoring it", HOSTLEN);
5840 yy_conf->name = NULL;
5841 }
5842 }
5843 }
5844 break;
5845
5846 case 331:
5847
5848 /* Line 1455 of yacc.c */
5849 #line 2133 "ircd_parser.y"
5850 {
5851 if (conf_parser_ctx.pass == 2)
5852 {
5853 yy_aconf->flags |= CONF_FLAGS_REDIR;
5854 MyFree(yy_conf->name);
5855 DupString(yy_conf->name, yylval.string);
5856 }
5857 }
5858 break;
5859
5860 case 332:
5861
5862 /* Line 1455 of yacc.c */
5863 #line 2143 "ircd_parser.y"
5864 {
5865 if (conf_parser_ctx.pass == 2)
5866 {
5867 yy_aconf->flags |= CONF_FLAGS_REDIR;
5868 yy_aconf->port = (yyvsp[(3) - (4)].number);
5869 }
5870 }
5871 break;
5872
5873 case 333:
5874
5875 /* Line 1455 of yacc.c */
5876 #line 2152 "ircd_parser.y"
5877 {
5878 if (conf_parser_ctx.pass == 2)
5879 {
5880 if (yylval.number)
5881 yy_aconf->flags |= CONF_FLAGS_NEED_PASSWORD;
5882 else
5883 yy_aconf->flags &= ~CONF_FLAGS_NEED_PASSWORD;
5884 }
5885 }
5886 break;
5887
5888 case 334:
5889
5890 /* Line 1455 of yacc.c */
5891 #line 2167 "ircd_parser.y"
5892 {
5893 if (conf_parser_ctx.pass == 2)
5894 {
5895 MyFree(resv_reason);
5896 resv_reason = NULL;
5897 }
5898 }
5899 break;
5900
5901 case 335:
5902
5903 /* Line 1455 of yacc.c */
5904 #line 2174 "ircd_parser.y"
5905 {
5906 if (conf_parser_ctx.pass == 2)
5907 {
5908 MyFree(resv_reason);
5909 resv_reason = NULL;
5910 }
5911 }
5912 break;
5913
5914 case 342:
5915
5916 /* Line 1455 of yacc.c */
5917 #line 2186 "ircd_parser.y"
5918 {
5919 if (conf_parser_ctx.pass == 2)
5920 {
5921 MyFree(resv_reason);
5922 DupString(resv_reason, yylval.string);
5923 }
5924 }
5925 break;
5926
5927 case 343:
5928
5929 /* Line 1455 of yacc.c */
5930 #line 2195 "ircd_parser.y"
5931 {
5932 if (conf_parser_ctx.pass == 2)
5933 {
5934 if (IsChanPrefix(*yylval.string))
5935 {
5936 char def_reason[] = "No reason";
5937
5938 create_channel_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5939 }
5940 }
5941 /* ignore it for now.. but we really should make a warning if
5942 * its an erroneous name --fl_ */
5943 }
5944 break;
5945
5946 case 344:
5947
5948 /* Line 1455 of yacc.c */
5949 #line 2210 "ircd_parser.y"
5950 {
5951 if (conf_parser_ctx.pass == 2)
5952 {
5953 char def_reason[] = "No reason";
5954
5955 create_nick_resv(yylval.string, resv_reason != NULL ? resv_reason : def_reason, 1);
5956 }
5957 }
5958 break;
5959
5960 case 345:
5961
5962 /* Line 1455 of yacc.c */
5963 #line 2223 "ircd_parser.y"
5964 {
5965 if (conf_parser_ctx.pass == 2)
5966 {
5967 yy_conf = make_conf_item(ULINE_TYPE);
5968 yy_match_item = map_to_conf(yy_conf);
5969 yy_match_item->action = SHARED_ALL;
5970 }
5971 }
5972 break;
5973
5974 case 346:
5975
5976 /* Line 1455 of yacc.c */
5977 #line 2231 "ircd_parser.y"
5978 {
5979 if (conf_parser_ctx.pass == 2)
5980 {
5981 yy_conf = NULL;
5982 }
5983 }
5984 break;
5985
5986 case 353:
5987
5988 /* Line 1455 of yacc.c */
5989 #line 2242 "ircd_parser.y"
5990 {
5991 if (conf_parser_ctx.pass == 2)
5992 {
5993 MyFree(yy_conf->name);
5994 DupString(yy_conf->name, yylval.string);
5995 }
5996 }
5997 break;
5998
5999 case 354:
6000
6001 /* Line 1455 of yacc.c */
6002 #line 2251 "ircd_parser.y"
6003 {
6004 if (conf_parser_ctx.pass == 2)
6005 {
6006 struct split_nuh_item nuh;
6007
6008 nuh.nuhmask = yylval.string;
6009 nuh.nickptr = NULL;
6010 nuh.userptr = userbuf;
6011 nuh.hostptr = hostbuf;
6012
6013 nuh.nicksize = 0;
6014 nuh.usersize = sizeof(userbuf);
6015 nuh.hostsize = sizeof(hostbuf);
6016
6017 split_nuh(&nuh);
6018
6019 DupString(yy_match_item->user, userbuf);
6020 DupString(yy_match_item->host, hostbuf);
6021 }
6022 }
6023 break;
6024
6025 case 355:
6026
6027 /* Line 1455 of yacc.c */
6028 #line 2273 "ircd_parser.y"
6029 {
6030 if (conf_parser_ctx.pass == 2)
6031 yy_match_item->action = 0;
6032 }
6033 break;
6034
6035 case 359:
6036
6037 /* Line 1455 of yacc.c */
6038 #line 2280 "ircd_parser.y"
6039 {
6040 if (conf_parser_ctx.pass == 2)
6041 yy_match_item->action |= SHARED_KLINE;
6042 }
6043 break;
6044
6045 case 360:
6046
6047 /* Line 1455 of yacc.c */
6048 #line 2284 "ircd_parser.y"
6049 {
6050 if (conf_parser_ctx.pass == 2)
6051 yy_match_item->action |= SHARED_TKLINE;
6052 }
6053 break;
6054
6055 case 361:
6056
6057 /* Line 1455 of yacc.c */
6058 #line 2288 "ircd_parser.y"
6059 {
6060 if (conf_parser_ctx.pass == 2)
6061 yy_match_item->action |= SHARED_UNKLINE;
6062 }
6063 break;
6064
6065 case 362:
6066
6067 /* Line 1455 of yacc.c */
6068 #line 2292 "ircd_parser.y"
6069 {
6070 if (conf_parser_ctx.pass == 2)
6071 yy_match_item->action |= SHARED_XLINE;
6072 }
6073 break;
6074
6075 case 363:
6076
6077 /* Line 1455 of yacc.c */
6078 #line 2296 "ircd_parser.y"
6079 {
6080 if (conf_parser_ctx.pass == 2)
6081 yy_match_item->action |= SHARED_TXLINE;
6082 }
6083 break;
6084
6085 case 364:
6086
6087 /* Line 1455 of yacc.c */
6088 #line 2300 "ircd_parser.y"
6089 {
6090 if (conf_parser_ctx.pass == 2)
6091 yy_match_item->action |= SHARED_UNXLINE;
6092 }
6093 break;
6094
6095 case 365:
6096
6097 /* Line 1455 of yacc.c */
6098 #line 2304 "ircd_parser.y"
6099 {
6100 if (conf_parser_ctx.pass == 2)
6101 yy_match_item->action |= SHARED_RESV;
6102 }
6103 break;
6104
6105 case 366:
6106
6107 /* Line 1455 of yacc.c */
6108 #line 2308 "ircd_parser.y"
6109 {
6110 if (conf_parser_ctx.pass == 2)
6111 yy_match_item->action |= SHARED_TRESV;
6112 }
6113 break;
6114
6115 case 367:
6116
6117 /* Line 1455 of yacc.c */
6118 #line 2312 "ircd_parser.y"
6119 {
6120 if (conf_parser_ctx.pass == 2)
6121 yy_match_item->action |= SHARED_UNRESV;
6122 }
6123 break;
6124
6125 case 368:
6126
6127 /* Line 1455 of yacc.c */
6128 #line 2316 "ircd_parser.y"
6129 {
6130 if (conf_parser_ctx.pass == 2)
6131 yy_match_item->action |= SHARED_LOCOPS;
6132 }
6133 break;
6134
6135 case 369:
6136
6137 /* Line 1455 of yacc.c */
6138 #line 2320 "ircd_parser.y"
6139 {
6140 if (conf_parser_ctx.pass == 2)
6141 yy_match_item->action = SHARED_ALL;
6142 }
6143 break;
6144
6145 case 370:
6146
6147 /* Line 1455 of yacc.c */
6148 #line 2329 "ircd_parser.y"
6149 {
6150 if (conf_parser_ctx.pass == 2)
6151 {
6152 yy_conf = make_conf_item(CLUSTER_TYPE);
6153 yy_conf->flags = SHARED_ALL;
6154 }
6155 }
6156 break;
6157
6158 case 371:
6159
6160 /* Line 1455 of yacc.c */
6161 #line 2336 "ircd_parser.y"
6162 {
6163 if (conf_parser_ctx.pass == 2)
6164 {
6165 if (yy_conf->name == NULL)
6166 DupString(yy_conf->name, "*");
6167 yy_conf = NULL;
6168 }
6169 }
6170 break;
6171
6172 case 377:
6173
6174 /* Line 1455 of yacc.c */
6175 #line 2349 "ircd_parser.y"
6176 {
6177 if (conf_parser_ctx.pass == 2)
6178 DupString(yy_conf->name, yylval.string);
6179 }
6180 break;
6181
6182 case 378:
6183
6184 /* Line 1455 of yacc.c */
6185 #line 2355 "ircd_parser.y"
6186 {
6187 if (conf_parser_ctx.pass == 2)
6188 yy_conf->flags = 0;
6189 }
6190 break;
6191
6192 case 382:
6193
6194 /* Line 1455 of yacc.c */
6195 #line 2362 "ircd_parser.y"
6196 {
6197 if (conf_parser_ctx.pass == 2)
6198 yy_conf->flags |= SHARED_KLINE;
6199 }
6200 break;
6201
6202 case 383:
6203
6204 /* Line 1455 of yacc.c */
6205 #line 2366 "ircd_parser.y"
6206 {
6207 if (conf_parser_ctx.pass == 2)
6208 yy_conf->flags |= SHARED_TKLINE;
6209 }
6210 break;
6211
6212 case 384:
6213
6214 /* Line 1455 of yacc.c */
6215 #line 2370 "ircd_parser.y"
6216 {
6217 if (conf_parser_ctx.pass == 2)
6218 yy_conf->flags |= SHARED_UNKLINE;
6219 }
6220 break;
6221
6222 case 385:
6223
6224 /* Line 1455 of yacc.c */
6225 #line 2374 "ircd_parser.y"
6226 {
6227 if (conf_parser_ctx.pass == 2)
6228 yy_conf->flags |= SHARED_XLINE;
6229 }
6230 break;
6231
6232 case 386:
6233
6234 /* Line 1455 of yacc.c */
6235 #line 2378 "ircd_parser.y"
6236 {
6237 if (conf_parser_ctx.pass == 2)
6238 yy_conf->flags |= SHARED_TXLINE;
6239 }
6240 break;
6241
6242 case 387:
6243
6244 /* Line 1455 of yacc.c */
6245 #line 2382 "ircd_parser.y"
6246 {
6247 if (conf_parser_ctx.pass == 2)
6248 yy_conf->flags |= SHARED_UNXLINE;
6249 }
6250 break;
6251
6252 case 388:
6253
6254 /* Line 1455 of yacc.c */
6255 #line 2386 "ircd_parser.y"
6256 {
6257 if (conf_parser_ctx.pass == 2)
6258 yy_conf->flags |= SHARED_RESV;
6259 }
6260 break;
6261
6262 case 389:
6263
6264 /* Line 1455 of yacc.c */
6265 #line 2390 "ircd_parser.y"
6266 {
6267 if (conf_parser_ctx.pass == 2)
6268 yy_conf->flags |= SHARED_TRESV;
6269 }
6270 break;
6271
6272 case 390:
6273
6274 /* Line 1455 of yacc.c */
6275 #line 2394 "ircd_parser.y"
6276 {
6277 if (conf_parser_ctx.pass == 2)
6278 yy_conf->flags |= SHARED_UNRESV;
6279 }
6280 break;
6281
6282 case 391:
6283
6284 /* Line 1455 of yacc.c */
6285 #line 2398 "ircd_parser.y"
6286 {
6287 if (conf_parser_ctx.pass == 2)
6288 yy_conf->flags |= SHARED_LOCOPS;
6289 }
6290 break;
6291
6292 case 392:
6293
6294 /* Line 1455 of yacc.c */
6295 #line 2402 "ircd_parser.y"
6296 {
6297 if (conf_parser_ctx.pass == 2)
6298 yy_conf->flags = SHARED_ALL;
6299 }
6300 break;
6301
6302 case 393:
6303
6304 /* Line 1455 of yacc.c */
6305 #line 2411 "ircd_parser.y"
6306 {
6307 if (conf_parser_ctx.pass == 2)
6308 {
6309 yy_conf = make_conf_item(SERVER_TYPE);
6310 yy_aconf = (struct AccessItem *)map_to_conf(yy_conf);
6311 yy_aconf->passwd = NULL;
6312 /* defaults */
6313 yy_aconf->port = PORTNUM;
6314
6315 if (ConfigFileEntry.burst_away)
6316 yy_aconf->flags = CONF_FLAGS_BURST_AWAY;
6317 }
6318 else
6319 {
6320 MyFree(class_name);
6321 class_name = NULL;
6322 }
6323 }
6324 break;
6325
6326 case 394:
6327
6328 /* Line 1455 of yacc.c */
6329 #line 2429 "ircd_parser.y"
6330 {
6331 if (conf_parser_ctx.pass == 2)
6332 {
6333 struct CollectItem *yy_hconf=NULL;
6334 struct CollectItem *yy_lconf=NULL;
6335 dlink_node *ptr;
6336 dlink_node *next_ptr;
6337 #ifdef HAVE_LIBCRYPTO
6338 if (yy_aconf->host &&
6339 ((yy_aconf->passwd && yy_aconf->spasswd) ||
6340 (yy_aconf->rsa_public_key && IsConfCryptLink(yy_aconf))))
6341 #else /* !HAVE_LIBCRYPTO */
6342 if (yy_aconf->host && !IsConfCryptLink(yy_aconf) &&
6343 yy_aconf->passwd && yy_aconf->spasswd)
6344 #endif /* !HAVE_LIBCRYPTO */
6345 {
6346 if (conf_add_server(yy_conf, class_name) == -1)
6347 {
6348 delete_conf_item(yy_conf);
6349 yy_conf = NULL;
6350 yy_aconf = NULL;
6351 }
6352 }
6353 else
6354 {
6355 /* Even if yy_conf ->name is NULL
6356 * should still unhook any hub/leaf confs still pending
6357 */
6358 unhook_hub_leaf_confs();
6359
6360 if (yy_conf->name != NULL)
6361 {
6362 #ifndef HAVE_LIBCRYPTO
6363 if (IsConfCryptLink(yy_aconf))
6364 yyerror("Ignoring connect block -- no OpenSSL support");
6365 #else
6366 if (IsConfCryptLink(yy_aconf) && !yy_aconf->rsa_public_key)
6367 yyerror("Ignoring connect block -- missing key");
6368 #endif
6369 if (yy_aconf->host == NULL)
6370 yyerror("Ignoring connect block -- missing host");
6371 else if (!IsConfCryptLink(yy_aconf) &&
6372 (!yy_aconf->passwd || !yy_aconf->spasswd))
6373 yyerror("Ignoring connect block -- missing password");
6374 }
6375
6376
6377 /* XXX
6378 * This fixes a try_connections() core (caused by invalid class_ptr
6379 * pointers) reported by metalrock. That's an ugly fix, but there
6380 * is currently no better way. The entire config subsystem needs an
6381 * rewrite ASAP. make_conf_item() shouldn't really add things onto
6382 * a doubly linked list immediately without any sanity checks! -Michael
6383 */
6384 delete_conf_item(yy_conf);
6385
6386 yy_aconf = NULL;
6387 yy_conf = NULL;
6388 }
6389
6390 /*
6391 * yy_conf is still pointing at the server that is having
6392 * a connect block built for it. This means, y_aconf->name
6393 * points to the actual irc name this server will be known as.
6394 * Now this new server has a set or even just one hub_mask (or leaf_mask)
6395 * given in the link list at yy_hconf. Fill in the HUB confs
6396 * from this link list now.
6397 */
6398 DLINK_FOREACH_SAFE(ptr, next_ptr, hub_conf_list.head)
6399 {
6400 struct ConfItem *new_hub_conf;
6401 struct MatchItem *match_item;
6402
6403 yy_hconf = ptr->data;
6404
6405 /* yy_conf == NULL is a fatal error for this connect block! */
6406 if ((yy_conf != NULL) && (yy_conf->name != NULL))
6407 {
6408 new_hub_conf = make_conf_item(HUB_TYPE);
6409 match_item = (struct MatchItem *)map_to_conf(new_hub_conf);
6410 DupString(new_hub_conf->name, yy_conf->name);
6411 if (yy_hconf->user != NULL)
6412 DupString(match_item->user, yy_hconf->user);
6413 else
6414 DupString(match_item->user, "*");
6415 if (yy_hconf->host != NULL)
6416 DupString(match_item->host, yy_hconf->host);
6417 else
6418 DupString(match_item->host, "*");
6419 }
6420 dlinkDelete(&yy_hconf->node, &hub_conf_list);
6421 free_collect_item(yy_hconf);
6422 }
6423
6424 /* Ditto for the LEAF confs */
6425
6426 DLINK_FOREACH_SAFE(ptr, next_ptr, leaf_conf_list.head)
6427 {
6428 struct ConfItem *new_leaf_conf;
6429 struct MatchItem *match_item;
6430
6431 yy_lconf = ptr->data;
6432
6433 if ((yy_conf != NULL) && (yy_conf->name != NULL))
6434 {
6435 new_leaf_conf = make_conf_item(LEAF_TYPE);
6436 match_item = (struct MatchItem *)map_to_conf(new_leaf_conf);
6437 DupString(new_leaf_conf->name, yy_conf->name);
6438 if (yy_lconf->user != NULL)
6439 DupString(match_item->user, yy_lconf->user);
6440 else
6441 DupString(match_item->user, "*");
6442 if (yy_lconf->host != NULL)
6443 DupString(match_item->host, yy_lconf->host);
6444 else
6445 DupString(match_item->host, "*");
6446 }
6447 dlinkDelete(&yy_lconf->node, &leaf_conf_list);
6448 free_collect_item(yy_lconf);
6449 }
6450 MyFree(class_name);
6451 class_name = NULL;
6452 yy_conf = NULL;
6453 yy_aconf = NULL;
6454 }
6455 }
6456 break;
6457
6458 case 419:
6459
6460 /* Line 1455 of yacc.c */
6461 #line 2568 "ircd_parser.y"
6462 {
6463 if (conf_parser_ctx.pass == 2)
6464 {
6465 if (yy_conf->name != NULL)
6466 yyerror("Multiple connect name entry");
6467
6468 MyFree(yy_conf->name);
6469 DupString(yy_conf->name, yylval.string);
6470 }
6471 }
6472 break;
6473
6474 case 420:
6475
6476 /* Line 1455 of yacc.c */
6477 #line 2580 "ircd_parser.y"
6478 {
6479 if (conf_parser_ctx.pass == 2)
6480 {
6481 if (yy_conf->name != NULL)
6482 yyerror("Multiple connect name entry");
6483
6484 MyFree(yy_conf->name);
6485 DupString(yy_conf->name, yylval.string);
6486 }
6487 }
6488 break;
6489
6490 case 421:
6491
6492 /* Line 1455 of yacc.c */
6493 #line 2592 "ircd_parser.y"
6494 {
6495 if (conf_parser_ctx.pass == 2)
6496 {
6497 MyFree(yy_aconf->host);
6498 DupString(yy_aconf->host, yylval.string);
6499 }
6500 }
6501 break;
6502
6503 case 422:
6504
6505 /* Line 1455 of yacc.c */
6506 #line 2601 "ircd_parser.y"
6507 {
6508 if (conf_parser_ctx.pass == 2)
6509 {
6510 struct addrinfo hints, *res;
6511
6512 memset(&hints, 0, sizeof(hints));
6513
6514 hints.ai_family = AF_UNSPEC;
6515 hints.ai_socktype = SOCK_STREAM;
6516 hints.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
6517
6518 if (irc_getaddrinfo(yylval.string, NULL, &hints, &res))
6519 ilog(L_ERROR, "Invalid netmask for server vhost(%s)", yylval.string);
6520 else
6521 {
6522 assert(res != NULL);
6523
6524 memcpy(&yy_aconf->my_ipnum, res->ai_addr, res->ai_addrlen);
6525 yy_aconf->my_ipnum.ss.ss_family = res->ai_family;
6526 yy_aconf->my_ipnum.ss_len = res->ai_addrlen;
6527 irc_freeaddrinfo(res);
6528 }
6529 }
6530 }
6531 break;
6532
6533 case 423:
6534
6535 /* Line 1455 of yacc.c */
6536 #line 2627 "ircd_parser.y"
6537 {
6538 if (conf_parser_ctx.pass == 2)
6539 {
6540 if ((yyvsp[(3) - (4)].string)[0] == ':')
6541 yyerror("Server passwords cannot begin with a colon");
6542 else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6543 yyerror("Server passwords cannot contain spaces");
6544 else {
6545 if (yy_aconf->spasswd != NULL)
6546 memset(yy_aconf->spasswd, 0, strlen(yy_aconf->spasswd));
6547
6548 MyFree(yy_aconf->spasswd);
6549 DupString(yy_aconf->spasswd, yylval.string);
6550 }
6551 }
6552 }
6553 break;
6554
6555 case 424:
6556
6557 /* Line 1455 of yacc.c */
6558 #line 2645 "ircd_parser.y"
6559 {
6560 if (conf_parser_ctx.pass == 2)
6561 {
6562 if ((yyvsp[(3) - (4)].string)[0] == ':')
6563 yyerror("Server passwords cannot begin with a colon");
6564 else if (strchr((yyvsp[(3) - (4)].string), ' ') != NULL)
6565 yyerror("Server passwords cannot contain spaces");
6566 else {
6567 if (yy_aconf->passwd != NULL)
6568 memset(yy_aconf->passwd, 0, strlen(yy_aconf->passwd));
6569
6570 MyFree(yy_aconf->passwd);
6571 DupString(yy_aconf->passwd, yylval.string);
6572 }
6573 }
6574 }
6575 break;
6576
6577 case 425:
6578
6579 /* Line 1455 of yacc.c */
6580 #line 2663 "ircd_parser.y"
6581 {
6582 if (conf_parser_ctx.pass == 2)
6583 yy_aconf->port = (yyvsp[(3) - (4)].number);
6584 }
6585 break;
6586
6587 case 426:
6588
6589 /* Line 1455 of yacc.c */
6590 #line 2669 "ircd_parser.y"
6591 {
6592 if (conf_parser_ctx.pass == 2)
6593 yy_aconf->aftype = AF_INET;
6594 }
6595 break;
6596
6597 case 427:
6598
6599 /* Line 1455 of yacc.c */
6600 #line 2673 "ircd_parser.y"
6601 {
6602 #ifdef IPV6
6603 if (conf_parser_ctx.pass == 2)
6604 yy_aconf->aftype = AF_INET6;
6605 #endif
6606 }
6607 break;
6608
6609 case 428:
6610
6611 /* Line 1455 of yacc.c */
6612 #line 2681 "ircd_parser.y"
6613 {
6614 if (conf_parser_ctx.pass == 2)
6615 {
6616 MyFree(yy_aconf->fakename);
6617 DupString(yy_aconf->fakename, yylval.string);
6618 }
6619 }
6620 break;
6621
6622 case 429:
6623
6624 /* Line 1455 of yacc.c */
6625 #line 2690 "ircd_parser.y"
6626 {
6627 }
6628 break;
6629
6630 case 433:
6631
6632 /* Line 1455 of yacc.c */
6633 #line 2694 "ircd_parser.y"
6634 { not_atom = 1; }
6635 break;
6636
6637 case 435:
6638
6639 /* Line 1455 of yacc.c */
6640 #line 2695 "ircd_parser.y"
6641 { not_atom = 0; }
6642 break;
6643
6644 case 437:
6645
6646 /* Line 1455 of yacc.c */
6647 #line 2698 "ircd_parser.y"
6648 {
6649 if (conf_parser_ctx.pass == 2)
6650 #ifndef HAVE_LIBZ
6651 yyerror("Ignoring flags = compressed; -- no zlib support");
6652 #else
6653 {
6654 if (not_atom)ClearConfCompressed(yy_aconf);
6655 else SetConfCompressed(yy_aconf);
6656 }
6657 #endif
6658 }
6659 break;
6660
6661 case 438:
6662
6663 /* Line 1455 of yacc.c */
6664 #line 2709 "ircd_parser.y"
6665 {
6666 if (conf_parser_ctx.pass == 2)
6667 {
6668 if (not_atom)ClearConfCryptLink(yy_aconf);
6669 else SetConfCryptLink(yy_aconf);
6670 }
6671 }
6672 break;
6673
6674 case 439:
6675
6676 /* Line 1455 of yacc.c */
6677 #line 2716 "ircd_parser.y"
6678 {
6679 if (conf_parser_ctx.pass == 2)
6680 {
6681 if (not_atom)ClearConfAllowAutoConn(yy_aconf);
6682 else SetConfAllowAutoConn(yy_aconf);
6683 }
6684 }
6685 break;
6686
6687 case 440:
6688
6689 /* Line 1455 of yacc.c */
6690 #line 2723 "ircd_parser.y"
6691 {
6692 if (conf_parser_ctx.pass == 2)
6693 {
6694 if (not_atom)ClearConfAwayBurst(yy_aconf);
6695 else SetConfAwayBurst(yy_aconf);
6696 }
6697 }
6698 break;
6699
6700 case 441:
6701
6702 /* Line 1455 of yacc.c */
6703 #line 2730 "ircd_parser.y"
6704 {
6705 if (conf_parser_ctx.pass == 2)
6706 {
6707 if (not_atom)ClearConfTopicBurst(yy_aconf);
6708 else SetConfTopicBurst(yy_aconf);
6709 }
6710 }
6711 break;
6712
6713 case 442:
6714
6715 /* Line 1455 of yacc.c */
6716 #line 2740 "ircd_parser.y"
6717 {
6718 #ifdef HAVE_LIBCRYPTO
6719 if (conf_parser_ctx.pass == 2)
6720 {
6721 BIO *file;
6722
6723 if (yy_aconf->rsa_public_key != NULL)
6724 {
6725 RSA_free(yy_aconf->rsa_public_key);
6726 yy_aconf->rsa_public_key = NULL;
6727 }
6728
6729 if (yy_aconf->rsa_public_key_file != NULL)
6730 {
6731 MyFree(yy_aconf->rsa_public_key_file);
6732 yy_aconf->rsa_public_key_file = NULL;
6733 }
6734
6735 DupString(yy_aconf->rsa_public_key_file, yylval.string);
6736
6737 if ((file = BIO_new_file(yylval.string, "r")) == NULL)
6738 {
6739 yyerror("Ignoring rsa_public_key_file -- file doesn't exist");
6740 break;
6741 }
6742
6743 yy_aconf->rsa_public_key = (RSA *)PEM_read_bio_RSA_PUBKEY(file, NULL, 0, NULL);
6744
6745 if (yy_aconf->rsa_public_key == NULL)
6746 {
6747 yyerror("Ignoring rsa_public_key_file -- Key invalid; check key syntax.");
6748 break;
6749 }
6750
6751 BIO_set_close(file, BIO_CLOSE);
6752 BIO_free(file);
6753 }
6754 #endif /* HAVE_LIBCRYPTO */
6755 }
6756 break;
6757
6758 case 443:
6759
6760 /* Line 1455 of yacc.c */
6761 #line 2781 "ircd_parser.y"
6762 {
6763 if (conf_parser_ctx.pass == 2)
6764 {
6765 if (yylval.number)
6766 yy_aconf->flags |= CONF_FLAGS_ENCRYPTED;
6767 else
6768 yy_aconf->flags &= ~CONF_FLAGS_ENCRYPTED;
6769 }
6770 }
6771 break;
6772
6773 case 444:
6774
6775 /* Line 1455 of yacc.c */
6776 #line 2792 "ircd_parser.y"
6777 {
6778 if (conf_parser_ctx.pass == 2)
6779 {
6780 if (yylval.number)
6781 yy_aconf->flags |= CONF_FLAGS_CRYPTLINK;
6782 else
6783 yy_aconf->flags &= ~CONF_FLAGS_CRYPTLINK;
6784 }
6785 }
6786 break;
6787
6788 case 445:
6789
6790 /* Line 1455 of yacc.c */
6791 #line 2803 "ircd_parser.y"
6792 {
6793 if (conf_parser_ctx.pass == 2)
6794 {
6795 if (yylval.number)
6796 #ifndef HAVE_LIBZ
6797 yyerror("Ignoring compressed=yes; -- no zlib support");
6798 #else
6799 yy_aconf->flags |= CONF_FLAGS_COMPRESSED;
6800 #endif
6801 else
6802 yy_aconf->flags &= ~CONF_FLAGS_COMPRESSED;
6803 }
6804 }
6805 break;
6806
6807 case 446:
6808
6809 /* Line 1455 of yacc.c */
6810 #line 2818 "ircd_parser.y"
6811 {
6812 if (conf_parser_ctx.pass == 2)
6813 {
6814 if (yylval.number)
6815 yy_aconf->flags |= CONF_FLAGS_ALLOW_AUTO_CONN;
6816 else
6817 yy_aconf->flags &= ~CONF_FLAGS_ALLOW_AUTO_CONN;
6818 }
6819 }
6820 break;
6821
6822 case 447:
6823
6824 /* Line 1455 of yacc.c */
6825 #line 2829 "ircd_parser.y"
6826 {
6827 if (conf_parser_ctx.pass == 2)
6828 {
6829 if (yylval.number)
6830 SetConfTopicBurst(yy_aconf);
6831 else
6832 ClearConfTopicBurst(yy_aconf);
6833 }
6834 }
6835 break;
6836
6837 case 448:
6838
6839 /* Line 1455 of yacc.c */
6840 #line 2840 "ircd_parser.y"
6841 {
6842 if (conf_parser_ctx.pass == 2)
6843 {
6844 struct CollectItem *yy_tmp;
6845
6846 yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6847 DupString(yy_tmp->host, yylval.string);
6848 DupString(yy_tmp->user, "*");
6849 dlinkAdd(yy_tmp, &yy_tmp->node, &hub_conf_list);
6850 }
6851 }
6852 break;
6853
6854 case 449:
6855
6856 /* Line 1455 of yacc.c */
6857 #line 2853 "ircd_parser.y"
6858 {
6859 if (conf_parser_ctx.pass == 2)
6860 {
6861 struct CollectItem *yy_tmp;
6862
6863 yy_tmp = (struct CollectItem *)MyMalloc(sizeof(struct CollectItem));
6864 DupString(yy_tmp->host, yylval.string);
6865 DupString(yy_tmp->user, "*");
6866 dlinkAdd(yy_tmp, &yy_tmp->node, &leaf_conf_list);
6867 }
6868 }
6869 break;
6870
6871 case 450:
6872
6873 /* Line 1455 of yacc.c */
6874 #line 2866 "ircd_parser.y"
6875 {
6876 if (conf_parser_ctx.pass == 2)
6877 {
6878 MyFree(class_name);
6879 DupString(class_name, yylval.string);
6880 }
6881 }
6882 break;
6883
6884 case 451:
6885
6886 /* Line 1455 of yacc.c */
6887 #line 2875 "ircd_parser.y"
6888 {
6889 #ifdef HAVE_LIBCRYPTO
6890 if (conf_parser_ctx.pass == 2)
6891 {
6892 struct EncCapability *ecap;
6893 const char *cipher_name;
6894 int found = 0;
6895
6896 yy_aconf->cipher_preference = NULL;
6897 cipher_name = yylval.string;
6898
6899 for (ecap = CipherTable; ecap->name; ecap++)
6900 {
6901 if ((irccmp(ecap->name, cipher_name) == 0) &&
6902 (ecap->cap & CAP_ENC_MASK))
6903 {
6904 yy_aconf->cipher_preference = ecap;
6905 found = 1;
6906 break;
6907 }
6908 }
6909
6910 if (!found)
6911 yyerror("Invalid cipher");
6912 }
6913 #else
6914 if (conf_parser_ctx.pass == 2)
6915 yyerror("Ignoring cipher_preference -- no OpenSSL support");
6916 #endif
6917 }
6918 break;
6919
6920 case 452:
6921
6922 /* Line 1455 of yacc.c */
6923 #line 2910 "ircd_parser.y"
6924 {
6925 if (conf_parser_ctx.pass == 2)
6926 {
6927 userbuf[0] = hostbuf[0] = reasonbuf[0] = '\0';
6928 regex_ban = 0;
6929 }
6930 }
6931 break;
6932
6933 case 453:
6934
6935 /* Line 1455 of yacc.c */
6936 #line 2917 "ircd_parser.y"
6937 {
6938 if (conf_parser_ctx.pass == 2)
6939 {
6940 if (userbuf[0] && hostbuf[0])
6941 {
6942 if (regex_ban)
6943 {
6944 #ifdef HAVE_LIBPCRE
6945 void *exp_user = NULL;
6946 void *exp_host = NULL;
6947 const char *errptr = NULL;
6948
6949 if (!(exp_user = ircd_pcre_compile(userbuf, &errptr)) ||
6950 !(exp_host = ircd_pcre_compile(hostbuf, &errptr)))
6951 {
6952 ilog(L_ERROR, "Failed to add regular expression based K-Line: %s",
6953 errptr);
6954 break;
6955 }
6956
6957 yy_aconf = map_to_conf(make_conf_item(RKLINE_TYPE));
6958 yy_aconf->regexuser = exp_user;
6959 yy_aconf->regexhost = exp_host;
6960
6961 DupString(yy_aconf->user, userbuf);
6962 DupString(yy_aconf->host, hostbuf);
6963
6964 if (reasonbuf[0])
6965 DupString(yy_aconf->reason, reasonbuf);
6966 else
6967 DupString(yy_aconf->reason, "No reason");
6968 #else
6969 ilog(L_ERROR, "Failed to add regular expression based K-Line: no PCRE support");
6970 break;
6971 #endif
6972 }
6973 else
6974 {
6975 yy_aconf = map_to_conf(make_conf_item(KLINE_TYPE));
6976
6977 DupString(yy_aconf->user, userbuf);
6978 DupString(yy_aconf->host, hostbuf);
6979
6980 if (reasonbuf[0])
6981 DupString(yy_aconf->reason, reasonbuf);
6982 else
6983 DupString(yy_aconf->reason, "No reason");
6984 add_conf_by_address(CONF_KILL, yy_aconf);
6985 }
6986 }
6987
6988 yy_aconf = NULL;
6989 }
6990 }
6991 break;
6992
6993 case 454:
6994
6995 /* Line 1455 of yacc.c */
6996 #line 2973 "ircd_parser.y"
6997 {
6998 }
6999 break;
7000
7001 case 458:
7002
7003 /* Line 1455 of yacc.c */
7004 #line 2978 "ircd_parser.y"
7005 {
7006 if (conf_parser_ctx.pass == 2)
7007 regex_ban = 1;
7008 }
7009 break;
7010
7011 case 465:
7012
7013 /* Line 1455 of yacc.c */
7014 #line 2987 "ircd_parser.y"
7015 {
7016 if (conf_parser_ctx.pass == 2)
7017 {
7018 struct split_nuh_item nuh;
7019
7020 nuh.nuhmask = yylval.string;
7021 nuh.nickptr = NULL;
7022 nuh.userptr = userbuf;
7023 nuh.hostptr = hostbuf;
7024
7025 nuh.nicksize = 0;
7026 nuh.usersize = sizeof(userbuf);
7027 nuh.hostsize = sizeof(hostbuf);
7028
7029 split_nuh(&nuh);
7030 }
7031 }
7032 break;
7033
7034 case 466:
7035
7036 /* Line 1455 of yacc.c */
7037 #line 3006 "ircd_parser.y"
7038 {
7039 if (conf_parser_ctx.pass == 2)
7040 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
7041 }
7042 break;
7043
7044 case 467:
7045
7046 /* Line 1455 of yacc.c */
7047 #line 3015 "ircd_parser.y"
7048 {
7049 if (conf_parser_ctx.pass == 2)
7050 hostbuf[0] = reasonbuf[0] = '\0';
7051 }
7052 break;
7053
7054 case 468:
7055
7056 /* Line 1455 of yacc.c */
7057 #line 3019 "ircd_parser.y"
7058 {
7059 if (conf_parser_ctx.pass == 2)
7060 {
7061 if (hostbuf[0] && parse_netmask(hostbuf, NULL, NULL) != HM_HOST)
7062 {
7063 yy_aconf = map_to_conf(make_conf_item(DLINE_TYPE));
7064 DupString(yy_aconf->host, hostbuf);
7065
7066 if (reasonbuf[0])
7067 DupString(yy_aconf->reason, reasonbuf);
7068 else
7069 DupString(yy_aconf->reason, "No reason");
7070 add_conf_by_address(CONF_DLINE, yy_aconf);
7071 yy_aconf = NULL;
7072 }
7073 }
7074 }
7075 break;
7076
7077 case 474:
7078
7079 /* Line 1455 of yacc.c */
7080 #line 3041 "ircd_parser.y"
7081 {
7082 if (conf_parser_ctx.pass == 2)
7083 strlcpy(hostbuf, yylval.string, sizeof(hostbuf));
7084 }
7085 break;
7086
7087 case 475:
7088
7089 /* Line 1455 of yacc.c */
7090 #line 3047 "ircd_parser.y"
7091 {
7092 if (conf_parser_ctx.pass == 2)
7093 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
7094 }
7095 break;
7096
7097 case 481:
7098
7099 /* Line 1455 of yacc.c */
7100 #line 3061 "ircd_parser.y"
7101 {
7102 if (conf_parser_ctx.pass == 2)
7103 {
7104 if (yylval.string[0] && parse_netmask(yylval.string, NULL, NULL) != HM_HOST)
7105 {
7106 yy_aconf = map_to_conf(make_conf_item(EXEMPTDLINE_TYPE));
7107 DupString(yy_aconf->host, yylval.string);
7108
7109 add_conf_by_address(CONF_EXEMPTDLINE, yy_aconf);
7110 yy_aconf = NULL;
7111 }
7112 }
7113 }
7114 break;
7115
7116 case 482:
7117
7118 /* Line 1455 of yacc.c */
7119 #line 3079 "ircd_parser.y"
7120 {
7121 if (conf_parser_ctx.pass == 2)
7122 {
7123 regex_ban = 0;
7124 reasonbuf[0] = gecos_name[0] = '\0';
7125 }
7126 }
7127 break;
7128
7129 case 483:
7130
7131 /* Line 1455 of yacc.c */
7132 #line 3086 "ircd_parser.y"
7133 {
7134 if (conf_parser_ctx.pass == 2)
7135 {
7136 if (gecos_name[0])
7137 {
7138 if (regex_ban)
7139 {
7140 #ifdef HAVE_LIBPCRE
7141 void *exp_p = NULL;
7142 const char *errptr = NULL;
7143
7144 if (!(exp_p = ircd_pcre_compile(gecos_name, &errptr)))
7145 {
7146 ilog(L_ERROR, "Failed to add regular expression based X-Line: %s",
7147 errptr);
7148 break;
7149 }
7150
7151 yy_conf = make_conf_item(RXLINE_TYPE);
7152 yy_conf->regexpname = exp_p;
7153 #else
7154 ilog(L_ERROR, "Failed to add regular expression based X-Line: no PCRE support");
7155 break;
7156 #endif
7157 }
7158 else
7159 yy_conf = make_conf_item(XLINE_TYPE);
7160
7161 yy_match_item = map_to_conf(yy_conf);
7162 DupString(yy_conf->name, gecos_name);
7163
7164 if (reasonbuf[0])
7165 DupString(yy_match_item->reason, reasonbuf);
7166 else
7167 DupString(yy_match_item->reason, "No reason");
7168 }
7169 }
7170 }
7171 break;
7172
7173 case 484:
7174
7175 /* Line 1455 of yacc.c */
7176 #line 3126 "ircd_parser.y"
7177 {
7178 }
7179 break;
7180
7181 case 488:
7182
7183 /* Line 1455 of yacc.c */
7184 #line 3131 "ircd_parser.y"
7185 {
7186 if (conf_parser_ctx.pass == 2)
7187 regex_ban = 1;
7188 }
7189 break;
7190
7191 case 495:
7192
7193 /* Line 1455 of yacc.c */
7194 #line 3140 "ircd_parser.y"
7195 {
7196 if (conf_parser_ctx.pass == 2)
7197 strlcpy(gecos_name, yylval.string, sizeof(gecos_name));
7198 }
7199 break;
7200
7201 case 496:
7202
7203 /* Line 1455 of yacc.c */
7204 #line 3146 "ircd_parser.y"
7205 {
7206 if (conf_parser_ctx.pass == 2)
7207 strlcpy(reasonbuf, yylval.string, sizeof(reasonbuf));
7208 }
7209 break;
7210
7211 case 556:
7212
7213 /* Line 1455 of yacc.c */
7214 #line 3191 "ircd_parser.y"
7215 {
7216 ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
7217 }
7218 break;
7219
7220 case 557:
7221
7222 /* Line 1455 of yacc.c */
7223 #line 3196 "ircd_parser.y"
7224 {
7225 ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
7226 }
7227 break;
7228
7229 case 558:
7230
7231 /* Line 1455 of yacc.c */
7232 #line 3201 "ircd_parser.y"
7233 {
7234 ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
7235 }
7236 break;
7237
7238 case 559:
7239
7240 /* Line 1455 of yacc.c */
7241 #line 3206 "ircd_parser.y"
7242 {
7243 ConfigFileEntry.burst_away = yylval.number;
7244 }
7245 break;
7246
7247 case 560:
7248
7249 /* Line 1455 of yacc.c */
7250 #line 3211 "ircd_parser.y"
7251 {
7252 ConfigFileEntry.use_whois_actually = yylval.number;
7253 }
7254 break;
7255
7256 case 561:
7257
7258 /* Line 1455 of yacc.c */
7259 #line 3216 "ircd_parser.y"
7260 {
7261 GlobalSetOptions.rejecttime = yylval.number;
7262 }
7263 break;
7264
7265 case 562:
7266
7267 /* Line 1455 of yacc.c */
7268 #line 3221 "ircd_parser.y"
7269 {
7270 ConfigFileEntry.tkline_expire_notices = yylval.number;
7271 }
7272 break;
7273
7274 case 563:
7275
7276 /* Line 1455 of yacc.c */
7277 #line 3226 "ircd_parser.y"
7278 {
7279 ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
7280 }
7281 break;
7282
7283 case 564:
7284
7285 /* Line 1455 of yacc.c */
7286 #line 3231 "ircd_parser.y"
7287 {
7288 ConfigFileEntry.hide_spoof_ips = yylval.number;
7289 }
7290 break;
7291
7292 case 565:
7293
7294 /* Line 1455 of yacc.c */
7295 #line 3236 "ircd_parser.y"
7296 {
7297 ConfigFileEntry.ignore_bogus_ts = yylval.number;
7298 }
7299 break;
7300
7301 case 566:
7302
7303 /* Line 1455 of yacc.c */
7304 #line 3241 "ircd_parser.y"
7305 {
7306 ConfigFileEntry.disable_remote = yylval.number;
7307 }
7308 break;
7309
7310 case 567:
7311
7312 /* Line 1455 of yacc.c */
7313 #line 3246 "ircd_parser.y"
7314 {
7315 ConfigFileEntry.failed_oper_notice = yylval.number;
7316 }
7317 break;
7318
7319 case 568:
7320
7321 /* Line 1455 of yacc.c */
7322 #line 3251 "ircd_parser.y"
7323 {
7324 ConfigFileEntry.anti_nick_flood = yylval.number;
7325 }
7326 break;
7327
7328 case 569:
7329
7330 /* Line 1455 of yacc.c */
7331 #line 3256 "ircd_parser.y"
7332 {
7333 ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
7334 }
7335 break;
7336
7337 case 570:
7338
7339 /* Line 1455 of yacc.c */
7340 #line 3261 "ircd_parser.y"
7341 {
7342 ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
7343 }
7344 break;
7345
7346 case 571:
7347
7348 /* Line 1455 of yacc.c */
7349 #line 3266 "ircd_parser.y"
7350 {
7351 ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
7352 }
7353 break;
7354
7355 case 572:
7356
7357 /* Line 1455 of yacc.c */
7358 #line 3271 "ircd_parser.y"
7359 {
7360 ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
7361 }
7362 break;
7363
7364 case 573:
7365
7366 /* Line 1455 of yacc.c */
7367 #line 3276 "ircd_parser.y"
7368 {
7369 ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
7370 }
7371 break;
7372
7373 case 574:
7374
7375 /* Line 1455 of yacc.c */
7376 #line 3281 "ircd_parser.y"
7377 {
7378 if (conf_parser_ctx.pass == 2)
7379 ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
7380 }
7381 break;
7382
7383 case 575:
7384
7385 /* Line 1455 of yacc.c */
7386 #line 3287 "ircd_parser.y"
7387 {
7388 if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
7389 {
7390 ilog(L_CRIT, "You haven't read your config file properly.");
7391 ilog(L_CRIT, "There is a line in the example conf that will kill your server if not removed.");
7392 ilog(L_CRIT, "Consider actually reading/editing the conf file, and removing this line.");
7393 exit(0);
7394 }
7395 }
7396 break;
7397
7398 case 576:
7399
7400 /* Line 1455 of yacc.c */
7401 #line 3298 "ircd_parser.y"
7402 {
7403 ConfigFileEntry.kline_with_reason = yylval.number;
7404 }
7405 break;
7406
7407 case 577:
7408
7409 /* Line 1455 of yacc.c */
7410 #line 3303 "ircd_parser.y"
7411 {
7412 if (conf_parser_ctx.pass == 2)
7413 {
7414 MyFree(ConfigFileEntry.kline_reason);
7415 DupString(ConfigFileEntry.kline_reason, yylval.string);
7416 }
7417 }
7418 break;
7419
7420 case 578:
7421
7422 /* Line 1455 of yacc.c */
7423 #line 3312 "ircd_parser.y"
7424 {
7425 ConfigFileEntry.invisible_on_connect = yylval.number;
7426 }
7427 break;
7428
7429 case 579:
7430
7431 /* Line 1455 of yacc.c */
7432 #line 3317 "ircd_parser.y"
7433 {
7434 ConfigFileEntry.warn_no_nline = yylval.number;
7435 }
7436 break;
7437
7438 case 580:
7439
7440 /* Line 1455 of yacc.c */
7441 #line 3322 "ircd_parser.y"
7442 {
7443 ConfigFileEntry.stats_e_disabled = yylval.number;
7444 }
7445 break;
7446
7447 case 581:
7448
7449 /* Line 1455 of yacc.c */
7450 #line 3327 "ircd_parser.y"
7451 {
7452 ConfigFileEntry.stats_o_oper_only = yylval.number;
7453 }
7454 break;
7455
7456 case 582:
7457
7458 /* Line 1455 of yacc.c */
7459 #line 3332 "ircd_parser.y"
7460 {
7461 ConfigFileEntry.stats_P_oper_only = yylval.number;
7462 }
7463 break;
7464
7465 case 583:
7466
7467 /* Line 1455 of yacc.c */
7468 #line 3337 "ircd_parser.y"
7469 {
7470 ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
7471 }
7472 break;
7473
7474 case 584:
7475
7476 /* Line 1455 of yacc.c */
7477 #line 3340 "ircd_parser.y"
7478 {
7479 ConfigFileEntry.stats_k_oper_only = 1;
7480 }
7481 break;
7482
7483 case 585:
7484
7485 /* Line 1455 of yacc.c */
7486 #line 3345 "ircd_parser.y"
7487 {
7488 ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
7489 }
7490 break;
7491
7492 case 586:
7493
7494 /* Line 1455 of yacc.c */
7495 #line 3348 "ircd_parser.y"
7496 {
7497 ConfigFileEntry.stats_i_oper_only = 1;
7498 }
7499 break;
7500
7501 case 587:
7502
7503 /* Line 1455 of yacc.c */
7504 #line 3353 "ircd_parser.y"
7505 {
7506 ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
7507 }
7508 break;
7509
7510 case 588:
7511
7512 /* Line 1455 of yacc.c */
7513 #line 3358 "ircd_parser.y"
7514 {
7515 ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
7516 }
7517 break;
7518
7519 case 589:
7520
7521 /* Line 1455 of yacc.c */
7522 #line 3363 "ircd_parser.y"
7523 {
7524 ConfigFileEntry.opers_bypass_callerid = yylval.number;
7525 }
7526 break;
7527
7528 case 590:
7529
7530 /* Line 1455 of yacc.c */
7531 #line 3368 "ircd_parser.y"
7532 {
7533 ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
7534 }
7535 break;
7536
7537 case 591:
7538
7539 /* Line 1455 of yacc.c */
7540 #line 3373 "ircd_parser.y"
7541 {
7542 ConfigFileEntry.short_motd = yylval.number;
7543 }
7544 break;
7545
7546 case 592:
7547
7548 /* Line 1455 of yacc.c */
7549 #line 3378 "ircd_parser.y"
7550 {
7551 ConfigFileEntry.no_oper_flood = yylval.number;
7552 }
7553 break;
7554
7555 case 593:
7556
7557 /* Line 1455 of yacc.c */
7558 #line 3383 "ircd_parser.y"
7559 {
7560 ConfigFileEntry.true_no_oper_flood = yylval.number;
7561 }
7562 break;
7563
7564 case 594:
7565
7566 /* Line 1455 of yacc.c */
7567 #line 3388 "ircd_parser.y"
7568 {
7569 ConfigFileEntry.oper_pass_resv = yylval.number;
7570 }
7571 break;
7572
7573 case 595:
7574
7575 /* Line 1455 of yacc.c */
7576 #line 3393 "ircd_parser.y"
7577 {
7578 if (conf_parser_ctx.pass == 2)
7579 {
7580 if (strlen(yylval.string) > LOCALE_LENGTH-2)
7581 yylval.string[LOCALE_LENGTH-1] = '\0';
7582
7583 set_locale(yylval.string);
7584 }
7585 }
7586 break;
7587
7588 case 596:
7589
7590 /* Line 1455 of yacc.c */
7591 #line 3404 "ircd_parser.y"
7592 {
7593 ConfigFileEntry.idletime = (yyvsp[(3) - (4)].number);
7594 }
7595 break;
7596
7597 case 597:
7598
7599 /* Line 1455 of yacc.c */
7600 #line 3409 "ircd_parser.y"
7601 {
7602 ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
7603 }
7604 break;
7605
7606 case 598:
7607
7608 /* Line 1455 of yacc.c */
7609 #line 3414 "ircd_parser.y"
7610 {
7611 ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
7612 }
7613 break;
7614
7615 case 599:
7616
7617 /* Line 1455 of yacc.c */
7618 #line 3419 "ircd_parser.y"
7619 {
7620 if (conf_parser_ctx.pass == 2)
7621 {
7622 MyFree(ConfigFileEntry.servlink_path);
7623 DupString(ConfigFileEntry.servlink_path, yylval.string);
7624 }
7625 }
7626 break;
7627
7628 case 600:
7629
7630 /* Line 1455 of yacc.c */
7631 #line 3428 "ircd_parser.y"
7632 {
7633 #ifdef HAVE_LIBCRYPTO
7634 if (conf_parser_ctx.pass == 2)
7635 {
7636 struct EncCapability *ecap;
7637 const char *cipher_name;
7638 int found = 0;
7639
7640 ConfigFileEntry.default_cipher_preference = NULL;
7641 cipher_name = yylval.string;
7642
7643 for (ecap = CipherTable; ecap->name; ecap++)
7644 {
7645 if ((irccmp(ecap->name, cipher_name) == 0) &&
7646 (ecap->cap & CAP_ENC_MASK))
7647 {
7648 ConfigFileEntry.default_cipher_preference = ecap;
7649 found = 1;
7650 break;
7651 }
7652 }
7653
7654 if (!found)
7655 yyerror("Invalid cipher");
7656 }
7657 #else
7658 if (conf_parser_ctx.pass == 2)
7659 yyerror("Ignoring default_cipher_preference -- no OpenSSL support");
7660 #endif
7661 }
7662 break;
7663
7664 case 601:
7665
7666 /* Line 1455 of yacc.c */
7667 #line 3460 "ircd_parser.y"
7668 {
7669 if (conf_parser_ctx.pass == 2)
7670 {
7671 ConfigFileEntry.compression_level = (yyvsp[(3) - (4)].number);
7672 #ifndef HAVE_LIBZ
7673 yyerror("Ignoring compression_level -- no zlib support");
7674 #else
7675 if ((ConfigFileEntry.compression_level < 1) ||
7676 (ConfigFileEntry.compression_level > 9))
7677 {
7678 yyerror("Ignoring invalid compression_level, using default");
7679 ConfigFileEntry.compression_level = 0;
7680 }
7681 #endif
7682 }
7683 }
7684 break;
7685
7686 case 602:
7687
7688 /* Line 1455 of yacc.c */
7689 #line 3478 "ircd_parser.y"
7690 {
7691 ConfigFileEntry.use_egd = yylval.number;
7692 }
7693 break;
7694
7695 case 603:
7696
7697 /* Line 1455 of yacc.c */
7698 #line 3483 "ircd_parser.y"
7699 {
7700 if (conf_parser_ctx.pass == 2)
7701 {
7702 MyFree(ConfigFileEntry.egdpool_path);
7703 DupString(ConfigFileEntry.egdpool_path, yylval.string);
7704 }
7705 }
7706 break;
7707
7708 case 604:
7709
7710 /* Line 1455 of yacc.c */
7711 #line 3492 "ircd_parser.y"
7712 {
7713 ConfigFileEntry.ping_cookie = yylval.number;
7714 }
7715 break;
7716
7717 case 605:
7718
7719 /* Line 1455 of yacc.c */
7720 #line 3497 "ircd_parser.y"
7721 {
7722 ConfigFileEntry.disable_auth = yylval.number;
7723 }
7724 break;
7725
7726 case 606:
7727
7728 /* Line 1455 of yacc.c */
7729 #line 3502 "ircd_parser.y"
7730 {
7731 ConfigFileEntry.throttle_time = yylval.number;
7732 }
7733 break;
7734
7735 case 607:
7736
7737 /* Line 1455 of yacc.c */
7738 #line 3507 "ircd_parser.y"
7739 {
7740 ConfigFileEntry.oper_umodes = 0;
7741 }
7742 break;
7743
7744 case 611:
7745
7746 /* Line 1455 of yacc.c */
7747 #line 3513 "ircd_parser.y"
7748 {
7749 ConfigFileEntry.oper_umodes |= UMODE_BOTS;
7750 }
7751 break;
7752
7753 case 612:
7754
7755 /* Line 1455 of yacc.c */
7756 #line 3516 "ircd_parser.y"
7757 {
7758 ConfigFileEntry.oper_umodes |= UMODE_CCONN;
7759 }
7760 break;
7761
7762 case 613:
7763
7764 /* Line 1455 of yacc.c */
7765 #line 3519 "ircd_parser.y"
7766 {
7767 ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
7768 }
7769 break;
7770
7771 case 614:
7772
7773 /* Line 1455 of yacc.c */
7774 #line 3522 "ircd_parser.y"
7775 {
7776 ConfigFileEntry.oper_umodes |= UMODE_DEAF;
7777 }
7778 break;
7779
7780 case 615:
7781
7782 /* Line 1455 of yacc.c */
7783 #line 3525 "ircd_parser.y"
7784 {
7785 ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
7786 }
7787 break;
7788
7789 case 616:
7790
7791 /* Line 1455 of yacc.c */
7792 #line 3528 "ircd_parser.y"
7793 {
7794 ConfigFileEntry.oper_umodes |= UMODE_FULL;
7795 }
7796 break;
7797
7798 case 617:
7799
7800 /* Line 1455 of yacc.c */
7801 #line 3531 "ircd_parser.y"
7802 {
7803 ConfigFileEntry.oper_umodes |= UMODE_SKILL;
7804 }
7805 break;
7806
7807 case 618:
7808
7809 /* Line 1455 of yacc.c */
7810 #line 3534 "ircd_parser.y"
7811 {
7812 ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
7813 }
7814 break;
7815
7816 case 619:
7817
7818 /* Line 1455 of yacc.c */
7819 #line 3537 "ircd_parser.y"
7820 {
7821 ConfigFileEntry.oper_umodes |= UMODE_REJ;
7822 }
7823 break;
7824
7825 case 620:
7826
7827 /* Line 1455 of yacc.c */
7828 #line 3540 "ircd_parser.y"
7829 {
7830 ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
7831 }
7832 break;
7833
7834 case 621:
7835
7836 /* Line 1455 of yacc.c */
7837 #line 3543 "ircd_parser.y"
7838 {
7839 ConfigFileEntry.oper_umodes |= UMODE_SPY;
7840 }
7841 break;
7842
7843 case 622:
7844
7845 /* Line 1455 of yacc.c */
7846 #line 3546 "ircd_parser.y"
7847 {
7848 ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
7849 }
7850 break;
7851
7852 case 623:
7853
7854 /* Line 1455 of yacc.c */
7855 #line 3549 "ircd_parser.y"
7856 {
7857 ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
7858 }
7859 break;
7860
7861 case 624:
7862
7863 /* Line 1455 of yacc.c */
7864 #line 3552 "ircd_parser.y"
7865 {
7866 ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
7867 }
7868 break;
7869
7870 case 625:
7871
7872 /* Line 1455 of yacc.c */
7873 #line 3555 "ircd_parser.y"
7874 {
7875 ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
7876 }
7877 break;
7878
7879 case 626:
7880
7881 /* Line 1455 of yacc.c */
7882 #line 3558 "ircd_parser.y"
7883 {
7884 ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
7885 }
7886 break;
7887
7888 case 627:
7889
7890 /* Line 1455 of yacc.c */
7891 #line 3561 "ircd_parser.y"
7892 {
7893 ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
7894 }
7895 break;
7896
7897 case 628:
7898
7899 /* Line 1455 of yacc.c */
7900 #line 3564 "ircd_parser.y"
7901 {
7902 ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
7903 }
7904 break;
7905
7906 case 629:
7907
7908 /* Line 1455 of yacc.c */
7909 #line 3567 "ircd_parser.y"
7910 {
7911 ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
7912 }
7913 break;
7914
7915 case 630:
7916
7917 /* Line 1455 of yacc.c */
7918 #line 3572 "ircd_parser.y"
7919 {
7920 ConfigFileEntry.oper_only_umodes = 0;
7921 }
7922 break;
7923
7924 case 634:
7925
7926 /* Line 1455 of yacc.c */
7927 #line 3578 "ircd_parser.y"
7928 {
7929 ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
7930 }
7931 break;
7932
7933 case 635:
7934
7935 /* Line 1455 of yacc.c */
7936 #line 3581 "ircd_parser.y"
7937 {
7938 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
7939 }
7940 break;
7941
7942 case 636:
7943
7944 /* Line 1455 of yacc.c */
7945 #line 3584 "ircd_parser.y"
7946 {
7947 ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
7948 }
7949 break;
7950
7951 case 637:
7952
7953 /* Line 1455 of yacc.c */
7954 #line 3587 "ircd_parser.y"
7955 {
7956 ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
7957 }
7958 break;
7959
7960 case 638:
7961
7962 /* Line 1455 of yacc.c */
7963 #line 3590 "ircd_parser.y"
7964 {
7965 ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
7966 }
7967 break;
7968
7969 case 639:
7970
7971 /* Line 1455 of yacc.c */
7972 #line 3593 "ircd_parser.y"
7973 {
7974 ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
7975 }
7976 break;
7977
7978 case 640:
7979
7980 /* Line 1455 of yacc.c */
7981 #line 3596 "ircd_parser.y"
7982 {
7983 ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
7984 }
7985 break;
7986
7987 case 641:
7988
7989 /* Line 1455 of yacc.c */
7990 #line 3599 "ircd_parser.y"
7991 {
7992 ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
7993 }
7994 break;
7995
7996 case 642:
7997
7998 /* Line 1455 of yacc.c */
7999 #line 3602 "ircd_parser.y"
8000 {
8001 ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
8002 }
8003 break;
8004
8005 case 643:
8006
8007 /* Line 1455 of yacc.c */
8008 #line 3605 "ircd_parser.y"
8009 {
8010 ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
8011 }
8012 break;
8013
8014 case 644:
8015
8016 /* Line 1455 of yacc.c */
8017 #line 3608 "ircd_parser.y"
8018 {
8019 ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
8020 }
8021 break;
8022
8023 case 645:
8024
8025 /* Line 1455 of yacc.c */
8026 #line 3611 "ircd_parser.y"
8027 {
8028 ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
8029 }
8030 break;
8031
8032 case 646:
8033
8034 /* Line 1455 of yacc.c */
8035 #line 3614 "ircd_parser.y"
8036 {
8037 ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
8038 }
8039 break;
8040
8041 case 647:
8042
8043 /* Line 1455 of yacc.c */
8044 #line 3617 "ircd_parser.y"
8045 {
8046 ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
8047 }
8048 break;
8049
8050 case 648:
8051
8052 /* Line 1455 of yacc.c */
8053 #line 3620 "ircd_parser.y"
8054 {
8055 ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
8056 }
8057 break;
8058
8059 case 649:
8060
8061 /* Line 1455 of yacc.c */
8062 #line 3623 "ircd_parser.y"
8063 {
8064 ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
8065 }
8066 break;
8067
8068 case 650:
8069
8070 /* Line 1455 of yacc.c */
8071 #line 3626 "ircd_parser.y"
8072 {
8073 ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
8074 }
8075 break;
8076
8077 case 651:
8078
8079 /* Line 1455 of yacc.c */
8080 #line 3629 "ircd_parser.y"
8081 {
8082 ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
8083 }
8084 break;
8085
8086 case 652:
8087
8088 /* Line 1455 of yacc.c */
8089 #line 3632 "ircd_parser.y"
8090 {
8091 ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
8092 }
8093 break;
8094
8095 case 653:
8096
8097 /* Line 1455 of yacc.c */
8098 #line 3637 "ircd_parser.y"
8099 {
8100 ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
8101 }
8102 break;
8103
8104 case 654:
8105
8106 /* Line 1455 of yacc.c */
8107 #line 3642 "ircd_parser.y"
8108 {
8109 ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
8110 }
8111 break;
8112
8113 case 655:
8114
8115 /* Line 1455 of yacc.c */
8116 #line 3647 "ircd_parser.y"
8117 {
8118 ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
8119 }
8120 break;
8121
8122 case 656:
8123
8124 /* Line 1455 of yacc.c */
8125 #line 3652 "ircd_parser.y"
8126 {
8127 ConfigFileEntry.client_flood = (yyvsp[(3) - (4)].number);
8128 }
8129 break;
8130
8131 case 657:
8132
8133 /* Line 1455 of yacc.c */
8134 #line 3661 "ircd_parser.y"
8135 {
8136 if (conf_parser_ctx.pass == 2)
8137 {
8138 yy_conf = make_conf_item(GDENY_TYPE);
8139 yy_aconf = map_to_conf(yy_conf);
8140 }
8141 }
8142 break;
8143
8144 case 658:
8145
8146 /* Line 1455 of yacc.c */
8147 #line 3668 "ircd_parser.y"
8148 {
8149 if (conf_parser_ctx.pass == 2)
8150 {
8151 /*
8152 * since we re-allocate yy_conf/yy_aconf after the end of action=, at the
8153 * end we will have one extra, so we should free it.
8154 */
8155 if (yy_conf->name == NULL || yy_aconf->user == NULL)
8156 {
8157 delete_conf_item(yy_conf);
8158 yy_conf = NULL;
8159 yy_aconf = NULL;
8160 }
8161 }
8162 }
8163 break;
8164
8165 case 668:
8166
8167 /* Line 1455 of yacc.c */
8168 #line 3694 "ircd_parser.y"
8169 {
8170 if (conf_parser_ctx.pass == 2)
8171 ConfigFileEntry.glines = yylval.number;
8172 }
8173 break;
8174
8175 case 669:
8176
8177 /* Line 1455 of yacc.c */
8178 #line 3700 "ircd_parser.y"
8179 {
8180 if (conf_parser_ctx.pass == 2)
8181 ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
8182 }
8183 break;
8184
8185 case 670:
8186
8187 /* Line 1455 of yacc.c */
8188 #line 3706 "ircd_parser.y"
8189 {
8190 if (conf_parser_ctx.pass == 2)
8191 ConfigFileEntry.gline_logging = 0;
8192 }
8193 break;
8194
8195 case 674:
8196
8197 /* Line 1455 of yacc.c */
8198 #line 3712 "ircd_parser.y"
8199 {
8200 if (conf_parser_ctx.pass == 2)
8201 ConfigFileEntry.gline_logging |= GDENY_REJECT;
8202 }
8203 break;
8204
8205 case 675:
8206
8207 /* Line 1455 of yacc.c */
8208 #line 3716 "ircd_parser.y"
8209 {
8210 if (conf_parser_ctx.pass == 2)
8211 ConfigFileEntry.gline_logging |= GDENY_BLOCK;
8212 }
8213 break;
8214
8215 case 676:
8216
8217 /* Line 1455 of yacc.c */
8218 #line 3722 "ircd_parser.y"
8219 {
8220 if (conf_parser_ctx.pass == 2)
8221 {
8222 struct split_nuh_item nuh;
8223
8224 nuh.nuhmask = yylval.string;
8225 nuh.nickptr = NULL;
8226 nuh.userptr = userbuf;
8227 nuh.hostptr = hostbuf;
8228
8229 nuh.nicksize = 0;
8230 nuh.usersize = sizeof(userbuf);
8231 nuh.hostsize = sizeof(hostbuf);
8232
8233 split_nuh(&nuh);
8234
8235 if (yy_aconf->user == NULL)
8236 {
8237 DupString(yy_aconf->user, userbuf);
8238 DupString(yy_aconf->host, hostbuf);
8239 }
8240 else
8241 {
8242 struct CollectItem *yy_tmp = MyMalloc(sizeof(struct CollectItem));
8243
8244 DupString(yy_tmp->user, userbuf);
8245 DupString(yy_tmp->host, hostbuf);
8246
8247 dlinkAdd(yy_tmp, &yy_tmp->node, &col_conf_list);
8248 }
8249 }
8250 }
8251 break;
8252
8253 case 677:
8254
8255 /* Line 1455 of yacc.c */
8256 #line 3756 "ircd_parser.y"
8257 {
8258 if (conf_parser_ctx.pass == 2)
8259 {
8260 MyFree(yy_conf->name);
8261 DupString(yy_conf->name, yylval.string);
8262 }
8263 }
8264 break;
8265
8266 case 678:
8267
8268 /* Line 1455 of yacc.c */
8269 #line 3765 "ircd_parser.y"
8270 {
8271 if (conf_parser_ctx.pass == 2)
8272 yy_aconf->flags = 0;
8273 }
8274 break;
8275
8276 case 679:
8277
8278 /* Line 1455 of yacc.c */
8279 #line 3769 "ircd_parser.y"
8280 {
8281 if (conf_parser_ctx.pass == 2)
8282 {
8283 struct CollectItem *yy_tmp = NULL;
8284 dlink_node *ptr, *next_ptr;
8285
8286 DLINK_FOREACH_SAFE(ptr, next_ptr, col_conf_list.head)
8287 {
8288 struct AccessItem *new_aconf;
8289 struct ConfItem *new_conf;
8290
8291 yy_tmp = ptr->data;
8292 new_conf = make_conf_item(GDENY_TYPE);
8293 new_aconf = map_to_conf(new_conf);
8294
8295 new_aconf->flags = yy_aconf->flags;
8296
8297 if (yy_conf->name != NULL)
8298 DupString(new_conf->name, yy_conf->name);
8299 else
8300 DupString(new_conf->name, "*");
8301 if (yy_aconf->user != NULL)
8302 DupString(new_aconf->user, yy_tmp->user);
8303 else
8304 DupString(new_aconf->user, "*");
8305 if (yy_aconf->host != NULL)
8306 DupString(new_aconf->host, yy_tmp->host);
8307 else
8308 DupString(new_aconf->host, "*");
8309
8310 dlinkDelete(&yy_tmp->node, &col_conf_list);
8311 }
8312
8313 /*
8314 * In case someone has fed us with more than one action= after user/name
8315 * which would leak memory -Michael
8316 */
8317 if (yy_conf->name == NULL || yy_aconf->user == NULL)
8318 delete_conf_item(yy_conf);
8319
8320 yy_conf = make_conf_item(GDENY_TYPE);
8321 yy_aconf = map_to_conf(yy_conf);
8322 }
8323 }
8324 break;
8325
8326 case 682:
8327
8328 /* Line 1455 of yacc.c */
8329 #line 3816 "ircd_parser.y"
8330 {
8331 if (conf_parser_ctx.pass == 2)
8332 yy_aconf->flags |= GDENY_REJECT;
8333 }
8334 break;
8335
8336 case 683:
8337
8338 /* Line 1455 of yacc.c */
8339 #line 3820 "ircd_parser.y"
8340 {
8341 if (conf_parser_ctx.pass == 2)
8342 yy_aconf->flags |= GDENY_BLOCK;
8343 }
8344 break;
8345
8346 case 706:
8347
8348 /* Line 1455 of yacc.c */
8349 #line 3844 "ircd_parser.y"
8350 {
8351 ConfigChannel.disable_fake_channels = yylval.number;
8352 }
8353 break;
8354
8355 case 707:
8356
8357 /* Line 1455 of yacc.c */
8358 #line 3849 "ircd_parser.y"
8359 {
8360 ConfigChannel.restrict_channels = yylval.number;
8361 }
8362 break;
8363
8364 case 708:
8365
8366 /* Line 1455 of yacc.c */
8367 #line 3854 "ircd_parser.y"
8368 {
8369 ConfigChannel.disable_local_channels = yylval.number;
8370 }
8371 break;
8372
8373 case 709:
8374
8375 /* Line 1455 of yacc.c */
8376 #line 3859 "ircd_parser.y"
8377 {
8378 ConfigChannel.use_except = yylval.number;
8379 }
8380 break;
8381
8382 case 710:
8383
8384 /* Line 1455 of yacc.c */
8385 #line 3864 "ircd_parser.y"
8386 {
8387 ConfigChannel.use_invex = yylval.number;
8388 }
8389 break;
8390
8391 case 711:
8392
8393 /* Line 1455 of yacc.c */
8394 #line 3869 "ircd_parser.y"
8395 {
8396 ConfigChannel.use_knock = yylval.number;
8397 }
8398 break;
8399
8400 case 712:
8401
8402 /* Line 1455 of yacc.c */
8403 #line 3874 "ircd_parser.y"
8404 {
8405 ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
8406 }
8407 break;
8408
8409 case 713:
8410
8411 /* Line 1455 of yacc.c */
8412 #line 3879 "ircd_parser.y"
8413 {
8414 ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
8415 }
8416 break;
8417
8418 case 714:
8419
8420 /* Line 1455 of yacc.c */
8421 #line 3884 "ircd_parser.y"
8422 {
8423 ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
8424 }
8425 break;
8426
8427 case 715:
8428
8429 /* Line 1455 of yacc.c */
8430 #line 3889 "ircd_parser.y"
8431 {
8432 ConfigChannel.quiet_on_ban = yylval.number;
8433 }
8434 break;
8435
8436 case 716:
8437
8438 /* Line 1455 of yacc.c */
8439 #line 3894 "ircd_parser.y"
8440 {
8441 ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
8442 }
8443 break;
8444
8445 case 717:
8446
8447 /* Line 1455 of yacc.c */
8448 #line 3899 "ircd_parser.y"
8449 {
8450 ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
8451 }
8452 break;
8453
8454 case 718:
8455
8456 /* Line 1455 of yacc.c */
8457 #line 3904 "ircd_parser.y"
8458 {
8459 ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
8460 }
8461 break;
8462
8463 case 719:
8464
8465 /* Line 1455 of yacc.c */
8466 #line 3909 "ircd_parser.y"
8467 {
8468 ConfigChannel.no_create_on_split = yylval.number;
8469 }
8470 break;
8471
8472 case 720:
8473
8474 /* Line 1455 of yacc.c */
8475 #line 3914 "ircd_parser.y"
8476 {
8477 ConfigChannel.no_join_on_split = yylval.number;
8478 }
8479 break;
8480
8481 case 721:
8482
8483 /* Line 1455 of yacc.c */
8484 #line 3919 "ircd_parser.y"
8485 {
8486 ConfigChannel.burst_topicwho = yylval.number;
8487 }
8488 break;
8489
8490 case 722:
8491
8492 /* Line 1455 of yacc.c */
8493 #line 3924 "ircd_parser.y"
8494 {
8495 GlobalSetOptions.joinfloodcount = yylval.number;
8496 }
8497 break;
8498
8499 case 723:
8500
8501 /* Line 1455 of yacc.c */
8502 #line 3929 "ircd_parser.y"
8503 {
8504 GlobalSetOptions.joinfloodtime = yylval.number;
8505 }
8506 break;
8507
8508 case 735:
8509
8510 /* Line 1455 of yacc.c */
8511 #line 3948 "ircd_parser.y"
8512 {
8513 if (conf_parser_ctx.pass == 2)
8514 ConfigServerHide.flatten_links = yylval.number;
8515 }
8516 break;
8517
8518 case 736:
8519
8520 /* Line 1455 of yacc.c */
8521 #line 3954 "ircd_parser.y"
8522 {
8523 if (conf_parser_ctx.pass == 2)
8524 ConfigServerHide.hide_servers = yylval.number;
8525 }
8526 break;
8527
8528 case 737:
8529
8530 /* Line 1455 of yacc.c */
8531 #line 3960 "ircd_parser.y"
8532 {
8533 if (conf_parser_ctx.pass == 2)
8534 {
8535 MyFree(ConfigServerHide.hidden_name);
8536 DupString(ConfigServerHide.hidden_name, yylval.string);
8537 }
8538 }
8539 break;
8540
8541 case 738:
8542
8543 /* Line 1455 of yacc.c */
8544 #line 3969 "ircd_parser.y"
8545 {
8546 if (conf_parser_ctx.pass == 2)
8547 {
8548 if (((yyvsp[(3) - (4)].number) > 0) && ConfigServerHide.links_disabled == 1)
8549 {
8550 eventAddIsh("write_links_file", write_links_file, NULL, (yyvsp[(3) - (4)].number));
8551 ConfigServerHide.links_disabled = 0;
8552 }
8553
8554 ConfigServerHide.links_delay = (yyvsp[(3) - (4)].number);
8555 }
8556 }
8557 break;
8558
8559 case 739:
8560
8561 /* Line 1455 of yacc.c */
8562 #line 3983 "ircd_parser.y"
8563 {
8564 if (conf_parser_ctx.pass == 2)
8565 ConfigServerHide.hidden = yylval.number;
8566 }
8567 break;
8568
8569 case 740:
8570
8571 /* Line 1455 of yacc.c */
8572 #line 3989 "ircd_parser.y"
8573 {
8574 if (conf_parser_ctx.pass == 2)
8575 ConfigServerHide.disable_hidden = yylval.number;
8576 }
8577 break;
8578
8579 case 741:
8580
8581 /* Line 1455 of yacc.c */
8582 #line 3995 "ircd_parser.y"
8583 {
8584 if (conf_parser_ctx.pass == 2)
8585 ConfigServerHide.hide_server_ips = yylval.number;
8586 }
8587 break;
8588
8589
8590
8591 /* Line 1455 of yacc.c */
8592 #line 8593 "ircd_parser.c"
8593 default: break;
8594 }
8595 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
8596
8597 YYPOPSTACK (yylen);
8598 yylen = 0;
8599 YY_STACK_PRINT (yyss, yyssp);
8600
8601 *++yyvsp = yyval;
8602
8603 /* Now `shift' the result of the reduction. Determine what state
8604 that goes to, based on the state we popped back to and the rule
8605 number reduced by. */
8606
8607 yyn = yyr1[yyn];
8608
8609 yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
8610 if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
8611 yystate = yytable[yystate];
8612 else
8613 yystate = yydefgoto[yyn - YYNTOKENS];
8614
8615 goto yynewstate;
8616
8617
8618 /*------------------------------------.
8619 | yyerrlab -- here on detecting error |
8620 `------------------------------------*/
8621 yyerrlab:
8622 /* If not already recovering from an error, report this error. */
8623 if (!yyerrstatus)
8624 {
8625 ++yynerrs;
8626 #if ! YYERROR_VERBOSE
8627 yyerror (YY_("syntax error"));
8628 #else
8629 {
8630 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
8631 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
8632 {
8633 YYSIZE_T yyalloc = 2 * yysize;
8634 if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
8635 yyalloc = YYSTACK_ALLOC_MAXIMUM;
8636 if (yymsg != yymsgbuf)
8637 YYSTACK_FREE (yymsg);
8638 yymsg = (char *) YYSTACK_ALLOC (yyalloc);
8639 if (yymsg)
8640 yymsg_alloc = yyalloc;
8641 else
8642 {
8643 yymsg = yymsgbuf;
8644 yymsg_alloc = sizeof yymsgbuf;
8645 }
8646 }
8647
8648 if (0 < yysize && yysize <= yymsg_alloc)
8649 {
8650 (void) yysyntax_error (yymsg, yystate, yychar);
8651 yyerror (yymsg);
8652 }
8653 else
8654 {
8655 yyerror (YY_("syntax error"));
8656 if (yysize != 0)
8657 goto yyexhaustedlab;
8658 }
8659 }
8660 #endif
8661 }
8662
8663
8664
8665 if (yyerrstatus == 3)
8666 {
8667 /* If just tried and failed to reuse lookahead token after an
8668 error, discard it. */
8669
8670 if (yychar <= YYEOF)
8671 {
8672 /* Return failure if at end of input. */
8673 if (yychar == YYEOF)
8674 YYABORT;
8675 }
8676 else
8677 {
8678 yydestruct ("Error: discarding",
8679 yytoken, &yylval);
8680 yychar = YYEMPTY;
8681 }
8682 }
8683
8684 /* Else will try to reuse lookahead token after shifting the error
8685 token. */
8686 goto yyerrlab1;
8687
8688
8689 /*---------------------------------------------------.
8690 | yyerrorlab -- error raised explicitly by YYERROR. |
8691 `---------------------------------------------------*/
8692 yyerrorlab:
8693
8694 /* Pacify compilers like GCC when the user code never invokes
8695 YYERROR and the label yyerrorlab therefore never appears in user
8696 code. */
8697 if (/*CONSTCOND*/ 0)
8698 goto yyerrorlab;
8699
8700 /* Do not reclaim the symbols of the rule which action triggered
8701 this YYERROR. */
8702 YYPOPSTACK (yylen);
8703 yylen = 0;
8704 YY_STACK_PRINT (yyss, yyssp);
8705 yystate = *yyssp;
8706 goto yyerrlab1;
8707
8708
8709 /*-------------------------------------------------------------.
8710 | yyerrlab1 -- common code for both syntax error and YYERROR. |
8711 `-------------------------------------------------------------*/
8712 yyerrlab1:
8713 yyerrstatus = 3; /* Each real token shifted decrements this. */
8714
8715 for (;;)
8716 {
8717 yyn = yypact[yystate];
8718 if (yyn != YYPACT_NINF)
8719 {
8720 yyn += YYTERROR;
8721 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
8722 {
8723 yyn = yytable[yyn];
8724 if (0 < yyn)
8725 break;
8726 }
8727 }
8728
8729 /* Pop the current state because it cannot handle the error token. */
8730 if (yyssp == yyss)
8731 YYABORT;
8732
8733
8734 yydestruct ("Error: popping",
8735 yystos[yystate], yyvsp);
8736 YYPOPSTACK (1);
8737 yystate = *yyssp;
8738 YY_STACK_PRINT (yyss, yyssp);
8739 }
8740
8741 *++yyvsp = yylval;
8742
8743
8744 /* Shift the error token. */
8745 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
8746
8747 yystate = yyn;
8748 goto yynewstate;
8749
8750
8751 /*-------------------------------------.
8752 | yyacceptlab -- YYACCEPT comes here. |
8753 `-------------------------------------*/
8754 yyacceptlab:
8755 yyresult = 0;
8756 goto yyreturn;
8757
8758 /*-----------------------------------.
8759 | yyabortlab -- YYABORT comes here. |
8760 `-----------------------------------*/
8761 yyabortlab:
8762 yyresult = 1;
8763 goto yyreturn;
8764
8765 #if !defined(yyoverflow) || YYERROR_VERBOSE
8766 /*-------------------------------------------------.
8767 | yyexhaustedlab -- memory exhaustion comes here. |
8768 `-------------------------------------------------*/
8769 yyexhaustedlab:
8770 yyerror (YY_("memory exhausted"));
8771 yyresult = 2;
8772 /* Fall through. */
8773 #endif
8774
8775 yyreturn:
8776 if (yychar != YYEMPTY)
8777 yydestruct ("Cleanup: discarding lookahead",
8778 yytoken, &yylval);
8779 /* Do not reclaim the symbols of the rule which action triggered
8780 this YYABORT or YYACCEPT. */
8781 YYPOPSTACK (yylen);
8782 YY_STACK_PRINT (yyss, yyssp);
8783 while (yyssp != yyss)
8784 {
8785 yydestruct ("Cleanup: popping",
8786 yystos[*yyssp], yyvsp);
8787 YYPOPSTACK (1);
8788 }
8789 #ifndef yyoverflow
8790 if (yyss != yyssa)
8791 YYSTACK_FREE (yyss);
8792 #endif
8793 #if YYERROR_VERBOSE
8794 if (yymsg != yymsgbuf)
8795 YYSTACK_FREE (yymsg);
8796 #endif
8797 /* Make sure YYID is used. */
8798 return YYID (yyresult);
8799 }
8800
8801
8802

Properties

Name Value
svn:eol-style native