ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid/trunk/src/conf_parser.c
Revision: 913
Committed: Wed Nov 7 23:20:12 2007 UTC (16 years, 4 months ago) by michael
Content type: text/x-csrc
Original Path: ircd-hybrid-7.2/src/ircd_parser.c
File size: 241780 byte(s)
Log Message:
- Added some missing files
- Moved HOSTLEN and USERLEN definition back to ircd_defs.h
  Those two shouldn't be configurable

File Contents

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

Properties

Name Value
svn:eol-style native