1 /* A Bison parser, made by GNU Bison 3.8.2. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6 Inc.
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <https://www.gnu.org/licenses/>. */
20
21 /* As a special exception, you may create a larger work that contains
22 part or all of the Bison parser skeleton and distribute that work
23 under terms of your choice, so long as that work isn't itself a
24 parser generator using the skeleton or a modified version thereof
25 as a parser skeleton. Alternatively, if you modify or redistribute
26 the parser skeleton itself, you may (at your option) remove this
27 special exception, which will cause the skeleton and the resulting
28 Bison output files to be licensed under the GNU General Public
29 License without this special exception.
30
31 This special exception was added by the Free Software Foundation in
32 version 2.2 of Bison. */
33
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35 simplifying the original so-called "semantic" parser. */
36
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38 especially those whose name start with YY_ or yy_. They are
39 private implementation details that can be changed or removed. */
40
41 /* All symbols defined below should begin with yy or YY, to avoid
42 infringing on user name space. This should be done even for local
43 variables, as they might otherwise be expanded by user macros.
44 There are some unavoidable exceptions within include files to
45 define necessary library symbols; they are noted "INFRINGES ON
46 USER NAME SPACE" below. */
47
48 /* Identify Bison output, and Bison version. */
49 #define YYBISON 30802
50
51 /* Bison version string. */
52 #define YYBISON_VERSION "3.8.2"
53
54 /* Skeleton name. */
55 #define YYSKELETON_NAME "yacc.c"
56
57 /* Pure parsers. */
58 #define YYPURE 1
59
60 /* Push parsers. */
61 #define YYPUSH 0
62
63 /* Pull parsers. */
64 #define YYPULL 1
65
66 /* Substitute the type names. */
67 #define YYSTYPE AFAMQP_STYPE
68 #define YYLTYPE AFAMQP_LTYPE
69 /* Substitute the variable and function names. */
70 #define yyparse afamqp_parse
71 #define yylex afamqp_lex
72 #define yyerror afamqp_error
73 #define yydebug afamqp_debug
74 #define yynerrs afamqp_nerrs
75
76
77 # ifndef YY_CAST
78 # ifdef __cplusplus
79 # define YY_CAST(Type, Val) static_cast<Type> (Val)
80 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
81 # else
82 # define YY_CAST(Type, Val) ((Type) (Val))
83 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
84 # endif
85 # endif
86 # ifndef YY_NULLPTR
87 # if defined __cplusplus
88 # if 201103L <= __cplusplus
89 # define YY_NULLPTR nullptr
90 # else
91 # define YY_NULLPTR 0
92 # endif
93 # else
94 # define YY_NULLPTR ((void*)0)
95 # endif
96 # endif
97
98 /* Use api.header.include to #include this header
99 instead of duplicating it here. */
100 #ifndef YY_AFAMQP_MODULES_AFAMQP_AFAMQP_GRAMMAR_H_INCLUDED
101 # define YY_AFAMQP_MODULES_AFAMQP_AFAMQP_GRAMMAR_H_INCLUDED
102 /* Debug traces. */
103 #ifndef AFAMQP_DEBUG
104 # if defined YYDEBUG
105 #if YYDEBUG
106 # define AFAMQP_DEBUG 1
107 # else
108 # define AFAMQP_DEBUG 0
109 # endif
110 # else /* ! defined YYDEBUG */
111 # define AFAMQP_DEBUG 0
112 # endif /* ! defined YYDEBUG */
113 #endif /* ! defined AFAMQP_DEBUG */
114 #if AFAMQP_DEBUG
115 extern int afamqp_debug;
116 #endif
117 /* "%code requires" blocks. */
118 #line 25 "modules/afamqp/afamqp-grammar.y"
119
120
121 #include "afamqp-parser.h"
122
123
124 #line 125 "modules/afamqp/afamqp-grammar.c"
125
126 /* Token kinds. */
127 #ifndef AFAMQP_TOKENTYPE
128 # define AFAMQP_TOKENTYPE
129 enum afamqp_tokentype
130 {
131 AFAMQP_EMPTY = -2,
132 AFAMQP_EOF = 0, /* "end of file" */
133 AFAMQP_error = 256, /* error */
134 AFAMQP_UNDEF = 10514, /* "invalid token" */
135 LL_CONTEXT_ROOT = 1, /* LL_CONTEXT_ROOT */
136 LL_CONTEXT_DESTINATION = 2, /* LL_CONTEXT_DESTINATION */
137 LL_CONTEXT_SOURCE = 3, /* LL_CONTEXT_SOURCE */
138 LL_CONTEXT_PARSER = 4, /* LL_CONTEXT_PARSER */
139 LL_CONTEXT_REWRITE = 5, /* LL_CONTEXT_REWRITE */
140 LL_CONTEXT_FILTER = 6, /* LL_CONTEXT_FILTER */
141 LL_CONTEXT_LOG = 7, /* LL_CONTEXT_LOG */
142 LL_CONTEXT_BLOCK_DEF = 8, /* LL_CONTEXT_BLOCK_DEF */
143 LL_CONTEXT_BLOCK_REF = 9, /* LL_CONTEXT_BLOCK_REF */
144 LL_CONTEXT_BLOCK_CONTENT = 10, /* LL_CONTEXT_BLOCK_CONTENT */
145 LL_CONTEXT_BLOCK_ARG = 11, /* LL_CONTEXT_BLOCK_ARG */
146 LL_CONTEXT_PRAGMA = 12, /* LL_CONTEXT_PRAGMA */
147 LL_CONTEXT_FORMAT = 13, /* LL_CONTEXT_FORMAT */
148 LL_CONTEXT_TEMPLATE_FUNC = 14, /* LL_CONTEXT_TEMPLATE_FUNC */
149 LL_CONTEXT_INNER_DEST = 15, /* LL_CONTEXT_INNER_DEST */
150 LL_CONTEXT_INNER_SRC = 16, /* LL_CONTEXT_INNER_SRC */
151 LL_CONTEXT_CLIENT_PROTO = 17, /* LL_CONTEXT_CLIENT_PROTO */
152 LL_CONTEXT_SERVER_PROTO = 18, /* LL_CONTEXT_SERVER_PROTO */
153 LL_CONTEXT_OPTIONS = 19, /* LL_CONTEXT_OPTIONS */
154 LL_CONTEXT_CONFIG = 20, /* LL_CONTEXT_CONFIG */
155 LL_CONTEXT_MAX = 21, /* LL_CONTEXT_MAX */
156 KW_SOURCE = 10000, /* KW_SOURCE */
157 KW_FILTER = 10001, /* KW_FILTER */
158 KW_PARSER = 10002, /* KW_PARSER */
159 KW_DESTINATION = 10003, /* KW_DESTINATION */
160 KW_LOG = 10004, /* KW_LOG */
161 KW_OPTIONS = 10005, /* KW_OPTIONS */
162 KW_INCLUDE = 10006, /* KW_INCLUDE */
163 KW_BLOCK = 10007, /* KW_BLOCK */
164 KW_JUNCTION = 10008, /* KW_JUNCTION */
165 KW_CHANNEL = 10009, /* KW_CHANNEL */
166 KW_IF = 10010, /* KW_IF */
167 KW_ELSE = 10011, /* KW_ELSE */
168 KW_ELIF = 10012, /* KW_ELIF */
169 KW_INTERNAL = 10020, /* KW_INTERNAL */
170 KW_SYSLOG = 10060, /* KW_SYSLOG */
171 KW_MARK_FREQ = 10071, /* KW_MARK_FREQ */
172 KW_STATS_FREQ = 10072, /* KW_STATS_FREQ */
173 KW_STATS_LEVEL = 10073, /* KW_STATS_LEVEL */
174 KW_STATS_LIFETIME = 10074, /* KW_STATS_LIFETIME */
175 KW_FLUSH_LINES = 10075, /* KW_FLUSH_LINES */
176 KW_SUPPRESS = 10076, /* KW_SUPPRESS */
177 KW_FLUSH_TIMEOUT = 10077, /* KW_FLUSH_TIMEOUT */
178 KW_LOG_MSG_SIZE = 10078, /* KW_LOG_MSG_SIZE */
179 KW_FILE_TEMPLATE = 10079, /* KW_FILE_TEMPLATE */
180 KW_PROTO_TEMPLATE = 10080, /* KW_PROTO_TEMPLATE */
181 KW_MARK_MODE = 10081, /* KW_MARK_MODE */
182 KW_ENCODING = 10082, /* KW_ENCODING */
183 KW_TYPE = 10083, /* KW_TYPE */
184 KW_STATS_MAX_DYNAMIC = 10084, /* KW_STATS_MAX_DYNAMIC */
185 KW_MIN_IW_SIZE_PER_READER = 10085, /* KW_MIN_IW_SIZE_PER_READER */
186 KW_WORKERS = 10086, /* KW_WORKERS */
187 KW_BATCH_LINES = 10087, /* KW_BATCH_LINES */
188 KW_BATCH_TIMEOUT = 10088, /* KW_BATCH_TIMEOUT */
189 KW_TRIM_LARGE_MESSAGES = 10089, /* KW_TRIM_LARGE_MESSAGES */
190 KW_CHAIN_HOSTNAMES = 10090, /* KW_CHAIN_HOSTNAMES */
191 KW_NORMALIZE_HOSTNAMES = 10091, /* KW_NORMALIZE_HOSTNAMES */
192 KW_KEEP_HOSTNAME = 10092, /* KW_KEEP_HOSTNAME */
193 KW_CHECK_HOSTNAME = 10093, /* KW_CHECK_HOSTNAME */
194 KW_BAD_HOSTNAME = 10094, /* KW_BAD_HOSTNAME */
195 KW_KEEP_TIMESTAMP = 10100, /* KW_KEEP_TIMESTAMP */
196 KW_USE_DNS = 10110, /* KW_USE_DNS */
197 KW_USE_FQDN = 10111, /* KW_USE_FQDN */
198 KW_CUSTOM_DOMAIN = 10112, /* KW_CUSTOM_DOMAIN */
199 KW_DNS_CACHE = 10120, /* KW_DNS_CACHE */
200 KW_DNS_CACHE_SIZE = 10121, /* KW_DNS_CACHE_SIZE */
201 KW_DNS_CACHE_EXPIRE = 10130, /* KW_DNS_CACHE_EXPIRE */
202 KW_DNS_CACHE_EXPIRE_FAILED = 10131, /* KW_DNS_CACHE_EXPIRE_FAILED */
203 KW_DNS_CACHE_HOSTS = 10132, /* KW_DNS_CACHE_HOSTS */
204 KW_PERSIST_ONLY = 10140, /* KW_PERSIST_ONLY */
205 KW_USE_RCPTID = 10141, /* KW_USE_RCPTID */
206 KW_USE_UNIQID = 10142, /* KW_USE_UNIQID */
207 KW_TZ_CONVERT = 10150, /* KW_TZ_CONVERT */
208 KW_TS_FORMAT = 10151, /* KW_TS_FORMAT */
209 KW_FRAC_DIGITS = 10152, /* KW_FRAC_DIGITS */
210 KW_LOG_FIFO_SIZE = 10160, /* KW_LOG_FIFO_SIZE */
211 KW_LOG_FETCH_LIMIT = 10162, /* KW_LOG_FETCH_LIMIT */
212 KW_LOG_IW_SIZE = 10163, /* KW_LOG_IW_SIZE */
213 KW_LOG_PREFIX = 10164, /* KW_LOG_PREFIX */
214 KW_PROGRAM_OVERRIDE = 10165, /* KW_PROGRAM_OVERRIDE */
215 KW_HOST_OVERRIDE = 10166, /* KW_HOST_OVERRIDE */
216 KW_THROTTLE = 10170, /* KW_THROTTLE */
217 KW_THREADED = 10171, /* KW_THREADED */
218 KW_PASS_UNIX_CREDENTIALS = 10231, /* KW_PASS_UNIX_CREDENTIALS */
219 KW_PERSIST_NAME = 10302, /* KW_PERSIST_NAME */
220 KW_READ_OLD_RECORDS = 10304, /* KW_READ_OLD_RECORDS */
221 KW_USE_SYSLOGNG_PID = 10305, /* KW_USE_SYSLOGNG_PID */
222 KW_FLAGS = 10190, /* KW_FLAGS */
223 KW_PAD_SIZE = 10200, /* KW_PAD_SIZE */
224 KW_TIME_ZONE = 10201, /* KW_TIME_ZONE */
225 KW_RECV_TIME_ZONE = 10202, /* KW_RECV_TIME_ZONE */
226 KW_SEND_TIME_ZONE = 10203, /* KW_SEND_TIME_ZONE */
227 KW_LOCAL_TIME_ZONE = 10204, /* KW_LOCAL_TIME_ZONE */
228 KW_FORMAT = 10205, /* KW_FORMAT */
229 KW_TRUNCATE_SIZE = 10206, /* KW_TRUNCATE_SIZE */
230 KW_TIME_REOPEN = 10210, /* KW_TIME_REOPEN */
231 KW_TIME_REAP = 10211, /* KW_TIME_REAP */
232 KW_TIME_SLEEP = 10212, /* KW_TIME_SLEEP */
233 KW_TMPL_ESCAPE = 10220, /* KW_TMPL_ESCAPE */
234 KW_OPTIONAL = 10230, /* KW_OPTIONAL */
235 KW_CREATE_DIRS = 10240, /* KW_CREATE_DIRS */
236 KW_OWNER = 10250, /* KW_OWNER */
237 KW_GROUP = 10251, /* KW_GROUP */
238 KW_PERM = 10252, /* KW_PERM */
239 KW_DIR_OWNER = 10260, /* KW_DIR_OWNER */
240 KW_DIR_GROUP = 10261, /* KW_DIR_GROUP */
241 KW_DIR_PERM = 10262, /* KW_DIR_PERM */
242 KW_TEMPLATE = 10270, /* KW_TEMPLATE */
243 KW_TEMPLATE_ESCAPE = 10271, /* KW_TEMPLATE_ESCAPE */
244 KW_TEMPLATE_FUNCTION = 10272, /* KW_TEMPLATE_FUNCTION */
245 KW_DEFAULT_FACILITY = 10300, /* KW_DEFAULT_FACILITY */
246 KW_DEFAULT_SEVERITY = 10301, /* KW_DEFAULT_SEVERITY */
247 KW_PORT = 10323, /* KW_PORT */
248 KW_USE_TIME_RECVD = 10340, /* KW_USE_TIME_RECVD */
249 KW_FACILITY = 10350, /* KW_FACILITY */
250 KW_SEVERITY = 10351, /* KW_SEVERITY */
251 KW_HOST = 10352, /* KW_HOST */
252 KW_MATCH = 10353, /* KW_MATCH */
253 KW_MESSAGE = 10354, /* KW_MESSAGE */
254 KW_NETMASK = 10355, /* KW_NETMASK */
255 KW_TAGS = 10356, /* KW_TAGS */
256 KW_NETMASK6 = 10357, /* KW_NETMASK6 */
257 KW_REWRITE = 10370, /* KW_REWRITE */
258 KW_CONDITION = 10371, /* KW_CONDITION */
259 KW_VALUE = 10372, /* KW_VALUE */
260 KW_YES = 10380, /* KW_YES */
261 KW_NO = 10381, /* KW_NO */
262 KW_IFDEF = 10410, /* KW_IFDEF */
263 KW_ENDIF = 10411, /* KW_ENDIF */
264 LL_DOTDOT = 10420, /* LL_DOTDOT */
265 LL_DOTDOTDOT = 10421, /* LL_DOTDOTDOT */
266 LL_PRAGMA = 10422, /* LL_PRAGMA */
267 LL_EOL = 10423, /* LL_EOL */
268 LL_ERROR = 10424, /* LL_ERROR */
269 LL_ARROW = 10425, /* LL_ARROW */
270 LL_IDENTIFIER = 10430, /* LL_IDENTIFIER */
271 LL_NUMBER = 10431, /* LL_NUMBER */
272 LL_FLOAT = 10432, /* LL_FLOAT */
273 LL_STRING = 10433, /* LL_STRING */
274 LL_TOKEN = 10434, /* LL_TOKEN */
275 LL_BLOCK = 10435, /* LL_BLOCK */
276 KW_VALUE_PAIRS = 10500, /* KW_VALUE_PAIRS */
277 KW_EXCLUDE = 10502, /* KW_EXCLUDE */
278 KW_PAIR = 10503, /* KW_PAIR */
279 KW_KEY = 10504, /* KW_KEY */
280 KW_SCOPE = 10505, /* KW_SCOPE */
281 KW_SHIFT = 10506, /* KW_SHIFT */
282 KW_SHIFT_LEVELS = 10507, /* KW_SHIFT_LEVELS */
283 KW_REKEY = 10508, /* KW_REKEY */
284 KW_ADD_PREFIX = 10509, /* KW_ADD_PREFIX */
285 KW_REPLACE_PREFIX = 10510, /* KW_REPLACE_PREFIX */
286 KW_ON_ERROR = 10511, /* KW_ON_ERROR */
287 KW_RETRIES = 10512, /* KW_RETRIES */
288 KW_FETCH_NO_DATA_DELAY = 10513, /* KW_FETCH_NO_DATA_DELAY */
289 KW_AMQP = 10515, /* KW_AMQP */
290 KW_EXCHANGE = 10516, /* KW_EXCHANGE */
291 KW_EXCHANGE_DECLARE = 10517, /* KW_EXCHANGE_DECLARE */
292 KW_EXCHANGE_TYPE = 10518, /* KW_EXCHANGE_TYPE */
293 KW_PERSISTENT = 10519, /* KW_PERSISTENT */
294 KW_VHOST = 10520, /* KW_VHOST */
295 KW_ROUTING_KEY = 10521, /* KW_ROUTING_KEY */
296 KW_BODY = 10522, /* KW_BODY */
297 KW_AUTH_METHOD = 10523, /* KW_AUTH_METHOD */
298 KW_PASSWORD = 10524, /* KW_PASSWORD */
299 KW_USERNAME = 10525, /* KW_USERNAME */
300 KW_MAX_CHANNEL = 10526, /* KW_MAX_CHANNEL */
301 KW_FRAME_SIZE = 10527, /* KW_FRAME_SIZE */
302 KW_HEARTBEAT = 10528, /* KW_HEARTBEAT */
303 KW_CA_FILE = 10529, /* KW_CA_FILE */
304 KW_KEY_FILE = 10530, /* KW_KEY_FILE */
305 KW_CERT_FILE = 10531, /* KW_CERT_FILE */
306 KW_PEER_VERIFY = 10532, /* KW_PEER_VERIFY */
307 KW_TLS = 10533 /* KW_TLS */
308 };
309 typedef enum afamqp_tokentype afamqp_token_kind_t;
310 #endif
311 /* Token kinds. */
312 #define AFAMQP_EMPTY -2
313 #define AFAMQP_EOF 0
314 #define AFAMQP_error 256
315 #define AFAMQP_UNDEF 10514
316 #define LL_CONTEXT_ROOT 1
317 #define LL_CONTEXT_DESTINATION 2
318 #define LL_CONTEXT_SOURCE 3
319 #define LL_CONTEXT_PARSER 4
320 #define LL_CONTEXT_REWRITE 5
321 #define LL_CONTEXT_FILTER 6
322 #define LL_CONTEXT_LOG 7
323 #define LL_CONTEXT_BLOCK_DEF 8
324 #define LL_CONTEXT_BLOCK_REF 9
325 #define LL_CONTEXT_BLOCK_CONTENT 10
326 #define LL_CONTEXT_BLOCK_ARG 11
327 #define LL_CONTEXT_PRAGMA 12
328 #define LL_CONTEXT_FORMAT 13
329 #define LL_CONTEXT_TEMPLATE_FUNC 14
330 #define LL_CONTEXT_INNER_DEST 15
331 #define LL_CONTEXT_INNER_SRC 16
332 #define LL_CONTEXT_CLIENT_PROTO 17
333 #define LL_CONTEXT_SERVER_PROTO 18
334 #define LL_CONTEXT_OPTIONS 19
335 #define LL_CONTEXT_CONFIG 20
336 #define LL_CONTEXT_MAX 21
337 #define KW_SOURCE 10000
338 #define KW_FILTER 10001
339 #define KW_PARSER 10002
340 #define KW_DESTINATION 10003
341 #define KW_LOG 10004
342 #define KW_OPTIONS 10005
343 #define KW_INCLUDE 10006
344 #define KW_BLOCK 10007
345 #define KW_JUNCTION 10008
346 #define KW_CHANNEL 10009
347 #define KW_IF 10010
348 #define KW_ELSE 10011
349 #define KW_ELIF 10012
350 #define KW_INTERNAL 10020
351 #define KW_SYSLOG 10060
352 #define KW_MARK_FREQ 10071
353 #define KW_STATS_FREQ 10072
354 #define KW_STATS_LEVEL 10073
355 #define KW_STATS_LIFETIME 10074
356 #define KW_FLUSH_LINES 10075
357 #define KW_SUPPRESS 10076
358 #define KW_FLUSH_TIMEOUT 10077
359 #define KW_LOG_MSG_SIZE 10078
360 #define KW_FILE_TEMPLATE 10079
361 #define KW_PROTO_TEMPLATE 10080
362 #define KW_MARK_MODE 10081
363 #define KW_ENCODING 10082
364 #define KW_TYPE 10083
365 #define KW_STATS_MAX_DYNAMIC 10084
366 #define KW_MIN_IW_SIZE_PER_READER 10085
367 #define KW_WORKERS 10086
368 #define KW_BATCH_LINES 10087
369 #define KW_BATCH_TIMEOUT 10088
370 #define KW_TRIM_LARGE_MESSAGES 10089
371 #define KW_CHAIN_HOSTNAMES 10090
372 #define KW_NORMALIZE_HOSTNAMES 10091
373 #define KW_KEEP_HOSTNAME 10092
374 #define KW_CHECK_HOSTNAME 10093
375 #define KW_BAD_HOSTNAME 10094
376 #define KW_KEEP_TIMESTAMP 10100
377 #define KW_USE_DNS 10110
378 #define KW_USE_FQDN 10111
379 #define KW_CUSTOM_DOMAIN 10112
380 #define KW_DNS_CACHE 10120
381 #define KW_DNS_CACHE_SIZE 10121
382 #define KW_DNS_CACHE_EXPIRE 10130
383 #define KW_DNS_CACHE_EXPIRE_FAILED 10131
384 #define KW_DNS_CACHE_HOSTS 10132
385 #define KW_PERSIST_ONLY 10140
386 #define KW_USE_RCPTID 10141
387 #define KW_USE_UNIQID 10142
388 #define KW_TZ_CONVERT 10150
389 #define KW_TS_FORMAT 10151
390 #define KW_FRAC_DIGITS 10152
391 #define KW_LOG_FIFO_SIZE 10160
392 #define KW_LOG_FETCH_LIMIT 10162
393 #define KW_LOG_IW_SIZE 10163
394 #define KW_LOG_PREFIX 10164
395 #define KW_PROGRAM_OVERRIDE 10165
396 #define KW_HOST_OVERRIDE 10166
397 #define KW_THROTTLE 10170
398 #define KW_THREADED 10171
399 #define KW_PASS_UNIX_CREDENTIALS 10231
400 #define KW_PERSIST_NAME 10302
401 #define KW_READ_OLD_RECORDS 10304
402 #define KW_USE_SYSLOGNG_PID 10305
403 #define KW_FLAGS 10190
404 #define KW_PAD_SIZE 10200
405 #define KW_TIME_ZONE 10201
406 #define KW_RECV_TIME_ZONE 10202
407 #define KW_SEND_TIME_ZONE 10203
408 #define KW_LOCAL_TIME_ZONE 10204
409 #define KW_FORMAT 10205
410 #define KW_TRUNCATE_SIZE 10206
411 #define KW_TIME_REOPEN 10210
412 #define KW_TIME_REAP 10211
413 #define KW_TIME_SLEEP 10212
414 #define KW_TMPL_ESCAPE 10220
415 #define KW_OPTIONAL 10230
416 #define KW_CREATE_DIRS 10240
417 #define KW_OWNER 10250
418 #define KW_GROUP 10251
419 #define KW_PERM 10252
420 #define KW_DIR_OWNER 10260
421 #define KW_DIR_GROUP 10261
422 #define KW_DIR_PERM 10262
423 #define KW_TEMPLATE 10270
424 #define KW_TEMPLATE_ESCAPE 10271
425 #define KW_TEMPLATE_FUNCTION 10272
426 #define KW_DEFAULT_FACILITY 10300
427 #define KW_DEFAULT_SEVERITY 10301
428 #define KW_PORT 10323
429 #define KW_USE_TIME_RECVD 10340
430 #define KW_FACILITY 10350
431 #define KW_SEVERITY 10351
432 #define KW_HOST 10352
433 #define KW_MATCH 10353
434 #define KW_MESSAGE 10354
435 #define KW_NETMASK 10355
436 #define KW_TAGS 10356
437 #define KW_NETMASK6 10357
438 #define KW_REWRITE 10370
439 #define KW_CONDITION 10371
440 #define KW_VALUE 10372
441 #define KW_YES 10380
442 #define KW_NO 10381
443 #define KW_IFDEF 10410
444 #define KW_ENDIF 10411
445 #define LL_DOTDOT 10420
446 #define LL_DOTDOTDOT 10421
447 #define LL_PRAGMA 10422
448 #define LL_EOL 10423
449 #define LL_ERROR 10424
450 #define LL_ARROW 10425
451 #define LL_IDENTIFIER 10430
452 #define LL_NUMBER 10431
453 #define LL_FLOAT 10432
454 #define LL_STRING 10433
455 #define LL_TOKEN 10434
456 #define LL_BLOCK 10435
457 #define KW_VALUE_PAIRS 10500
458 #define KW_EXCLUDE 10502
459 #define KW_PAIR 10503
460 #define KW_KEY 10504
461 #define KW_SCOPE 10505
462 #define KW_SHIFT 10506
463 #define KW_SHIFT_LEVELS 10507
464 #define KW_REKEY 10508
465 #define KW_ADD_PREFIX 10509
466 #define KW_REPLACE_PREFIX 10510
467 #define KW_ON_ERROR 10511
468 #define KW_RETRIES 10512
469 #define KW_FETCH_NO_DATA_DELAY 10513
470 #define KW_AMQP 10515
471 #define KW_EXCHANGE 10516
472 #define KW_EXCHANGE_DECLARE 10517
473 #define KW_EXCHANGE_TYPE 10518
474 #define KW_PERSISTENT 10519
475 #define KW_VHOST 10520
476 #define KW_ROUTING_KEY 10521
477 #define KW_BODY 10522
478 #define KW_AUTH_METHOD 10523
479 #define KW_PASSWORD 10524
480 #define KW_USERNAME 10525
481 #define KW_MAX_CHANNEL 10526
482 #define KW_FRAME_SIZE 10527
483 #define KW_HEARTBEAT 10528
484 #define KW_CA_FILE 10529
485 #define KW_KEY_FILE 10530
486 #define KW_CERT_FILE 10531
487 #define KW_PEER_VERIFY 10532
488 #define KW_TLS 10533
489
490 /* Value type. */
491 #if ! defined AFAMQP_STYPE && ! defined AFAMQP_STYPE_IS_DECLARED
492 typedef CFG_STYPE AFAMQP_STYPE;
493 # define AFAMQP_STYPE_IS_TRIVIAL 1
494 # define AFAMQP_STYPE_IS_DECLARED 1
495 #endif
496
497 /* Location type. */
498 typedef CFG_LTYPE AFAMQP_LTYPE;
499
500
501
502
503 int afamqp_parse (CfgLexer *lexer, LogDriver **instance, gpointer arg);
504
505
506 #endif /* !YY_AFAMQP_MODULES_AFAMQP_AFAMQP_GRAMMAR_H_INCLUDED */
507 /* Symbol kind. */
508 enum yysymbol_kind_t
509 {
510 YYSYMBOL_YYEMPTY = -2,
511 YYSYMBOL_YYEOF = 0, /* "end of file" */
512 YYSYMBOL_YYerror = 1, /* error */
513 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
514 YYSYMBOL_LL_CONTEXT_ROOT = 3, /* LL_CONTEXT_ROOT */
515 YYSYMBOL_LL_CONTEXT_DESTINATION = 4, /* LL_CONTEXT_DESTINATION */
516 YYSYMBOL_LL_CONTEXT_SOURCE = 5, /* LL_CONTEXT_SOURCE */
517 YYSYMBOL_LL_CONTEXT_PARSER = 6, /* LL_CONTEXT_PARSER */
518 YYSYMBOL_LL_CONTEXT_REWRITE = 7, /* LL_CONTEXT_REWRITE */
519 YYSYMBOL_LL_CONTEXT_FILTER = 8, /* LL_CONTEXT_FILTER */
520 YYSYMBOL_LL_CONTEXT_LOG = 9, /* LL_CONTEXT_LOG */
521 YYSYMBOL_LL_CONTEXT_BLOCK_DEF = 10, /* LL_CONTEXT_BLOCK_DEF */
522 YYSYMBOL_LL_CONTEXT_BLOCK_REF = 11, /* LL_CONTEXT_BLOCK_REF */
523 YYSYMBOL_LL_CONTEXT_BLOCK_CONTENT = 12, /* LL_CONTEXT_BLOCK_CONTENT */
524 YYSYMBOL_LL_CONTEXT_BLOCK_ARG = 13, /* LL_CONTEXT_BLOCK_ARG */
525 YYSYMBOL_LL_CONTEXT_PRAGMA = 14, /* LL_CONTEXT_PRAGMA */
526 YYSYMBOL_LL_CONTEXT_FORMAT = 15, /* LL_CONTEXT_FORMAT */
527 YYSYMBOL_LL_CONTEXT_TEMPLATE_FUNC = 16, /* LL_CONTEXT_TEMPLATE_FUNC */
528 YYSYMBOL_LL_CONTEXT_INNER_DEST = 17, /* LL_CONTEXT_INNER_DEST */
529 YYSYMBOL_LL_CONTEXT_INNER_SRC = 18, /* LL_CONTEXT_INNER_SRC */
530 YYSYMBOL_LL_CONTEXT_CLIENT_PROTO = 19, /* LL_CONTEXT_CLIENT_PROTO */
531 YYSYMBOL_LL_CONTEXT_SERVER_PROTO = 20, /* LL_CONTEXT_SERVER_PROTO */
532 YYSYMBOL_LL_CONTEXT_OPTIONS = 21, /* LL_CONTEXT_OPTIONS */
533 YYSYMBOL_LL_CONTEXT_CONFIG = 22, /* LL_CONTEXT_CONFIG */
534 YYSYMBOL_LL_CONTEXT_MAX = 23, /* LL_CONTEXT_MAX */
535 YYSYMBOL_KW_SOURCE = 24, /* KW_SOURCE */
536 YYSYMBOL_KW_FILTER = 25, /* KW_FILTER */
537 YYSYMBOL_KW_PARSER = 26, /* KW_PARSER */
538 YYSYMBOL_KW_DESTINATION = 27, /* KW_DESTINATION */
539 YYSYMBOL_KW_LOG = 28, /* KW_LOG */
540 YYSYMBOL_KW_OPTIONS = 29, /* KW_OPTIONS */
541 YYSYMBOL_KW_INCLUDE = 30, /* KW_INCLUDE */
542 YYSYMBOL_KW_BLOCK = 31, /* KW_BLOCK */
543 YYSYMBOL_KW_JUNCTION = 32, /* KW_JUNCTION */
544 YYSYMBOL_KW_CHANNEL = 33, /* KW_CHANNEL */
545 YYSYMBOL_KW_IF = 34, /* KW_IF */
546 YYSYMBOL_KW_ELSE = 35, /* KW_ELSE */
547 YYSYMBOL_KW_ELIF = 36, /* KW_ELIF */
548 YYSYMBOL_KW_INTERNAL = 37, /* KW_INTERNAL */
549 YYSYMBOL_KW_SYSLOG = 38, /* KW_SYSLOG */
550 YYSYMBOL_KW_MARK_FREQ = 39, /* KW_MARK_FREQ */
551 YYSYMBOL_KW_STATS_FREQ = 40, /* KW_STATS_FREQ */
552 YYSYMBOL_KW_STATS_LEVEL = 41, /* KW_STATS_LEVEL */
553 YYSYMBOL_KW_STATS_LIFETIME = 42, /* KW_STATS_LIFETIME */
554 YYSYMBOL_KW_FLUSH_LINES = 43, /* KW_FLUSH_LINES */
555 YYSYMBOL_KW_SUPPRESS = 44, /* KW_SUPPRESS */
556 YYSYMBOL_KW_FLUSH_TIMEOUT = 45, /* KW_FLUSH_TIMEOUT */
557 YYSYMBOL_KW_LOG_MSG_SIZE = 46, /* KW_LOG_MSG_SIZE */
558 YYSYMBOL_KW_FILE_TEMPLATE = 47, /* KW_FILE_TEMPLATE */
559 YYSYMBOL_KW_PROTO_TEMPLATE = 48, /* KW_PROTO_TEMPLATE */
560 YYSYMBOL_KW_MARK_MODE = 49, /* KW_MARK_MODE */
561 YYSYMBOL_KW_ENCODING = 50, /* KW_ENCODING */
562 YYSYMBOL_KW_TYPE = 51, /* KW_TYPE */
563 YYSYMBOL_KW_STATS_MAX_DYNAMIC = 52, /* KW_STATS_MAX_DYNAMIC */
564 YYSYMBOL_KW_MIN_IW_SIZE_PER_READER = 53, /* KW_MIN_IW_SIZE_PER_READER */
565 YYSYMBOL_KW_WORKERS = 54, /* KW_WORKERS */
566 YYSYMBOL_KW_BATCH_LINES = 55, /* KW_BATCH_LINES */
567 YYSYMBOL_KW_BATCH_TIMEOUT = 56, /* KW_BATCH_TIMEOUT */
568 YYSYMBOL_KW_TRIM_LARGE_MESSAGES = 57, /* KW_TRIM_LARGE_MESSAGES */
569 YYSYMBOL_KW_CHAIN_HOSTNAMES = 58, /* KW_CHAIN_HOSTNAMES */
570 YYSYMBOL_KW_NORMALIZE_HOSTNAMES = 59, /* KW_NORMALIZE_HOSTNAMES */
571 YYSYMBOL_KW_KEEP_HOSTNAME = 60, /* KW_KEEP_HOSTNAME */
572 YYSYMBOL_KW_CHECK_HOSTNAME = 61, /* KW_CHECK_HOSTNAME */
573 YYSYMBOL_KW_BAD_HOSTNAME = 62, /* KW_BAD_HOSTNAME */
574 YYSYMBOL_KW_KEEP_TIMESTAMP = 63, /* KW_KEEP_TIMESTAMP */
575 YYSYMBOL_KW_USE_DNS = 64, /* KW_USE_DNS */
576 YYSYMBOL_KW_USE_FQDN = 65, /* KW_USE_FQDN */
577 YYSYMBOL_KW_CUSTOM_DOMAIN = 66, /* KW_CUSTOM_DOMAIN */
578 YYSYMBOL_KW_DNS_CACHE = 67, /* KW_DNS_CACHE */
579 YYSYMBOL_KW_DNS_CACHE_SIZE = 68, /* KW_DNS_CACHE_SIZE */
580 YYSYMBOL_KW_DNS_CACHE_EXPIRE = 69, /* KW_DNS_CACHE_EXPIRE */
581 YYSYMBOL_KW_DNS_CACHE_EXPIRE_FAILED = 70, /* KW_DNS_CACHE_EXPIRE_FAILED */
582 YYSYMBOL_KW_DNS_CACHE_HOSTS = 71, /* KW_DNS_CACHE_HOSTS */
583 YYSYMBOL_KW_PERSIST_ONLY = 72, /* KW_PERSIST_ONLY */
584 YYSYMBOL_KW_USE_RCPTID = 73, /* KW_USE_RCPTID */
585 YYSYMBOL_KW_USE_UNIQID = 74, /* KW_USE_UNIQID */
586 YYSYMBOL_KW_TZ_CONVERT = 75, /* KW_TZ_CONVERT */
587 YYSYMBOL_KW_TS_FORMAT = 76, /* KW_TS_FORMAT */
588 YYSYMBOL_KW_FRAC_DIGITS = 77, /* KW_FRAC_DIGITS */
589 YYSYMBOL_KW_LOG_FIFO_SIZE = 78, /* KW_LOG_FIFO_SIZE */
590 YYSYMBOL_KW_LOG_FETCH_LIMIT = 79, /* KW_LOG_FETCH_LIMIT */
591 YYSYMBOL_KW_LOG_IW_SIZE = 80, /* KW_LOG_IW_SIZE */
592 YYSYMBOL_KW_LOG_PREFIX = 81, /* KW_LOG_PREFIX */
593 YYSYMBOL_KW_PROGRAM_OVERRIDE = 82, /* KW_PROGRAM_OVERRIDE */
594 YYSYMBOL_KW_HOST_OVERRIDE = 83, /* KW_HOST_OVERRIDE */
595 YYSYMBOL_KW_THROTTLE = 84, /* KW_THROTTLE */
596 YYSYMBOL_KW_THREADED = 85, /* KW_THREADED */
597 YYSYMBOL_KW_PASS_UNIX_CREDENTIALS = 86, /* KW_PASS_UNIX_CREDENTIALS */
598 YYSYMBOL_KW_PERSIST_NAME = 87, /* KW_PERSIST_NAME */
599 YYSYMBOL_KW_READ_OLD_RECORDS = 88, /* KW_READ_OLD_RECORDS */
600 YYSYMBOL_KW_USE_SYSLOGNG_PID = 89, /* KW_USE_SYSLOGNG_PID */
601 YYSYMBOL_KW_FLAGS = 90, /* KW_FLAGS */
602 YYSYMBOL_KW_PAD_SIZE = 91, /* KW_PAD_SIZE */
603 YYSYMBOL_KW_TIME_ZONE = 92, /* KW_TIME_ZONE */
604 YYSYMBOL_KW_RECV_TIME_ZONE = 93, /* KW_RECV_TIME_ZONE */
605 YYSYMBOL_KW_SEND_TIME_ZONE = 94, /* KW_SEND_TIME_ZONE */
606 YYSYMBOL_KW_LOCAL_TIME_ZONE = 95, /* KW_LOCAL_TIME_ZONE */
607 YYSYMBOL_KW_FORMAT = 96, /* KW_FORMAT */
608 YYSYMBOL_KW_TRUNCATE_SIZE = 97, /* KW_TRUNCATE_SIZE */
609 YYSYMBOL_KW_TIME_REOPEN = 98, /* KW_TIME_REOPEN */
610 YYSYMBOL_KW_TIME_REAP = 99, /* KW_TIME_REAP */
611 YYSYMBOL_KW_TIME_SLEEP = 100, /* KW_TIME_SLEEP */
612 YYSYMBOL_KW_TMPL_ESCAPE = 101, /* KW_TMPL_ESCAPE */
613 YYSYMBOL_KW_OPTIONAL = 102, /* KW_OPTIONAL */
614 YYSYMBOL_KW_CREATE_DIRS = 103, /* KW_CREATE_DIRS */
615 YYSYMBOL_KW_OWNER = 104, /* KW_OWNER */
616 YYSYMBOL_KW_GROUP = 105, /* KW_GROUP */
617 YYSYMBOL_KW_PERM = 106, /* KW_PERM */
618 YYSYMBOL_KW_DIR_OWNER = 107, /* KW_DIR_OWNER */
619 YYSYMBOL_KW_DIR_GROUP = 108, /* KW_DIR_GROUP */
620 YYSYMBOL_KW_DIR_PERM = 109, /* KW_DIR_PERM */
621 YYSYMBOL_KW_TEMPLATE = 110, /* KW_TEMPLATE */
622 YYSYMBOL_KW_TEMPLATE_ESCAPE = 111, /* KW_TEMPLATE_ESCAPE */
623 YYSYMBOL_KW_TEMPLATE_FUNCTION = 112, /* KW_TEMPLATE_FUNCTION */
624 YYSYMBOL_KW_DEFAULT_FACILITY = 113, /* KW_DEFAULT_FACILITY */
625 YYSYMBOL_KW_DEFAULT_SEVERITY = 114, /* KW_DEFAULT_SEVERITY */
626 YYSYMBOL_KW_PORT = 115, /* KW_PORT */
627 YYSYMBOL_KW_USE_TIME_RECVD = 116, /* KW_USE_TIME_RECVD */
628 YYSYMBOL_KW_FACILITY = 117, /* KW_FACILITY */
629 YYSYMBOL_KW_SEVERITY = 118, /* KW_SEVERITY */
630 YYSYMBOL_KW_HOST = 119, /* KW_HOST */
631 YYSYMBOL_KW_MATCH = 120, /* KW_MATCH */
632 YYSYMBOL_KW_MESSAGE = 121, /* KW_MESSAGE */
633 YYSYMBOL_KW_NETMASK = 122, /* KW_NETMASK */
634 YYSYMBOL_KW_TAGS = 123, /* KW_TAGS */
635 YYSYMBOL_KW_NETMASK6 = 124, /* KW_NETMASK6 */
636 YYSYMBOL_KW_REWRITE = 125, /* KW_REWRITE */
637 YYSYMBOL_KW_CONDITION = 126, /* KW_CONDITION */
638 YYSYMBOL_KW_VALUE = 127, /* KW_VALUE */
639 YYSYMBOL_KW_YES = 128, /* KW_YES */
640 YYSYMBOL_KW_NO = 129, /* KW_NO */
641 YYSYMBOL_KW_IFDEF = 130, /* KW_IFDEF */
642 YYSYMBOL_KW_ENDIF = 131, /* KW_ENDIF */
643 YYSYMBOL_LL_DOTDOT = 132, /* LL_DOTDOT */
644 YYSYMBOL_LL_DOTDOTDOT = 133, /* LL_DOTDOTDOT */
645 YYSYMBOL_LL_PRAGMA = 134, /* LL_PRAGMA */
646 YYSYMBOL_LL_EOL = 135, /* LL_EOL */
647 YYSYMBOL_LL_ERROR = 136, /* LL_ERROR */
648 YYSYMBOL_LL_ARROW = 137, /* LL_ARROW */
649 YYSYMBOL_LL_IDENTIFIER = 138, /* LL_IDENTIFIER */
650 YYSYMBOL_LL_NUMBER = 139, /* LL_NUMBER */
651 YYSYMBOL_LL_FLOAT = 140, /* LL_FLOAT */
652 YYSYMBOL_LL_STRING = 141, /* LL_STRING */
653 YYSYMBOL_LL_TOKEN = 142, /* LL_TOKEN */
654 YYSYMBOL_LL_BLOCK = 143, /* LL_BLOCK */
655 YYSYMBOL_KW_VALUE_PAIRS = 144, /* KW_VALUE_PAIRS */
656 YYSYMBOL_KW_EXCLUDE = 145, /* KW_EXCLUDE */
657 YYSYMBOL_KW_PAIR = 146, /* KW_PAIR */
658 YYSYMBOL_KW_KEY = 147, /* KW_KEY */
659 YYSYMBOL_KW_SCOPE = 148, /* KW_SCOPE */
660 YYSYMBOL_KW_SHIFT = 149, /* KW_SHIFT */
661 YYSYMBOL_KW_SHIFT_LEVELS = 150, /* KW_SHIFT_LEVELS */
662 YYSYMBOL_KW_REKEY = 151, /* KW_REKEY */
663 YYSYMBOL_KW_ADD_PREFIX = 152, /* KW_ADD_PREFIX */
664 YYSYMBOL_KW_REPLACE_PREFIX = 153, /* KW_REPLACE_PREFIX */
665 YYSYMBOL_KW_ON_ERROR = 154, /* KW_ON_ERROR */
666 YYSYMBOL_KW_RETRIES = 155, /* KW_RETRIES */
667 YYSYMBOL_KW_FETCH_NO_DATA_DELAY = 156, /* KW_FETCH_NO_DATA_DELAY */
668 YYSYMBOL_KW_AMQP = 157, /* KW_AMQP */
669 YYSYMBOL_KW_EXCHANGE = 158, /* KW_EXCHANGE */
670 YYSYMBOL_KW_EXCHANGE_DECLARE = 159, /* KW_EXCHANGE_DECLARE */
671 YYSYMBOL_KW_EXCHANGE_TYPE = 160, /* KW_EXCHANGE_TYPE */
672 YYSYMBOL_KW_PERSISTENT = 161, /* KW_PERSISTENT */
673 YYSYMBOL_KW_VHOST = 162, /* KW_VHOST */
674 YYSYMBOL_KW_ROUTING_KEY = 163, /* KW_ROUTING_KEY */
675 YYSYMBOL_KW_BODY = 164, /* KW_BODY */
676 YYSYMBOL_KW_AUTH_METHOD = 165, /* KW_AUTH_METHOD */
677 YYSYMBOL_KW_PASSWORD = 166, /* KW_PASSWORD */
678 YYSYMBOL_KW_USERNAME = 167, /* KW_USERNAME */
679 YYSYMBOL_KW_MAX_CHANNEL = 168, /* KW_MAX_CHANNEL */
680 YYSYMBOL_KW_FRAME_SIZE = 169, /* KW_FRAME_SIZE */
681 YYSYMBOL_KW_HEARTBEAT = 170, /* KW_HEARTBEAT */
682 YYSYMBOL_KW_CA_FILE = 171, /* KW_CA_FILE */
683 YYSYMBOL_KW_KEY_FILE = 172, /* KW_KEY_FILE */
684 YYSYMBOL_KW_CERT_FILE = 173, /* KW_CERT_FILE */
685 YYSYMBOL_KW_PEER_VERIFY = 174, /* KW_PEER_VERIFY */
686 YYSYMBOL_KW_TLS = 175, /* KW_TLS */
687 YYSYMBOL_176_ = 176, /* '(' */
688 YYSYMBOL_177_ = 177, /* ')' */
689 YYSYMBOL_178_ = 178, /* '{' */
690 YYSYMBOL_179_ = 179, /* '}' */
691 YYSYMBOL_180_ = 180, /* ';' */
692 YYSYMBOL_181_ = 181, /* ':' */
693 YYSYMBOL_YYACCEPT = 182, /* $accept */
694 YYSYMBOL_start = 183, /* start */
695 YYSYMBOL_184_1 = 184, /* $@1 */
696 YYSYMBOL_afamqp_options = 185, /* afamqp_options */
697 YYSYMBOL_afamqp_option = 186, /* afamqp_option */
698 YYSYMBOL_187_2 = 187, /* $@2 */
699 YYSYMBOL_afamqp_tls_options = 188, /* afamqp_tls_options */
700 YYSYMBOL_afamqp_tls_option = 189, /* afamqp_tls_option */
701 YYSYMBOL_template_content_inner = 190, /* template_content_inner */
702 YYSYMBOL_template_content = 191, /* template_content */
703 YYSYMBOL_192_8 = 192, /* $@8 */
704 YYSYMBOL_string = 193, /* string */
705 YYSYMBOL_yesno = 194, /* yesno */
706 YYSYMBOL_nonnegative_integer64 = 195, /* nonnegative_integer64 */
707 YYSYMBOL_nonnegative_integer = 196, /* nonnegative_integer */
708 YYSYMBOL_positive_integer64 = 197, /* positive_integer64 */
709 YYSYMBOL_positive_integer = 198, /* positive_integer */
710 YYSYMBOL_path = 199, /* path */
711 YYSYMBOL_path_check = 200, /* path_check */
712 YYSYMBOL_path_secret = 201, /* path_secret */
713 YYSYMBOL_string_list = 202, /* string_list */
714 YYSYMBOL_string_list_build = 203, /* string_list_build */
715 YYSYMBOL_driver_option = 204, /* driver_option */
716 YYSYMBOL_inner_dest = 205, /* inner_dest */
717 YYSYMBOL_dest_driver_option = 206, /* dest_driver_option */
718 YYSYMBOL_threaded_dest_driver_general_option = 207, /* threaded_dest_driver_general_option */
719 YYSYMBOL_template_option = 208, /* template_option */
720 YYSYMBOL_value_pair_option = 209, /* value_pair_option */
721 YYSYMBOL_210_16 = 210, /* $@16 */
722 YYSYMBOL_vp_options = 211, /* vp_options */
723 YYSYMBOL_vp_option = 212, /* vp_option */
724 YYSYMBOL_213_17 = 213, /* $@17 */
725 YYSYMBOL_214_18 = 214, /* $@18 */
726 YYSYMBOL_215_19 = 215, /* $@19 */
727 YYSYMBOL_vp_scope_list = 216, /* vp_scope_list */
728 YYSYMBOL_vp_rekey_options = 217, /* vp_rekey_options */
729 YYSYMBOL_vp_rekey_option = 218 /* vp_rekey_option */
730 };
731 typedef enum yysymbol_kind_t yysymbol_kind_t;
732
733
734
735 /* Unqualified %code blocks. */
736 #line 31 "modules/afamqp/afamqp-grammar.y"
737
738
739 #include "cfg-grammar-internal.h"
740
741 #line 52 "modules/afamqp/afamqp-grammar.y"
742
743
744 # define YYLLOC_DEFAULT(Current, Rhs, N) \
745 do { \
746 if (N) \
747 { \
748 (Current).level = YYRHSLOC(Rhs, 1).level; \
749 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
750 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
751 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
752 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
753 } \
754 else \
755 { \
756 (Current).level = YYRHSLOC(Rhs, 0).level; \
757 (Current).first_line = (Current).last_line = \
758 YYRHSLOC (Rhs, 0).last_line; \
759 (Current).first_column = (Current).last_column = \
760 YYRHSLOC (Rhs, 0).last_column; \
761 } \
762 } while (0)
763
764 #define CHECK_ERROR_WITHOUT_MESSAGE(val, token) do { \
765 if (!(val)) \
766 { \
767 YYERROR; \
768 } \
769 } while (0)
770
771 #define CHECK_ERROR(val, token, errorfmt, ...) do { \
772 if (!(val)) \
773 { \
774 if (errorfmt) \
775 { \
776 gchar __buf[256]; \
777 g_snprintf(__buf, sizeof(__buf), errorfmt, ## __VA_ARGS__); \
778 yyerror(& (token), lexer, NULL, NULL, __buf); \
779 } \
780 YYERROR; \
781 } \
782 } while (0)
783
784 #define CHECK_ERROR_GERROR(val, token, error, errorfmt, ...) do { \
785 if (!(val)) \
786 { \
787 if (errorfmt) \
788 { \
789 gchar __buf[256]; \
790 g_snprintf(__buf, sizeof(__buf), errorfmt ", error=%s", ## __VA_ARGS__, error->message); \
791 yyerror(& (token), lexer, NULL, NULL, __buf); \
792 } \
793 g_clear_error(&error); \
794 YYERROR; \
795 } \
796 } while (0)
797
798 #define YYMAXDEPTH 20000
799
800
801
802 #line 803 "modules/afamqp/afamqp-grammar.c"
803
804 #ifdef short
805 # undef short
806 #endif
807
808 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
809 <limits.h> and (if available) <stdint.h> are included
810 so that the code can choose integer types of a good width. */
811
812 #ifndef __PTRDIFF_MAX__
813 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
814 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
815 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
816 # define YY_STDINT_H
817 # endif
818 #endif
819
820 /* Narrow types that promote to a signed type and that can represent a
821 signed or unsigned integer of at least N bits. In tables they can
822 save space and decrease cache pressure. Promoting to a signed type
823 helps avoid bugs in integer arithmetic. */
824
825 #ifdef __INT_LEAST8_MAX__
826 typedef __INT_LEAST8_TYPE__ yytype_int8;
827 #elif defined YY_STDINT_H
828 typedef int_least8_t yytype_int8;
829 #else
830 typedef signed char yytype_int8;
831 #endif
832
833 #ifdef __INT_LEAST16_MAX__
834 typedef __INT_LEAST16_TYPE__ yytype_int16;
835 #elif defined YY_STDINT_H
836 typedef int_least16_t yytype_int16;
837 #else
838 typedef short yytype_int16;
839 #endif
840
841 /* Work around bug in HP-UX 11.23, which defines these macros
842 incorrectly for preprocessor constants. This workaround can likely
843 be removed in 2023, as HPE has promised support for HP-UX 11.23
844 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
845 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
846 #ifdef __hpux
847 # undef UINT_LEAST8_MAX
848 # undef UINT_LEAST16_MAX
849 # define UINT_LEAST8_MAX 255
850 # define UINT_LEAST16_MAX 65535
851 #endif
852
853 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
854 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
855 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
856 && UINT_LEAST8_MAX <= INT_MAX)
857 typedef uint_least8_t yytype_uint8;
858 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
859 typedef unsigned char yytype_uint8;
860 #else
861 typedef short yytype_uint8;
862 #endif
863
864 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
865 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
866 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
867 && UINT_LEAST16_MAX <= INT_MAX)
868 typedef uint_least16_t yytype_uint16;
869 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
870 typedef unsigned short yytype_uint16;
871 #else
872 typedef int yytype_uint16;
873 #endif
874
875 #ifndef YYPTRDIFF_T
876 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
877 # define YYPTRDIFF_T __PTRDIFF_TYPE__
878 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
879 # elif defined PTRDIFF_MAX
880 # ifndef ptrdiff_t
881 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
882 # endif
883 # define YYPTRDIFF_T ptrdiff_t
884 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
885 # else
886 # define YYPTRDIFF_T long
887 # define YYPTRDIFF_MAXIMUM LONG_MAX
888 # endif
889 #endif
890
891 #ifndef YYSIZE_T
892 # ifdef __SIZE_TYPE__
893 # define YYSIZE_T __SIZE_TYPE__
894 # elif defined size_t
895 # define YYSIZE_T size_t
896 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
897 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
898 # define YYSIZE_T size_t
899 # else
900 # define YYSIZE_T unsigned
901 # endif
902 #endif
903
904 #define YYSIZE_MAXIMUM \
905 YY_CAST (YYPTRDIFF_T, \
906 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
907 ? YYPTRDIFF_MAXIMUM \
908 : YY_CAST (YYSIZE_T, -1)))
909
910 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
911
912
913 /* Stored state numbers (used for stacks). */
914 typedef yytype_uint8 yy_state_t;
915
916 /* State numbers in computations. */
917 typedef int yy_state_fast_t;
918
919 #ifndef YY_
920 # if defined YYENABLE_NLS && YYENABLE_NLS
921 # if ENABLE_NLS
922 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
923 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
924 # endif
925 # endif
926 # ifndef YY_
927 # define YY_(Msgid) Msgid
928 # endif
929 #endif
930
931
932 #ifndef YY_ATTRIBUTE_PURE
933 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
934 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
935 # else
936 # define YY_ATTRIBUTE_PURE
937 # endif
938 #endif
939
940 #ifndef YY_ATTRIBUTE_UNUSED
941 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
942 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
943 # else
944 # define YY_ATTRIBUTE_UNUSED
945 # endif
946 #endif
947
948 /* Suppress unused-variable warnings by "using" E. */
949 #if ! defined lint || defined __GNUC__
950 # define YY_USE(E) ((void) (E))
951 #else
952 # define YY_USE(E) /* empty */
953 #endif
954
955 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
956 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
957 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
958 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
959 _Pragma ("GCC diagnostic push") \
960 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
961 # else
962 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
963 _Pragma ("GCC diagnostic push") \
964 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
965 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
966 # endif
967 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
968 _Pragma ("GCC diagnostic pop")
969 #else
970 # define YY_INITIAL_VALUE(Value) Value
971 #endif
972 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
973 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
974 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
975 #endif
976 #ifndef YY_INITIAL_VALUE
977 # define YY_INITIAL_VALUE(Value) /* Nothing. */
978 #endif
979
980 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
981 # define YY_IGNORE_USELESS_CAST_BEGIN \
982 _Pragma ("GCC diagnostic push") \
983 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
984 # define YY_IGNORE_USELESS_CAST_END \
985 _Pragma ("GCC diagnostic pop")
986 #endif
987 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
988 # define YY_IGNORE_USELESS_CAST_BEGIN
989 # define YY_IGNORE_USELESS_CAST_END
990 #endif
991
992
993 #define YY_ASSERT(E) ((void) (0 && (E)))
994
995 #if 1
996
997 /* The parser invokes alloca or malloc; define the necessary symbols. */
998
999 # ifdef YYSTACK_USE_ALLOCA
1000 # if YYSTACK_USE_ALLOCA
1001 # ifdef __GNUC__
1002 # define YYSTACK_ALLOC __builtin_alloca
1003 # elif defined __BUILTIN_VA_ARG_INCR
1004 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
1005 # elif defined _AIX
1006 # define YYSTACK_ALLOC __alloca
1007 # elif defined _MSC_VER
1008 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
1009 # define alloca _alloca
1010 # else
1011 # define YYSTACK_ALLOC alloca
1012 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
1013 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1014 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
1015 # ifndef EXIT_SUCCESS
1016 # define EXIT_SUCCESS 0
1017 # endif
1018 # endif
1019 # endif
1020 # endif
1021 # endif
1022
1023 # ifdef YYSTACK_ALLOC
1024 /* Pacify GCC's 'empty if-body' warning. */
1025 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
1026 # ifndef YYSTACK_ALLOC_MAXIMUM
1027 /* The OS might guarantee only one guard page at the bottom of the stack,
1028 and a page size can be as small as 4096 bytes. So we cannot safely
1029 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
1030 to allow for a few compiler-allocated temporary stack slots. */
1031 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
1032 # endif
1033 # else
1034 # define YYSTACK_ALLOC YYMALLOC
1035 # define YYSTACK_FREE YYFREE
1036 # ifndef YYSTACK_ALLOC_MAXIMUM
1037 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
1038 # endif
1039 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
1040 && ! ((defined YYMALLOC || defined malloc) \
1041 && (defined YYFREE || defined free)))
1042 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
1043 # ifndef EXIT_SUCCESS
1044 # define EXIT_SUCCESS 0
1045 # endif
1046 # endif
1047 # ifndef YYMALLOC
1048 # define YYMALLOC malloc
1049 # if ! defined malloc && ! defined EXIT_SUCCESS
1050 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
1051 # endif
1052 # endif
1053 # ifndef YYFREE
1054 # define YYFREE free
1055 # if ! defined free && ! defined EXIT_SUCCESS
1056 void free (void *); /* INFRINGES ON USER NAME SPACE */
1057 # endif
1058 # endif
1059 # endif
1060 #endif /* 1 */
1061
1062 #if (! defined yyoverflow \
1063 && (! defined __cplusplus \
1064 || (defined AFAMQP_LTYPE_IS_TRIVIAL && AFAMQP_LTYPE_IS_TRIVIAL \
1065 && defined AFAMQP_STYPE_IS_TRIVIAL && AFAMQP_STYPE_IS_TRIVIAL)))
1066
1067 /* A type that is properly aligned for any stack member. */
1068 union yyalloc
1069 {
1070 yy_state_t yyss_alloc;
1071 YYSTYPE yyvs_alloc;
1072 YYLTYPE yyls_alloc;
1073 };
1074
1075 /* The size of the maximum gap between one aligned stack and the next. */
1076 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
1077
1078 /* The size of an array large to enough to hold all stacks, each with
1079 N elements. */
1080 # define YYSTACK_BYTES(N) \
1081 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
1082 + YYSIZEOF (YYLTYPE)) \
1083 + 2 * YYSTACK_GAP_MAXIMUM)
1084
1085 # define YYCOPY_NEEDED 1
1086
1087 /* Relocate STACK from its old location to the new one. The
1088 local variables YYSIZE and YYSTACKSIZE give the old and new number of
1089 elements in the stack, and YYPTR gives the new location of the
1090 stack. Advance YYPTR to a properly aligned location for the next
1091 stack. */
1092 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
1093 do \
1094 { \
1095 YYPTRDIFF_T yynewbytes; \
1096 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
1097 Stack = &yyptr->Stack_alloc; \
1098 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
1099 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
1100 } \
1101 while (0)
1102
1103 #endif
1104
1105 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
1106 /* Copy COUNT objects from SRC to DST. The source and destination do
1107 not overlap. */
1108 # ifndef YYCOPY
1109 # if defined __GNUC__ && 1 < __GNUC__
1110 # define YYCOPY(Dst, Src, Count) \
1111 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
1112 # else
1113 # define YYCOPY(Dst, Src, Count) \
1114 do \
1115 { \
1116 YYPTRDIFF_T yyi; \
1117 for (yyi = 0; yyi < (Count); yyi++) \
1118 (Dst)[yyi] = (Src)[yyi]; \
1119 } \
1120 while (0)
1121 # endif
1122 # endif
1123 #endif /* !YYCOPY_NEEDED */
1124
1125 /* YYFINAL -- State number of the termination state. */
1126 #define YYFINAL 4
1127 /* YYLAST -- Last index in YYTABLE. */
1128 #define YYLAST 216
1129
1130 /* YYNTOKENS -- Number of terminals. */
1131 #define YYNTOKENS 182
1132 /* YYNNTS -- Number of nonterminals. */
1133 #define YYNNTS 37
1134 /* YYNRULES -- Number of rules. */
1135 #define YYNRULES 88
1136 /* YYNSTATES -- Number of states. */
1137 #define YYNSTATES 230
1138
1139 /* YYMAXUTOK -- Last valid token kind. */
1140 #define YYMAXUTOK 10533
1141
1142
1143 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
1144 as returned by yylex, with out-of-bounds checking. */
1145 #define YYTRANSLATE(YYX) \
1146 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
1147 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
1148 : YYSYMBOL_YYUNDEF)
1149
1150 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
1151 as returned by yylex. */
1152 static const yytype_uint8 yytranslate[] =
1153 {
1154 0, 3, 4, 5, 6, 7, 8, 9, 10, 11,
1155 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
1156 22, 23, 2, 2, 2, 2, 2, 2, 2, 2,
1157 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1158 176, 177, 2, 2, 2, 2, 2, 2, 2, 2,
1159 2, 2, 2, 2, 2, 2, 2, 2, 181, 180,
1160 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1161 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1162 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1163 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1164 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1165 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1166 2, 2, 2, 178, 2, 179, 2, 2, 2, 2,
1167 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1168 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1169 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1170 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1171 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1172 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1173 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1174 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1175 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1176 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1177 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1178 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1179 2, 2, 2, 2, 2, 2, 1, 2, 2, 2,
1180 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1181 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1182 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1183 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1184 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1185 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1186 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1187 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1188 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1189 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1190 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1191 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1192 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1193 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1194 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1195 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1196 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1197 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1198 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1199 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1200 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1201 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1202 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1203 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1204 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1205 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1206 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1207 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1208 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1209 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1210 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1211 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1212 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1213 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1214 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1215 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1216 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1217 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1218 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1219 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1220 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1221 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1222 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1223 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1224 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1225 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1226 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1227 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1228 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1229 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1230 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1231 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1232 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1233 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1234 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1235 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1236 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1237 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1238 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1239 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1240 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1241 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1242 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1243 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1244 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1245 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1246 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1247 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1248 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1249 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1250 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1251 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1252 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1253 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1254 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1255 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1256 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1257 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1258 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1259 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1260 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1261 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1262 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1263 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1264 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1265 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1266 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1267 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1268 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1269 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1270 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1271 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1272 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1273 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1274 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1275 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1276 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1277 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1278 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1279 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1280 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1281 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1282 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1283 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1284 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1285 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1286 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1287 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1288 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1289 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1290 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1291 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1292 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1293 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1294 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1295 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1296 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1297 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1298 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1299 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1300 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1301 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1302 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1303 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1304 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1305 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1306 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1307 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1308 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1309 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1310 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1311 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1312 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1313 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1314 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1315 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1316 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1317 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1318 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1319 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1320 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1321 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1322 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1323 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1324 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1325 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1326 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1327 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1328 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1329 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1330 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1331 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1332 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1333 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1334 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1335 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1336 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1337 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1338 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1339 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1340 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1341 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1342 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1343 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1344 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1345 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1346 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1347 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1348 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1349 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1350 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1351 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1352 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1353 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1354 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1355 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1356 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1357 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1358 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1359 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1360 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1361 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1362 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1363 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1364 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1365 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1366 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1367 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1368 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1369 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1370 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1371 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1372 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1373 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1374 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1375 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1376 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1377 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1378 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1379 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1380 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1381 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1382 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1383 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1384 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1385 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1386 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1387 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1388 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1389 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1390 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1391 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1392 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1393 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1394 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1395 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1396 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1397 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1398 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1399 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1400 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1401 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1402 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1403 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1404 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1405 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1406 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1407 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1408 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1409 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1410 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1411 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1412 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1413 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1414 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1415 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1416 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1417 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1418 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1419 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1420 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1421 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1422 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1423 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1424 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1425 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1426 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1427 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1428 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1429 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1430 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1431 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1432 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1433 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1434 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1435 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1436 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1437 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1438 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1439 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1440 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1441 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1442 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1443 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1444 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1445 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1446 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1447 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1448 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1449 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1450 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1451 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1452 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1453 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1454 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1455 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1456 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1457 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1458 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1459 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1460 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1461 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1462 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1463 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1464 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1465 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1466 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1467 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1468 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1469 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1470 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1471 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1472 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1473 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1474 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1475 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1476 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1477 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1478 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1479 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1480 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1481 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1482 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1483 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1484 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1485 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1486 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1487 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1488 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1489 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1490 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1491 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1492 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1493 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1494 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1495 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1496 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1497 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1498 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1499 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1500 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1501 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1502 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1503 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1504 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1505 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1506 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1507 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1508 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1509 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1510 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1511 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1512 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1513 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1514 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1515 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1516 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1517 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1518 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1519 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1520 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1521 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1522 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1523 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1524 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1525 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1526 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1527 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1528 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1529 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1530 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1531 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1532 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1533 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1534 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1535 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1536 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1537 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1538 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1539 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1540 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1541 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1542 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1543 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1544 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1545 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1546 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1547 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1548 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1549 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1550 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1551 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1552 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1553 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1554 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1555 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1556 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1557 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1558 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1559 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1560 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1561 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1562 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1563 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1564 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1565 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1566 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1567 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1568 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1569 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1570 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1571 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1572 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1573 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1574 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1575 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1576 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1577 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1578 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1579 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1580 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1581 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1582 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1583 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1584 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1585 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1586 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1587 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1588 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1589 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1590 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1591 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1592 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1593 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1594 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1595 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1596 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1597 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1598 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1599 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1600 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1601 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1602 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1603 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1604 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1605 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1606 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1607 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1608 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1609 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1610 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1611 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1612 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1613 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1614 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1615 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1616 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1617 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1618 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1619 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1620 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1621 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1622 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1623 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1624 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1625 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1626 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1627 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1628 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1629 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1630 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1631 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1632 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1633 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1634 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1635 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1636 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1637 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1638 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1639 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1640 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1641 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1642 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1643 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1644 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1645 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1646 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1647 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1648 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1649 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1650 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1651 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1652 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1653 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1654 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1655 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1656 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1657 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1658 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1659 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1660 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1661 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1662 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1663 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1664 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1665 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1666 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1667 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1668 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1669 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1670 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1671 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1672 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1673 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1674 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1675 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1676 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1677 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1678 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1679 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1680 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1681 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1682 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1683 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1684 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1685 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1686 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1687 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1688 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1689 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1690 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1691 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1692 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1693 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1694 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1695 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1696 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1697 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1698 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1699 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1700 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1701 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1702 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1703 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1704 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1705 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1706 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1707 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1708 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1709 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1710 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1711 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1712 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1713 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1714 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1715 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1716 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1717 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1718 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1719 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1720 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1721 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1722 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1723 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1724 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1725 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1726 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1727 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1728 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1729 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1730 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1731 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1732 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1733 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1734 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1735 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1736 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1737 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1738 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1739 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1740 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1741 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1742 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1743 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1744 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1745 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1746 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1747 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1748 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1749 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1750 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1751 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1752 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1753 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1754 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1755 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1756 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1757 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1758 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1759 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1760 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1761 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1762 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1763 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1764 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1765 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1766 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1767 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1768 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1769 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1770 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1771 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1772 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1773 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1774 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1775 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1776 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1777 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1778 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1779 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1780 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1781 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1782 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1783 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1784 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1785 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1786 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1787 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1788 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1789 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1790 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1791 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1792 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1793 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1794 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1795 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1796 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1797 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1798 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1799 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1800 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1801 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1802 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1803 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1804 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1805 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1806 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1807 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1808 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1809 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1810 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1811 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1812 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1813 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1814 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1815 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1816 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1817 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1818 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1819 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1820 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1821 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1822 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1823 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1824 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1825 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1826 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1827 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1828 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1829 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1830 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1831 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1832 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1833 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1834 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1835 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1836 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1837 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1838 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1839 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1840 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1841 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1842 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1843 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1844 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1845 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1846 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1847 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1848 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1849 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1850 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1851 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1852 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1853 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1854 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1855 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1856 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1857 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1858 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1859 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1860 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1861 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1862 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1863 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1864 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1865 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1866 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1867 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1868 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1869 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1870 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1871 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1872 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1873 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1874 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1875 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1876 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1877 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1878 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1879 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1880 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1881 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1882 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1883 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1884 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1885 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1886 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1887 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1888 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1889 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1890 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1891 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1892 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1893 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1894 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1895 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1896 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1897 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1898 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1899 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1900 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1901 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1902 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1903 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1904 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1905 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1906 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1907 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1908 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1909 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1910 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1911 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1912 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1913 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1914 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1915 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1916 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1917 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1918 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1919 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1920 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1921 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1922 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1923 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1924 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1925 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1926 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1927 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1928 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1929 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1930 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1931 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1932 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1933 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1934 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1935 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1936 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1937 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1938 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1939 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1940 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1941 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1942 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1943 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1944 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1945 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1946 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1947 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1948 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1949 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1950 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1951 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1952 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1953 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1954 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1955 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1956 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1957 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1958 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1959 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1960 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1961 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1962 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1963 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1964 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1965 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1966 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1967 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1968 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1969 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1970 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1971 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1972 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1973 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1974 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1975 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1976 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1977 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1978 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1979 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1980 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1981 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1982 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1983 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1984 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1985 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1986 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1987 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1988 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1989 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1990 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1991 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1992 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1993 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1994 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1995 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1996 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1997 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1998 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1999 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2000 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2001 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2002 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2003 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2004 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2005 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2006 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2007 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2008 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2009 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2010 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2011 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2012 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2013 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2014 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2015 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2016 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2017 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2018 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2019 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2020 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2021 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2022 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2023 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2024 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2025 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2026 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2027 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2028 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2029 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2030 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2031 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2032 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2033 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2034 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2035 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2036 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2037 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2038 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2039 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2040 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2041 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2042 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2043 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2044 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2045 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2046 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2047 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2048 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2049 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2050 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2051 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2052 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2053 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2054 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2055 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2056 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2057 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2058 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2059 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2060 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2061 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2062 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2063 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2064 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2065 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2066 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2067 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2068 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2069 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2070 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2071 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2072 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2073 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2074 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2075 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2076 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2077 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2078 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2079 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2080 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2081 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2082 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2083 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2084 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2085 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2086 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2087 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2088 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2089 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2090 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2091 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2092 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2093 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2094 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2095 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2096 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2097 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2098 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2099 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2100 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2101 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2102 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2103 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2104 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2105 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2106 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2107 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2108 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2109 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2110 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2111 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2112 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2113 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2114 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2115 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2116 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2117 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2118 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2119 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2120 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2121 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2122 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2123 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2124 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2125 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2126 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2127 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2128 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2129 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2130 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2131 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2132 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2133 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2134 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2135 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2136 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2137 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2138 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2139 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2140 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2141 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2142 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2143 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2144 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2145 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2146 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2147 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2148 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2149 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2150 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2151 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2152 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2153 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2154 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,
2155 34, 35, 36, 2, 2, 2, 2, 2, 2, 2,
2156 37, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2157 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2158 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2159 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2160 38, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2161 2, 39, 40, 41, 42, 43, 44, 45, 46, 47,
2162 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
2163 58, 59, 60, 61, 62, 2, 2, 2, 2, 2,
2164 63, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2165 64, 65, 66, 2, 2, 2, 2, 2, 2, 2,
2166 67, 68, 2, 2, 2, 2, 2, 2, 2, 2,
2167 69, 70, 71, 2, 2, 2, 2, 2, 2, 2,
2168 72, 73, 74, 2, 2, 2, 2, 2, 2, 2,
2169 75, 76, 77, 2, 2, 2, 2, 2, 2, 2,
2170 78, 2, 79, 80, 81, 82, 83, 2, 2, 2,
2171 84, 85, 2, 2, 2, 2, 2, 2, 2, 2,
2172 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2173 90, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2174 91, 92, 93, 94, 95, 96, 97, 2, 2, 2,
2175 98, 99, 100, 2, 2, 2, 2, 2, 2, 2,
2176 101, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2177 102, 86, 2, 2, 2, 2, 2, 2, 2, 2,
2178 103, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2179 104, 105, 106, 2, 2, 2, 2, 2, 2, 2,
2180 107, 108, 109, 2, 2, 2, 2, 2, 2, 2,
2181 110, 111, 112, 2, 2, 2, 2, 2, 2, 2,
2182 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2183 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2184 113, 114, 87, 2, 88, 89, 2, 2, 2, 2,
2185 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2186 2, 2, 2, 115, 2, 2, 2, 2, 2, 2,
2187 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2188 116, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2189 117, 118, 119, 120, 121, 122, 123, 124, 2, 2,
2190 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2191 125, 126, 127, 2, 2, 2, 2, 2, 2, 2,
2192 128, 129, 2, 2, 2, 2, 2, 2, 2, 2,
2193 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2194 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2195 130, 131, 2, 2, 2, 2, 2, 2, 2, 2,
2196 132, 133, 134, 135, 136, 137, 2, 2, 2, 2,
2197 138, 139, 140, 141, 142, 143, 2, 2, 2, 2,
2198 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2199 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2200 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2201 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2202 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2203 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2204 144, 2, 145, 146, 147, 148, 149, 150, 151, 152,
2205 153, 154, 155, 156, 2, 157, 158, 159, 160, 161,
2206 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
2207 172, 173, 174, 175
2208 };
2209
2210 #if AFAMQP_DEBUG
2211 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
2212 static const yytype_int16 yyrline[] =
2213 {
2214 0, 415, 415, 414, 422, 423, 427, 428, 429, 430,
2215 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
2216 441, 442, 443, 444, 445, 446, 446, 451, 452, 456,
2217 457, 458, 459, 695, 702, 715, 715, 726, 727, 731,
2218 732, 733, 742, 749, 756, 763, 798, 808, 812, 824,
2219 828, 829, 873, 908, 936, 937, 938, 939, 953, 957,
2220 958, 1110, 1111, 1112, 1113, 1114, 1115, 1138, 1137, 1146,
2221 1147, 1151, 1156, 1162, 1167, 1161, 1168, 1170, 1169, 1175,
2222 1176, 1180, 1181, 1185, 1186, 1190, 1191, 1192, 1193
2223 };
2224 #endif
2225
2226 /** Accessing symbol of state STATE. */
2227 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
2228
2229 #if 1
2230 /* The user-facing name of the symbol whose (internal) number is
2231 YYSYMBOL. No bounds checking. */
2232 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2233
2234 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
2235 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
2236 static const char *const yytname[] =
2237 {
2238 "\"end of file\"", "error", "\"invalid token\"", "LL_CONTEXT_ROOT",
2239 "LL_CONTEXT_DESTINATION", "LL_CONTEXT_SOURCE", "LL_CONTEXT_PARSER",
2240 "LL_CONTEXT_REWRITE", "LL_CONTEXT_FILTER", "LL_CONTEXT_LOG",
2241 "LL_CONTEXT_BLOCK_DEF", "LL_CONTEXT_BLOCK_REF",
2242 "LL_CONTEXT_BLOCK_CONTENT", "LL_CONTEXT_BLOCK_ARG", "LL_CONTEXT_PRAGMA",
2243 "LL_CONTEXT_FORMAT", "LL_CONTEXT_TEMPLATE_FUNC", "LL_CONTEXT_INNER_DEST",
2244 "LL_CONTEXT_INNER_SRC", "LL_CONTEXT_CLIENT_PROTO",
2245 "LL_CONTEXT_SERVER_PROTO", "LL_CONTEXT_OPTIONS", "LL_CONTEXT_CONFIG",
2246 "LL_CONTEXT_MAX", "KW_SOURCE", "KW_FILTER", "KW_PARSER",
2247 "KW_DESTINATION", "KW_LOG", "KW_OPTIONS", "KW_INCLUDE", "KW_BLOCK",
2248 "KW_JUNCTION", "KW_CHANNEL", "KW_IF", "KW_ELSE", "KW_ELIF",
2249 "KW_INTERNAL", "KW_SYSLOG", "KW_MARK_FREQ", "KW_STATS_FREQ",
2250 "KW_STATS_LEVEL", "KW_STATS_LIFETIME", "KW_FLUSH_LINES", "KW_SUPPRESS",
2251 "KW_FLUSH_TIMEOUT", "KW_LOG_MSG_SIZE", "KW_FILE_TEMPLATE",
2252 "KW_PROTO_TEMPLATE", "KW_MARK_MODE", "KW_ENCODING", "KW_TYPE",
2253 "KW_STATS_MAX_DYNAMIC", "KW_MIN_IW_SIZE_PER_READER", "KW_WORKERS",
2254 "KW_BATCH_LINES", "KW_BATCH_TIMEOUT", "KW_TRIM_LARGE_MESSAGES",
2255 "KW_CHAIN_HOSTNAMES", "KW_NORMALIZE_HOSTNAMES", "KW_KEEP_HOSTNAME",
2256 "KW_CHECK_HOSTNAME", "KW_BAD_HOSTNAME", "KW_KEEP_TIMESTAMP",
2257 "KW_USE_DNS", "KW_USE_FQDN", "KW_CUSTOM_DOMAIN", "KW_DNS_CACHE",
2258 "KW_DNS_CACHE_SIZE", "KW_DNS_CACHE_EXPIRE", "KW_DNS_CACHE_EXPIRE_FAILED",
2259 "KW_DNS_CACHE_HOSTS", "KW_PERSIST_ONLY", "KW_USE_RCPTID",
2260 "KW_USE_UNIQID", "KW_TZ_CONVERT", "KW_TS_FORMAT", "KW_FRAC_DIGITS",
2261 "KW_LOG_FIFO_SIZE", "KW_LOG_FETCH_LIMIT", "KW_LOG_IW_SIZE",
2262 "KW_LOG_PREFIX", "KW_PROGRAM_OVERRIDE", "KW_HOST_OVERRIDE",
2263 "KW_THROTTLE", "KW_THREADED", "KW_PASS_UNIX_CREDENTIALS",
2264 "KW_PERSIST_NAME", "KW_READ_OLD_RECORDS", "KW_USE_SYSLOGNG_PID",
2265 "KW_FLAGS", "KW_PAD_SIZE", "KW_TIME_ZONE", "KW_RECV_TIME_ZONE",
2266 "KW_SEND_TIME_ZONE", "KW_LOCAL_TIME_ZONE", "KW_FORMAT",
2267 "KW_TRUNCATE_SIZE", "KW_TIME_REOPEN", "KW_TIME_REAP", "KW_TIME_SLEEP",
2268 "KW_TMPL_ESCAPE", "KW_OPTIONAL", "KW_CREATE_DIRS", "KW_OWNER",
2269 "KW_GROUP", "KW_PERM", "KW_DIR_OWNER", "KW_DIR_GROUP", "KW_DIR_PERM",
2270 "KW_TEMPLATE", "KW_TEMPLATE_ESCAPE", "KW_TEMPLATE_FUNCTION",
2271 "KW_DEFAULT_FACILITY", "KW_DEFAULT_SEVERITY", "KW_PORT",
2272 "KW_USE_TIME_RECVD", "KW_FACILITY", "KW_SEVERITY", "KW_HOST", "KW_MATCH",
2273 "KW_MESSAGE", "KW_NETMASK", "KW_TAGS", "KW_NETMASK6", "KW_REWRITE",
2274 "KW_CONDITION", "KW_VALUE", "KW_YES", "KW_NO", "KW_IFDEF", "KW_ENDIF",
2275 "LL_DOTDOT", "LL_DOTDOTDOT", "LL_PRAGMA", "LL_EOL", "LL_ERROR",
2276 "LL_ARROW", "LL_IDENTIFIER", "LL_NUMBER", "LL_FLOAT", "LL_STRING",
2277 "LL_TOKEN", "LL_BLOCK", "KW_VALUE_PAIRS", "KW_EXCLUDE", "KW_PAIR",
2278 "KW_KEY", "KW_SCOPE", "KW_SHIFT", "KW_SHIFT_LEVELS", "KW_REKEY",
2279 "KW_ADD_PREFIX", "KW_REPLACE_PREFIX", "KW_ON_ERROR", "KW_RETRIES",
2280 "KW_FETCH_NO_DATA_DELAY", "KW_AMQP", "KW_EXCHANGE",
2281 "KW_EXCHANGE_DECLARE", "KW_EXCHANGE_TYPE", "KW_PERSISTENT", "KW_VHOST",
2282 "KW_ROUTING_KEY", "KW_BODY", "KW_AUTH_METHOD", "KW_PASSWORD",
2283 "KW_USERNAME", "KW_MAX_CHANNEL", "KW_FRAME_SIZE", "KW_HEARTBEAT",
2284 "KW_CA_FILE", "KW_KEY_FILE", "KW_CERT_FILE", "KW_PEER_VERIFY", "KW_TLS",
2285 "'('", "')'", "'{'", "'}'", "';'", "':'", "$accept", "start", "$@1",
2286 "afamqp_options", "afamqp_option", "$@2", "afamqp_tls_options",
2287 "afamqp_tls_option", "template_content_inner", "template_content", "$@8",
2288 "string", "yesno", "nonnegative_integer64", "nonnegative_integer",
2289 "positive_integer64", "positive_integer", "path", "path_check",
2290 "path_secret", "string_list", "string_list_build", "driver_option",
2291 "inner_dest", "dest_driver_option",
2292 "threaded_dest_driver_general_option", "template_option",
2293 "value_pair_option", "$@16", "vp_options", "vp_option", "$@17", "$@18",
2294 "$@19", "vp_scope_list", "vp_rekey_options", "vp_rekey_option", YY_NULLPTR
2295 };
2296
2297 static const char *
yysymbol_name(yysymbol_kind_t yysymbol)2298 yysymbol_name (yysymbol_kind_t yysymbol)
2299 {
2300 return yytname[yysymbol];
2301 }
2302 #endif
2303
2304 #define YYPACT_NINF (-204)
2305
2306 #define yypact_value_is_default(Yyn) \
2307 ((Yyn) == YYPACT_NINF)
2308
2309 #define YYTABLE_NINF (-6)
2310
2311 #define yytable_value_is_error(Yyn) \
2312 0
2313
2314 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
2315 STATE-NUM. */
2316 static const yytype_int16 yypact[] =
2317 {
2318 21, -124, 35, -204, -204, -138, -57, -136, -127, -117,
2319 -107, -106, -105, -204, -204, -104, -102, -97, -96, -94,
2320 -93, -92, -91, -90, -88, -87, -85, -84, -83, -82,
2321 -81, -79, -77, -76, -130, -57, -58, -204, -204, -204,
2322 -204, -204, -204, -78, -49, -115, -78, -78, -115, -50,
2323 -78, -115, -100, -115, -100, -115, -204, -204, -115, -115,
2324 -115, -78, -78, -49, -115, -115, -115, -100, -119, -204,
2325 -204, -47, -46, -44, -42, -39, -38, -204, -204, -204,
2326 -120, -204, -204, -37, -204, -204, -35, -34, -33, -32,
2327 -103, -31, -29, -204, -204, -204, -28, -27, -26, -25,
2328 -24, -73, -23, -22, -21, -20, -19, -18, -17, -204,
2329 -204, -16, -204, -15, -14, -13, -12, -119, -115, -49,
2330 -115, -115, -115, -115, -204, -204, -204, -204, -204, -204,
2331 -10, -9, -6, -5, -4, -3, -103, -204, -204, -204,
2332 -204, -204, -204, -204, -1, -204, -204, -204, -204, -204,
2333 -204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
2334 0, 1, 2, 3, 6, 7, -115, -115, -115, -115,
2335 -115, -204, -204, -115, -204, -204, -204, -204, -204, -204,
2336 -115, 8, -204, -62, -129, 9, -115, 10, -204, 11,
2337 -204, -204, -204, 12, 14, -204, -204, -204, -86, -204,
2338 15, -204, -204, 17, 18, 19, 20, 22, -86, -204,
2339 -86, -78, -78, -115, -115, -204, -204, 23, 24, 25,
2340 26, -115, -204, -204, -204, -204, 27, 28, -204, -204
2341 };
2342
2343 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
2344 Performed when YYTABLE does not specify something else to do. Zero
2345 means the default is an error. */
2346 static const yytype_int8 yydefact[] =
2347 {
2348 0, 0, 0, 2, 1, 0, 25, 0, 0, 0,
2349 0, 0, 0, 53, 67, 0, 0, 0, 0, 0,
2350 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2351 0, 0, 0, 0, 0, 25, 0, 23, 57, 56,
2352 60, 22, 21, 0, 0, 0, 0, 0, 0, 0,
2353 0, 0, 0, 0, 0, 0, 35, 35, 0, 0,
2354 0, 0, 0, 0, 0, 0, 0, 0, 28, 3,
2355 4, 0, 0, 0, 0, 0, 0, 26, 44, 45,
2356 0, 42, 43, 0, 37, 38, 0, 0, 0, 0,
2357 70, 0, 0, 39, 40, 41, 0, 0, 0, 0,
2358 0, 0, 0, 0, 0, 0, 0, 0, 0, 46,
2359 47, 0, 48, 0, 0, 0, 0, 28, 0, 0,
2360 0, 0, 0, 0, 54, 55, 52, 59, 7, 6,
2361 0, 0, 0, 0, 0, 0, 70, 58, 9, 10,
2362 11, 14, 8, 12, 37, 36, 33, 13, 15, 17,
2363 16, 18, 19, 20, 29, 30, 31, 32, 24, 27,
2364 0, 0, 0, 0, 0, 0, 51, 0, 51, 82,
2365 0, 68, 69, 0, 61, 62, 63, 64, 65, 66,
2366 51, 0, 49, 35, 51, 0, 82, 0, 77, 0,
2367 50, 79, 35, 0, 0, 76, 81, 80, 84, 34,
2368 0, 72, 73, 0, 0, 0, 0, 0, 84, 71,
2369 84, 0, 0, 0, 0, 78, 83, 0, 0, 0,
2370 0, 0, 74, 85, 86, 87, 0, 0, 88, 75
2371 };
2372
2373 /* YYPGOTO[NTERM-NUM]. */
2374 static const yytype_int16 yypgoto[] =
2375 {
2376 -204, -204, -204, 96, -204, -204, 16, -66, -204, -56,
2377 -204, -45, -43, -204, -59, -204, -30, 82, 107, -204,
2378 29, -134, -204, -204, -204, -204, -204, -204, -204, 55,
2379 -204, -204, -204, -204, 30, -203, -204
2380 };
2381
2382 /* YYDEFGOTO[NTERM-NUM]. */
2383 static const yytype_uint8 yydefgoto[] =
2384 {
2385 0, 2, 5, 34, 35, 36, 116, 37, 145, 100,
2386 101, 109, 96, 82, 83, 79, 80, 110, 111, 113,
2387 181, 182, 38, 39, 40, 41, 77, 42, 49, 135,
2388 136, 210, 227, 198, 187, 207, 208
2389 };
2390
2391 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
2392 positive, shift that token. If negative, reduce the rule whose
2393 number is the opposite. If YYTABLE_NINF, syntax error. */
2394 static const yytype_int16 yytable[] =
2395 {
2396 86, 102, 117, 89, 108, 216, 92, 217, 97, 84,
2397 99, 98, 85, 103, 104, 105, 87, 88, 71, 72,
2398 91, 7, 194, 84, 115, 1, 85, 8, 93, 94,
2399 9, 106, 107, 3, 73, 4, 74, 75, 6, 95,
2400 43, 10, 130, 131, 132, 133, 190, 69, 134, 44,
2401 190, 117, 29, 30, 31, 32, 146, 124, 11, 45,
2402 161, 78, 12, 203, 204, 144, 205, 206, 85, 46,
2403 47, 48, 50, 160, 51, 162, 163, 164, 165, 52,
2404 53, 13, 54, 55, 56, 57, 58, 14, 59, 60,
2405 81, 61, 62, 63, 64, 65, 76, 66, 15, 67,
2406 68, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2407 25, 26, 27, 28, 29, 30, 31, 32, 33, 192,
2408 -5, 180, 183, 184, 186, 188, 90, 193, 189, 118,
2409 119, 70, 120, 159, 121, 180, 200, 122, 123, 180,
2410 125, 186, 126, 127, 128, 129, 137, 112, 138, 139,
2411 140, 141, 142, 143, 147, 148, 149, 150, 151, 152,
2412 153, 154, 155, 156, 157, 158, 166, 167, 220, 221,
2413 168, 169, 170, 114, 171, 173, 226, 174, 175, 176,
2414 177, 218, 219, 178, 179, 191, 195, 197, 199, 201,
2415 202, 172, 209, 211, 212, 213, 214, 185, 0, 215,
2416 222, 223, 224, 225, 228, 229, 0, 0, 0, 0,
2417 0, 0, 0, 0, 0, 0, 196
2418 };
2419
2420 static const yytype_int16 yycheck[] =
2421 {
2422 45, 57, 68, 48, 63, 208, 51, 210, 53, 138,
2423 55, 54, 141, 58, 59, 60, 46, 47, 76, 77,
2424 50, 78, 151, 138, 67, 4, 141, 84, 128, 129,
2425 87, 61, 62, 157, 92, 0, 94, 95, 176, 139,
2426 176, 98, 145, 146, 147, 148, 180, 177, 151, 176,
2427 184, 117, 171, 172, 173, 174, 101, 177, 115, 176,
2428 119, 139, 119, 149, 150, 138, 152, 153, 141, 176,
2429 176, 176, 176, 118, 176, 120, 121, 122, 123, 176,
2430 176, 138, 176, 176, 176, 176, 176, 144, 176, 176,
2431 139, 176, 176, 176, 176, 176, 154, 176, 155, 176,
2432 176, 158, 159, 160, 161, 162, 163, 164, 165, 166,
2433 167, 168, 169, 170, 171, 172, 173, 174, 175, 181,
2434 177, 166, 167, 168, 169, 170, 176, 183, 173, 176,
2435 176, 35, 176, 117, 176, 180, 192, 176, 176, 184,
2436 177, 186, 177, 177, 177, 177, 177, 65, 177, 177,
2437 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
2438 177, 177, 177, 177, 177, 177, 176, 176, 213, 214,
2439 176, 176, 176, 66, 177, 176, 221, 177, 177, 177,
2440 177, 211, 212, 177, 177, 177, 177, 177, 177, 177,
2441 176, 136, 177, 176, 176, 176, 176, 168, -1, 177,
2442 177, 177, 177, 177, 177, 177, -1, -1, -1, -1,
2443 -1, -1, -1, -1, -1, -1, 186
2444 };
2445
2446 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
2447 state STATE-NUM. */
2448 static const yytype_uint8 yystos[] =
2449 {
2450 0, 4, 183, 157, 0, 184, 176, 78, 84, 87,
2451 98, 115, 119, 138, 144, 155, 158, 159, 160, 161,
2452 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
2453 172, 173, 174, 175, 185, 186, 187, 189, 204, 205,
2454 206, 207, 209, 176, 176, 176, 176, 176, 176, 210,
2455 176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
2456 176, 176, 176, 176, 176, 176, 176, 176, 176, 177,
2457 185, 76, 77, 92, 94, 95, 154, 208, 139, 197,
2458 198, 139, 195, 196, 138, 141, 193, 198, 198, 193,
2459 176, 198, 193, 128, 129, 139, 194, 193, 194, 193,
2460 191, 192, 191, 193, 193, 193, 198, 198, 196, 193,
2461 199, 200, 199, 201, 200, 194, 188, 189, 176, 176,
2462 176, 176, 176, 176, 177, 177, 177, 177, 177, 177,
2463 145, 146, 147, 148, 151, 211, 212, 177, 177, 177,
2464 177, 177, 177, 177, 138, 190, 193, 177, 177, 177,
2465 177, 177, 177, 177, 177, 177, 177, 177, 177, 188,
2466 193, 196, 193, 193, 193, 193, 176, 176, 176, 176,
2467 176, 177, 211, 176, 177, 177, 177, 177, 177, 177,
2468 193, 202, 203, 193, 193, 202, 193, 216, 193, 193,
2469 203, 177, 181, 191, 151, 177, 216, 177, 215, 177,
2470 191, 177, 176, 149, 150, 152, 153, 217, 218, 177,
2471 213, 176, 176, 176, 176, 177, 217, 217, 198, 198,
2472 193, 193, 177, 177, 177, 177, 193, 214, 177, 177
2473 };
2474
2475 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
2476 static const yytype_uint8 yyr1[] =
2477 {
2478 0, 182, 184, 183, 185, 185, 186, 186, 186, 186,
2479 186, 186, 186, 186, 186, 186, 186, 186, 186, 186,
2480 186, 186, 186, 186, 186, 187, 186, 188, 188, 189,
2481 189, 189, 189, 190, 190, 192, 191, 193, 193, 194,
2482 194, 194, 195, 196, 197, 198, 199, 200, 201, 202,
2483 203, 203, 204, 205, 206, 206, 206, 206, 207, 207,
2484 207, 208, 208, 208, 208, 208, 208, 210, 209, 211,
2485 211, 212, 212, 213, 214, 212, 212, 215, 212, 212,
2486 212, 216, 216, 217, 217, 218, 218, 218, 218
2487 };
2488
2489 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
2490 static const yytype_int8 yyr2[] =
2491 {
2492 0, 2, 0, 6, 2, 0, 4, 4, 4, 4,
2493 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
2494 4, 1, 1, 1, 4, 0, 2, 2, 0, 4,
2495 4, 4, 4, 1, 4, 0, 2, 1, 1, 1,
2496 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2497 2, 0, 4, 1, 4, 4, 1, 1, 4, 4,
2498 1, 4, 4, 4, 4, 4, 4, 0, 5, 2,
2499 0, 6, 5, 0, 0, 10, 4, 0, 6, 4,
2500 4, 2, 0, 2, 0, 4, 4, 4, 5
2501 };
2502
2503
2504 enum { YYENOMEM = -2 };
2505
2506 #define yyerrok (yyerrstatus = 0)
2507 #define yyclearin (yychar = AFAMQP_EMPTY)
2508
2509 #define YYACCEPT goto yyacceptlab
2510 #define YYABORT goto yyabortlab
2511 #define YYERROR goto yyerrorlab
2512 #define YYNOMEM goto yyexhaustedlab
2513
2514
2515 #define YYRECOVERING() (!!yyerrstatus)
2516
2517 #define YYBACKUP(Token, Value) \
2518 do \
2519 if (yychar == AFAMQP_EMPTY) \
2520 { \
2521 yychar = (Token); \
2522 yylval = (Value); \
2523 YYPOPSTACK (yylen); \
2524 yystate = *yyssp; \
2525 goto yybackup; \
2526 } \
2527 else \
2528 { \
2529 yyerror (&yylloc, lexer, instance, arg, YY_("syntax error: cannot back up")); \
2530 YYERROR; \
2531 } \
2532 while (0)
2533
2534 /* Backward compatibility with an undocumented macro.
2535 Use AFAMQP_error or AFAMQP_UNDEF. */
2536 #define YYERRCODE AFAMQP_UNDEF
2537
2538 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2539 If N is 0, then set CURRENT to the empty location which ends
2540 the previous symbol: RHS[0] (always defined). */
2541
2542 #ifndef YYLLOC_DEFAULT
2543 # define YYLLOC_DEFAULT(Current, Rhs, N) \
2544 do \
2545 if (N) \
2546 { \
2547 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
2548 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
2549 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
2550 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
2551 } \
2552 else \
2553 { \
2554 (Current).first_line = (Current).last_line = \
2555 YYRHSLOC (Rhs, 0).last_line; \
2556 (Current).first_column = (Current).last_column = \
2557 YYRHSLOC (Rhs, 0).last_column; \
2558 } \
2559 while (0)
2560 #endif
2561
2562 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2563
2564
2565 /* Enable debugging if requested. */
2566 #if AFAMQP_DEBUG
2567
2568 # ifndef YYFPRINTF
2569 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2570 # define YYFPRINTF fprintf
2571 # endif
2572
2573 # define YYDPRINTF(Args) \
2574 do { \
2575 if (yydebug) \
2576 YYFPRINTF Args; \
2577 } while (0)
2578
2579
2580 /* YYLOCATION_PRINT -- Print the location on the stream.
2581 This macro was not mandated originally: define only if we know
2582 we won't break user code: when these are the locations we know. */
2583
2584 # ifndef YYLOCATION_PRINT
2585
2586 # if defined YY_LOCATION_PRINT
2587
2588 /* Temporary convenience wrapper in case some people defined the
2589 undocumented and private YY_LOCATION_PRINT macros. */
2590 # define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
2591
2592 # elif defined AFAMQP_LTYPE_IS_TRIVIAL && AFAMQP_LTYPE_IS_TRIVIAL
2593
2594 /* Print *YYLOCP on YYO. Private, do not rely on its existence. */
2595
2596 YY_ATTRIBUTE_UNUSED
2597 static int
yy_location_print_(FILE * yyo,YYLTYPE const * const yylocp)2598 yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
2599 {
2600 int res = 0;
2601 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
2602 if (0 <= yylocp->first_line)
2603 {
2604 res += YYFPRINTF (yyo, "%d", yylocp->first_line);
2605 if (0 <= yylocp->first_column)
2606 res += YYFPRINTF (yyo, ".%d", yylocp->first_column);
2607 }
2608 if (0 <= yylocp->last_line)
2609 {
2610 if (yylocp->first_line < yylocp->last_line)
2611 {
2612 res += YYFPRINTF (yyo, "-%d", yylocp->last_line);
2613 if (0 <= end_col)
2614 res += YYFPRINTF (yyo, ".%d", end_col);
2615 }
2616 else if (0 <= end_col && yylocp->first_column < end_col)
2617 res += YYFPRINTF (yyo, "-%d", end_col);
2618 }
2619 return res;
2620 }
2621
2622 # define YYLOCATION_PRINT yy_location_print_
2623
2624 /* Temporary convenience wrapper in case some people defined the
2625 undocumented and private YY_LOCATION_PRINT macros. */
2626 # define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
2627
2628 # else
2629
2630 # define YYLOCATION_PRINT(File, Loc) ((void) 0)
2631 /* Temporary convenience wrapper in case some people defined the
2632 undocumented and private YY_LOCATION_PRINT macros. */
2633 # define YY_LOCATION_PRINT YYLOCATION_PRINT
2634
2635 # endif
2636 # endif /* !defined YYLOCATION_PRINT */
2637
2638
2639 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
2640 do { \
2641 if (yydebug) \
2642 { \
2643 YYFPRINTF (stderr, "%s ", Title); \
2644 yy_symbol_print (stderr, \
2645 Kind, Value, Location, lexer, instance, arg); \
2646 YYFPRINTF (stderr, "\n"); \
2647 } \
2648 } while (0)
2649
2650
2651 /*-----------------------------------.
2652 | Print this symbol's value on YYO. |
2653 `-----------------------------------*/
2654
2655 static void
yy_symbol_value_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep,YYLTYPE const * const yylocationp,CfgLexer * lexer,LogDriver ** instance,gpointer arg)2656 yy_symbol_value_print (FILE *yyo,
2657 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, CfgLexer *lexer, LogDriver **instance, gpointer arg)
2658 {
2659 FILE *yyoutput = yyo;
2660 YY_USE (yyoutput);
2661 YY_USE (yylocationp);
2662 YY_USE (lexer);
2663 YY_USE (instance);
2664 YY_USE (arg);
2665 if (!yyvaluep)
2666 return;
2667 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2668 YY_USE (yykind);
2669 YY_IGNORE_MAYBE_UNINITIALIZED_END
2670 }
2671
2672
2673 /*---------------------------.
2674 | Print this symbol on YYO. |
2675 `---------------------------*/
2676
2677 static void
yy_symbol_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep,YYLTYPE const * const yylocationp,CfgLexer * lexer,LogDriver ** instance,gpointer arg)2678 yy_symbol_print (FILE *yyo,
2679 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp, CfgLexer *lexer, LogDriver **instance, gpointer arg)
2680 {
2681 YYFPRINTF (yyo, "%s %s (",
2682 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
2683
2684 YYLOCATION_PRINT (yyo, yylocationp);
2685 YYFPRINTF (yyo, ": ");
2686 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, lexer, instance, arg);
2687 YYFPRINTF (yyo, ")");
2688 }
2689
2690 /*------------------------------------------------------------------.
2691 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2692 | TOP (included). |
2693 `------------------------------------------------------------------*/
2694
2695 static void
yy_stack_print(yy_state_t * yybottom,yy_state_t * yytop)2696 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
2697 {
2698 YYFPRINTF (stderr, "Stack now");
2699 for (; yybottom <= yytop; yybottom++)
2700 {
2701 int yybot = *yybottom;
2702 YYFPRINTF (stderr, " %d", yybot);
2703 }
2704 YYFPRINTF (stderr, "\n");
2705 }
2706
2707 # define YY_STACK_PRINT(Bottom, Top) \
2708 do { \
2709 if (yydebug) \
2710 yy_stack_print ((Bottom), (Top)); \
2711 } while (0)
2712
2713
2714 /*------------------------------------------------.
2715 | Report that the YYRULE is going to be reduced. |
2716 `------------------------------------------------*/
2717
2718 static void
yy_reduce_print(yy_state_t * yyssp,YYSTYPE * yyvsp,YYLTYPE * yylsp,int yyrule,CfgLexer * lexer,LogDriver ** instance,gpointer arg)2719 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp,
2720 int yyrule, CfgLexer *lexer, LogDriver **instance, gpointer arg)
2721 {
2722 int yylno = yyrline[yyrule];
2723 int yynrhs = yyr2[yyrule];
2724 int yyi;
2725 YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
2726 yyrule - 1, yylno);
2727 /* The symbols being reduced. */
2728 for (yyi = 0; yyi < yynrhs; yyi++)
2729 {
2730 YYFPRINTF (stderr, " $%d = ", yyi + 1);
2731 yy_symbol_print (stderr,
2732 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
2733 &yyvsp[(yyi + 1) - (yynrhs)],
2734 &(yylsp[(yyi + 1) - (yynrhs)]), lexer, instance, arg);
2735 YYFPRINTF (stderr, "\n");
2736 }
2737 }
2738
2739 # define YY_REDUCE_PRINT(Rule) \
2740 do { \
2741 if (yydebug) \
2742 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, lexer, instance, arg); \
2743 } while (0)
2744
2745 /* Nonzero means print parse trace. It is left uninitialized so that
2746 multiple parsers can coexist. */
2747 int yydebug;
2748 #else /* !AFAMQP_DEBUG */
2749 # define YYDPRINTF(Args) ((void) 0)
2750 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
2751 # define YY_STACK_PRINT(Bottom, Top)
2752 # define YY_REDUCE_PRINT(Rule)
2753 #endif /* !AFAMQP_DEBUG */
2754
2755
2756 /* YYINITDEPTH -- initial size of the parser's stacks. */
2757 #ifndef YYINITDEPTH
2758 # define YYINITDEPTH 200
2759 #endif
2760
2761 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2762 if the built-in stack extension method is used).
2763
2764 Do not make this value too large; the results are undefined if
2765 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2766 evaluated with infinite-precision integer arithmetic. */
2767
2768 #ifndef YYMAXDEPTH
2769 # define YYMAXDEPTH 10000
2770 #endif
2771
2772
2773 /* Context of a parse error. */
2774 typedef struct
2775 {
2776 yy_state_t *yyssp;
2777 yysymbol_kind_t yytoken;
2778 YYLTYPE *yylloc;
2779 } yypcontext_t;
2780
2781 /* Put in YYARG at most YYARGN of the expected tokens given the
2782 current YYCTX, and return the number of tokens stored in YYARG. If
2783 YYARG is null, return the number of expected tokens (guaranteed to
2784 be less than YYNTOKENS). Return YYENOMEM on memory exhaustion.
2785 Return 0 if there are more than YYARGN expected tokens, yet fill
2786 YYARG up to YYARGN. */
2787 static int
yypcontext_expected_tokens(const yypcontext_t * yyctx,yysymbol_kind_t yyarg[],int yyargn)2788 yypcontext_expected_tokens (const yypcontext_t *yyctx,
2789 yysymbol_kind_t yyarg[], int yyargn)
2790 {
2791 /* Actual size of YYARG. */
2792 int yycount = 0;
2793 int yyn = yypact[+*yyctx->yyssp];
2794 if (!yypact_value_is_default (yyn))
2795 {
2796 /* Start YYX at -YYN if negative to avoid negative indexes in
2797 YYCHECK. In other words, skip the first -YYN actions for
2798 this state because they are default actions. */
2799 int yyxbegin = yyn < 0 ? -yyn : 0;
2800 /* Stay within bounds of both yycheck and yytname. */
2801 int yychecklim = YYLAST - yyn + 1;
2802 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2803 int yyx;
2804 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2805 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
2806 && !yytable_value_is_error (yytable[yyx + yyn]))
2807 {
2808 if (!yyarg)
2809 ++yycount;
2810 else if (yycount == yyargn)
2811 return 0;
2812 else
2813 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
2814 }
2815 }
2816 if (yyarg && yycount == 0 && 0 < yyargn)
2817 yyarg[0] = YYSYMBOL_YYEMPTY;
2818 return yycount;
2819 }
2820
2821
2822
2823
2824 #ifndef yystrlen
2825 # if defined __GLIBC__ && defined _STRING_H
2826 # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
2827 # else
2828 /* Return the length of YYSTR. */
2829 static YYPTRDIFF_T
yystrlen(const char * yystr)2830 yystrlen (const char *yystr)
2831 {
2832 YYPTRDIFF_T yylen;
2833 for (yylen = 0; yystr[yylen]; yylen++)
2834 continue;
2835 return yylen;
2836 }
2837 # endif
2838 #endif
2839
2840 #ifndef yystpcpy
2841 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2842 # define yystpcpy stpcpy
2843 # else
2844 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2845 YYDEST. */
2846 static char *
yystpcpy(char * yydest,const char * yysrc)2847 yystpcpy (char *yydest, const char *yysrc)
2848 {
2849 char *yyd = yydest;
2850 const char *yys = yysrc;
2851
2852 while ((*yyd++ = *yys++) != '\0')
2853 continue;
2854
2855 return yyd - 1;
2856 }
2857 # endif
2858 #endif
2859
2860 #ifndef yytnamerr
2861 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2862 quotes and backslashes, so that it's suitable for yyerror. The
2863 heuristic is that double-quoting is unnecessary unless the string
2864 contains an apostrophe, a comma, or backslash (other than
2865 backslash-backslash). YYSTR is taken from yytname. If YYRES is
2866 null, do not copy; instead, return the length of what the result
2867 would have been. */
2868 static YYPTRDIFF_T
yytnamerr(char * yyres,const char * yystr)2869 yytnamerr (char *yyres, const char *yystr)
2870 {
2871 if (*yystr == '"')
2872 {
2873 YYPTRDIFF_T yyn = 0;
2874 char const *yyp = yystr;
2875 for (;;)
2876 switch (*++yyp)
2877 {
2878 case '\'':
2879 case ',':
2880 goto do_not_strip_quotes;
2881
2882 case '\\':
2883 if (*++yyp != '\\')
2884 goto do_not_strip_quotes;
2885 else
2886 goto append;
2887
2888 append:
2889 default:
2890 if (yyres)
2891 yyres[yyn] = *yyp;
2892 yyn++;
2893 break;
2894
2895 case '"':
2896 if (yyres)
2897 yyres[yyn] = '\0';
2898 return yyn;
2899 }
2900 do_not_strip_quotes: ;
2901 }
2902
2903 if (yyres)
2904 return yystpcpy (yyres, yystr) - yyres;
2905 else
2906 return yystrlen (yystr);
2907 }
2908 #endif
2909
2910
2911 static int
yy_syntax_error_arguments(const yypcontext_t * yyctx,yysymbol_kind_t yyarg[],int yyargn)2912 yy_syntax_error_arguments (const yypcontext_t *yyctx,
2913 yysymbol_kind_t yyarg[], int yyargn)
2914 {
2915 /* Actual size of YYARG. */
2916 int yycount = 0;
2917 /* There are many possibilities here to consider:
2918 - If this state is a consistent state with a default action, then
2919 the only way this function was invoked is if the default action
2920 is an error action. In that case, don't check for expected
2921 tokens because there are none.
2922 - The only way there can be no lookahead present (in yychar) is if
2923 this state is a consistent state with a default action. Thus,
2924 detecting the absence of a lookahead is sufficient to determine
2925 that there is no unexpected or expected token to report. In that
2926 case, just report a simple "syntax error".
2927 - Don't assume there isn't a lookahead just because this state is a
2928 consistent state with a default action. There might have been a
2929 previous inconsistent state, consistent state with a non-default
2930 action, or user semantic action that manipulated yychar.
2931 - Of course, the expected token list depends on states to have
2932 correct lookahead information, and it depends on the parser not
2933 to perform extra reductions after fetching a lookahead from the
2934 scanner and before detecting a syntax error. Thus, state merging
2935 (from LALR or IELR) and default reductions corrupt the expected
2936 token list. However, the list is correct for canonical LR with
2937 one exception: it will still contain any token that will not be
2938 accepted due to an error action in a later state.
2939 */
2940 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
2941 {
2942 int yyn;
2943 if (yyarg)
2944 yyarg[yycount] = yyctx->yytoken;
2945 ++yycount;
2946 yyn = yypcontext_expected_tokens (yyctx,
2947 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
2948 if (yyn == YYENOMEM)
2949 return YYENOMEM;
2950 else
2951 yycount += yyn;
2952 }
2953 return yycount;
2954 }
2955
2956 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2957 about the unexpected token YYTOKEN for the state stack whose top is
2958 YYSSP.
2959
2960 Return 0 if *YYMSG was successfully written. Return -1 if *YYMSG is
2961 not large enough to hold the message. In that case, also set
2962 *YYMSG_ALLOC to the required number of bytes. Return YYENOMEM if the
2963 required number of bytes is too large to store. */
2964 static int
yysyntax_error(YYPTRDIFF_T * yymsg_alloc,char ** yymsg,const yypcontext_t * yyctx)2965 yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
2966 const yypcontext_t *yyctx)
2967 {
2968 enum { YYARGS_MAX = 5 };
2969 /* Internationalized format string. */
2970 const char *yyformat = YY_NULLPTR;
2971 /* Arguments of yyformat: reported tokens (one for the "unexpected",
2972 one per "expected"). */
2973 yysymbol_kind_t yyarg[YYARGS_MAX];
2974 /* Cumulated lengths of YYARG. */
2975 YYPTRDIFF_T yysize = 0;
2976
2977 /* Actual size of YYARG. */
2978 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
2979 if (yycount == YYENOMEM)
2980 return YYENOMEM;
2981
2982 switch (yycount)
2983 {
2984 #define YYCASE_(N, S) \
2985 case N: \
2986 yyformat = S; \
2987 break
2988 default: /* Avoid compiler warnings. */
2989 YYCASE_(0, YY_("syntax error"));
2990 YYCASE_(1, YY_("syntax error, unexpected %s"));
2991 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2992 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2993 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2994 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2995 #undef YYCASE_
2996 }
2997
2998 /* Compute error message size. Don't count the "%s"s, but reserve
2999 room for the terminator. */
3000 yysize = yystrlen (yyformat) - 2 * yycount + 1;
3001 {
3002 int yyi;
3003 for (yyi = 0; yyi < yycount; ++yyi)
3004 {
3005 YYPTRDIFF_T yysize1
3006 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
3007 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
3008 yysize = yysize1;
3009 else
3010 return YYENOMEM;
3011 }
3012 }
3013
3014 if (*yymsg_alloc < yysize)
3015 {
3016 *yymsg_alloc = 2 * yysize;
3017 if (! (yysize <= *yymsg_alloc
3018 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
3019 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
3020 return -1;
3021 }
3022
3023 /* Avoid sprintf, as that infringes on the user's name space.
3024 Don't have undefined behavior even if the translation
3025 produced a string with the wrong number of "%s"s. */
3026 {
3027 char *yyp = *yymsg;
3028 int yyi = 0;
3029 while ((*yyp = *yyformat) != '\0')
3030 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
3031 {
3032 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
3033 yyformat += 2;
3034 }
3035 else
3036 {
3037 ++yyp;
3038 ++yyformat;
3039 }
3040 }
3041 return 0;
3042 }
3043
3044
3045 /*-----------------------------------------------.
3046 | Release the memory associated to this symbol. |
3047 `-----------------------------------------------*/
3048
3049 static void
yydestruct(const char * yymsg,yysymbol_kind_t yykind,YYSTYPE * yyvaluep,YYLTYPE * yylocationp,CfgLexer * lexer,LogDriver ** instance,gpointer arg)3050 yydestruct (const char *yymsg,
3051 yysymbol_kind_t yykind, YYSTYPE *yyvaluep, YYLTYPE *yylocationp, CfgLexer *lexer, LogDriver **instance, gpointer arg)
3052 {
3053 YY_USE (yyvaluep);
3054 YY_USE (yylocationp);
3055 YY_USE (lexer);
3056 YY_USE (instance);
3057 YY_USE (arg);
3058 if (!yymsg)
3059 yymsg = "Deleting";
3060 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
3061
3062 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3063 switch (yykind)
3064 {
3065 case YYSYMBOL_LL_IDENTIFIER: /* LL_IDENTIFIER */
3066 #line 310 "modules/afamqp/afamqp-grammar.y"
3067 { free(((*yyvaluep).cptr)); }
3068 #line 3069 "modules/afamqp/afamqp-grammar.c"
3069 break;
3070
3071 case YYSYMBOL_LL_STRING: /* LL_STRING */
3072 #line 310 "modules/afamqp/afamqp-grammar.y"
3073 { free(((*yyvaluep).cptr)); }
3074 #line 3075 "modules/afamqp/afamqp-grammar.c"
3075 break;
3076
3077 case YYSYMBOL_LL_BLOCK: /* LL_BLOCK */
3078 #line 310 "modules/afamqp/afamqp-grammar.y"
3079 { free(((*yyvaluep).cptr)); }
3080 #line 3081 "modules/afamqp/afamqp-grammar.c"
3081 break;
3082
3083 case YYSYMBOL_string: /* string */
3084 #line 310 "modules/afamqp/afamqp-grammar.y"
3085 { free(((*yyvaluep).cptr)); }
3086 #line 3087 "modules/afamqp/afamqp-grammar.c"
3087 break;
3088
3089 case YYSYMBOL_path: /* path */
3090 #line 310 "modules/afamqp/afamqp-grammar.y"
3091 { free(((*yyvaluep).cptr)); }
3092 #line 3093 "modules/afamqp/afamqp-grammar.c"
3093 break;
3094
3095 case YYSYMBOL_path_check: /* path_check */
3096 #line 310 "modules/afamqp/afamqp-grammar.y"
3097 { free(((*yyvaluep).cptr)); }
3098 #line 3099 "modules/afamqp/afamqp-grammar.c"
3099 break;
3100
3101 case YYSYMBOL_path_secret: /* path_secret */
3102 #line 310 "modules/afamqp/afamqp-grammar.y"
3103 { free(((*yyvaluep).cptr)); }
3104 #line 3105 "modules/afamqp/afamqp-grammar.c"
3105 break;
3106
3107 default:
3108 break;
3109 }
3110 YY_IGNORE_MAYBE_UNINITIALIZED_END
3111 }
3112
3113
3114
3115
3116
3117
3118 /*----------.
3119 | yyparse. |
3120 `----------*/
3121
3122 int
yyparse(CfgLexer * lexer,LogDriver ** instance,gpointer arg)3123 yyparse (CfgLexer *lexer, LogDriver **instance, gpointer arg)
3124 {
3125 /* Lookahead token kind. */
3126 int yychar;
3127
3128
3129 /* The semantic value of the lookahead symbol. */
3130 /* Default value used for initialization, for pacifying older GCCs
3131 or non-GCC compilers. */
3132 YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
3133 YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
3134
3135 /* Location data for the lookahead symbol. */
3136 static YYLTYPE yyloc_default
3137 # if defined AFAMQP_LTYPE_IS_TRIVIAL && AFAMQP_LTYPE_IS_TRIVIAL
3138 = { 1, 1, 1, 1 }
3139 # endif
3140 ;
3141 YYLTYPE yylloc = yyloc_default;
3142
3143 /* Number of syntax errors so far. */
3144 int yynerrs = 0;
3145
3146 yy_state_fast_t yystate = 0;
3147 /* Number of tokens to shift before error messages enabled. */
3148 int yyerrstatus = 0;
3149
3150 /* Refer to the stacks through separate pointers, to allow yyoverflow
3151 to reallocate them elsewhere. */
3152
3153 /* Their size. */
3154 YYPTRDIFF_T yystacksize = YYINITDEPTH;
3155
3156 /* The state stack: array, bottom, top. */
3157 yy_state_t yyssa[YYINITDEPTH];
3158 yy_state_t *yyss = yyssa;
3159 yy_state_t *yyssp = yyss;
3160
3161 /* The semantic value stack: array, bottom, top. */
3162 YYSTYPE yyvsa[YYINITDEPTH];
3163 YYSTYPE *yyvs = yyvsa;
3164 YYSTYPE *yyvsp = yyvs;
3165
3166 /* The location stack: array, bottom, top. */
3167 YYLTYPE yylsa[YYINITDEPTH];
3168 YYLTYPE *yyls = yylsa;
3169 YYLTYPE *yylsp = yyls;
3170
3171 int yyn;
3172 /* The return value of yyparse. */
3173 int yyresult;
3174 /* Lookahead symbol kind. */
3175 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
3176 /* The variables used to return semantic value and location from the
3177 action routines. */
3178 YYSTYPE yyval;
3179 YYLTYPE yyloc;
3180
3181 /* The locations where the error started and ended. */
3182 YYLTYPE yyerror_range[3];
3183
3184 /* Buffer for error messages, and its allocated size. */
3185 char yymsgbuf[128];
3186 char *yymsg = yymsgbuf;
3187 YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
3188
3189 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
3190
3191 /* The number of symbols on the RHS of the reduced rule.
3192 Keep to zero when no symbol should be popped. */
3193 int yylen = 0;
3194
3195 YYDPRINTF ((stderr, "Starting parse\n"));
3196
3197 yychar = AFAMQP_EMPTY; /* Cause a token to be read. */
3198
3199 yylsp[0] = yylloc;
3200 goto yysetstate;
3201
3202
3203 /*------------------------------------------------------------.
3204 | yynewstate -- push a new state, which is found in yystate. |
3205 `------------------------------------------------------------*/
3206 yynewstate:
3207 /* In all cases, when you get here, the value and location stacks
3208 have just been pushed. So pushing a state here evens the stacks. */
3209 yyssp++;
3210
3211
3212 /*--------------------------------------------------------------------.
3213 | yysetstate -- set current state (the top of the stack) to yystate. |
3214 `--------------------------------------------------------------------*/
3215 yysetstate:
3216 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
3217 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
3218 YY_IGNORE_USELESS_CAST_BEGIN
3219 *yyssp = YY_CAST (yy_state_t, yystate);
3220 YY_IGNORE_USELESS_CAST_END
3221 YY_STACK_PRINT (yyss, yyssp);
3222
3223 if (yyss + yystacksize - 1 <= yyssp)
3224 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
3225 YYNOMEM;
3226 #else
3227 {
3228 /* Get the current used size of the three stacks, in elements. */
3229 YYPTRDIFF_T yysize = yyssp - yyss + 1;
3230
3231 # if defined yyoverflow
3232 {
3233 /* Give user a chance to reallocate the stack. Use copies of
3234 these so that the &'s don't force the real ones into
3235 memory. */
3236 yy_state_t *yyss1 = yyss;
3237 YYSTYPE *yyvs1 = yyvs;
3238 YYLTYPE *yyls1 = yyls;
3239
3240 /* Each stack pointer address is followed by the size of the
3241 data in use in that stack, in bytes. This used to be a
3242 conditional around just the two extra args, but that might
3243 be undefined if yyoverflow is a macro. */
3244 yyoverflow (YY_("memory exhausted"),
3245 &yyss1, yysize * YYSIZEOF (*yyssp),
3246 &yyvs1, yysize * YYSIZEOF (*yyvsp),
3247 &yyls1, yysize * YYSIZEOF (*yylsp),
3248 &yystacksize);
3249 yyss = yyss1;
3250 yyvs = yyvs1;
3251 yyls = yyls1;
3252 }
3253 # else /* defined YYSTACK_RELOCATE */
3254 /* Extend the stack our own way. */
3255 if (YYMAXDEPTH <= yystacksize)
3256 YYNOMEM;
3257 yystacksize *= 2;
3258 if (YYMAXDEPTH < yystacksize)
3259 yystacksize = YYMAXDEPTH;
3260
3261 {
3262 yy_state_t *yyss1 = yyss;
3263 union yyalloc *yyptr =
3264 YY_CAST (union yyalloc *,
3265 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
3266 if (! yyptr)
3267 YYNOMEM;
3268 YYSTACK_RELOCATE (yyss_alloc, yyss);
3269 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
3270 YYSTACK_RELOCATE (yyls_alloc, yyls);
3271 # undef YYSTACK_RELOCATE
3272 if (yyss1 != yyssa)
3273 YYSTACK_FREE (yyss1);
3274 }
3275 # endif
3276
3277 yyssp = yyss + yysize - 1;
3278 yyvsp = yyvs + yysize - 1;
3279 yylsp = yyls + yysize - 1;
3280
3281 YY_IGNORE_USELESS_CAST_BEGIN
3282 YYDPRINTF ((stderr, "Stack size increased to %ld\n",
3283 YY_CAST (long, yystacksize)));
3284 YY_IGNORE_USELESS_CAST_END
3285
3286 if (yyss + yystacksize - 1 <= yyssp)
3287 YYABORT;
3288 }
3289 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
3290
3291
3292 if (yystate == YYFINAL)
3293 YYACCEPT;
3294
3295 goto yybackup;
3296
3297
3298 /*-----------.
3299 | yybackup. |
3300 `-----------*/
3301 yybackup:
3302 /* Do appropriate processing given the current state. Read a
3303 lookahead token if we need one and don't already have one. */
3304
3305 /* First try to decide what to do without reference to lookahead token. */
3306 yyn = yypact[yystate];
3307 if (yypact_value_is_default (yyn))
3308 goto yydefault;
3309
3310 /* Not known => get a lookahead token if don't already have one. */
3311
3312 /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
3313 if (yychar == AFAMQP_EMPTY)
3314 {
3315 YYDPRINTF ((stderr, "Reading a token\n"));
3316 yychar = yylex (&yylval, &yylloc, lexer);
3317 }
3318
3319 if (yychar <= AFAMQP_EOF)
3320 {
3321 yychar = AFAMQP_EOF;
3322 yytoken = YYSYMBOL_YYEOF;
3323 YYDPRINTF ((stderr, "Now at end of input.\n"));
3324 }
3325 else if (yychar == AFAMQP_error)
3326 {
3327 /* The scanner already issued an error message, process directly
3328 to error recovery. But do not keep the error token as
3329 lookahead, it is too special and may lead us to an endless
3330 loop in error recovery. */
3331 yychar = AFAMQP_UNDEF;
3332 yytoken = YYSYMBOL_YYerror;
3333 yyerror_range[1] = yylloc;
3334 goto yyerrlab1;
3335 }
3336 else
3337 {
3338 yytoken = YYTRANSLATE (yychar);
3339 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
3340 }
3341
3342 /* If the proper action on seeing token YYTOKEN is to reduce or to
3343 detect an error, take that action. */
3344 yyn += yytoken;
3345 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
3346 goto yydefault;
3347 yyn = yytable[yyn];
3348 if (yyn <= 0)
3349 {
3350 if (yytable_value_is_error (yyn))
3351 goto yyerrlab;
3352 yyn = -yyn;
3353 goto yyreduce;
3354 }
3355
3356 /* Count tokens shifted since error; after three, turn off error
3357 status. */
3358 if (yyerrstatus)
3359 yyerrstatus--;
3360
3361 /* Shift the lookahead token. */
3362 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
3363 yystate = yyn;
3364 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3365 *++yyvsp = yylval;
3366 YY_IGNORE_MAYBE_UNINITIALIZED_END
3367 *++yylsp = yylloc;
3368
3369 /* Discard the shifted token. */
3370 yychar = AFAMQP_EMPTY;
3371 goto yynewstate;
3372
3373
3374 /*-----------------------------------------------------------.
3375 | yydefault -- do the default action for the current state. |
3376 `-----------------------------------------------------------*/
3377 yydefault:
3378 yyn = yydefact[yystate];
3379 if (yyn == 0)
3380 goto yyerrlab;
3381 goto yyreduce;
3382
3383
3384 /*-----------------------------.
3385 | yyreduce -- do a reduction. |
3386 `-----------------------------*/
3387 yyreduce:
3388 /* yyn is the number of a rule to reduce with. */
3389 yylen = yyr2[yyn];
3390
3391 /* If YYLEN is nonzero, implement the default value of the action:
3392 '$$ = $1'.
3393
3394 Otherwise, the following line sets YYVAL to garbage.
3395 This behavior is undocumented and Bison
3396 users should not rely upon it. Assigning to YYVAL
3397 unconditionally makes the parser a bit smaller, and it avoids a
3398 GCC warning that YYVAL may be used uninitialized. */
3399 yyval = yyvsp[1-yylen];
3400
3401 /* Default location. */
3402 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
3403 yyerror_range[1] = yyloc;
3404 YY_REDUCE_PRINT (yyn);
3405 switch (yyn)
3406 {
3407 case 2: /* $@1: %empty */
3408 #line 415 "modules/afamqp/afamqp-grammar.y"
3409 {
3410 last_driver = *instance = afamqp_dd_new(configuration);
3411 }
3412 #line 3413 "modules/afamqp/afamqp-grammar.c"
3413 break;
3414
3415 case 3: /* start: LL_CONTEXT_DESTINATION KW_AMQP $@1 '(' afamqp_options ')' */
3416 #line 418 "modules/afamqp/afamqp-grammar.y"
3417 { YYACCEPT; }
3418 #line 3419 "modules/afamqp/afamqp-grammar.c"
3419 break;
3420
3421 case 6: /* afamqp_option: KW_HOST '(' string ')' */
3422 #line 427 "modules/afamqp/afamqp-grammar.y"
3423 { afamqp_dd_set_host(last_driver, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3424 #line 3425 "modules/afamqp/afamqp-grammar.c"
3425 break;
3426
3427 case 7: /* afamqp_option: KW_PORT '(' positive_integer ')' */
3428 #line 428 "modules/afamqp/afamqp-grammar.y"
3429 { afamqp_dd_set_port(last_driver, (yyvsp[-1].num)); }
3430 #line 3431 "modules/afamqp/afamqp-grammar.c"
3431 break;
3432
3433 case 8: /* afamqp_option: KW_VHOST '(' string ')' */
3434 #line 429 "modules/afamqp/afamqp-grammar.y"
3435 { afamqp_dd_set_vhost(last_driver, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3436 #line 3437 "modules/afamqp/afamqp-grammar.c"
3437 break;
3438
3439 case 9: /* afamqp_option: KW_EXCHANGE '(' string ')' */
3440 #line 430 "modules/afamqp/afamqp-grammar.y"
3441 { afamqp_dd_set_exchange(last_driver, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3442 #line 3443 "modules/afamqp/afamqp-grammar.c"
3443 break;
3444
3445 case 10: /* afamqp_option: KW_EXCHANGE_DECLARE '(' yesno ')' */
3446 #line 431 "modules/afamqp/afamqp-grammar.y"
3447 { afamqp_dd_set_exchange_declare(last_driver, (yyvsp[-1].num)); }
3448 #line 3449 "modules/afamqp/afamqp-grammar.c"
3449 break;
3450
3451 case 11: /* afamqp_option: KW_EXCHANGE_TYPE '(' string ')' */
3452 #line 432 "modules/afamqp/afamqp-grammar.y"
3453 { afamqp_dd_set_exchange_type(last_driver, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3454 #line 3455 "modules/afamqp/afamqp-grammar.c"
3455 break;
3456
3457 case 12: /* afamqp_option: KW_ROUTING_KEY '(' template_content ')' */
3458 #line 433 "modules/afamqp/afamqp-grammar.y"
3459 { afamqp_dd_set_routing_key(last_driver, (yyvsp[-1].ptr)); }
3460 #line 3461 "modules/afamqp/afamqp-grammar.c"
3461 break;
3462
3463 case 13: /* afamqp_option: KW_BODY '(' template_content ')' */
3464 #line 434 "modules/afamqp/afamqp-grammar.y"
3465 { afamqp_dd_set_body(last_driver, (yyvsp[-1].ptr)); }
3466 #line 3467 "modules/afamqp/afamqp-grammar.c"
3467 break;
3468
3469 case 14: /* afamqp_option: KW_PERSISTENT '(' yesno ')' */
3470 #line 435 "modules/afamqp/afamqp-grammar.y"
3471 { afamqp_dd_set_persistent(last_driver, (yyvsp[-1].num)); }
3472 #line 3473 "modules/afamqp/afamqp-grammar.c"
3473 break;
3474
3475 case 15: /* afamqp_option: KW_AUTH_METHOD '(' string ')' */
3476 #line 436 "modules/afamqp/afamqp-grammar.y"
3477 { CHECK_ERROR(afamqp_dd_set_auth_method(last_driver, (yyvsp[-1].cptr)), (yylsp[-1]), "unknown auth-method() argument"); free((yyvsp[-1].cptr)); }
3478 #line 3479 "modules/afamqp/afamqp-grammar.c"
3479 break;
3480
3481 case 16: /* afamqp_option: KW_USERNAME '(' string ')' */
3482 #line 437 "modules/afamqp/afamqp-grammar.y"
3483 { afamqp_dd_set_user(last_driver, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3484 #line 3485 "modules/afamqp/afamqp-grammar.c"
3485 break;
3486
3487 case 17: /* afamqp_option: KW_PASSWORD '(' string ')' */
3488 #line 438 "modules/afamqp/afamqp-grammar.y"
3489 { afamqp_dd_set_password(last_driver, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3490 #line 3491 "modules/afamqp/afamqp-grammar.c"
3491 break;
3492
3493 case 18: /* afamqp_option: KW_MAX_CHANNEL '(' positive_integer ')' */
3494 #line 439 "modules/afamqp/afamqp-grammar.y"
3495 { afamqp_dd_set_max_channel(last_driver, (yyvsp[-1].num)); }
3496 #line 3497 "modules/afamqp/afamqp-grammar.c"
3497 break;
3498
3499 case 19: /* afamqp_option: KW_FRAME_SIZE '(' positive_integer ')' */
3500 #line 440 "modules/afamqp/afamqp-grammar.y"
3501 { afamqp_dd_set_frame_size(last_driver, (yyvsp[-1].num)); }
3502 #line 3503 "modules/afamqp/afamqp-grammar.c"
3503 break;
3504
3505 case 20: /* afamqp_option: KW_HEARTBEAT '(' nonnegative_integer ')' */
3506 #line 441 "modules/afamqp/afamqp-grammar.y"
3507 { afamqp_dd_set_offered_heartbeat(last_driver, (yyvsp[-1].num)); }
3508 #line 3509 "modules/afamqp/afamqp-grammar.c"
3509 break;
3510
3511 case 21: /* afamqp_option: value_pair_option */
3512 #line 442 "modules/afamqp/afamqp-grammar.y"
3513 { afamqp_dd_set_value_pairs(last_driver, (yyvsp[0].ptr)); }
3514 #line 3515 "modules/afamqp/afamqp-grammar.c"
3515 break;
3516
3517 case 25: /* $@2: %empty */
3518 #line 446 "modules/afamqp/afamqp-grammar.y"
3519 { last_template_options = afamqp_dd_get_template_options(last_driver); }
3520 #line 3521 "modules/afamqp/afamqp-grammar.c"
3521 break;
3522
3523 case 29: /* afamqp_tls_option: KW_CA_FILE '(' path_check ')' */
3524 #line 456 "modules/afamqp/afamqp-grammar.y"
3525 { afamqp_dd_set_ca_file(last_driver, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3526 #line 3527 "modules/afamqp/afamqp-grammar.c"
3527 break;
3528
3529 case 30: /* afamqp_tls_option: KW_KEY_FILE '(' path_secret ')' */
3530 #line 457 "modules/afamqp/afamqp-grammar.y"
3531 { afamqp_dd_set_key_file(last_driver, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3532 #line 3533 "modules/afamqp/afamqp-grammar.c"
3533 break;
3534
3535 case 31: /* afamqp_tls_option: KW_CERT_FILE '(' path_check ')' */
3536 #line 458 "modules/afamqp/afamqp-grammar.y"
3537 { afamqp_dd_set_cert_file(last_driver, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3538 #line 3539 "modules/afamqp/afamqp-grammar.c"
3539 break;
3540
3541 case 32: /* afamqp_tls_option: KW_PEER_VERIFY '(' yesno ')' */
3542 #line 459 "modules/afamqp/afamqp-grammar.y"
3543 { afamqp_dd_set_peer_verify(last_driver, (yyvsp[-1].num)); }
3544 #line 3545 "modules/afamqp/afamqp-grammar.c"
3545 break;
3546
3547 case 33: /* template_content_inner: string */
3548 #line 696 "modules/afamqp/afamqp-grammar.y"
3549 {
3550 GError *error = NULL;
3551
3552 CHECK_ERROR_GERROR(log_template_compile(last_template, (yyvsp[0].cptr), &error), (yylsp[0]), error, "Error compiling template");
3553 free((yyvsp[0].cptr));
3554 }
3555 #line 3556 "modules/afamqp/afamqp-grammar.c"
3556 break;
3557
3558 case 34: /* template_content_inner: LL_IDENTIFIER '(' string ')' */
3559 #line 703 "modules/afamqp/afamqp-grammar.y"
3560 {
3561 GError *error = NULL;
3562
3563 CHECK_ERROR_GERROR(log_template_compile(last_template, (yyvsp[-1].cptr), &error), (yylsp[-1]), error, "Error compiling template");
3564 free((yyvsp[-1].cptr));
3565
3566 CHECK_ERROR_GERROR(log_template_set_type_hint(last_template, (yyvsp[-3].cptr), &error), (yylsp[-3]), error, "Error setting the template type-hint \"%s\"", (yyvsp[-3].cptr));
3567 free((yyvsp[-3].cptr));
3568 }
3569 #line 3570 "modules/afamqp/afamqp-grammar.c"
3570 break;
3571
3572 case 35: /* $@8: %empty */
3573 #line 715 "modules/afamqp/afamqp-grammar.y"
3574 { last_template = log_template_new(configuration, NULL); }
3575 #line 3576 "modules/afamqp/afamqp-grammar.c"
3576 break;
3577
3578 case 36: /* template_content: $@8 template_content_inner */
3579 #line 715 "modules/afamqp/afamqp-grammar.y"
3580 { (yyval.ptr) = last_template; }
3581 #line 3582 "modules/afamqp/afamqp-grammar.c"
3582 break;
3583
3584 case 39: /* yesno: KW_YES */
3585 #line 731 "modules/afamqp/afamqp-grammar.y"
3586 { (yyval.num) = 1; }
3587 #line 3588 "modules/afamqp/afamqp-grammar.c"
3588 break;
3589
3590 case 40: /* yesno: KW_NO */
3591 #line 732 "modules/afamqp/afamqp-grammar.y"
3592 { (yyval.num) = 0; }
3593 #line 3594 "modules/afamqp/afamqp-grammar.c"
3594 break;
3595
3596 case 41: /* yesno: LL_NUMBER */
3597 #line 733 "modules/afamqp/afamqp-grammar.y"
3598 { (yyval.num) = (yyvsp[0].num); }
3599 #line 3600 "modules/afamqp/afamqp-grammar.c"
3600 break;
3601
3602 case 42: /* nonnegative_integer64: LL_NUMBER */
3603 #line 743 "modules/afamqp/afamqp-grammar.y"
3604 {
3605 CHECK_ERROR(((yyvsp[0].num) >= 0), (yylsp[0]), "It cannot be negative");
3606 }
3607 #line 3608 "modules/afamqp/afamqp-grammar.c"
3608 break;
3609
3610 case 43: /* nonnegative_integer: nonnegative_integer64 */
3611 #line 750 "modules/afamqp/afamqp-grammar.y"
3612 {
3613 CHECK_ERROR(((yyvsp[0].num) <= G_MAXINT32), (yylsp[0]), "Must be smaller than 2^31");
3614 }
3615 #line 3616 "modules/afamqp/afamqp-grammar.c"
3616 break;
3617
3618 case 44: /* positive_integer64: LL_NUMBER */
3619 #line 757 "modules/afamqp/afamqp-grammar.y"
3620 {
3621 CHECK_ERROR(((yyvsp[0].num) > 0), (yylsp[0]), "Must be positive");
3622 }
3623 #line 3624 "modules/afamqp/afamqp-grammar.c"
3624 break;
3625
3626 case 45: /* positive_integer: positive_integer64 */
3627 #line 764 "modules/afamqp/afamqp-grammar.y"
3628 {
3629 CHECK_ERROR(((yyvsp[0].num) <= G_MAXINT32), (yylsp[0]), "Must be smaller than 2^31");
3630 }
3631 #line 3632 "modules/afamqp/afamqp-grammar.c"
3632 break;
3633
3634 case 46: /* path: string */
3635 #line 799 "modules/afamqp/afamqp-grammar.y"
3636 {
3637 struct stat buffer;
3638 int ret = stat((yyvsp[0].cptr), &buffer);
3639 CHECK_ERROR((ret == 0), (yylsp[0]), "File \"%s\" not found: %s", (yyvsp[0].cptr), strerror(errno));
3640 (yyval.cptr) = (yyvsp[0].cptr);
3641 }
3642 #line 3643 "modules/afamqp/afamqp-grammar.c"
3643 break;
3644
3645 case 47: /* path_check: path */
3646 #line 808 "modules/afamqp/afamqp-grammar.y"
3647 { cfg_path_track_file(configuration, (yyvsp[0].cptr), "path_check"); }
3648 #line 3649 "modules/afamqp/afamqp-grammar.c"
3649 break;
3650
3651 case 48: /* path_secret: path */
3652 #line 812 "modules/afamqp/afamqp-grammar.y"
3653 { cfg_path_track_file(configuration, (yyvsp[0].cptr), "path_secret"); }
3654 #line 3655 "modules/afamqp/afamqp-grammar.c"
3655 break;
3656
3657 case 49: /* string_list: string_list_build */
3658 #line 824 "modules/afamqp/afamqp-grammar.y"
3659 { (yyval.ptr) = (yyvsp[0].ptr); }
3660 #line 3661 "modules/afamqp/afamqp-grammar.c"
3661 break;
3662
3663 case 50: /* string_list_build: string string_list_build */
3664 #line 828 "modules/afamqp/afamqp-grammar.y"
3665 { (yyval.ptr) = g_list_prepend((yyvsp[0].ptr), g_strdup((yyvsp[-1].cptr))); free((yyvsp[-1].cptr)); }
3666 #line 3667 "modules/afamqp/afamqp-grammar.c"
3667 break;
3668
3669 case 51: /* string_list_build: %empty */
3670 #line 829 "modules/afamqp/afamqp-grammar.y"
3671 { (yyval.ptr) = NULL; }
3672 #line 3673 "modules/afamqp/afamqp-grammar.c"
3673 break;
3674
3675 case 52: /* driver_option: KW_PERSIST_NAME '(' string ')' */
3676 #line 873 "modules/afamqp/afamqp-grammar.y"
3677 { log_pipe_set_persist_name(&last_driver->super, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3678 #line 3679 "modules/afamqp/afamqp-grammar.c"
3679 break;
3680
3681 case 53: /* inner_dest: LL_IDENTIFIER */
3682 #line 909 "modules/afamqp/afamqp-grammar.y"
3683 {
3684 Plugin *p;
3685 gint context = LL_CONTEXT_INNER_DEST;
3686 gpointer value;
3687
3688 p = cfg_find_plugin(configuration, context, (yyvsp[0].cptr));
3689 CHECK_ERROR(p, (yylsp[0]), "%s plugin %s not found", cfg_lexer_lookup_context_name_by_type(context), (yyvsp[0].cptr));
3690
3691 value = cfg_parse_plugin(configuration, p, &(yylsp[0]), last_driver);
3692
3693 free((yyvsp[0].cptr));
3694 if (!value)
3695 {
3696 YYERROR;
3697 }
3698 if (!log_driver_add_plugin(last_driver, (LogDriverPlugin *) value))
3699 {
3700 log_driver_plugin_free(value);
3701 CHECK_ERROR(TRUE, (yylsp[0]), "Error while registering the plugin %s in this destination", (yyvsp[0].cptr));
3702 }
3703 }
3704 #line 3705 "modules/afamqp/afamqp-grammar.c"
3705 break;
3706
3707 case 54: /* dest_driver_option: KW_LOG_FIFO_SIZE '(' positive_integer ')' */
3708 #line 936 "modules/afamqp/afamqp-grammar.y"
3709 { ((LogDestDriver *) last_driver)->log_fifo_size = (yyvsp[-1].num); }
3710 #line 3711 "modules/afamqp/afamqp-grammar.c"
3711 break;
3712
3713 case 55: /* dest_driver_option: KW_THROTTLE '(' nonnegative_integer ')' */
3714 #line 937 "modules/afamqp/afamqp-grammar.y"
3715 { ((LogDestDriver *) last_driver)->throttle = (yyvsp[-1].num); }
3716 #line 3717 "modules/afamqp/afamqp-grammar.c"
3717 break;
3718
3719 case 58: /* threaded_dest_driver_general_option: KW_RETRIES '(' positive_integer ')' */
3720 #line 954 "modules/afamqp/afamqp-grammar.y"
3721 {
3722 log_threaded_dest_driver_set_max_retries_on_error(last_driver, (yyvsp[-1].num));
3723 }
3724 #line 3725 "modules/afamqp/afamqp-grammar.c"
3725 break;
3726
3727 case 59: /* threaded_dest_driver_general_option: KW_TIME_REOPEN '(' positive_integer ')' */
3728 #line 957 "modules/afamqp/afamqp-grammar.y"
3729 { log_threaded_dest_driver_set_time_reopen(last_driver, (yyvsp[-1].num)); }
3730 #line 3731 "modules/afamqp/afamqp-grammar.c"
3731 break;
3732
3733 case 61: /* template_option: KW_TS_FORMAT '(' string ')' */
3734 #line 1110 "modules/afamqp/afamqp-grammar.y"
3735 { last_template_options->ts_format = cfg_ts_format_value((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3736 #line 3737 "modules/afamqp/afamqp-grammar.c"
3737 break;
3738
3739 case 62: /* template_option: KW_FRAC_DIGITS '(' nonnegative_integer ')' */
3740 #line 1111 "modules/afamqp/afamqp-grammar.y"
3741 { last_template_options->frac_digits = (yyvsp[-1].num); }
3742 #line 3743 "modules/afamqp/afamqp-grammar.c"
3743 break;
3744
3745 case 63: /* template_option: KW_TIME_ZONE '(' string ')' */
3746 #line 1112 "modules/afamqp/afamqp-grammar.y"
3747 { last_template_options->time_zone[LTZ_SEND] = g_strdup((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3748 #line 3749 "modules/afamqp/afamqp-grammar.c"
3749 break;
3750
3751 case 64: /* template_option: KW_SEND_TIME_ZONE '(' string ')' */
3752 #line 1113 "modules/afamqp/afamqp-grammar.y"
3753 { last_template_options->time_zone[LTZ_SEND] = g_strdup((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3754 #line 3755 "modules/afamqp/afamqp-grammar.c"
3755 break;
3756
3757 case 65: /* template_option: KW_LOCAL_TIME_ZONE '(' string ')' */
3758 #line 1114 "modules/afamqp/afamqp-grammar.y"
3759 { last_template_options->time_zone[LTZ_LOCAL] = g_strdup((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3760 #line 3761 "modules/afamqp/afamqp-grammar.c"
3761 break;
3762
3763 case 66: /* template_option: KW_ON_ERROR '(' string ')' */
3764 #line 1116 "modules/afamqp/afamqp-grammar.y"
3765 {
3766 gint on_error;
3767
3768 CHECK_ERROR(log_template_on_error_parse((yyvsp[-1].cptr), &on_error), (yylsp[-1]), "Invalid on-error() setting \"%s\"", (yyvsp[-1].cptr));
3769 free((yyvsp[-1].cptr));
3770
3771 log_template_options_set_on_error(last_template_options, on_error);
3772 }
3773 #line 3774 "modules/afamqp/afamqp-grammar.c"
3774 break;
3775
3776 case 67: /* $@16: %empty */
3777 #line 1138 "modules/afamqp/afamqp-grammar.y"
3778 {
3779 last_value_pairs = value_pairs_new();
3780 }
3781 #line 3782 "modules/afamqp/afamqp-grammar.c"
3782 break;
3783
3784 case 68: /* value_pair_option: KW_VALUE_PAIRS $@16 '(' vp_options ')' */
3785 #line 1142 "modules/afamqp/afamqp-grammar.y"
3786 { (yyval.ptr) = last_value_pairs; }
3787 #line 3788 "modules/afamqp/afamqp-grammar.c"
3788 break;
3789
3790 case 71: /* vp_option: KW_PAIR '(' string ':' template_content ')' */
3791 #line 1152 "modules/afamqp/afamqp-grammar.y"
3792 {
3793 value_pairs_add_pair(last_value_pairs, (yyvsp[-3].cptr), (yyvsp[-1].ptr));
3794 free((yyvsp[-3].cptr));
3795 }
3796 #line 3797 "modules/afamqp/afamqp-grammar.c"
3797 break;
3798
3799 case 72: /* vp_option: KW_PAIR '(' string template_content ')' */
3800 #line 1157 "modules/afamqp/afamqp-grammar.y"
3801 {
3802 value_pairs_add_pair(last_value_pairs, (yyvsp[-2].cptr), (yyvsp[-1].ptr));
3803 free((yyvsp[-2].cptr));
3804 }
3805 #line 3806 "modules/afamqp/afamqp-grammar.c"
3806 break;
3807
3808 case 73: /* $@17: %empty */
3809 #line 1162 "modules/afamqp/afamqp-grammar.y"
3810 {
3811 last_vp_transset = value_pairs_transform_set_new((yyvsp[-2].cptr));
3812 value_pairs_add_glob_pattern(last_value_pairs, (yyvsp[-2].cptr), TRUE);
3813 free((yyvsp[-2].cptr));
3814 }
3815 #line 3816 "modules/afamqp/afamqp-grammar.c"
3816 break;
3817
3818 case 74: /* $@18: %empty */
3819 #line 1167 "modules/afamqp/afamqp-grammar.y"
3820 { value_pairs_add_transforms(last_value_pairs, last_vp_transset); }
3821 #line 3822 "modules/afamqp/afamqp-grammar.c"
3822 break;
3823
3824 case 76: /* vp_option: KW_KEY '(' string_list ')' */
3825 #line 1168 "modules/afamqp/afamqp-grammar.y"
3826 { value_pairs_add_glob_patterns(last_value_pairs, (yyvsp[-1].ptr), TRUE); }
3827 #line 3828 "modules/afamqp/afamqp-grammar.c"
3828 break;
3829
3830 case 77: /* $@19: %empty */
3831 #line 1170 "modules/afamqp/afamqp-grammar.y"
3832 {
3833 last_vp_transset = value_pairs_transform_set_new((yyvsp[0].cptr));
3834 free((yyvsp[0].cptr));
3835 }
3836 #line 3837 "modules/afamqp/afamqp-grammar.c"
3837 break;
3838
3839 case 78: /* vp_option: KW_REKEY '(' string $@19 vp_rekey_options ')' */
3840 #line 1174 "modules/afamqp/afamqp-grammar.y"
3841 { value_pairs_add_transforms(last_value_pairs, last_vp_transset); }
3842 #line 3843 "modules/afamqp/afamqp-grammar.c"
3843 break;
3844
3845 case 79: /* vp_option: KW_EXCLUDE '(' string_list ')' */
3846 #line 1175 "modules/afamqp/afamqp-grammar.y"
3847 { value_pairs_add_glob_patterns(last_value_pairs, (yyvsp[-1].ptr), FALSE); }
3848 #line 3849 "modules/afamqp/afamqp-grammar.c"
3849 break;
3850
3851 case 81: /* vp_scope_list: string vp_scope_list */
3852 #line 1180 "modules/afamqp/afamqp-grammar.y"
3853 { value_pairs_add_scope(last_value_pairs, (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); }
3854 #line 3855 "modules/afamqp/afamqp-grammar.c"
3855 break;
3856
3857 case 85: /* vp_rekey_option: KW_SHIFT '(' positive_integer ')' */
3858 #line 1190 "modules/afamqp/afamqp-grammar.y"
3859 { value_pairs_transform_set_add_func(last_vp_transset, value_pairs_new_transform_shift((yyvsp[-1].num))); }
3860 #line 3861 "modules/afamqp/afamqp-grammar.c"
3861 break;
3862
3863 case 86: /* vp_rekey_option: KW_SHIFT_LEVELS '(' positive_integer ')' */
3864 #line 1191 "modules/afamqp/afamqp-grammar.y"
3865 { value_pairs_transform_set_add_func(last_vp_transset, value_pairs_new_transform_shift_levels((yyvsp[-1].num))); }
3866 #line 3867 "modules/afamqp/afamqp-grammar.c"
3867 break;
3868
3869 case 87: /* vp_rekey_option: KW_ADD_PREFIX '(' string ')' */
3870 #line 1192 "modules/afamqp/afamqp-grammar.y"
3871 { value_pairs_transform_set_add_func(last_vp_transset, value_pairs_new_transform_add_prefix((yyvsp[-1].cptr))); free((yyvsp[-1].cptr)); }
3872 #line 3873 "modules/afamqp/afamqp-grammar.c"
3873 break;
3874
3875 case 88: /* vp_rekey_option: KW_REPLACE_PREFIX '(' string string ')' */
3876 #line 1193 "modules/afamqp/afamqp-grammar.y"
3877 { value_pairs_transform_set_add_func(last_vp_transset, value_pairs_new_transform_replace_prefix((yyvsp[-2].cptr), (yyvsp[-1].cptr))); free((yyvsp[-2].cptr)); free((yyvsp[-1].cptr)); }
3878 #line 3879 "modules/afamqp/afamqp-grammar.c"
3879 break;
3880
3881
3882 #line 3883 "modules/afamqp/afamqp-grammar.c"
3883
3884 default: break;
3885 }
3886 /* User semantic actions sometimes alter yychar, and that requires
3887 that yytoken be updated with the new translation. We take the
3888 approach of translating immediately before every use of yytoken.
3889 One alternative is translating here after every semantic action,
3890 but that translation would be missed if the semantic action invokes
3891 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
3892 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
3893 incorrect destructor might then be invoked immediately. In the
3894 case of YYERROR or YYBACKUP, subsequent parser actions might lead
3895 to an incorrect destructor call or verbose syntax error message
3896 before the lookahead is translated. */
3897 YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
3898
3899 YYPOPSTACK (yylen);
3900 yylen = 0;
3901
3902 *++yyvsp = yyval;
3903 *++yylsp = yyloc;
3904
3905 /* Now 'shift' the result of the reduction. Determine what state
3906 that goes to, based on the state we popped back to and the rule
3907 number reduced by. */
3908 {
3909 const int yylhs = yyr1[yyn] - YYNTOKENS;
3910 const int yyi = yypgoto[yylhs] + *yyssp;
3911 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
3912 ? yytable[yyi]
3913 : yydefgoto[yylhs]);
3914 }
3915
3916 goto yynewstate;
3917
3918
3919 /*--------------------------------------.
3920 | yyerrlab -- here on detecting error. |
3921 `--------------------------------------*/
3922 yyerrlab:
3923 /* Make sure we have latest lookahead translation. See comments at
3924 user semantic actions for why this is necessary. */
3925 yytoken = yychar == AFAMQP_EMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
3926 /* If not already recovering from an error, report this error. */
3927 if (!yyerrstatus)
3928 {
3929 ++yynerrs;
3930 {
3931 yypcontext_t yyctx
3932 = {yyssp, yytoken, &yylloc};
3933 char const *yymsgp = YY_("syntax error");
3934 int yysyntax_error_status;
3935 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
3936 if (yysyntax_error_status == 0)
3937 yymsgp = yymsg;
3938 else if (yysyntax_error_status == -1)
3939 {
3940 if (yymsg != yymsgbuf)
3941 YYSTACK_FREE (yymsg);
3942 yymsg = YY_CAST (char *,
3943 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
3944 if (yymsg)
3945 {
3946 yysyntax_error_status
3947 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
3948 yymsgp = yymsg;
3949 }
3950 else
3951 {
3952 yymsg = yymsgbuf;
3953 yymsg_alloc = sizeof yymsgbuf;
3954 yysyntax_error_status = YYENOMEM;
3955 }
3956 }
3957 yyerror (&yylloc, lexer, instance, arg, yymsgp);
3958 if (yysyntax_error_status == YYENOMEM)
3959 YYNOMEM;
3960 }
3961 }
3962
3963 yyerror_range[1] = yylloc;
3964 if (yyerrstatus == 3)
3965 {
3966 /* If just tried and failed to reuse lookahead token after an
3967 error, discard it. */
3968
3969 if (yychar <= AFAMQP_EOF)
3970 {
3971 /* Return failure if at end of input. */
3972 if (yychar == AFAMQP_EOF)
3973 YYABORT;
3974 }
3975 else
3976 {
3977 yydestruct ("Error: discarding",
3978 yytoken, &yylval, &yylloc, lexer, instance, arg);
3979 yychar = AFAMQP_EMPTY;
3980 }
3981 }
3982
3983 /* Else will try to reuse lookahead token after shifting the error
3984 token. */
3985 goto yyerrlab1;
3986
3987
3988 /*---------------------------------------------------.
3989 | yyerrorlab -- error raised explicitly by YYERROR. |
3990 `---------------------------------------------------*/
3991 yyerrorlab:
3992 /* Pacify compilers when the user code never invokes YYERROR and the
3993 label yyerrorlab therefore never appears in user code. */
3994 if (0)
3995 YYERROR;
3996 ++yynerrs;
3997
3998 /* Do not reclaim the symbols of the rule whose action triggered
3999 this YYERROR. */
4000 YYPOPSTACK (yylen);
4001 yylen = 0;
4002 YY_STACK_PRINT (yyss, yyssp);
4003 yystate = *yyssp;
4004 goto yyerrlab1;
4005
4006
4007 /*-------------------------------------------------------------.
4008 | yyerrlab1 -- common code for both syntax error and YYERROR. |
4009 `-------------------------------------------------------------*/
4010 yyerrlab1:
4011 yyerrstatus = 3; /* Each real token shifted decrements this. */
4012
4013 /* Pop stack until we find a state that shifts the error token. */
4014 for (;;)
4015 {
4016 yyn = yypact[yystate];
4017 if (!yypact_value_is_default (yyn))
4018 {
4019 yyn += YYSYMBOL_YYerror;
4020 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
4021 {
4022 yyn = yytable[yyn];
4023 if (0 < yyn)
4024 break;
4025 }
4026 }
4027
4028 /* Pop the current state because it cannot handle the error token. */
4029 if (yyssp == yyss)
4030 YYABORT;
4031
4032 yyerror_range[1] = *yylsp;
4033 yydestruct ("Error: popping",
4034 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, lexer, instance, arg);
4035 YYPOPSTACK (1);
4036 yystate = *yyssp;
4037 YY_STACK_PRINT (yyss, yyssp);
4038 }
4039
4040 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
4041 *++yyvsp = yylval;
4042 YY_IGNORE_MAYBE_UNINITIALIZED_END
4043
4044 yyerror_range[2] = yylloc;
4045 ++yylsp;
4046 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
4047
4048 /* Shift the error token. */
4049 YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
4050
4051 yystate = yyn;
4052 goto yynewstate;
4053
4054
4055 /*-------------------------------------.
4056 | yyacceptlab -- YYACCEPT comes here. |
4057 `-------------------------------------*/
4058 yyacceptlab:
4059 yyresult = 0;
4060 goto yyreturnlab;
4061
4062
4063 /*-----------------------------------.
4064 | yyabortlab -- YYABORT comes here. |
4065 `-----------------------------------*/
4066 yyabortlab:
4067 yyresult = 1;
4068 goto yyreturnlab;
4069
4070
4071 /*-----------------------------------------------------------.
4072 | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. |
4073 `-----------------------------------------------------------*/
4074 yyexhaustedlab:
4075 yyerror (&yylloc, lexer, instance, arg, YY_("memory exhausted"));
4076 yyresult = 2;
4077 goto yyreturnlab;
4078
4079
4080 /*----------------------------------------------------------.
4081 | yyreturnlab -- parsing is finished, clean up and return. |
4082 `----------------------------------------------------------*/
4083 yyreturnlab:
4084 if (yychar != AFAMQP_EMPTY)
4085 {
4086 /* Make sure we have latest lookahead translation. See comments at
4087 user semantic actions for why this is necessary. */
4088 yytoken = YYTRANSLATE (yychar);
4089 yydestruct ("Cleanup: discarding lookahead",
4090 yytoken, &yylval, &yylloc, lexer, instance, arg);
4091 }
4092 /* Do not reclaim the symbols of the rule whose action triggered
4093 this YYABORT or YYACCEPT. */
4094 YYPOPSTACK (yylen);
4095 YY_STACK_PRINT (yyss, yyssp);
4096 while (yyssp != yyss)
4097 {
4098 yydestruct ("Cleanup: popping",
4099 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, lexer, instance, arg);
4100 YYPOPSTACK (1);
4101 }
4102 #ifndef yyoverflow
4103 if (yyss != yyssa)
4104 YYSTACK_FREE (yyss);
4105 #endif
4106 if (yymsg != yymsgbuf)
4107 YYSTACK_FREE (yymsg);
4108 return yyresult;
4109 }
4110
4111 #line 1227 "modules/afamqp/afamqp-grammar.y"
4112
4113