VTK  9.5.20251204
vtkVRMLImporter_Yacc.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-FileCopyrightText: Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
3// SPDX-FileCopyrightText: Copyright (C) 1996 Silicon Graphics, Inc.
4// SPDX-License-Identifier: BSD-3-Clause AND GPL-3.0 WITH Bison-exception-2.2
9
10#ifndef vtkVRMLImporter_Yacc_h
11#define vtkVRMLImporter_Yacc_h
12
13#include "vtkFloatArray.h"
14#include "vtkIdTypeArray.h"
15#include "vtkStringFormatter.h"
16#include "vtkStringScanner.h"
17#include "vtkVRML.h"
18#include "vtkVRMLImporter.h"
19
20#include <cassert>
21#include <cstdio>
22#include <cstring>
23#include <iostream>
24
25//
26// The VrmlNodeType class is responsible for storing information about node
27// or prototype types.
28//
29
30// used to hold the VRML DEF names and assoc vtkObjects
31VTK_ABI_NAMESPACE_BEGIN
33{
34public:
36 {
37 defName = n;
38 defObject = o;
39 }
40 char* defName;
42
43 void* operator new(size_t n) { return vtkVRMLAllocator::AllocateMemory(n); }
44
45 void operator delete(void* vtkNotUsed(ptr)) {}
46};
47
49{
50public:
51 // Constructor. Takes name of new type (e.g. "Transform" or "Box")
52 // Copies the string given as name.
53 VrmlNodeType(const char* nm);
54
55 // Destructor exists mainly to deallocate storage for name
57
58 // Routines for adding/getting eventIns/Outs/fields
59 void addEventIn(const char* name, int type);
60 void addEventOut(const char* name, int type);
61 void addField(const char* name, int type);
62 void addExposedField(const char* name, int type);
63
64 int hasEventIn(const char* name) const;
65 int hasEventOut(const char* name) const;
66 int hasField(const char* name) const;
67 int hasExposedField(const char* name) const;
68
69 const char* getName() const { return name; }
70
71 void* operator new(size_t n) { return vtkVRMLAllocator::AllocateMemory(n); }
72
73 void operator delete(void* vtkNotUsed(ptr)) {}
74
76 {
77 char* name;
78 int type;
79
80 void* operator new(size_t n) { return vtkVRMLAllocator::AllocateMemory(n); }
81
82 void operator delete(void* vtkNotUsed(ptr)) {}
83 };
84
85 // This is used to keep track of which field in which type of node is being
86 // parsed. Field are nested (nodes are contained inside MFNode/SFNode fields)
87 // so a stack of these is needed:
88 struct FieldRec
89 {
91 const char* fieldName;
92 };
93
94private:
95 void add(vtkVRMLVectorType<NameTypeRec*>&, const char*, int);
96 int has(const vtkVRMLVectorType<NameTypeRec*>&, const char*) const;
97
98 char* name;
99
100 vtkVRMLVectorType<NameTypeRec*> eventIns;
101 vtkVRMLVectorType<NameTypeRec*> eventOuts;
102 vtkVRMLVectorType<NameTypeRec*> fields;
103};
104
106{
107public:
110 typedef unsigned char YY_CHAR;
111 typedef int yy_state_type;
112
113private:
114 vtkVRMLYaccData(const vtkVRMLYaccData&) = delete;
115 vtkVRMLYaccData& operator=(const vtkVRMLYaccData&) = delete;
116
117public:
118 // Parser variables and functions:
119 // Currently-being-define proto. Prototypes may be nested, so a stack
120 // is needed:
121 vtkVRMLVectorType<VrmlNodeType*>* CurrentProtoStack; // = nullptr;
122
123 // Some helper routines defined below:
124 void beginProto(const char*);
125 void endProto();
126
127 int addField(const char* type, const char* name);
128 int addEventIn(const char* type, const char* name);
129 int addEventOut(const char* type, const char* name);
130 int addExposedField(const char* type, const char* name);
131 int add(void (VrmlNodeType::*)(const char*, int), const char*, const char*);
132 int fieldType(const char* type);
133 void inScript();
134 void expect(int type);
135
136 void yyerror(const char*);
137 int yylex(vtkVRMLImporter* self);
138
139 class FakeAlloca;
140
141 typedef union
142 {
143 char* string;
144
145 /* Other types that will be needed by a true VRML implementation
146 * (but are not defined by this parser due to the complexity):
147 * Node *node;
148 * list<Node *> *nodeList;
149 */
150
151 float sffloat;
155 int sfint;
156 float vec4f[4];
157 } YYSTYPE;
158
168
169 int yychar; /* the lookahead symbol */
170 YYSTYPE yylval; /* the semantic value of the */
171 /* lookahead symbol */
172 yyltype yylloc; /* location data for the lookahead */
173 /* symbol */
174 int yynerrs; /* number of parse errors so far */
175 // Lexer variables and functions:
177 FILE *yyin, *yyout;
178 int yywrap();
179
181 {
183
184 char* yy_ch_buf; /* input buffer */
185 char* yy_buf_pos; /* current position in input buffer */
186
187 /* Size of input buffer in bytes, not including room for EOB
188 * characters.
189 */
191
192 /* Number of characters read into yy_ch_buf, not including EOB
193 * characters.
194 */
196
197 /* Whether this is an "interactive" input source; if so, and
198 * if we're using stdio for input, then we want to use getc()
199 * instead of fread(), to make sure we stop fetching input after
200 * each newline.
201 */
203
204 /* Whether to try to fill the input buffer when we reach the
205 * end of it.
206 */
208
210 {
213 /* When an EOF's been seen but there's still some text to process
214 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
215 * shouldn't try reading from the input source any more. We might
216 * still have a bunch of tokens to match, though, because of
217 * possible backing-up.
218 *
219 * When we actually see the EOF, we change the status to "new"
220 * (via yyrestart()), so that the user can continue scanning by
221 * just pointing yyin at a new input file.
222 */
224 };
226 };
228
230
231 /* yy_hold_char holds the character lost when yytext is formed. */
233
234 int yy_n_chars; /* number of characters read into yy_ch_buf */
235
236 /* Points to current character in buffer. */
237 char* yy_c_buf_p; // = (char *) 0;
238 int yy_init; // = 1; /* whether we need to initialize */
239 int yy_start; // = 0; /* start state number */
240
241 /* Flag which is used to allow yywrap()'s to do buffer switches
242 * instead of setting up a fresh yyin. A bit of a hack ...
243 */
245
246 void yyrestart(FILE* input_file);
247 void yy_switch_to_buffer(YY_BUFFER_STATE new_buffer);
249 YY_BUFFER_STATE yy_create_buffer(FILE* file, int size);
251 void yy_init_buffer(YY_BUFFER_STATE b, FILE* file);
252
253 void* yy_flex_alloc(unsigned int);
254 void* yy_flex_realloc(void*, unsigned int);
255 void yy_flex_free(void*);
256
257 char* yytext;
258
261 int yy_get_next_buffer();
262 void yy_fatal_error(const char msg[]);
263
266
267 int yy_flex_debug; // = 1;
268
269 // used to reset the lexer input after initialization of VRML nodes
270 void (*theyyInput)(char*, int&, int, vtkVRMLYaccData*);
271
272 /* Current line number */
273 int currentLineNumber; // = 1;
275
276 /* The YACC parser sets this to a token to direct the lexer */
277 /* in cases where just syntax isn't enough: */
278 int expectToken; // = 0;
279
280 /* True when parsing a multiple-valued field: */
281 int parsing_mf; // = 0;
282
283 /* These are used when parsing SFImage fields: */
284 int sfImageIntsParsed; // = 0;
286
287 int yydebug; /* nonzero means print parse trace */
288 int yyparse(vtkVRMLImporter* self);
289
290 static void memyyInput(char* buf, int& result, int max_size, vtkVRMLYaccData* self);
291 static void defyyInput(char* buf, int& result, int max_size, vtkVRMLYaccData* self);
292
293 int memyyInput_i; // = 0;
294 int memyyInput_j; // = 0;
295
296 // Used during the parsing
297 int creatingDEF; // = 0;
299
300 // Node types are stored in this data structure:
301 vtkVRMLVectorType<VrmlNodeType*>* typeList;
302 vtkVRMLVectorType<vtkVRMLUseStruct*>* useList;
303 vtkVRMLVectorType<VrmlNodeType::FieldRec*>* currentField;
304
305 // Moved from VrmlNodeType when getting rid of static data
306 //
307 // Namespace management functions. PROTO definitions add node types
308 // to the namespace. PROTO implementations are a separate node
309 // namespace, and require that any nested PROTOs NOT be available
310 // outside the PROTO implementation.
311 // addToNameSpace will print an error to stderr if the given type
312 // is already defined.
314 void pushNameSpace();
315 void popNameSpace();
316
317 // Find a node type, given its name. Returns nullptr if type is not defined.
318 const VrmlNodeType* find(const char* nm);
319};
320
321//------------------------------------------------------------------------------------
322//
323// Implementation of the above begins here
324//
325
326inline VrmlNodeType::VrmlNodeType(const char* nm)
327{
328 assert(nm != nullptr);
329 name = static_cast<char*>(vtkVRMLAllocator::AllocateMemory((strlen(nm) + 1) * sizeof(char)));
330 strcpy(name, nm);
331}
332
334{
335 // Free strings duplicated when fields/eventIns/eventOuts added:
336
337 int i;
338 for (i = 0; i < eventIns.Count(); i++)
339 {
340 NameTypeRec* r = eventIns[i];
341 // free(r->name);
342 delete r;
343 }
344 for (i = 0; i < eventOuts.Count(); i++)
345 {
346 NameTypeRec* r = eventOuts[i];
347 // free(r->name);
348 delete r;
349 }
350 for (i = 0; i < fields.Count(); i++)
351 {
352 NameTypeRec* r = fields[i];
353 // free(r->name);
354 delete r;
355 }
356}
357inline void VrmlNodeType::addEventIn(const char* nodeName, int type)
358{
359 add(eventIns, nodeName, type);
360}
361inline void VrmlNodeType::addEventOut(const char* nodeName, int type)
362{
363 add(eventOuts, nodeName, type);
364}
365inline void VrmlNodeType::addField(const char* nodeName, int type)
366{
367 add(fields, nodeName, type);
368}
369inline void VrmlNodeType::addExposedField(const char* nodeName, int type)
370{
371 std::string tmp;
372 add(fields, nodeName, type);
373 vtk::format_to(std::back_inserter(tmp), "set_{:s}", nodeName);
374 add(eventIns, tmp.data(), type);
375 vtk::format_to(std::back_inserter(tmp), "{:s}_changed", nodeName);
376 add(eventOuts, tmp.data(), type);
377}
378
379inline void VrmlNodeType::add(vtkVRMLVectorType<NameTypeRec*>& recs, const char* nodeName, int type)
380{
381 NameTypeRec* r = new NameTypeRec;
382 r->name = vtkVRMLAllocator::StrDup(nodeName); // strdup(nodeName);
383 r->type = type;
384 recs += r;
385}
386
387inline int VrmlNodeType::hasEventIn(const char* nodeName) const
388{
389 return has(eventIns, nodeName);
390}
391inline int VrmlNodeType::hasEventOut(const char* nodeName) const
392{
393 return has(eventOuts, nodeName);
394}
395inline int VrmlNodeType::hasField(const char* nodeName) const
396{
397 return has(fields, nodeName);
398}
399inline int VrmlNodeType::hasExposedField(const char* nodeName) const
400{
401 // Must have field "name", eventIn "set_name", and eventOut
402 // "name_changed", all with same type:
403 int type;
404 if ((type = has(fields, nodeName)) == 0)
405 return 0;
406
407 if (type != has(eventIns, nodeName))
408 return 0;
409
410 if (type != has(eventOuts, nodeName))
411 return 0;
412
413 return type;
414}
415inline int VrmlNodeType::has(
416 const vtkVRMLVectorType<NameTypeRec*>& recs, const char* nodeName) const
417{
418 for (int i = 0; i < recs.Count(); i++)
419 {
420 NameTypeRec* n = recs.Get(i);
421 if (strcmp(n->name, nodeName) == 0)
422 return n->type;
423 }
424 return 0;
425}
426
427//----------------------------------------------------------------------------
429{
430 yy_current_buffer = nullptr;
431 yy_c_buf_p = nullptr;
432 yy_init = 1;
433 yy_start = 0;
434 yy_flex_debug = 1;
435 yyin = nullptr;
436 yyout = nullptr;
438 expectToken = 0;
439 parsing_mf = 0;
442 memyyInput_i = 0;
443 memyyInput_j = 0;
444 creatingDEF = 0;
445 theyyInput = nullptr;
446
447 typeList = nullptr;
448 useList = nullptr;
449 currentField = nullptr;
450}
451
452//----------------------------------------------------------------------------
461
463{
464 if (find(_type->getName()) != nullptr)
465 {
466 std::cerr << "PROTO " << _type->getName() << " already defined\n";
467 return;
468 }
469 *typeList += _type;
470}
471
472//
473// One list is used to store all the node types. Nested namespaces are
474// separated by nullptr elements.
475// This isn't terribly efficient, but it is nice and simple.
476//
478{
479 *typeList += (VrmlNodeType*)nullptr;
480}
481
483{
484 // Remove everything up to and including the next nullptr marker:
485 for (int i = 0; i < typeList->Count(); i++)
486 {
487 VrmlNodeType* nodeType = typeList->Pop();
488
489 if (nodeType == nullptr)
490 {
491 break;
492 }
493 else
494 {
495 // NOTE: Instead of just deleting the VrmlNodeTypes, you will
496 // probably want to reference count or garbage collect them, since
497 // any nodes created as part of the PROTO implementation will
498 // probably point back to their VrmlNodeType structure.
499 delete nodeType;
500 }
501 }
502}
503
504inline const VrmlNodeType* vtkVRMLYaccData::find(const char* _name)
505{
506 // Look through the type stack:
507 for (int i = 0; i < typeList->Count(); i++)
508 {
509 const VrmlNodeType* nt = (*typeList)[i];
510 if (nt != nullptr && strcmp(nt->getName(), _name) == 0)
511 {
512 return nt;
513 }
514 }
515 return nullptr;
516}
517
518// Begin of Auto-generated Parser Code
519
520/* A Bison parser, made from parser.y with Bison version GNU Bison version 1.24
521 */
522
523#define YYBISON 1 /* Identify Bison output. */
524
525#define IDENTIFIER 258
526#define DEF 259
527#define USE 260
528#define PROTO 261
529#define EXTERNPROTO 262
530#define TO 263
531#define IS 264
532#define ROUTE 265
533#define SFN_NULL 266
534#define EVENTIN 267
535#define EVENTOUT 268
536#define FIELD 269
537#define EXPOSEDFIELD 270
538#define SFBOOL 271
539#define SFCOLOR 272
540#define SFFLOAT 273
541#define SFIMAGE 274
542#define SFINT32 275
543#define SFNODE 276
544#define SFROTATION 277
545#define SFSTRING 278
546#define SFTIME 279
547#define SFVEC2F 280
548#define SFVEC3F 281
549#define MFCOLOR 282
550#define MFFLOAT 283
551#define MFINT32 284
552#define MFROTATION 285
553#define MFSTRING 286
554#define MFVEC2F 287
555#define MFVEC3F 288
556#define MFNODE 289
557
558//
559// Parser for VRML 2.0 files.
560// This is a minimal parser that does NOT generate an in-memory scene graph.
561//
562
563// The original parser was developed on a Windows 95 PC with
564// Borland's C++ 5.0 development tools. This was then ported
565// to a Windows 95 PC with Microsoft's MSDEV C++ 4.0 development
566// tools. The port introduced the ifdef's for
567// USING_BORLAND_CPP_5 : since this provides a "std namespace",
568// TWO_ARGUMENTS_FOR_STL_STACK : STL is a moving target. The stack template
569// class takes either one or two arguments.
570
571#define YYDEBUG 1
572
573VTK_ABI_NAMESPACE_END
574#include <stdlib.h>
575
576// This is used when the parser knows what kind of token it expects
577// to get next-- used when parsing field values (whose types are declared
578// and read by the parser) and at certain other places:
579// extern int expectToken;
580
581// Current line number (set by lexer)
582// extern int currentLineNumber;
583
584// Some helper routines defined below:
585// static void beginProto(const char *);
586// static void endProto();
587
588// static int addField(const char *type, const char *name);
589// static int addEventIn(const char *type, const char *name);
590// static int addEventOut(const char *type, const char *name);
591// static int addExposedField(const char *type, const char *name);
592// static int add(void (VrmlNodeType::*)(const char *, int), const char *,
593// const char *);
594// static int fieldType(const char *type);
595// static void inScript();
596// static void expect(int type);
597
598// void yyerror(const char *);
599// int yylex(vtkVRMLImporter* self);
600
601#ifndef YYLTYPE
602
603#define YYLTYPE yyltype
604#endif
605
606#define YYFINAL 128
607#define YYFLAG -32768
608#define YYNTBASE 40
609
610#define YYTRANSLATE(x) ((unsigned)(x) <= 289 ? yytranslate[x] : 68)
611
612static const char yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
613 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 39, 2, 2, 2, 2, 2, 2,
614 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
615 2, 2, 2, 2, 2, 35, 2, 36, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
616 2, 2, 2, 2, 2, 37, 2, 38, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
617 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
618 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
619 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
620 2, 2, 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
621 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34 };
622
623#if YYDEBUG != 0
624static const short yyprhs[] = { 0, 0, 2, 3, 6, 8, 10, 12, 14, 15, 16, 22, 25, 27, 29, 30, 40, 41,
625 42, 51, 52, 55, 59, 63, 64, 70, 71, 77, 78, 81, 85, 89, 93, 97, 106, 107, 113, 114, 117, 118, 122,
626 124, 126, 130, 134, 135, 141, 147, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171, 173, 175,
627 177, 179, 181, 183, 185, 187, 190, 193, 196, 199, 203, 205, 206 };
628
629static const short yyrhs[] = { 41, 0, 0, 41, 42, 0, 43, 0, 46, 0, 58, 0, 59, 0, 0, 0, 4, 44, 3, 45,
630 59, 0, 5, 3, 0, 47, 0, 49, 0, 0, 6, 3, 48, 35, 52, 36, 37, 41, 38, 0, 0, 0, 7, 3, 50, 35, 56, 36,
631 51, 65, 0, 0, 52, 53, 0, 12, 3, 3, 0, 13, 3, 3, 0, 0, 14, 3, 3, 54, 65, 0, 0, 15, 3, 3, 55, 65, 0,
632 0, 56, 57, 0, 12, 3, 3, 0, 13, 3, 3, 0, 14, 3, 3, 0, 15, 3, 3, 0, 10, 3, 39, 3, 8, 3, 39, 3, 0, 0,
633 3, 60, 37, 61, 38, 0, 0, 61, 62, 0, 0, 3, 63, 65, 0, 58, 0, 46, 0, 12, 3, 3, 0, 13, 3, 3, 0, 0,
634 14, 3, 3, 64, 65, 0, 12, 3, 3, 9, 3, 0, 13, 3, 3, 9, 3, 0, 16, 0, 17, 0, 27, 0, 18, 0, 28, 0, 19,
635 0, 20, 0, 29, 0, 22, 0, 30, 0, 23, 0, 31, 0, 24, 0, 25, 0, 32, 0, 26, 0, 33, 0, 21, 43, 0, 21, 11,
636 0, 34, 66, 0, 9, 3, 0, 35, 67, 36, 0, 43, 0, 0, 67, 43, 0 };
637
638#endif
639
640#if YYDEBUG != 0
641static const short yyrline[] = { 0, 106, 109, 111, 114, 116, 117, 120, 122, 123, 124, 125, 128, 130,
642 133, 135, 139, 141, 143, 145, 147, 150, 153, 155, 157, 158, 160, 163, 165, 168, 171, 173, 175,
643 179, 184, 186, 189, 191, 194, 196, 197, 198, 201, 202, 203, 206, 207, 209, 213, 215, 216, 217,
644 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 232, 233, 234, 235, 238, 240,
645 243, 245 };
646
647static const char* const yytname[] = { "$", "error", "$undefined.", "IDENTIFIER", "DEF", "USE",
648 "PROTO", "EXTERNPROTO", "TO", "IS", "ROUTE", "SFN_NULL", "EVENTIN", "EVENTOUT", "FIELD",
649 "EXPOSEDFIELD", "SFBOOL", "SFCOLOR", "SFFLOAT", "SFIMAGE", "SFINT32", "SFNODE", "SFROTATION",
650 "SFSTRING", "SFTIME", "SFVEC2F", "SFVEC3F", "MFCOLOR", "MFFLOAT", "MFINT32", "MFROTATION",
651 "MFSTRING", "MFVEC2F", "MFVEC3F", "MFNODE", "'['", "']'", "'{'", "'}'", "'.'", "vrmlscene",
652 "declarations", "declaration", "nodeDeclaration", "@1", "@2", "protoDeclaration", "proto", "@3",
653 "externproto", "@4", "@5", "interfaceDeclarations", "interfaceDeclaration", "@6", "@7",
654 "externInterfaceDeclarations", "externInterfaceDeclaration", "routeDeclaration", "node", "@8",
655 "nodeGuts", "nodeGut", "@9", "@10", "fieldValue", "mfnodeValue", "nodes", "" };
656#endif
657
658static const short yyr1[] = { 0, 40, 41, 41, 42, 42, 42, 43, 44, 45, 43, 43, 46, 46, 48, 47, 50, 51,
659 49, 52, 52, 53, 53, 54, 53, 55, 53, 56, 56, 57, 57, 57, 57, 58, 60, 59, 61, 61, 63, 62, 62, 62,
660 62, 62, 64, 62, 62, 62, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
661 65, 65, 65, 66, 66, 67, 67 };
662
663static const short yyr2[] = { 0, 1, 0, 2, 1, 1, 1, 1, 0, 0, 5, 2, 1, 1, 0, 9, 0, 0, 8, 0, 2, 3, 3,
664 0, 5, 0, 5, 0, 2, 3, 3, 3, 3, 8, 0, 5, 0, 2, 0, 3, 1, 1, 3, 3, 0, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1,
665 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 1, 0, 2 };
666
667static const short yydefact[] = { 2, 1, 34, 8, 0, 0, 0, 0, 3, 4, 5, 12, 13, 6, 7, 0, 0, 11, 14, 16,
668 0, 36, 9, 0, 0, 0, 0, 0, 19, 27, 0, 38, 0, 0, 0, 35, 41, 40, 37, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
669 0, 0, 20, 0, 0, 0, 0, 17, 28, 0, 0, 48, 49, 51, 53, 54, 0, 56, 58, 60, 61, 63, 50, 52, 55, 57, 59,
670 62, 64, 0, 39, 42, 43, 44, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 68, 66, 65, 71, 70, 67, 0, 0, 0, 21,
671 22, 23, 25, 0, 29, 30, 31, 32, 18, 33, 0, 46, 47, 45, 0, 0, 15, 69, 72, 24, 26, 0, 0, 0 };
672
673static const short yydefgoto[] = { 126, 1, 8, 9, 16, 27, 10, 11, 23, 12, 24, 93, 40, 52, 119, 120,
674 41, 58, 13, 14, 15, 26, 38, 43, 103, 80, 100, 115 };
675
676static const short yypact[] = { -32768, 79, -32768, -32768, -1, 0, 3, 4, -32768, -32768, -32768,
677 -32768, -32768, -32768, -32768, -28, 11, -32768, -32768, -32768, -18, -32768, -32768, -6, 5, 32,
678 -2, 38, -32768, -32768, 35, -32768, 39, 41, 45, -32768, -32768, -32768, -32768, -32768, 19, 66,
679 48, 43, 50, 51, 54, 84, 85, 87, 88, 55, -32768, 90, 91, 92, 93, -32768, -32768, 58, 95, -32768,
680 -32768, -32768, -32768, -32768, 34, -32768, -32768, -32768, -32768, -32768, -32768, -32768,
681 -32768, -32768, -32768, -32768, -32768, 23, -32768, 94, 96, -32768, 97, 98, 101, 103, -32768, 104,
682 105, 106, 107, 43, 108, -32768, -32768, -32768, -32768, -32768, -32768, 109, 110, 43, -32768,
683 -32768, -32768, -32768, 12, -32768, -32768, -32768, -32768, -32768, -32768, 20, -32768, -32768,
684 -32768, 43, 43, -32768, -32768, -32768, -32768, -32768, 99, 114, -32768 };
685
686static const short yypgoto[] = { -32768, 27, -32768, -66, -32768, -32768, 100, -32768, -32768,
687 -32768, -32768, -32768, -32768, -32768, -32768, -32768, -32768, -32768, 102, 89, -32768, -32768,
688 -32768, -32768, -32768, -73, -32768, -32768 };
689
690#define YYLAST 128
691
692static const short yytable[] = { 97, 31, 17, 18, 5, 6, 19, 20, 7, 21, 32, 33, 34, 99, 22, 2, 3, 4,
693 5, 6, 113, 25, 7, 2, 3, 4, 2, 3, 4, 28, 118, 47, 48, 49, 50, 30, 35, 2, 3, 4, 29, 2, 44, 42, 45,
694 96, 124, 125, 46, 123, 121, 59, 60, 81, 82, 51, 122, 83, 98, 61, 62, 63, 64, 65, 66, 67, 68, 69,
695 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 53, 54, 55, 56, 2, 3, 4, 5, 6, 84, 85, 7, 86, 87, 88, 89,
696 90, 91, 92, 94, 95, 127, 104, 105, 57, 101, 106, 102, 107, 109, 110, 111, 112, 114, 116, 117, 128,
697 108, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 37 };
698
699static const short yycheck[] = { 66, 3, 3, 3, 6, 7, 3, 3, 10, 37, 12, 13, 14, 79, 3, 3, 4, 5, 6, 7,
700 93, 39, 10, 3, 4, 5, 3, 4, 5, 35, 103, 12, 13, 14, 15, 3, 38, 3, 4, 5, 35, 3, 3, 8, 3, 11, 119,
701 120, 3, 115, 38, 3, 9, 3, 3, 36, 36, 3, 35, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
702 29, 30, 31, 32, 33, 34, 12, 13, 14, 15, 3, 4, 5, 6, 7, 3, 3, 10, 3, 3, 37, 3, 3, 3, 3, 39, 3, 0,
703 3, 3, 36, 9, 3, 9, 3, 3, 3, 3, 3, 3, 3, 3, 0, 88, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, -1,
704 26 };
705/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
706
707// extern int yylex(vtkVRMLImporter* self);
708// extern void yyerror();
709
710#include <list>
711//
712// This file was originally generated from a yacc grammar source
713// file, but subsequently it has been locally modified to suit
714// VTK's needs. The use of alloca -- part of the original parser
715// boilerplate became problematic because the confusing
716// preprocessor #defines with respect to alloca were causing
717// compile problems with newer versions of CLang.
718//
719// This class replaces alloca with a malloc-based allocator that
720// cleans up after itself when the FakeAlloca object goes out of
721// scope. Whatever performance penalty this incurs is minor and
722// would only be noticeably if a very large, deeply nested VRML
723// file was imported; in the real world, I think alloca was very
724// rarely called here.
725
726VTK_ABI_NAMESPACE_BEGIN
728{
729public:
730 typedef std::list<void*> list_type;
732 {
733 for (list_type::iterator it = this->m_allocs.begin(); it != this->m_allocs.end(); ++it)
734 {
735 free(*it);
736 }
737 }
738 void* Allocate(size_t size)
739 {
740 void* rval = malloc(size);
741 m_allocs.push_back(rval);
742 return rval;
743 }
744
745private:
746 list_type m_allocs;
747};
748/* This is the parser code that is written into each bison parser
749 when the %semantic_parser declaration is not specified in the grammar.
750 It was written by Richard Stallman by simplifying the hairy parser
751 used when %semantic_parser is specified. */
752
753/* Note: there must be only one dollar sign in this file.
754 It is replaced by the list of actions, each action
755 as one case of the switch. */
756
757#define yyerrok (yyerrstatus = 0)
758#define yyclearin (yychar = YYEMPTY)
759#define YYEMPTY -2
760#define YYEOF 0
761#define YYACCEPT return (0)
762#define YYABORT return (1)
763#define YYERROR goto yyerrlab1
764/* Like YYERROR except do call yyerror.
765 This remains here temporarily to ease the
766 transition to the new meaning of YYERROR, for GCC.
767 Once GCC version 2 has supplanted version 1, this can go. */
768#define YYFAIL goto yyerrlab
769#define YYRECOVERING() (!!yyerrstatus)
770#define YYBACKUP(token, value) \
771 do \
772 if (yychar == YYEMPTY && yylen == 1) \
773 { \
774 yychar = (token), yylval = (value); \
775 yychar1 = YYTRANSLATE(yychar); \
776 YYPOPSTACK; \
777 goto yybackup; \
778 } \
779 else \
780 { \
781 yyerror("syntax error: cannot back up"); \
782 YYERROR; \
783 } \
784 while (0)
785
786#define YYTERROR 1
787#define YYERRCODE 256
788
789/* YYINITDEPTH indicates the initial size of the parser's stacks */
790
791#ifndef YYINITDEPTH
792#define YYINITDEPTH 200
793#endif
794
795/* YYMAXDEPTH is the maximum size the stacks can grow to
796 (effective only if the built-in stack extension method is used). */
797
798#if defined(YYMAXDEPTH) && (YYMAXDEPTH == 0)
799#undef YYMAXDEPTH
800#endif
801
802#ifndef YYMAXDEPTH
803#define YYMAXDEPTH 10000
804#endif
805
806static void yy_memcpy(char* from, char* to, int count)
807{
808 char* f = from;
809 char* t = to;
810 int i = count;
811
812 while (i-- > 0)
813 *t++ = *f++;
814}
815
817{
818 FakeAlloca yyallocator;
819 int yystate;
820 int yyn;
821 short* yyssp;
822 YYSTYPE* yyvsp;
823 int yyerrstatus; /* number of tokens to shift before error messages enabled */
824 int yychar1 = 0; /* lookahead token as an internal (translated) token number */
825
826 short yyssa[YYINITDEPTH]; /* the state stack */
827 YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
828
829 short* yyss = yyssa; /* refer to the stacks through separate pointers */
830 YYSTYPE* yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
831
832#ifdef YYLSP_NEEDED
833 YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
834 YYLTYPE* yyls = yylsa;
835 YYLTYPE* yylsp;
836
837#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
838#else
839#define YYPOPSTACK (yyvsp--, yyssp--)
840#endif
841
842 int yystacksize = YYINITDEPTH;
843
844#ifdef YYPURE
845 int yychar;
847 int yynerrs;
848#ifdef YYLSP_NEEDED
850#endif
851#endif
852
853 YYSTYPE yyval; /* the variable used to return */
854 /* semantic values from the action */
855 /* routines */
856
857 int yylen;
858
859#if YYDEBUG != 0
860 if (yydebug)
861 vtk::print(stderr, "Starting parse\n");
862#endif
863
864 yystate = 0;
865 yyerrstatus = 0;
866 yynerrs = 0;
867 yychar = YYEMPTY; /* Cause a token to be read. */
868
869 /* Initialize stack pointers.
870 Waste one element of value and location stack
871 so that they stay on the same level as the state stack.
872 The wasted elements are never initialized. */
873
874 yyssp = yyss - 1;
875 yyvsp = yyvs;
876#ifdef YYLSP_NEEDED
877 yylsp = yyls;
878#endif
879
880/* Push a new state, which is found in yystate . */
881/* In all cases, when you get here, the value and location stacks
882 have just been pushed. so pushing a state here evens the stacks. */
883yynewstate:
884
885 *++yyssp = yystate;
886
887 if (yyssp >= yyss + yystacksize - 1)
888 {
889 /* Give user a chance to reallocate the stack */
890 /* Use copies of these so that the &'s don't force the real ones into memory. */
891 YYSTYPE* yyvs1 = yyvs;
892 short* yyss1 = yyss;
893#ifdef YYLSP_NEEDED
894 YYLTYPE* yyls1 = yyls;
895#endif
896
897 /* Get the current used size of the three stacks, in elements. */
898 int size = yyssp - yyss + 1;
899
900#ifdef yyoverflow
901 /* Each stack pointer address is followed by the size of
902 the data in use in that stack, in bytes. */
903#ifdef YYLSP_NEEDED
904 /* This used to be a conditional around just the two extra args,
905 but that might be undefined if yyoverflow is a macro. */
906 yyoverflow("parser stack overflow", &yyss1, size * sizeof(*yyssp), &yyvs1,
907 size * sizeof(*yyvsp), &yyls1, size * sizeof(*yylsp), &yystacksize);
908#else
909 yyoverflow("parser stack overflow", &yyss1, size * sizeof(*yyssp), &yyvs1,
910 size * sizeof(*yyvsp), &yystacksize);
911#endif
912
913 yyss = yyss1;
914 yyvs = yyvs1;
915#ifdef YYLSP_NEEDED
916 yyls = yyls1;
917#endif
918#else /* no yyoverflow */
919 /* Extend the stack our own way. */
920 if (yystacksize >= YYMAXDEPTH)
921 {
922 yyerror("parser stack overflow");
923 return 2;
924 }
925 yystacksize *= 2;
926 if (yystacksize > YYMAXDEPTH)
927 yystacksize = YYMAXDEPTH;
928 yyss = (short*)yyallocator.Allocate(yystacksize * sizeof(*yyssp));
929 yy_memcpy((char*)yyss1, (char*)yyss, size * sizeof(*yyssp));
930 yyvs = (YYSTYPE*)yyallocator.Allocate(yystacksize * sizeof(*yyvsp));
931 yy_memcpy((char*)yyvs1, (char*)yyvs, size * sizeof(*yyvsp));
932#ifdef YYLSP_NEEDED
933 yyls = (YYLTYPE*)yyallocator.Allocate(yystacksize * sizeof(*yylsp));
934 yy_memcpy((char*)yyls1, (char*)yyls, size * sizeof(*yylsp));
935#endif
936#endif /* no yyoverflow */
937
938 yyssp = yyss + size - 1;
939 yyvsp = yyvs + size - 1;
940#ifdef YYLSP_NEEDED
941 yylsp = yyls + size - 1;
942#endif
943
944#if YYDEBUG != 0
945 if (yydebug)
946 vtk::print(stderr, "Stack size increased to {:d}\n", yystacksize);
947#endif
948
949 if (yyssp >= yyss + yystacksize - 1)
950 YYABORT;
951 }
952
953#if YYDEBUG != 0
954 if (yydebug)
955 vtk::print(stderr, "Entering state {:d}\n", yystate);
956#endif
957
958 goto yybackup;
959yybackup:
960
961 /* Do appropriate processing given the current state. */
962 /* Read a lookahead token if we need one and don't already have one. */
963 /* yyresume: */
964
965 /* First try to decide what to do without reference to lookahead token. */
966
967 yyn = yypact[yystate];
968 if (yyn == YYFLAG)
969 goto yydefault;
970
971 /* Not known => get a lookahead token if don't already have one. */
972
973 /* yychar is either YYEMPTY or YYEOF
974 or a valid token in external form. */
975
976 if (yychar == YYEMPTY)
977 {
978#if YYDEBUG != 0
979 if (yydebug)
980 vtk::print(stderr, "Reading a token: ");
981#endif
982 yychar = yylex(self);
983 }
984
985 /* Convert token to internal form (in yychar1) for indexing tables with */
986
987 if (yychar <= 0) /* This means end of input. */
988 {
989 yychar1 = 0;
990 yychar = YYEOF; /* Don't call YYLEX any more */
991
992#if YYDEBUG != 0
993 if (yydebug)
994 vtk::print(stderr, "Now at end of input.\n");
995#endif
996 }
997 else
998 {
999 yychar1 = YYTRANSLATE(yychar);
1000
1001#if YYDEBUG != 0
1002 if (yydebug)
1003 {
1004 vtk::print(stderr, "Next token is {:d} ({:s}", yychar, yytname[yychar1]);
1005 /* Give the individual parser a way to print the precise meaning
1006 of a token, for further debugging info. */
1007#ifdef YYPRINT
1008 YYPRINT(stderr, yychar, yylval);
1009#endif
1010 vtk::print(stderr, ")\n");
1011 }
1012#endif
1013 }
1014
1015 yyn += yychar1;
1016 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
1017 goto yydefault;
1018
1019 yyn = yytable[yyn];
1020
1021 /* yyn is what to do for this token type in this state.
1022 Negative => reduce, -yyn is rule number.
1023 Positive => shift, yyn is new state.
1024 New state is final state => don't bother to shift,
1025 just return success.
1026 0, or most negative number => error. */
1027
1028 if (yyn < 0)
1029 {
1030 if (yyn == YYFLAG)
1031 goto yyerrlab;
1032 yyn = -yyn;
1033 goto yyreduce;
1034 }
1035 else if (yyn == 0)
1036 goto yyerrlab;
1037
1038 if (yyn == YYFINAL)
1039 YYACCEPT;
1040
1041 /* Shift the lookahead token. */
1042
1043#if YYDEBUG != 0
1044 if (yydebug)
1045 vtk::print(stderr, "Shifting token {:d} ({:s}), ", yychar, yytname[yychar1]);
1046#endif
1047
1048 /* Discard the token being shifted unless it is eof. */
1049 if (yychar != YYEOF)
1050 yychar = YYEMPTY;
1051
1052 *++yyvsp = yylval;
1053#ifdef YYLSP_NEEDED
1054 *++yylsp = yylloc;
1055#endif
1056
1057 /* count tokens shifted since error; after three, turn off error status. */
1058 if (yyerrstatus)
1059 yyerrstatus--;
1060
1061 yystate = yyn;
1062 goto yynewstate;
1063
1064/* Do the default action for the current state. */
1065yydefault:
1066
1067 yyn = yydefact[yystate];
1068 if (yyn == 0)
1069 goto yyerrlab;
1070
1071/* Do a reduction. yyn is the number of a rule to reduce with. */
1072yyreduce:
1073 yylen = yyr2[yyn];
1074 if (yylen > 0)
1075 yyval = yyvsp[1 - yylen]; /* implement default value of the action */
1076 else
1077 yyval.sfint = 0;
1078
1079#if YYDEBUG != 0
1080 if (yydebug)
1081 {
1082 int i;
1083
1084 vtk::print(stderr, "Reducing via rule {:d} (line {:d}), ", yyn, yyrline[yyn]);
1085
1086 /* Print the symbols being reduced, and their result. */
1087 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
1088 vtk::print(stderr, "{:s} ", yytname[yyrhs[i]]);
1089 vtk::print(stderr, " -> {:s}\n", yytname[yyr1[yyn]]);
1090 }
1091#endif
1092
1093 // Note: several free() methods are commented out due to the use of
1094 // vtkVRMLAllocator.
1095 switch (yyn)
1096 {
1097
1098 case 8:
1099 {
1100 creatingDEF = 1;
1101 break;
1102 }
1103 case 9:
1104 {
1105 curDEFName = yyvsp[0].string;
1106 break;
1107 }
1108 case 10:
1109 {
1110 creatingDEF = 0;
1111 break;
1112 }
1113 case 11:
1114 {
1115 self->useNode(yyvsp[0].string); // free(yyvsp[0].string); ;
1116 break;
1117 }
1118 case 14:
1119 {
1120 beginProto(yyvsp[0].string);
1121 break;
1122 }
1123 case 15:
1124 {
1125 endProto(); // free(yyvsp[-7].string);
1126 break;
1127 }
1128 case 16:
1129 {
1130 beginProto(yyvsp[0].string);
1131 break;
1132 }
1133 case 17:
1134 {
1136 break;
1137 }
1138 case 18:
1139 {
1140 endProto(); // free(yyvsp[-6].string); ;
1141 break;
1142 }
1143 case 21:
1144 {
1145 addEventIn(yyvsp[-1].string, yyvsp[0].string);
1146 // free(yyvsp[-1].string); free(yyvsp[0].string); ;
1147 break;
1148 }
1149 case 22:
1150 {
1151 addEventOut(yyvsp[-1].string, yyvsp[0].string);
1152 // free(yyvsp[-1].string); free(yyvsp[0].string); ;
1153 break;
1154 }
1155 case 23:
1156 {
1157 int type = addField(yyvsp[-1].string, yyvsp[0].string);
1158 expect(type);
1159 break;
1160 }
1161 case 24:
1162 { // free(yyvsp[-3].string); free(yyvsp[-2].string); ;
1163 break;
1164 }
1165 case 25:
1166 {
1167 int type = addExposedField(yyvsp[-1].string, yyvsp[0].string);
1168 expect(type);
1169 break;
1170 }
1171 case 26:
1172 { // free(yyvsp[-3].string); free(yyvsp[-2].string); ;
1173 break;
1174 }
1175 case 29:
1176 {
1177 addEventIn(yyvsp[-1].string, yyvsp[0].string);
1178 // free(yyvsp[-1].string); free(yyvsp[0].string); ;
1179 break;
1180 }
1181 case 30:
1182 {
1183 addEventOut(yyvsp[-1].string, yyvsp[0].string);
1184 // free(yyvsp[-1].string); free(yyvsp[0].string); ;
1185 break;
1186 }
1187 case 31:
1188 {
1189 addField(yyvsp[-1].string, yyvsp[0].string);
1190 // free(yyvsp[-1].string); free(yyvsp[0].string); ;
1191 break;
1192 }
1193 case 32:
1194 {
1195 addExposedField(yyvsp[-1].string, yyvsp[0].string);
1196 // free(yyvsp[-1].string); free(yyvsp[0].string); ;
1197 break;
1198 }
1199 case 33:
1200 { // free(yyvsp[-6].string); free(yyvsp[-4].string); free(yyvsp[-2].string);
1201 // free(yyvsp[0].string); ;
1202 break;
1203 }
1204 case 34:
1205 {
1206 self->enterNode(yyvsp[0].string);
1207 break;
1208 }
1209 case 35:
1210 {
1211 self->exitNode(); // free(yyvsp[-4].string);
1212 break;
1213 }
1214 case 38:
1215 {
1216 self->enterField(yyvsp[0].string);
1217 break;
1218 }
1219 case 39:
1220 {
1221 self->exitField(); // free(yyvsp[-2].string); ;
1222 break;
1223 }
1224 case 42:
1225 {
1226 inScript(); // free(yyvsp[-1].string); free(yyvsp[0].string); ;
1227 break;
1228 }
1229 case 43:
1230 {
1231 inScript(); // free(yyvsp[-1].string); free(yyvsp[0].string); ;
1232 break;
1233 }
1234 case 44:
1235 {
1236 inScript();
1237 int type = fieldType(yyvsp[-1].string);
1238 expect(type);
1239 break;
1240 }
1241 case 45:
1242 { // free(yyvsp[-3].string); free(yyvsp[-2].string); ;
1243 break;
1244 }
1245 case 46:
1246 {
1247 inScript(); // free(yyvsp[-3].string); free(yyvsp[-2].string); free(yyvsp[0].string); ;
1248 break;
1249 }
1250 case 47:
1251 {
1252 inScript(); // free(yyvsp[-3].string); free(yyvsp[-2].string); free(yyvsp[0].string); ;
1253 break;
1254 }
1255 case 49:
1256 {
1257 break;
1258 }
1259 case 50:
1260 {
1261 break;
1262 }
1263 case 55:
1264 {
1265 break;
1266 }
1267 case 63:
1268 {
1269 break;
1270 }
1271 case 64:
1272 {
1273 break;
1274 }
1275 case 68:
1276 { // free(yyvsp[0].string); ;
1277 break;
1278 }
1279 }
1280 /* the action file gets copied in place of this dollarsign */
1281
1282 yyvsp -= yylen;
1283 yyssp -= yylen;
1284#ifdef YYLSP_NEEDED
1285 yylsp -= yylen;
1286#endif
1287
1288#if YYDEBUG != 0
1289 if (yydebug)
1290 {
1291 short* ssp1 = yyss - 1;
1292 vtk::print(stderr, "state stack now");
1293 while (ssp1 != yyssp)
1294 vtk::print(stderr, " {:d}", *++ssp1);
1295 vtk::print(stderr, "\n");
1296 }
1297#endif
1298
1299 *++yyvsp = yyval;
1300
1301#ifdef YYLSP_NEEDED
1302 yylsp++;
1303 if (yylen == 0)
1304 {
1305 yylsp->first_line = yylloc.first_line;
1306 yylsp->first_column = yylloc.first_column;
1307 yylsp->last_line = (yylsp - 1)->last_line;
1308 yylsp->last_column = (yylsp - 1)->last_column;
1309 yylsp->text = 0;
1310 }
1311 else
1312 {
1313 yylsp->last_line = (yylsp + yylen - 1)->last_line;
1314 yylsp->last_column = (yylsp + yylen - 1)->last_column;
1315 }
1316#endif
1317
1318 /* Now "shift" the result of the reduction.
1319 Determine what state that goes to,
1320 based on the state we popped back to
1321 and the rule number reduced by. */
1322
1323 yyn = yyr1[yyn];
1324
1325 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
1326 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
1327 yystate = yytable[yystate];
1328 else
1329 yystate = yydefgoto[yyn - YYNTBASE];
1330
1331 goto yynewstate;
1332
1333yyerrlab: /* here on detecting error */
1334
1335 if (!yyerrstatus)
1336 /* If not already recovering from an error, report this error. */
1337 {
1338 ++yynerrs;
1339
1340#ifdef YYERROR_VERBOSE
1341 yyn = yypact[yystate];
1342
1343 if (yyn > YYFLAG && yyn < YYLAST)
1344 {
1345 int size = 0;
1346 char* msg;
1347 int x, count;
1348
1349 count = 0;
1350 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
1351 for (x = (yyn < 0 ? -yyn : 0); x < (sizeof(yytname) / sizeof(char*)); x++)
1352 if (yycheck[x + yyn] == x)
1353 size += strlen(yytname[x]) + 15, count++;
1354 msg = (char*)malloc(size + 15);
1355 if (msg != 0)
1356 {
1357 strcpy(msg, "parse error");
1358
1359 if (count < 5)
1360 {
1361 count = 0;
1362 for (x = (yyn < 0 ? -yyn : 0); x < (sizeof(yytname) / sizeof(char*)); x++)
1363 if (yycheck[x + yyn] == x)
1364 {
1365 strcat(msg, count == 0 ? ", expecting `" : " or `");
1366 strcat(msg, yytname[x]);
1367 strcat(msg, "'");
1368 count++;
1369 }
1370 }
1371 yyerror(msg);
1372 free(msg);
1373 }
1374 else
1375 yyerror("parse error; also virtual memory exceeded");
1376 }
1377 else
1378#endif /* YYERROR_VERBOSE */
1379 yyerror("parse error");
1380 }
1381
1382 goto yyerrlab1;
1383yyerrlab1: /* here on error raised explicitly by an action */
1384
1385 if (yyerrstatus == 3)
1386 {
1387 /* if just tried and failed to reuse lookahead token after an error, discard it. */
1388
1389 /* return failure if at end of input */
1390 if (yychar == YYEOF)
1391 YYABORT;
1392
1393#if YYDEBUG != 0
1394 if (yydebug)
1395 vtk::print(stderr, "Discarding token {:d} ({:s}).\n", yychar, yytname[yychar1]);
1396#endif
1397
1398 yychar = YYEMPTY;
1399 }
1400
1401 /* Else will try to reuse lookahead token
1402 after shifting the error token. */
1403
1404 yyerrstatus = 3; /* Each real token shifted decrements this */
1405
1406 goto yyerrhandle;
1407
1408yyerrdefault: /* current state does not do anything special for the error token. */
1409
1410#if 0
1411 /* This is wrong; only states that explicitly want error tokens
1412 should shift them. */
1413 yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
1414 if (yyn) goto yydefault;
1415#endif
1416
1417yyerrpop: /* pop the current state because it cannot handle the error token */
1418
1419 if (yyssp == yyss)
1420 YYABORT;
1421 yyvsp--;
1422 yystate = *--yyssp;
1423#ifdef YYLSP_NEEDED
1424 yylsp--;
1425#endif
1426
1427#if YYDEBUG != 0
1428 if (yydebug)
1429 {
1430 short* ssp1 = yyss - 1;
1431 vtk::print(stderr, "Error: state stack now");
1432 while (ssp1 != yyssp)
1433 vtk::print(stderr, " {:d}", *++ssp1);
1434 vtk::print(stderr, "\n");
1435 }
1436#endif
1437
1438yyerrhandle:
1439
1440 yyn = yypact[yystate];
1441 if (yyn == YYFLAG)
1442 goto yyerrdefault;
1443
1444 yyn += YYTERROR;
1445 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
1446 goto yyerrdefault;
1447
1448 yyn = yytable[yyn];
1449 if (yyn < 0)
1450 {
1451 if (yyn == YYFLAG)
1452 goto yyerrpop;
1453 yyn = -yyn;
1454 goto yyreduce;
1455 }
1456 else if (yyn == 0)
1457 goto yyerrpop;
1458
1459 if (yyn == YYFINAL)
1460 YYACCEPT;
1461
1462#if YYDEBUG != 0
1463 if (yydebug)
1464 vtk::print(stderr, "Shifting error token, ");
1465#endif
1466
1467 *++yyvsp = yylval;
1468#ifdef YYLSP_NEEDED
1469 *++yylsp = yylloc;
1470#endif
1471
1472 yystate = yyn;
1473 goto yynewstate;
1474}
1475
1476inline void vtkVRMLYaccData::yyerror(const char* msg)
1477{
1478 std::cerr << "Error near line " << currentLineNumber << ": " << msg << "\n";
1479 expect(0);
1480}
1481
1482inline void vtkVRMLYaccData::beginProto(const char* protoName)
1483{
1484 // Any protos in the implementation are in a local namespace:
1485 pushNameSpace();
1486
1487 VrmlNodeType* t = new VrmlNodeType(protoName);
1488 *CurrentProtoStack += t;
1489}
1490
1492{
1493 // Make any protos defined in implementation unavailable:
1494 popNameSpace();
1495
1496 // Add this proto definition:
1497 if (CurrentProtoStack->Count() == 0)
1498 {
1499 std::cerr << "Error: Empty PROTO stack!\n";
1500 }
1501 else
1502 {
1503 VrmlNodeType* t = CurrentProtoStack->Top();
1504 CurrentProtoStack->Pop();
1505 addToNameSpace(t);
1506 }
1507}
1508
1509inline int vtkVRMLYaccData::addField(const char* type, const char* name)
1510{
1511 return add(&VrmlNodeType::addField, type, name);
1512}
1513
1514inline int vtkVRMLYaccData::addEventIn(const char* type, const char* name)
1515{
1516 return add(&VrmlNodeType::addEventIn, type, name);
1517}
1518inline int vtkVRMLYaccData::addEventOut(const char* type, const char* name)
1519{
1520 return add(&VrmlNodeType::addEventOut, type, name);
1521}
1522inline int vtkVRMLYaccData::addExposedField(const char* type, const char* name)
1523{
1524 return add(&VrmlNodeType::addExposedField, type, name);
1525}
1526
1528 void (VrmlNodeType::*func)(const char*, int), const char* typeString, const char* name)
1529{
1530 int type = fieldType(typeString);
1531
1532 if (type == 0)
1533 {
1534 std::cerr << "Error: invalid field type: " << type << "\n";
1535 }
1536
1537 // Need to add support for Script nodes:
1538 // if (inScript) ... ???
1539
1540 if (CurrentProtoStack->Count() == 0)
1541 {
1542 std::cerr << "Error: declaration outside of prototype\n";
1543 return 0;
1544 }
1545 VrmlNodeType* t = CurrentProtoStack->Top();
1546 (t->*func)(name, type);
1547
1548 return type;
1549}
1550
1551inline int vtkVRMLYaccData::fieldType(const char* type)
1552{
1553 if (strcmp(type, "SFBool") == 0)
1554 return SFBOOL;
1555 if (strcmp(type, "SFColor") == 0)
1556 return SFCOLOR;
1557 if (strcmp(type, "SFFloat") == 0)
1558 return SFFLOAT;
1559 if (strcmp(type, "SFImage") == 0)
1560 return SFIMAGE;
1561 if (strcmp(type, "SFInt32") == 0)
1562 return SFINT32;
1563 if (strcmp(type, "SFNode") == 0)
1564 return SFNODE;
1565 if (strcmp(type, "SFRotation") == 0)
1566 return SFROTATION;
1567 if (strcmp(type, "SFString") == 0)
1568 return SFSTRING;
1569 if (strcmp(type, "SFTime") == 0)
1570 return SFTIME;
1571 if (strcmp(type, "SFVec2f") == 0)
1572 return SFVEC2F;
1573 if (strcmp(type, "SFVec3f") == 0)
1574 return SFVEC3F;
1575 if (strcmp(type, "MFColor") == 0)
1576 return MFCOLOR;
1577 if (strcmp(type, "MFFloat") == 0)
1578 return MFFLOAT;
1579 if (strcmp(type, "MFInt32") == 0)
1580 return MFINT32;
1581 if (strcmp(type, "MFNode") == 0)
1582 return MFNODE;
1583 if (strcmp(type, "MFRotation") == 0)
1584 return MFROTATION;
1585 if (strcmp(type, "MFString") == 0)
1586 return MFSTRING;
1587 if (strcmp(type, "MFVec2f") == 0)
1588 return MFVEC2F;
1589 if (strcmp(type, "MFVec3f") == 0)
1590 return MFVEC3F;
1591
1592 std::cerr << "Illegal field type: " << type << "\n";
1593
1594 return 0;
1595}
1596
1598{
1600 if (fr->nodeType == nullptr || strcmp(fr->nodeType->getName(), "Script") != 0)
1601 {
1602 yyerror("interface declaration outside of Script or prototype");
1603 }
1604}
1605
1606inline void vtkVRMLYaccData::expect(int type)
1607{
1608 expectToken = type;
1609}
1610
1611VTK_ABI_NAMESPACE_END
1612
1613// End of Auto-generated Parser Code
1614// Begin of Auto-generated Lexer Code
1615
1616/* A lexical scanner generated by flex */
1617
1618#define FLEX_SCANNER
1619
1620#ifdef _WIN32
1621#include <io.h>
1622#else
1623#include <unistd.h>
1624#endif
1625
1626/* Use prototypes in function declarations. */
1627#define YY_USE_PROTOS
1628#define YY_PROTO(proto) proto
1629
1630/* Returned upon end-of-file. */
1631#define YY_NULL 0
1632
1633/* Promotes a possibly negative, possibly signed char to an unsigned
1634 * integer for use as an array index. If the signed char is negative,
1635 * we want to instead treat it as an 8-bit unsigned char, hence the
1636 * double cast.
1637 */
1638#define YY_SC_TO_UI(c) ((unsigned int)(unsigned char)c)
1639
1640/* Enter a start condition. This macro really ought to take a parameter,
1641 * but we do it the disgusting crufty way forced on us by the ()-less
1642 * definition of BEGIN.
1643 */
1644#define BEGIN yy_start = 1 + 2 *
1645
1646/* Translate the current start state into a value that can be later handed
1647 * to BEGIN to return to the state.
1648 */
1649#define YY_START ((yy_start - 1) / 2)
1650
1651/* Action number for EOF rule of a given start state. */
1652#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
1653
1654/* Special action meaning "start processing a new file". Now included
1655 * only for backward compatibility with previous versions of flex.
1656 */
1657#define YY_NEW_FILE yyrestart(yyin)
1658
1659#define YY_END_OF_BUFFER_CHAR 0
1660
1661/* Size of default input buffer. */
1662#define YY_BUF_SIZE 16384
1663
1664// typedef struct yy_buffer_state *YY_BUFFER_STATE;
1665
1666// extern int yyleng;
1667// extern FILE *yyin, *yyout;
1668
1669#ifdef __cplusplus
1670extern "C"
1671{
1672#endif
1673 // extern int yywrap YY_PROTO(( void ));
1674#ifdef __cplusplus
1675}
1676#endif
1677
1678#define EOB_ACT_CONTINUE_SCAN 0
1679#define EOB_ACT_END_OF_FILE 1
1680#define EOB_ACT_LAST_MATCH 2
1681
1682/* The funky do-while in the following #define is used to turn the definition
1683 * int a single C statement (which needs a semi-colon terminator). This
1684 * avoids problems with code like:
1685 *
1686 * if ( condition_holds )
1687 * yyless( 5 );
1688 * else
1689 * do_something_else();
1690 *
1691 * Prior to using the do-while the compiler would get upset at the
1692 * "else" because it interpreted the "if" statement as being all
1693 * done when it reached the ';' after the yyless() call.
1694 */
1695
1696/* Return all but the first 'n' matched characters back to the input stream. */
1697
1698#define yyless(n) \
1699 do \
1700 { \
1701 /* Undo effects of setting up yytext. */ \
1702 *yy_cp = yy_hold_char; \
1703 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
1704 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
1705 } while (0)
1706
1707// struct yy_buffer_state
1708//{
1709// FILE *yy_input_file;
1710
1711// char *yy_ch_buf; /* input buffer */
1712// char *yy_buf_pos; /* current position in input buffer */
1713
1714/* Size of input buffer in bytes, not including room for EOB
1715 * characters.
1716 */
1717// int yy_buf_size;
1718
1719/* Number of characters read into yy_ch_buf, not including EOB
1720 * characters.
1721 */
1722// int yy_n_chars;
1723
1724/* Whether this is an "interactive" input source; if so, and
1725 * if we're using stdio for input, then we want to use getc()
1726 * instead of fread(), to make sure we stop fetching input after
1727 * each newline.
1728 */
1729// int yy_is_interactive;
1730
1731/* Whether to try to fill the input buffer when we reach the
1732 * end of it.
1733 */
1734// int yy_fill_buffer;
1735
1736// int yy_buffer_status;
1737// #define YY_BUFFER_NEW 0
1738// #define YY_BUFFER_NORMAL 1
1739/* When an EOF's been seen but there's still some text to process
1740 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
1741 * shouldn't try reading from the input source any more. We might
1742 * still have a bunch of tokens to match, though, because of
1743 * possible backing-up.
1744 *
1745 * When we actually see the EOF, we change the status to "new"
1746 * (via yyrestart()), so that the user can continue scanning by
1747 * just pointing yyin at a new input file.
1748 */
1749// #define YY_BUFFER_EOF_PENDING 2
1750// };
1751
1752// static YY_BUFFER_STATE yy_current_buffer = 0;
1753
1754/* We provide macros for accessing buffer states in case in the
1755 * future we want to put the buffer states in a more general
1756 * "scanner state".
1757 */
1758#define YY_CURRENT_BUFFER yy_current_buffer
1759
1760/* yy_hold_char holds the character lost when yytext is formed. */
1761// static char yy_hold_char;
1762
1763// static int yy_n_chars; /* number of characters read into yy_ch_buf */
1764
1765// int yyleng;
1766
1767/* Points to current character in buffer. */
1768// static char *yy_c_buf_p = (char *) 0;
1769// static int yy_init = 1; /* whether we need to initialize */
1770// static int yy_start = 0; /* start state number */
1771
1772/* Flag which is used to allow yywrap()'s to do buffer switches
1773 * instead of setting up a fresh yyin. A bit of a hack ...
1774 */
1775// static int yy_did_buffer_switch_on_eof;
1776
1777// void yyrestart YY_PROTO(( FILE *input_file ));
1778// void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
1779// void yy_load_buffer_state YY_PROTO(( void ));
1780// YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
1781// void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
1782// void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
1783
1784// static void *yy_flex_alloc YY_PROTO(( unsigned int ));
1785// static void *yy_flex_realloc YY_PROTO(( void *, unsigned int ));
1786// static void yy_flex_free YY_PROTO(( void * ));
1787
1788#define yy_new_buffer yy_create_buffer
1789
1790#define INITIAL 0
1791#define NODE 1
1792#define SFB 2
1793#define SFC 3
1794#define SFF 4
1795#define SFIMG 5
1796#define SFI 6
1797#define SFR 7
1798#define SFS 8
1799#define SFT 9
1800#define SFV2 10
1801#define SFV3 11
1802#define MFC 12
1803#define MFF 13
1804#define MFI 14
1805#define MFR 15
1806#define MFS 16
1807#define MFV2 17
1808#define MFV3 18
1809#define IN_SFS 19
1810#define IN_MFS 20
1811#define IN_SFIMG 21
1812
1813#define FLEX_DEBUG
1814// FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
1815// extern char *yytext;
1816#define yytext_ptr yytext
1817
1818#ifndef yytext_ptr
1819// static void yy_flex_strncpy YY_PROTO(( char *, const char *, int ));
1820#endif
1821
1822// static yy_state_type yy_get_previous_state YY_PROTO(( void ));
1823// static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
1824// static int yy_get_next_buffer YY_PROTO(( void ));
1825// static void yy_fatal_error YY_PROTO(( const char msg[] ));
1826
1827/* Done after the current pattern has been matched and before the
1828 * corresponding action - sets up yytext.
1829 */
1830#define YY_DO_BEFORE_ACTION \
1831 do \
1832 { \
1833 yytext_ptr = yy_bp; \
1834 yyleng = yy_cp - yy_bp; \
1835 yy_hold_char = *yy_cp; \
1836 *yy_cp = '\0'; \
1837 yy_c_buf_p = yy_cp; \
1838 } while (false)
1839
1840#define YY_END_OF_BUFFER 50
1841static const short int yy_accept[949] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1842 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 48, 46, 47, 46,
1843 14, 46, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 48, 48, 48, 48, 48, 48, 48, 48, 25, 48, 48, 48,
1844 48, 23, 23, 48, 48, 48, 38, 36, 38, 38, 48, 48, 35, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 19,
1845 20, 48, 48,
1846
1847 26, 17, 48, 24, 24, 18, 48, 48, 48, 39, 37, 39, 39, 48, 48, 48, 48, 48, 48, 41, 41, 42, 41, 41,
1848 43, 48, 45, 45, 46, 47, 46, 47, 47, 46, 46, 46, 46, 14, 14, 14, 7, 14, 14, 14, 6, 14, 14, 14, 14,
1849 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 0, 0, 0, 0, 0, 23, 23, 0, 0, 0, 0, 0, 0, 38, 38, 38, 15, 0,
1850 35, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1851
1852 16, 0, 26, 26, 0, 24, 24, 0, 0, 0, 0, 0, 0, 39, 39, 39, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1853 41, 41, 41, 41, 41, 41, 40, 45, 45, 47, 47, 47, 46, 4, 14, 14, 14, 14, 5, 14, 14, 14, 0, 0, 0, 0,
1854 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 44, 44, 0, 0, 0, 0, 44, 44, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1855 0, 0, 0, 35, 0, 0, 27, 0, 0, 0, 0, 0, 27, 0,
1856
1857 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 24, 0, 0, 0, 0, 0, 0,
1858 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 46, 14, 9,
1859 14, 14, 14, 14, 14, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 44, 44, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0,
1860 0, 0, 0, 0, 0, 0, 0,
1861
1862 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 14, 2, 8, 14,
1863 14, 12, 22, 0, 0, 33, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 33, 0, 0, 0, 33, 0, 0, 0, 0, 0, 33, 0, 0, 0,
1864 44, 44, 44, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1865 0, 27, 0, 0, 27, 0, 0, 29,
1866
1867 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 29, 0, 0, 0, 29, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0,
1868 0, 34, 0, 0, 0, 0, 34, 0, 0, 0, 34, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1869 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 28, 0, 0, 30, 0, 0, 0, 0, 0, 30, 0,
1870 0, 0, 0, 30, 0, 0, 0,
1871
1872 30, 0, 0, 0, 0, 0, 30, 0, 0, 0, 46, 14, 14, 14, 14, 33, 0, 0, 33, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0,
1873 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 29, 0, 29, 0, 0, 34, 0, 0, 34, 0, 34, 0, 0, 0, 0,
1874 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 30, 0, 30, 0, 0, 46, 14, 10, 14, 14,
1875 0, 33, 0, 0, 33, 0, 0, 33, 0, 33,
1876
1877 0, 0, 33, 0, 0, 31, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 31, 0, 0, 31, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0,
1878 31, 0, 0, 0, 31, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 29, 0, 0, 29, 0, 0, 29,
1879 0, 29, 0, 0, 29, 0, 34, 0, 0, 34, 0, 0, 34, 0, 34, 0, 0, 34, 0, 0, 32, 0, 0, 0, 0, 0, 32, 0, 0, 0,
1880 0, 32, 0, 0, 32, 0, 0, 0, 0,
1881
1882 0, 32, 0, 0, 0, 0, 0, 32, 0, 0, 0, 32, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 30,
1883 0, 0, 30, 0, 0, 30, 0, 30, 0, 0, 30, 46, 14, 11, 14, 31, 0, 0, 31, 0, 31, 0, 0, 31, 0, 31, 0, 0,
1884 31, 0, 32, 0, 0, 32, 0, 32, 0, 0, 32, 0, 32, 0, 0, 32, 0, 46, 14, 14, 0, 31, 0, 0, 31, 0, 0, 31,
1885 0, 31, 0, 0, 31, 0, 0, 31, 0, 31, 0, 0, 31,
1886
1887 0, 0, 31, 0, 32, 0, 0, 32, 0, 0, 32, 0, 32, 0, 0, 32, 0, 0, 32, 0, 32, 0, 0, 32, 0, 0, 32, 46, 14,
1888 14, 46, 3, 14, 46, 13, 46, 46, 46, 46, 46, 1, 46, 1, 1, 1, 1, 1, 0 };
1889
1890static const int yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1891 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 5, 6, 7, 5, 5, 5, 1, 5, 5, 5, 8, 2, 9, 10, 5, 11, 12, 13, 12, 12,
1892 12, 12, 12, 14, 12, 5, 5, 5, 5, 5, 5, 5, 15, 16, 16, 17, 18, 19, 5, 5, 20, 5, 5, 21, 22, 23, 24,
1893 25, 5, 26, 27, 28, 29, 30, 5, 31, 5, 5, 32, 33, 34, 5, 5, 5, 16, 16, 16, 35,
1894
1895 36, 37, 5, 5, 38, 5, 5, 39, 5, 40, 41, 42, 5, 5, 43, 44, 45, 46, 5, 47, 5, 5, 1, 5, 1, 5, 5, 5, 5,
1896 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1897 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1898 5, 5, 5, 5, 5,
1899
1900 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
1901 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 };
1902
1903static const int yy_meta[48] = { 0, 1, 2, 3, 2, 4, 5, 6, 4, 4, 1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 4, 4,
1904 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 1, 8, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 };
1905
1906static const short int yy_base[1090] = { 0, 0, 6, 13, 0, 59, 65, 92, 0, 104, 110, 116, 122, 128,
1907 134, 140, 146, 159, 165, 164, 177, 183, 189, 195, 201, 207, 233, 259, 285, 311, 337, 363, 389,
1908 422, 455, 481, 507, 533, 559, 222, 228, 256, 274, 324, 350, 787, 7663, 73, 79, 280, 0, 247, 768,
1909 753, 751, 745, 726, 725, 719, 715, 18, 685, 702, 687, 682, 78, 96, 592, 170, 289, 368, 300, 627,
1910 51, 315, 380, 328, 342, 354, 673, 0, 7663, 410, 677, 420, 376, 427, 436, 394, 708, 454, 458, 743,
1911 466, 470, 778, 676, 7663, 7663, 486, 491,
1912
1913 496, 7663, 511, 517, 522, 7663, 544, 538, 813, 0, 7663, 579, 665, 549, 563, 848, 604, 576, 883, 0,
1914 605, 7663, 617, 672, 7663, 631, 635, 639, 652, 302, 658, 665, 666, 686, 692, 698, 725, 0, 652,
1915 636, 0, 636, 613, 607, 0, 617, 597, 590, 591, 605, 7663, 596, 722, 0, 727, 918, 931, 751, 755,
1916 792, 759, 821, 0, 944, 957, 805, 786, 0, 825, 0, 830, 970, 983, 856, 0, 869, 875, 0, 834, 900,
1917 987, 891, 895, 0, 996, 1022, 1035, 1003, 1007, 0, 1040, 1053, 1066, 1073, 1077, 0, 1082, 1095,
1918 1108, 1115,
1919
1920 7663, 1119, 1124, 1132, 1140, 1144, 0, 1150, 0, 1159, 1172, 1185, 1192, 0, 1205, 1211, 0, 1208, 0,
1921 1213, 1244, 1257, 1220, 1261, 1274, 1283, 1309, 1322, 1290, 0, 1335, 1341, 1347, 1353, 1359, 7663,
1922 1294, 0, 1234, 1365, 1366, 1372, 0, 604, 580, 572, 569, 0, 552, 537, 501, 511, 519, 1370, 1374,
1923 1393, 1428, 1441, 0, 0, 0, 1410, 1378, 1454, 1407, 1411, 1458, 1462, 1466, 1508, 1521, 1534, 1547,
1924 1560, 191, 1479, 0, 1477, 1483, 1606, 1641, 1654, 0, 0, 0, 1575, 1487, 1667, 1491, 1572, 1584,
1925 1576, 1623, 1680, 0, 0, 0, 0, 230, 1588,
1926
1927 1693, 1615, 1592, 1706, 1741, 0, 0, 0, 0, 1723, 1720, 1758, 1725, 1762, 1775, 1810, 0, 0, 0, 0,
1928 1792, 1789, 1827, 1793, 1831, 0, 1836, 1840, 1853, 1888, 0, 0, 0, 0, 1870, 1867, 1905, 1872, 1909,
1929 1914, 1949, 0, 0, 0, 0, 238, 1922, 1962, 1927, 1931, 1975, 2010, 0, 0, 0, 0, 1992, 1935, 2027, 0,
1930 2040, 500, 0, 488, 493, 444, 443, 450, 456, 7663, 1990, 2060, 2073, 2037, 2086, 2099, 2112, 2044,
1931 0, 2116, 1995, 2162, 2175, 2128, 2188, 2201, 2214, 2227, 2132, 2146, 2240, 2253, 2288, 2301, 2261,
1932 2314, 2327, 2340, 2353, 2366,
1933
1934 2401, 2414, 2268, 2427, 2440, 2453, 2466, 2479, 2514, 2527, 2374, 2540, 2553, 2566, 2579, 2383,
1935 2487, 2592, 2605, 2640, 2653, 2494, 2666, 2679, 2692, 2705, 2281, 437, 0, 0, 50, 386, 0, 7663,
1936 2379, 2498, 2622, 2718, 2731, 0, 0, 0, 239, 2613, 2744, 2757, 2770, 2783, 2818, 2792, 2617, 2831,
1937 2866, 0, 0, 0, 0, 272, 2796, 2800, 2845, 0, 2881, 205, 285, 2840, 2804, 2927, 2962, 2975, 0, 0, 0,
1938 2944, 2941, 2988, 3001, 3014, 3027, 3062, 2946, 3035, 3075, 3110, 0, 0, 0, 0, 3092, 3039, 3043,
1939 3127, 3047, 3089, 3162, 3175, 400, 3094, 3135, 3144,
1940
1941 3188, 3201, 0, 0, 0, 417, 3139, 3214, 3227, 3240, 3253, 3288, 3262, 3266, 3301, 3336, 0, 0, 0, 0,
1942 437, 3270, 3274, 3315, 3310, 3341, 3346, 3381, 3394, 0, 0, 0, 548, 3354, 3407, 3420, 3433, 3446,
1943 3481, 3359, 3363, 3494, 3529, 0, 0, 0, 0, 562, 3367, 3454, 3463, 3503, 3458, 3542, 3577, 3590, 0,
1944 0, 0, 3559, 3507, 3603, 3616, 3629, 3642, 3677, 3512, 3556, 3690, 3725, 0, 0, 0, 0, 3659, 3560,
1945 3656, 3738, 3660, 3698, 3773, 3786, 645, 3703, 3707, 3755, 3799, 3812, 0, 0, 0, 661, 3711, 3825,
1946 3838, 3851, 3864, 3899, 3747, 3872,
1947
1948 3912, 3947, 0, 0, 0, 0, 680, 3876, 3880, 3926, 3925, 390, 370, 351, 323, 3952, 3960, 3987, 4000,
1949 4035, 4048, 3967, 4083, 4096, 4131, 4144, 4008, 4157, 4170, 4183, 4196, 4209, 4244, 4257, 4270,
1950 4283, 4296, 4331, 4015, 4344, 4357, 4370, 4065, 4056, 4383, 4396, 4431, 4444, 4104, 4479, 4113,
1951 4217, 4492, 4505, 4540, 4553, 4224, 4588, 4601, 4636, 4649, 4304, 4662, 4675, 4688, 4701, 4714,
1952 4749, 4762, 4775, 4788, 4801, 4836, 4311, 4849, 4862, 4875, 4413, 4404, 4888, 4901, 4936, 4949,
1953 4452, 4984, 2858, 304, 0, 274, 296, 3884, 3971, 4997, 5010, 688, 5023, 5036, 4522, 4019, 5049,
1954
1955 5062, 5075, 689, 4061, 4108, 4461, 5088, 5101, 0, 0, 0, 695, 4228, 5114, 5127, 5140, 5153, 4316,
1956 4408, 5188, 5223, 5236, 0, 0, 0, 712, 4456, 4519, 4570, 5249, 5262, 5275, 5310, 4524, 4561, 5323,
1957 5358, 0, 0, 0, 0, 740, 4565, 4609, 4618, 4613, 5371, 5384, 5397, 5410, 4722, 4726, 4731, 4809,
1958 4813, 5445, 5458, 757, 5471, 5484, 4918, 4817, 5497, 5510, 5523, 765, 4821, 4915, 5536, 5549, 838,
1959 5562, 5575, 4966, 4919, 5588, 5601, 5614, 862, 4964, 4968, 5167, 5627, 5640, 0, 0, 0, 931, 5161,
1960 5653, 5666, 5679, 5692, 5197, 5201, 5727, 5762, 5775, 0, 0,
1961
1962 0, 986, 5205, 5209, 5292, 5788, 5801, 5814, 5849, 5284, 5331, 5862, 5897, 0, 0, 0, 0, 1022, 5335,
1963 5339, 5427, 5343, 5910, 5923, 5936, 5949, 5418, 5422, 5706, 5700, 5735, 5984, 5997, 1023, 6010,
1964 6023, 5831, 5739, 6036, 6049, 6062, 1025, 5752, 268, 0, 250, 5879, 5828, 6075, 6088, 6123, 6136,
1965 5870, 6171, 6184, 6219, 6232, 5957, 6267, 6280, 6315, 5966, 6096, 6103, 5833, 6144, 5875, 6151,
1966 6192, 5962, 6199, 6108, 6240, 6247, 6156, 6288, 6301, 236, 204, 6203, 6251, 6328, 0, 1065, 3, 277,
1967 6341, 6340, 6376, 6389, 0, 1123, 376, 411, 6402, 6344, 6437, 6450, 0, 1129,
1968
1969 435, 443, 6463, 6349, 6353, 6357, 6361, 6401, 6410, 6414, 6464, 6418, 6499, 6422, 6472, 6478,
1970 6504, 6508, 6513, 6521, 6525, 6529, 6533, 6539, 6547, 6551, 6556, 3328, 213, 194, 6569, 0, 188,
1971 6575, 0, 6491, 3939, 5180, 5719, 6307, 6579, 6586, 6592, 6593, 6599, 6600, 6606, 7663, 6619, 6627,
1972 6635, 6643, 6651, 6656, 6663, 6671, 6679, 6686, 6694, 6702, 6710, 6718, 6726, 6733, 163, 6740,
1973 6748, 6756, 6764, 157, 6772, 6780, 6788, 6796, 6804, 104, 6812, 6820, 6825, 6832, 6840, 6847, 93,
1974 6854, 90, 6862, 6870, 66, 6878, 6886, 6894, 6902, 6910, 6918, 6926, 6934, 6942, 6950, 6958, 6966,
1975
1976 6974, 6982, 6990, 6998, 7006, 7011, 7018, 7026, 7034, 64, 7042, 7050, 7058, 7066, 7074, 7082,
1977 7090, 7098, 7106, 7114, 7122, 7130, 7138, 7146, 7154, 7162, 7170, 7178, 7183, 7190, 7198, 7206,
1978 7214, 7222, 7230, 7238, 7246, 7254, 7262, 7270, 7278, 7286, 7294, 7302, 7310, 7318, 7326, 7334,
1979 7342, 7350, 7358, 7366, 7374, 7382, 7387, 7394, 7402, 7410, 7418, 7426, 7434, 7442, 7450, 7458,
1980 7466, 7474, 7482, 7490, 7498, 7506, 7514, 7522, 7530, 7538, 7546, 7554, 7562, 7570, 7578, 7586,
1981 7591, 7598, 7606, 7614, 7622, 7630, 7638, 7646, 7654 };
1982
1983static const short int yy_def[1090] = { 0, 949, 949, 948, 3, 949, 949, 949, 7, 7, 7, 7, 7, 7, 7, 7,
1984 7, 950, 950, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 951, 951, 7, 7, 7, 7, 952, 952, 952, 952,
1985 7, 7, 948, 948, 948, 948, 953, 954, 953, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 948,
1986 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 72, 948, 948, 948, 948, 948, 948, 955, 948, 956,
1987 955, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
1988
1989 948, 948, 948, 948, 948, 948, 948, 948, 948, 957, 948, 958, 957, 948, 948, 948, 948, 948, 948,
1990 959, 959, 948, 960, 959, 948, 948, 948, 948, 948, 948, 953, 948, 961, 953, 953, 953, 953, 954,
1991 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 954, 948, 948, 948, 948, 67, 67, 948, 962, 948,
1992 948, 948, 948, 948, 73, 948, 963, 964, 948, 965, 948, 79, 79, 948, 966, 948, 955, 956, 956, 955,
1993 948, 948, 948, 948, 948, 89, 89, 948, 967, 948, 948, 92, 92, 948, 968, 948, 948, 95, 95, 948, 969,
1994 948,
1995
1996 948, 948, 948, 948, 948, 948, 970, 948, 109, 109, 948, 971, 948, 957, 958, 958, 957, 948, 116,
1997 116, 948, 972, 948, 948, 948, 225, 948, 973, 948, 974, 974, 975, 975, 975, 975, 948, 948, 976,
1998 977, 977, 977, 978, 979, 979, 979, 979, 979, 979, 979, 979, 979, 948, 948, 948, 948, 948, 980,
1999 980, 258, 258, 258, 258, 948, 948, 948, 948, 948, 948, 948, 981, 981, 981, 981, 981, 274, 982,
2000 983, 948, 948, 948, 984, 984, 282, 282, 282, 282, 948, 948, 948, 948, 948, 948, 948, 967, 294,
2001 294, 294, 294, 294, 948,
2002
2003 948, 948, 948, 948, 968, 305, 305, 305, 305, 305, 948, 948, 948, 948, 948, 969, 316, 316, 316,
2004 316, 316, 948, 948, 948, 948, 985, 948, 948, 948, 971, 330, 330, 330, 330, 330, 948, 948, 948,
2005 948, 948, 972, 341, 341, 341, 341, 341, 948, 948, 948, 948, 948, 973, 352, 352, 352, 352, 352,
2006 948, 948, 976, 978, 979, 979, 979, 979, 979, 979, 979, 948, 948, 256, 948, 986, 948, 258, 948,
2007 987, 258, 988, 274, 280, 948, 989, 948, 282, 948, 990, 385, 948, 948, 991, 948, 948, 992, 948,
2008 993, 948, 994, 993, 948,
2009
2010 948, 995, 948, 996, 948, 997, 996, 948, 948, 998, 948, 999, 948, 1000, 999, 948, 948, 1001, 948,
2011 948, 1002, 948, 1003, 948, 1004, 1003, 1005, 1006, 1006, 1006, 1006, 1006, 1006, 948, 948, 948,
2012 948, 1007, 1007, 439, 439, 439, 439, 948, 948, 1008, 1008, 447, 1009, 948, 948, 948, 1009, 453,
2013 453, 453, 453, 453, 447, 447, 448, 1010, 948, 463, 463, 948, 948, 948, 1011, 1011, 470, 470, 470,
2014 470, 948, 948, 1012, 1012, 478, 1013, 948, 948, 948, 1013, 484, 484, 484, 484, 484, 478, 478, 478,
2015 948, 948, 1014, 1014, 496, 948, 948, 948,
2016
2017 1015, 1015, 502, 502, 502, 502, 948, 948, 1016, 1016, 510, 1017, 948, 948, 948, 1017, 516, 516,
2018 516, 516, 516, 510, 510, 511, 948, 948, 948, 1018, 1018, 529, 529, 529, 529, 948, 948, 1019, 1019,
2019 537, 1020, 948, 948, 948, 1020, 543, 543, 543, 543, 543, 537, 537, 538, 948, 948, 948, 1021, 1021,
2020 556, 556, 556, 556, 948, 948, 1022, 1022, 564, 1023, 948, 948, 948, 1023, 570, 570, 570, 570, 570,
2021 564, 564, 564, 948, 948, 1024, 1024, 582, 948, 948, 948, 1025, 1025, 588, 588, 588, 588, 948, 948,
2022 1026, 1026, 596, 1027, 948, 948,
2023
2024 948, 1027, 602, 602, 602, 602, 602, 596, 596, 597, 1028, 1029, 1029, 1029, 1029, 948, 948, 1030,
2025 1031, 1031, 948, 948, 1032, 948, 948, 1033, 948, 1034, 948, 1035, 1034, 1036, 1036, 948, 1037,
2026 1036, 948, 1035, 948, 1038, 1037, 1038, 948, 948, 1039, 1040, 1040, 948, 948, 1041, 948, 948,
2027 1042, 1043, 1043, 948, 948, 1044, 948, 948, 1045, 948, 1046, 948, 1047, 1046, 1048, 1048, 948,
2028 1049, 1048, 948, 1047, 948, 1050, 1049, 1050, 948, 948, 1051, 1052, 1052, 948, 948, 1053, 1054,
2029 1055, 1055, 1055, 1055, 948, 948, 1056, 1056, 694, 1057, 1057, 697, 948, 948,
2030
2031 1058, 1058, 702, 948, 948, 948, 1059, 1059, 708, 708, 708, 708, 948, 948, 1060, 1060, 716, 948,
2032 948, 948, 1061, 1061, 722, 722, 722, 722, 716, 716, 717, 1062, 1062, 731, 1063, 948, 948, 948,
2033 1063, 737, 737, 737, 737, 737, 731, 731, 732, 948, 948, 1064, 1064, 749, 749, 749, 750, 948, 948,
2034 1065, 1065, 757, 1066, 1066, 760, 948, 948, 1067, 1067, 765, 948, 948, 1068, 1068, 770, 1069,
2035 1069, 773, 948, 948, 1070, 1070, 778, 948, 948, 948, 1071, 1071, 784, 784, 784, 784, 948, 948,
2036 1072, 1072, 792, 948, 948, 948, 1073, 1073, 798, 798,
2037
2038 798, 798, 792, 792, 793, 1074, 1074, 807, 1075, 948, 948, 948, 1075, 813, 813, 813, 813, 813, 807,
2039 807, 808, 948, 948, 1076, 1076, 825, 825, 825, 826, 948, 948, 1077, 1077, 833, 1078, 1078, 836,
2040 948, 948, 1079, 1079, 841, 1080, 1081, 1081, 1081, 948, 948, 1082, 1083, 1083, 948, 948, 1084,
2041 1085, 1085, 948, 948, 1086, 1087, 1087, 948, 948, 784, 793, 792, 796, 948, 798, 808, 807, 812,
2042 948, 813, 826, 825, 1080, 1081, 1081, 948, 948, 1082, 882, 882, 851, 851, 851, 948, 948, 1084,
2043 890, 890, 856, 856, 856, 948, 948, 1086, 898, 898,
2044
2045 861, 861, 861, 948, 948, 784, 784, 784, 792, 792, 793, 948, 948, 798, 798, 798, 807, 807, 808,
2046 948, 823, 813, 813, 813, 825, 825, 826, 1080, 1081, 1081, 1080, 1081, 1081, 1080, 1081, 1080,
2047 1080, 1088, 1088, 1088, 948, 1088, 948, 1089, 1089, 1089, 1089, 0, 948, 948, 948, 948, 948, 948,
2048 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2049 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2050 948, 948, 948, 948, 948, 948, 948, 948,
2051
2052 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2053 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2054 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2055 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2056 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948 };
2057
2058static const short int yy_nxt[7711] = { 0, 948, 47, 48, 47, 948, 948, 49, 47, 48, 47, 469, 472, 49,
2059 46, 47, 48, 47, 50, 46, 51, 46, 46, 46, 46, 46, 46, 46, 50, 50, 52, 53, 50, 54, 50, 50, 55, 50,
2060 56, 57, 50, 58, 59, 50, 50, 46, 46, 46, 50, 60, 61, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 47,
2061 48, 47, 147, 148, 51, 47, 48, 47, 613, 462, 51, 462, 614, 129, 130, 129, 62, 63, 131, 132, 948,
2062 132, 62, 63, 133, 64, 153, 154, 154, 154, 154, 64, 47, 48, 47, 326, 948, 51, 277,
2063
2064 65, 66, 67, 67, 67, 67, 155, 155, 155, 155, 360, 63, 68, 69, 70, 70, 70, 70, 68, 69, 70, 70, 70,
2065 70, 71, 46, 72, 73, 73, 73, 71, 46, 72, 73, 73, 73, 74, 46, 75, 76, 76, 76, 74, 46, 75, 76, 76,
2066 76, 77, 78, 79, 79, 79, 79, 77, 78, 79, 79, 79, 79, 47, 48, 47, 326, 81, 82, 47, 48, 47, 277, 81,
2067 82, 84, 85, 86, 86, 86, 86, 83, 159, 160, 160, 160, 160, 83, 84, 85, 86, 86, 86, 86, 87, 88, 89,
2068 89, 89, 89, 87, 88, 89,
2069
2070 89, 89, 89, 90, 91, 92, 92, 92, 92, 90, 91, 92, 92, 92, 92, 93, 94, 95, 95, 95, 95, 270, 935, 121,
2071 48, 121, 96, 122, 123, 121, 48, 121, 933, 122, 123, 270, 932, 270, 97, 930, 98, 93, 94, 95, 95,
2072 95, 95, 391, 135, 130, 135, 270, 96, 136, 124, 418, 618, 121, 48, 121, 124, 125, 123, 929, 97,
2073 391, 98, 99, 100, 101, 101, 101, 101, 418, 618, 121, 48, 121, 96, 125, 123, 135, 130, 135, 469,
2074 472, 136, 879, 124, 623, 102, 878, 98, 99, 100, 101, 101, 101, 101, 161,
2075
2076 161, 161, 161, 132, 96, 132, 124, 623, 133, 137, 163, 163, 163, 163, 846, 270, 102, 845, 98, 103,
2077 46, 104, 105, 105, 105, 167, 167, 167, 167, 844, 96, 270, 126, 46, 127, 128, 128, 128, 167, 167,
2078 167, 167, 106, 46, 98, 103, 46, 104, 105, 105, 105, 169, 170, 170, 170, 170, 96, 690, 126, 46,
2079 127, 128, 128, 128, 171, 171, 171, 171, 106, 46, 98, 107, 108, 109, 109, 109, 109, 159, 160, 160,
2080 160, 160, 96, 281, 284, 162, 181, 181, 181, 181, 167, 167, 167, 167, 102, 689, 98, 107, 108, 109,
2081
2082 109, 109, 109, 162, 185, 185, 185, 185, 96, 688, 168, 135, 130, 135, 687, 134, 177, 391, 281, 284,
2083 102, 615, 98, 47, 48, 47, 168, 111, 112, 179, 180, 180, 180, 180, 645, 391, 179, 180, 180, 180,
2084 180, 113, 484, 487, 182, 183, 184, 184, 184, 184, 484, 487, 645, 102, 650, 98, 47, 48, 47, 612,
2085 111, 112, 182, 189, 190, 190, 190, 190, 191, 191, 191, 191, 650, 434, 113, 195, 196, 196, 196,
2086 196, 197, 197, 197, 197, 433, 432, 102, 431, 98, 114, 115, 116, 116, 116, 116, 202, 203, 203, 203,
2087 203,
2088
2089 96, 204, 204, 204, 204, 202, 203, 203, 203, 203, 430, 429, 102, 205, 98, 114, 115, 116, 116, 116,
2090 116, 206, 206, 206, 206, 428, 96, 206, 206, 206, 206, 205, 206, 206, 206, 206, 370, 369, 102, 368,
2091 98, 117, 118, 119, 119, 119, 119, 207, 210, 210, 210, 210, 96, 208, 209, 209, 209, 209, 218, 219,
2092 219, 219, 219, 207, 97, 653, 98, 117, 118, 119, 119, 119, 119, 220, 220, 220, 220, 367, 96, 658,
2093 135, 130, 135, 653, 134, 216, 226, 226, 226, 226, 97, 366, 98, 156, 156, 156, 365, 658, 157, 364,
2094
2095 363, 153, 154, 154, 154, 154, 231, 130, 231, 158, 134, 232, 134, 224, 225, 225, 225, 225, 234,
2096 130, 234, 362, 134, 235, 253, 252, 251, 158, 164, 164, 164, 250, 249, 165, 248, 247, 246, 163,
2097 163, 163, 163, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 129, 130, 129, 245,
2098 166, 131, 135, 130, 135, 418, 244, 136, 238, 132, 240, 132, 240, 243, 133, 241, 166, 172, 172,
2099 172, 236, 680, 173, 418, 238, 169, 170, 170, 170, 170, 135, 130, 135, 174, 217, 136, 135, 130,
2100 135, 680, 685, 136, 135,
2101
2102 130, 135, 201, 178, 136, 618, 623, 152, 174, 186, 186, 186, 849, 151, 187, 685, 150, 183, 184,
2103 184, 184, 184, 149, 618, 623, 188, 135, 130, 135, 854, 849, 136, 155, 155, 155, 155, 948, 155,
2104 155, 155, 155, 146, 145, 188, 192, 192, 192, 854, 144, 193, 242, 143, 189, 190, 190, 190, 190,
2105 859, 263, 263, 194, 264, 264, 264, 264, 161, 161, 161, 161, 161, 161, 161, 161, 142, 645, 859,
2106 162, 141, 194, 198, 198, 198, 650, 140, 199, 139, 948, 195, 196, 196, 196, 196, 645, 948, 162,
2107 200, 167, 167, 167, 167,
2108
2109 650, 159, 160, 160, 160, 160, 164, 164, 164, 162, 948, 165, 948, 200, 211, 211, 211, 948, 948,
2110 212, 948, 948, 208, 209, 209, 209, 209, 162, 265, 265, 213, 266, 266, 266, 266, 171, 171, 171,
2111 171, 948, 171, 171, 171, 171, 181, 181, 181, 181, 213, 221, 221, 221, 948, 948, 222, 653, 948,
2112 218, 219, 219, 219, 219, 948, 287, 287, 223, 288, 288, 288, 288, 135, 130, 135, 653, 134, 177,
2113 135, 130, 135, 658, 134, 177, 948, 223, 227, 227, 227, 948, 948, 228, 948, 948, 224, 225, 225,
2114 225, 225, 658, 289, 289,
2115
2116 229, 290, 290, 290, 290, 185, 185, 185, 185, 179, 180, 180, 180, 180, 948, 948, 948, 182, 229,
2117 156, 156, 156, 948, 948, 157, 948, 254, 255, 256, 256, 256, 256, 258, 156, 258, 182, 948, 259,
2118 948, 260, 261, 262, 262, 262, 262, 164, 164, 164, 864, 948, 165, 948, 267, 948, 268, 269, 269,
2119 269, 271, 164, 271, 948, 948, 272, 948, 273, 864, 274, 275, 275, 275, 172, 172, 172, 948, 948,
2120 173, 948, 278, 279, 280, 280, 280, 280, 282, 172, 282, 948, 948, 283, 948, 284, 285, 286, 286,
2121 286, 286, 181, 181, 181,
2122
2123 181, 948, 948, 869, 182, 948, 185, 185, 185, 185, 300, 300, 948, 301, 301, 301, 301, 191, 191,
2124 191, 191, 869, 182, 186, 186, 186, 948, 948, 187, 948, 291, 292, 293, 293, 293, 293, 295, 186,
2125 295, 874, 680, 296, 685, 297, 298, 299, 299, 299, 299, 948, 191, 191, 191, 191, 192, 192, 192,
2126 874, 680, 193, 685, 302, 303, 304, 304, 304, 304, 306, 192, 306, 948, 948, 307, 948, 308, 309,
2127 310, 310, 310, 310, 311, 311, 849, 312, 312, 312, 312, 197, 197, 197, 197, 948, 197, 197, 197,
2128 197, 198, 198, 198, 948,
2129
2130 849, 199, 948, 313, 314, 315, 315, 315, 315, 317, 198, 317, 948, 948, 318, 948, 319, 320, 321,
2131 321, 321, 321, 322, 322, 948, 323, 323, 323, 323, 204, 204, 204, 204, 202, 203, 203, 203, 203,
2132 948, 948, 854, 205, 204, 204, 204, 204, 859, 324, 324, 205, 325, 325, 325, 325, 206, 206, 206,
2133 206, 854, 205, 210, 210, 210, 210, 859, 948, 948, 205, 948, 210, 210, 210, 210, 211, 211, 211,
2134 948, 948, 212, 948, 327, 328, 329, 329, 329, 329, 331, 211, 331, 948, 948, 332, 948, 333, 334,
2135 335, 335, 335, 335, 336,
2136
2137 336, 948, 337, 337, 337, 337, 135, 130, 135, 948, 134, 216, 135, 130, 135, 948, 134, 216, 220,
2138 220, 220, 220, 948, 220, 220, 220, 220, 347, 347, 948, 348, 348, 348, 348, 948, 240, 134, 240,
2139 134, 948, 241, 948, 134, 948, 134, 221, 221, 221, 948, 948, 222, 948, 338, 339, 340, 340, 340,
2140 340, 342, 221, 342, 948, 948, 343, 948, 344, 345, 346, 346, 346, 346, 226, 226, 226, 226, 227,
2141 227, 227, 948, 948, 228, 948, 948, 224, 225, 225, 225, 225, 948, 948, 948, 229, 948, 226, 226,
2142 226, 226, 358, 358, 948,
2143
2144 359, 359, 359, 359, 237, 237, 237, 237, 948, 229, 227, 227, 227, 948, 948, 228, 948, 349, 350,
2145 351, 351, 351, 351, 353, 227, 353, 948, 948, 354, 948, 355, 356, 357, 357, 357, 357, 231, 130,
2146 231, 948, 948, 232, 234, 130, 234, 948, 134, 235, 234, 130, 234, 948, 134, 235, 234, 130, 234,
2147 948, 134, 235, 234, 130, 234, 948, 134, 235, 240, 240, 240, 240, 948, 241, 241, 135, 130, 135,
2148 948, 948, 136, 255, 256, 256, 256, 256, 371, 371, 371, 371, 264, 264, 264, 264, 948, 361, 372,
2149 372, 372, 948, 948, 373,
2150
2151 948, 948, 255, 256, 256, 256, 256, 948, 948, 948, 374, 375, 376, 375, 948, 948, 377, 266, 266,
2152 266, 266, 266, 266, 266, 266, 948, 948, 378, 374, 258, 156, 258, 948, 948, 259, 948, 260, 261,
2153 262, 262, 262, 262, 258, 156, 258, 378, 948, 259, 948, 260, 261, 262, 262, 262, 262, 156, 156,
2154 156, 948, 948, 157, 948, 948, 948, 264, 264, 264, 264, 269, 269, 269, 269, 269, 269, 269, 269,
2155 269, 269, 269, 269, 164, 164, 164, 948, 948, 165, 279, 280, 280, 280, 280, 948, 379, 381, 381,
2156 381, 381, 288, 288, 288,
2157
2158 288, 290, 290, 290, 290, 948, 948, 948, 379, 271, 164, 271, 948, 948, 272, 948, 273, 948, 274,
2159 275, 275, 275, 271, 164, 271, 948, 948, 272, 948, 273, 948, 274, 275, 275, 275, 271, 164, 271,
2160 948, 948, 272, 948, 273, 948, 274, 275, 275, 275, 271, 164, 271, 948, 948, 272, 948, 273, 948,
2161 274, 275, 275, 275, 271, 164, 271, 948, 948, 272, 948, 273, 948, 274, 275, 275, 275, 948, 948,
2162 385, 386, 385, 948, 948, 387, 290, 290, 290, 290, 389, 389, 389, 389, 380, 948, 388, 292, 293,
2163 293, 293, 293, 301, 301,
2164
2165 301, 301, 392, 392, 392, 392, 380, 382, 382, 382, 388, 948, 383, 948, 948, 279, 280, 280, 280,
2166 280, 948, 948, 948, 384, 303, 304, 304, 304, 304, 948, 948, 948, 292, 293, 293, 293, 293, 948,
2167 948, 948, 390, 384, 282, 172, 282, 948, 948, 283, 948, 284, 285, 286, 286, 286, 286, 282, 172,
2168 282, 390, 948, 283, 948, 284, 285, 286, 286, 286, 286, 172, 172, 172, 948, 948, 173, 948, 948,
2169 948, 288, 288, 288, 288, 295, 186, 295, 948, 948, 296, 948, 297, 298, 299, 299, 299, 299, 186,
2170 186, 186, 948, 948, 187,
2171
2172 948, 948, 948, 301, 301, 301, 301, 393, 393, 393, 948, 948, 394, 948, 948, 303, 304, 304, 304,
2173 304, 948, 948, 948, 395, 396, 397, 396, 948, 948, 398, 312, 312, 312, 312, 314, 315, 315, 315,
2174 315, 948, 399, 395, 306, 192, 306, 948, 948, 307, 948, 308, 309, 310, 310, 310, 310, 948, 948,
2175 948, 399, 192, 192, 192, 948, 948, 193, 948, 948, 948, 312, 312, 312, 312, 400, 400, 400, 400,
2176 401, 401, 401, 948, 948, 402, 948, 948, 314, 315, 315, 315, 315, 948, 948, 948, 403, 404, 405,
2177 404, 948, 948, 406, 323,
2178
2179 323, 323, 323, 325, 325, 325, 325, 948, 948, 407, 403, 317, 198, 317, 948, 948, 318, 948, 319,
2180 320, 321, 321, 321, 321, 948, 948, 948, 407, 198, 198, 198, 948, 948, 199, 948, 948, 948, 323,
2181 323, 323, 323, 325, 325, 325, 325, 328, 329, 329, 329, 329, 408, 408, 408, 408, 409, 409, 409,
2182 948, 948, 410, 948, 948, 328, 329, 329, 329, 329, 948, 948, 948, 411, 412, 413, 412, 948, 948,
2183 414, 337, 337, 337, 337, 339, 340, 340, 340, 340, 948, 415, 411, 331, 211, 331, 948, 948, 332,
2184 948, 333, 334, 335, 335,
2185
2186 335, 335, 948, 948, 948, 415, 211, 211, 211, 948, 948, 212, 948, 948, 948, 337, 337, 337, 337,
2187 416, 416, 416, 416, 339, 340, 340, 340, 340, 948, 948, 948, 417, 348, 348, 348, 348, 350, 351,
2188 351, 351, 351, 419, 419, 419, 419, 359, 359, 359, 359, 417, 342, 221, 342, 948, 948, 343, 948,
2189 344, 345, 346, 346, 346, 346, 221, 221, 221, 948, 948, 222, 948, 948, 948, 348, 348, 348, 348,
2190 420, 420, 420, 948, 948, 421, 948, 948, 350, 351, 351, 351, 351, 948, 948, 948, 422, 423, 424,
2191 423, 948, 948, 425, 948,
2192
2193 371, 371, 371, 371, 948, 381, 381, 381, 381, 426, 422, 353, 227, 353, 948, 948, 354, 948, 355,
2194 356, 357, 357, 357, 357, 948, 948, 948, 426, 227, 227, 227, 948, 948, 228, 948, 948, 948, 359,
2195 359, 359, 359, 135, 130, 135, 444, 444, 136, 445, 445, 445, 445, 459, 460, 948, 461, 461, 461,
2196 461, 948, 948, 427, 372, 372, 372, 948, 948, 373, 948, 435, 436, 437, 437, 437, 437, 439, 372,
2197 439, 948, 948, 440, 948, 441, 442, 443, 443, 443, 443, 375, 376, 375, 948, 948, 377, 948, 446,
2198 447, 448, 448, 448, 448,
2199
2200 376, 376, 376, 948, 948, 449, 948, 450, 451, 452, 452, 452, 452, 454, 376, 454, 948, 948, 455,
2201 948, 456, 457, 458, 458, 458, 458, 463, 464, 464, 464, 465, 465, 465, 465, 465, 475, 475, 948,
2202 476, 476, 476, 476, 389, 389, 389, 389, 270, 948, 948, 390, 465, 465, 465, 493, 493, 948, 494,
2203 494, 494, 494, 948, 948, 270, 382, 382, 382, 948, 390, 383, 948, 466, 467, 468, 468, 468, 468,
2204 470, 382, 470, 948, 948, 471, 948, 472, 473, 474, 474, 474, 474, 385, 386, 385, 948, 948, 387,
2205 948, 477, 478, 479, 479,
2206
2207 479, 479, 386, 386, 386, 948, 948, 480, 948, 481, 482, 483, 483, 483, 483, 485, 386, 485, 948,
2208 948, 486, 948, 487, 488, 489, 489, 489, 489, 282, 172, 282, 948, 948, 283, 490, 491, 285, 492,
2209 492, 492, 492, 295, 186, 295, 948, 948, 296, 495, 496, 298, 497, 497, 497, 497, 393, 393, 393,
2210 948, 948, 394, 948, 948, 948, 392, 392, 392, 392, 948, 507, 507, 395, 508, 508, 508, 508, 534,
2211 534, 948, 535, 535, 535, 535, 135, 130, 611, 948, 948, 136, 395, 393, 393, 393, 948, 948, 394,
2212 948, 498, 499, 500, 500,
2213
2214 500, 500, 502, 393, 502, 948, 948, 503, 948, 504, 505, 506, 506, 506, 506, 396, 397, 396, 948,
2215 948, 398, 948, 509, 510, 511, 511, 511, 511, 397, 397, 397, 948, 948, 512, 948, 513, 514, 515,
2216 515, 515, 515, 517, 397, 517, 948, 948, 518, 948, 519, 520, 521, 521, 521, 521, 306, 192, 306,
2217 948, 948, 307, 522, 523, 309, 524, 524, 524, 524, 401, 401, 401, 948, 948, 402, 948, 948, 948,
2218 400, 400, 400, 400, 948, 561, 561, 403, 562, 562, 562, 562, 436, 437, 437, 437, 437, 416, 416,
2219 416, 416, 948, 948, 948,
2220
2221 417, 403, 401, 401, 401, 948, 948, 402, 948, 525, 526, 527, 527, 527, 527, 529, 401, 529, 417,
2222 948, 530, 948, 531, 532, 533, 533, 533, 533, 404, 405, 404, 948, 948, 406, 948, 536, 537, 538,
2223 538, 538, 538, 405, 405, 405, 948, 948, 539, 948, 540, 541, 542, 542, 542, 542, 544, 405, 544,
2224 948, 948, 545, 948, 546, 547, 548, 548, 548, 548, 317, 198, 317, 948, 948, 318, 549, 550, 320,
2225 551, 551, 551, 551, 409, 409, 409, 948, 948, 410, 948, 948, 948, 408, 408, 408, 408, 948, 579,
2226 579, 411, 580, 580, 580,
2227
2228 580, 593, 593, 948, 594, 594, 594, 594, 616, 616, 616, 616, 948, 948, 411, 409, 409, 409, 948,
2229 948, 410, 948, 552, 553, 554, 554, 554, 554, 556, 409, 556, 948, 948, 557, 948, 558, 559, 560,
2230 560, 560, 560, 412, 413, 412, 948, 948, 414, 948, 563, 564, 565, 565, 565, 565, 413, 413, 413,
2231 948, 948, 566, 948, 567, 568, 569, 569, 569, 569, 571, 413, 571, 948, 948, 572, 948, 573, 574,
2232 575, 575, 575, 575, 331, 211, 331, 948, 948, 332, 576, 577, 334, 578, 578, 578, 578, 342, 221,
2233 342, 948, 948, 343, 581,
2234
2235 582, 345, 583, 583, 583, 583, 420, 420, 420, 948, 948, 421, 948, 948, 948, 419, 419, 419, 419,
2236 948, 948, 948, 422, 445, 445, 445, 445, 621, 621, 621, 621, 436, 437, 437, 437, 437, 948, 948,
2237 948, 617, 422, 420, 420, 420, 948, 948, 421, 948, 584, 585, 586, 586, 586, 586, 588, 420, 588,
2238 617, 948, 589, 948, 590, 591, 592, 592, 592, 592, 423, 424, 423, 948, 948, 425, 948, 595, 596,
2239 597, 597, 597, 597, 424, 424, 424, 948, 948, 598, 948, 599, 600, 601, 601, 601, 601, 603, 424,
2240 603, 948, 948, 604, 948,
2241
2242 605, 606, 607, 607, 607, 607, 353, 227, 353, 948, 948, 354, 608, 609, 356, 610, 610, 610, 610,
2243 439, 372, 439, 948, 948, 440, 948, 441, 442, 443, 443, 443, 443, 439, 372, 439, 948, 948, 440,
2244 948, 441, 442, 443, 443, 443, 443, 372, 372, 372, 948, 948, 373, 948, 948, 948, 445, 445, 445,
2245 445, 258, 156, 258, 948, 948, 259, 948, 260, 447, 448, 448, 448, 448, 258, 156, 258, 948, 948,
2246 259, 948, 260, 261, 619, 619, 619, 619, 375, 376, 375, 948, 948, 377, 948, 948, 447, 448, 448,
2247 448, 448, 948, 948, 948,
2248
2249 620, 451, 452, 452, 452, 452, 461, 461, 461, 461, 461, 461, 461, 461, 624, 624, 624, 624, 620,
2250 454, 376, 454, 948, 948, 455, 948, 456, 457, 458, 458, 458, 458, 372, 372, 372, 948, 948, 373,
2251 948, 948, 451, 452, 452, 452, 452, 948, 948, 948, 622, 467, 468, 468, 468, 468, 261, 461, 461,
2252 461, 461, 135, 130, 135, 378, 948, 136, 948, 622, 454, 376, 454, 843, 948, 455, 948, 456, 457,
2253 458, 458, 458, 458, 378, 270, 271, 164, 271, 270, 270, 272, 270, 273, 270, 463, 464, 464, 464,
2254 465, 465, 465, 465, 465,
2255
2256 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 380, 270, 270, 270, 465, 465, 465, 270,
2257 270, 270, 270, 270, 270, 270, 270, 270, 380, 625, 625, 625, 948, 948, 626, 948, 948, 467, 468,
2258 468, 468, 468, 948, 948, 948, 627, 628, 629, 628, 948, 948, 630, 476, 476, 476, 476, 482, 483,
2259 483, 483, 483, 948, 631, 627, 470, 382, 470, 948, 948, 471, 948, 472, 473, 474, 474, 474, 474,
2260 470, 382, 470, 631, 948, 471, 948, 472, 473, 474, 474, 474, 474, 382, 382, 382, 948, 948, 383,
2261 948, 948, 948, 476, 476,
2262
2263 476, 476, 282, 172, 282, 948, 948, 283, 948, 284, 478, 479, 479, 479, 479, 282, 172, 282, 948,
2264 948, 283, 948, 284, 285, 632, 632, 632, 632, 633, 634, 633, 948, 948, 635, 948, 948, 478, 479,
2265 479, 479, 479, 948, 948, 948, 636, 637, 637, 637, 637, 492, 492, 492, 492, 492, 492, 492, 492,
2266 494, 494, 494, 494, 948, 636, 485, 386, 485, 948, 948, 486, 948, 487, 488, 489, 489, 489, 489,
2267 629, 629, 629, 948, 948, 638, 948, 948, 482, 483, 483, 483, 483, 948, 948, 948, 639, 640, 634,
2268 640, 948, 948, 641, 494,
2269
2270 494, 494, 494, 499, 500, 500, 500, 500, 948, 642, 639, 485, 386, 485, 948, 948, 486, 948, 487,
2271 488, 489, 489, 489, 489, 948, 948, 948, 642, 385, 386, 385, 948, 948, 387, 948, 948, 948, 492,
2272 492, 492, 492, 948, 948, 948, 388, 643, 643, 643, 643, 508, 508, 508, 508, 499, 500, 500, 500,
2273 500, 948, 948, 948, 644, 388, 295, 186, 295, 948, 948, 296, 948, 297, 298, 497, 497, 497, 497,
2274 295, 186, 295, 644, 948, 296, 948, 297, 298, 497, 497, 497, 497, 502, 393, 502, 948, 948, 503,
2275 948, 504, 505, 506, 506,
2276
2277 506, 506, 502, 393, 502, 948, 948, 503, 948, 504, 505, 506, 506, 506, 506, 393, 393, 393, 948,
2278 948, 394, 948, 948, 948, 508, 508, 508, 508, 306, 192, 306, 948, 948, 307, 948, 308, 510, 511,
2279 511, 511, 511, 306, 192, 306, 948, 948, 307, 948, 308, 309, 646, 646, 646, 646, 396, 397, 396,
2280 948, 948, 398, 948, 948, 510, 511, 511, 511, 511, 948, 948, 948, 647, 514, 515, 515, 515, 515,
2281 648, 648, 648, 648, 524, 524, 524, 524, 524, 524, 524, 524, 647, 517, 397, 517, 948, 948, 518,
2282 948, 519, 520, 521, 521,
2283
2284 521, 521, 393, 393, 393, 948, 948, 394, 948, 948, 514, 515, 515, 515, 515, 948, 948, 948, 649,
2285 526, 527, 527, 527, 527, 309, 524, 524, 524, 524, 135, 130, 931, 399, 948, 136, 948, 649, 517,
2286 397, 517, 948, 948, 518, 948, 519, 520, 521, 521, 521, 521, 399, 651, 651, 651, 651, 526, 527,
2287 527, 527, 527, 948, 948, 948, 652, 535, 535, 535, 535, 541, 542, 542, 542, 542, 656, 656, 656,
2288 656, 551, 551, 551, 551, 652, 529, 401, 529, 948, 948, 530, 948, 531, 532, 533, 533, 533, 533,
2289 529, 401, 529, 948, 948,
2290
2291 530, 948, 531, 532, 533, 533, 533, 533, 401, 401, 401, 948, 948, 402, 948, 948, 948, 535, 535,
2292 535, 535, 317, 198, 317, 948, 948, 318, 948, 319, 537, 538, 538, 538, 538, 317, 198, 317, 948,
2293 948, 318, 948, 319, 320, 654, 654, 654, 654, 404, 405, 404, 948, 948, 406, 948, 948, 537, 538,
2294 538, 538, 538, 948, 948, 948, 655, 551, 551, 551, 551, 659, 659, 659, 659, 320, 551, 551, 551,
2295 551, 948, 948, 948, 407, 655, 544, 405, 544, 948, 948, 545, 948, 546, 547, 548, 548, 548, 548,
2296 401, 401, 401, 407, 948,
2297
2298 402, 948, 948, 541, 542, 542, 542, 542, 948, 948, 948, 657, 553, 554, 554, 554, 554, 562, 562,
2299 562, 562, 568, 569, 569, 569, 569, 948, 948, 948, 657, 544, 405, 544, 948, 948, 545, 948, 546,
2300 547, 548, 548, 548, 548, 660, 660, 660, 948, 948, 661, 948, 948, 553, 554, 554, 554, 554, 948,
2301 948, 948, 662, 663, 664, 663, 948, 948, 665, 672, 672, 672, 672, 578, 578, 578, 578, 948, 948,
2302 666, 662, 556, 409, 556, 948, 948, 557, 948, 558, 559, 560, 560, 560, 560, 556, 409, 556, 666,
2303 948, 557, 948, 558, 559,
2304
2305 560, 560, 560, 560, 409, 409, 409, 948, 948, 410, 948, 948, 948, 562, 562, 562, 562, 331, 211,
2306 331, 948, 948, 332, 948, 333, 564, 565, 565, 565, 565, 331, 211, 331, 948, 948, 332, 948, 333,
2307 334, 667, 667, 667, 667, 668, 669, 668, 948, 948, 670, 948, 948, 564, 565, 565, 565, 565, 948,
2308 948, 948, 671, 675, 669, 675, 948, 948, 676, 578, 578, 578, 578, 580, 580, 580, 580, 948, 948,
2309 677, 671, 571, 413, 571, 948, 948, 572, 948, 573, 574, 575, 575, 575, 575, 664, 664, 664, 677,
2310 948, 673, 948, 948, 568,
2311
2312 569, 569, 569, 569, 948, 948, 948, 674, 580, 580, 580, 580, 585, 586, 586, 586, 586, 678, 678,
2313 678, 678, 594, 594, 594, 594, 674, 571, 413, 571, 948, 948, 572, 948, 573, 574, 575, 575, 575,
2314 575, 412, 413, 412, 948, 948, 414, 948, 948, 948, 578, 578, 578, 578, 948, 948, 948, 415, 600,
2315 601, 601, 601, 601, 948, 948, 948, 585, 586, 586, 586, 586, 948, 948, 948, 679, 415, 342, 221,
2316 342, 948, 948, 343, 948, 344, 345, 583, 583, 583, 583, 342, 221, 342, 679, 948, 343, 948, 344,
2317 345, 583, 583, 583, 583,
2318
2319 588, 420, 588, 948, 948, 589, 948, 590, 591, 592, 592, 592, 592, 588, 420, 588, 948, 948, 589,
2320 948, 590, 591, 592, 592, 592, 592, 420, 420, 420, 948, 948, 421, 948, 948, 948, 594, 594, 594,
2321 594, 353, 227, 353, 948, 948, 354, 948, 355, 596, 597, 597, 597, 597, 353, 227, 353, 948, 948,
2322 354, 948, 355, 356, 681, 681, 681, 681, 423, 424, 423, 948, 948, 425, 948, 948, 596, 597, 597,
2323 597, 597, 948, 948, 948, 682, 683, 683, 683, 683, 610, 610, 610, 610, 610, 610, 610, 610, 692,
2324 692, 692, 692, 948, 682,
2325
2326 603, 424, 603, 948, 948, 604, 948, 605, 606, 607, 607, 607, 607, 420, 420, 420, 948, 948, 421,
2327 948, 948, 600, 601, 601, 601, 601, 135, 130, 135, 684, 948, 136, 948, 948, 948, 356, 610, 610,
2328 610, 610, 135, 130, 135, 426, 948, 136, 948, 684, 603, 424, 603, 948, 938, 604, 686, 605, 606,
2329 607, 607, 607, 607, 426, 616, 616, 616, 616, 948, 691, 691, 617, 692, 692, 692, 692, 699, 699,
2330 948, 700, 700, 700, 700, 692, 692, 692, 692, 948, 948, 617, 439, 372, 439, 948, 948, 440, 693,
2331 694, 442, 695, 695, 695,
2332
2333 695, 375, 376, 375, 948, 948, 377, 948, 260, 261, 619, 619, 619, 619, 948, 713, 713, 620, 714,
2334 714, 714, 714, 746, 746, 948, 747, 747, 747, 747, 700, 700, 700, 700, 948, 948, 620, 258, 156,
2335 258, 948, 948, 259, 696, 697, 261, 698, 698, 698, 698, 372, 372, 372, 948, 948, 373, 948, 948,
2336 948, 621, 621, 621, 621, 948, 754, 754, 622, 755, 755, 755, 755, 705, 706, 706, 706, 706, 643,
2337 643, 643, 643, 948, 948, 948, 644, 622, 454, 376, 454, 948, 948, 455, 701, 702, 457, 703, 703,
2338 703, 703, 625, 625, 625,
2339
2340 644, 948, 626, 948, 948, 948, 624, 624, 624, 624, 948, 762, 762, 627, 763, 763, 763, 763, 847,
2341 847, 847, 847, 948, 651, 651, 651, 651, 948, 948, 948, 652, 627, 625, 625, 625, 948, 948, 626,
2342 948, 704, 705, 706, 706, 706, 706, 708, 625, 708, 652, 948, 709, 948, 710, 711, 712, 712, 712,
2343 712, 628, 629, 628, 948, 948, 630, 948, 715, 716, 717, 717, 717, 717, 629, 629, 629, 948, 948,
2344 638, 948, 718, 719, 720, 720, 720, 720, 722, 629, 722, 948, 948, 723, 948, 724, 725, 726, 726,
2345 726, 726, 470, 382, 470,
2346
2347 948, 948, 471, 727, 728, 473, 729, 729, 729, 729, 633, 634, 633, 948, 948, 635, 948, 284, 285,
2348 632, 632, 632, 632, 948, 767, 767, 636, 768, 768, 768, 768, 775, 775, 948, 776, 776, 776, 776,
2349 714, 714, 714, 714, 948, 948, 636, 633, 634, 633, 948, 948, 635, 948, 730, 731, 732, 732, 732,
2350 732, 634, 634, 634, 948, 948, 733, 948, 734, 735, 736, 736, 736, 736, 738, 634, 738, 948, 948,
2351 739, 948, 740, 741, 742, 742, 742, 742, 282, 172, 282, 948, 948, 283, 743, 744, 285, 745, 745,
2352 745, 745, 629, 629, 629,
2353
2354 948, 948, 638, 948, 948, 948, 637, 637, 637, 637, 948, 789, 789, 639, 790, 790, 790, 790, 822,
2355 822, 948, 823, 823, 823, 823, 719, 720, 720, 720, 720, 948, 639, 722, 629, 722, 948, 948, 723,
2356 948, 724, 725, 726, 726, 726, 726, 640, 634, 640, 948, 948, 641, 948, 748, 749, 750, 750, 750,
2357 750, 738, 634, 738, 948, 948, 739, 948, 740, 741, 742, 742, 742, 742, 485, 386, 485, 948, 948,
2358 486, 751, 752, 488, 753, 753, 753, 753, 502, 393, 502, 948, 948, 503, 756, 757, 505, 758, 758,
2359 758, 758, 396, 397, 396,
2360
2361 948, 948, 398, 948, 308, 309, 646, 646, 646, 646, 948, 830, 830, 647, 831, 831, 831, 831, 852,
2362 852, 852, 852, 948, 678, 678, 678, 678, 948, 948, 948, 679, 647, 306, 192, 306, 948, 948, 307,
2363 759, 760, 309, 761, 761, 761, 761, 393, 393, 393, 679, 948, 394, 948, 948, 948, 648, 648, 648,
2364 648, 948, 838, 838, 649, 839, 839, 839, 839, 729, 729, 729, 729, 705, 706, 706, 706, 706, 948,
2365 948, 948, 848, 649, 517, 397, 517, 948, 948, 518, 764, 765, 520, 766, 766, 766, 766, 529, 401,
2366 529, 848, 948, 530, 769,
2367
2368 770, 532, 771, 771, 771, 771, 404, 405, 404, 948, 948, 406, 948, 319, 320, 654, 654, 654, 654,
2369 948, 948, 948, 655, 375, 376, 375, 948, 948, 377, 729, 729, 729, 729, 735, 736, 736, 736, 736,
2370 948, 378, 655, 317, 198, 317, 948, 948, 318, 772, 773, 320, 774, 774, 774, 774, 401, 401, 401,
2371 378, 948, 402, 948, 948, 948, 656, 656, 656, 656, 948, 948, 948, 657, 857, 857, 857, 857, 745,
2372 745, 745, 745, 473, 729, 729, 729, 729, 948, 948, 948, 631, 657, 544, 405, 544, 948, 948, 545,
2373 777, 778, 547, 779, 779,
2374
2375 779, 779, 660, 660, 660, 631, 948, 661, 948, 948, 948, 659, 659, 659, 659, 948, 948, 948, 662,
2376 745, 745, 745, 745, 747, 747, 747, 747, 285, 745, 745, 745, 745, 948, 948, 948, 388, 662, 660,
2377 660, 660, 948, 948, 661, 948, 780, 781, 782, 782, 782, 782, 784, 660, 784, 388, 948, 785, 948,
2378 786, 787, 788, 788, 788, 788, 663, 664, 663, 948, 948, 665, 948, 791, 792, 793, 793, 793, 793,
2379 664, 664, 664, 948, 948, 673, 948, 794, 795, 796, 796, 796, 796, 798, 664, 798, 948, 948, 799,
2380 948, 800, 801, 802, 802,
2381
2382 802, 802, 556, 409, 556, 948, 948, 557, 803, 804, 559, 805, 805, 805, 805, 668, 669, 668, 948,
2383 948, 670, 948, 333, 334, 667, 667, 667, 667, 948, 948, 948, 671, 753, 753, 753, 753, 753, 753,
2384 753, 753, 488, 753, 753, 753, 753, 948, 948, 948, 642, 671, 668, 669, 668, 948, 948, 670, 948,
2385 806, 807, 808, 808, 808, 808, 669, 669, 669, 642, 948, 809, 948, 810, 811, 812, 812, 812, 812,
2386 814, 669, 814, 948, 948, 815, 948, 816, 817, 818, 818, 818, 818, 331, 211, 331, 948, 948, 332,
2387 819, 820, 334, 821, 821,
2388
2389 821, 821, 664, 664, 664, 948, 948, 673, 948, 948, 948, 672, 672, 672, 672, 948, 948, 948, 674,
2390 755, 755, 755, 755, 755, 755, 755, 755, 763, 763, 763, 763, 768, 768, 768, 768, 948, 674, 798,
2391 664, 798, 948, 948, 799, 948, 800, 801, 802, 802, 802, 802, 675, 669, 675, 948, 948, 676, 948,
2392 824, 825, 826, 826, 826, 826, 814, 669, 814, 948, 948, 815, 948, 816, 817, 818, 818, 818, 818,
2393 571, 413, 571, 948, 948, 572, 827, 828, 574, 829, 829, 829, 829, 588, 420, 588, 948, 948, 589,
2394 832, 833, 591, 834, 834,
2395
2396 834, 834, 423, 424, 423, 948, 948, 425, 948, 355, 356, 681, 681, 681, 681, 948, 948, 948, 682,
2397 396, 397, 396, 948, 948, 398, 768, 768, 768, 768, 776, 776, 776, 776, 948, 948, 399, 682, 353,
2398 227, 353, 948, 948, 354, 835, 836, 356, 837, 837, 837, 837, 420, 420, 420, 399, 948, 421, 948,
2399 948, 948, 683, 683, 683, 683, 948, 948, 948, 684, 404, 405, 404, 948, 948, 406, 781, 782, 782,
2400 782, 782, 862, 862, 862, 862, 948, 407, 684, 603, 424, 603, 948, 948, 604, 840, 841, 606, 842,
2401 842, 842, 842, 439, 372,
2402
2403 439, 407, 948, 440, 948, 441, 442, 695, 695, 695, 695, 439, 372, 439, 948, 948, 440, 948, 441,
2404 442, 695, 695, 695, 695, 258, 156, 258, 948, 948, 259, 948, 260, 261, 698, 698, 698, 698, 258,
2405 156, 258, 948, 948, 259, 948, 260, 261, 698, 698, 698, 698, 372, 372, 372, 948, 948, 373, 948,
2406 948, 948, 700, 700, 700, 700, 454, 376, 454, 948, 948, 455, 948, 456, 457, 703, 703, 703, 703,
2407 454, 376, 454, 948, 948, 455, 948, 456, 457, 703, 703, 703, 703, 708, 625, 708, 948, 948, 709,
2408 948, 710, 711, 712, 712,
2409
2410 712, 712, 708, 625, 708, 948, 948, 709, 948, 710, 711, 712, 712, 712, 712, 625, 625, 625, 948,
2411 948, 626, 948, 948, 948, 714, 714, 714, 714, 470, 382, 470, 948, 948, 471, 948, 472, 716, 717,
2412 717, 717, 717, 470, 382, 470, 948, 948, 471, 948, 472, 473, 850, 850, 850, 850, 628, 629, 628,
2413 948, 948, 630, 948, 948, 716, 717, 717, 717, 717, 948, 948, 948, 851, 790, 790, 790, 790, 948,
2414 781, 782, 782, 782, 782, 940, 941, 940, 863, 948, 942, 948, 851, 625, 625, 625, 948, 948, 626,
2415 948, 948, 719, 720, 720,
2416
2417 720, 720, 863, 948, 948, 853, 795, 796, 796, 796, 796, 867, 867, 867, 867, 805, 805, 805, 805,
2418 805, 805, 805, 805, 853, 722, 629, 722, 948, 948, 723, 948, 724, 725, 726, 726, 726, 726, 722,
2419 629, 722, 948, 948, 723, 948, 724, 725, 726, 726, 726, 726, 282, 172, 282, 948, 948, 283, 948,
2420 284, 731, 732, 732, 732, 732, 282, 172, 282, 948, 948, 283, 948, 284, 285, 855, 855, 855, 855,
2421 633, 634, 633, 948, 948, 635, 948, 948, 731, 732, 732, 732, 732, 948, 948, 948, 856, 811, 812,
2422 812, 812, 812, 948, 948,
2423
2424 948, 559, 805, 805, 805, 805, 948, 948, 948, 666, 856, 738, 634, 738, 948, 948, 739, 948, 740,
2425 741, 742, 742, 742, 742, 629, 629, 629, 666, 948, 638, 948, 948, 735, 736, 736, 736, 736, 948,
2426 948, 948, 858, 872, 872, 872, 872, 821, 821, 821, 821, 821, 821, 821, 821, 823, 823, 823, 823,
2427 948, 858, 738, 634, 738, 948, 948, 739, 948, 740, 741, 742, 742, 742, 742, 629, 629, 629, 948,
2428 948, 638, 948, 948, 948, 747, 747, 747, 747, 485, 386, 485, 948, 948, 486, 948, 487, 749, 750,
2429 750, 750, 750, 485, 386,
2430
2431 485, 948, 948, 486, 948, 487, 488, 860, 860, 860, 860, 640, 634, 640, 948, 948, 641, 948, 948,
2432 749, 750, 750, 750, 750, 948, 948, 948, 861, 829, 829, 829, 829, 829, 829, 829, 829, 334, 821,
2433 821, 821, 821, 948, 948, 948, 415, 861, 502, 393, 502, 948, 948, 503, 948, 504, 505, 758, 758,
2434 758, 758, 502, 393, 502, 415, 948, 503, 948, 504, 505, 758, 758, 758, 758, 306, 192, 306, 948,
2435 948, 307, 948, 308, 309, 761, 761, 761, 761, 306, 192, 306, 948, 948, 307, 948, 308, 309, 761,
2436 761, 761, 761, 393, 393,
2437
2438 393, 948, 948, 394, 948, 948, 948, 763, 763, 763, 763, 517, 397, 517, 948, 948, 518, 948, 519,
2439 520, 766, 766, 766, 766, 517, 397, 517, 948, 948, 518, 948, 519, 520, 766, 766, 766, 766, 529,
2440 401, 529, 948, 948, 530, 948, 531, 532, 771, 771, 771, 771, 529, 401, 529, 948, 948, 530, 948,
2441 531, 532, 771, 771, 771, 771, 317, 198, 317, 948, 948, 318, 948, 319, 320, 774, 774, 774, 774,
2442 317, 198, 317, 948, 948, 318, 948, 319, 320, 774, 774, 774, 774, 401, 401, 401, 948, 948, 402,
2443 948, 948, 948, 776, 776,
2444
2445 776, 776, 544, 405, 544, 948, 948, 545, 948, 546, 547, 779, 779, 779, 779, 544, 405, 544, 948,
2446 948, 545, 948, 546, 547, 779, 779, 779, 779, 784, 660, 784, 948, 948, 785, 948, 786, 787, 788,
2447 788, 788, 788, 784, 660, 784, 948, 948, 785, 948, 786, 787, 788, 788, 788, 788, 660, 660, 660,
2448 948, 948, 661, 948, 948, 948, 790, 790, 790, 790, 556, 409, 556, 948, 948, 557, 948, 558, 792,
2449 793, 793, 793, 793, 556, 409, 556, 948, 948, 557, 948, 558, 559, 865, 865, 865, 865, 663, 664,
2450 663, 948, 948, 665, 948,
2451
2452 948, 792, 793, 793, 793, 793, 948, 948, 948, 866, 831, 831, 831, 831, 948, 574, 829, 829, 829,
2453 829, 940, 941, 940, 677, 948, 942, 948, 866, 660, 660, 660, 948, 948, 661, 948, 948, 795, 796,
2454 796, 796, 796, 677, 948, 948, 868, 831, 831, 831, 831, 839, 839, 839, 839, 135, 130, 135, 948,
2455 948, 136, 948, 948, 877, 868, 798, 664, 798, 948, 948, 799, 948, 800, 801, 802, 802, 802, 802,
2456 798, 664, 798, 948, 948, 799, 948, 800, 801, 802, 802, 802, 802, 331, 211, 331, 948, 948, 332,
2457 948, 333, 807, 808, 808,
2458
2459 808, 808, 331, 211, 331, 948, 948, 332, 948, 333, 334, 870, 870, 870, 870, 668, 669, 668, 948,
2460 948, 670, 948, 948, 807, 808, 808, 808, 808, 948, 948, 948, 871, 423, 424, 423, 880, 880, 425,
2461 881, 881, 881, 881, 559, 865, 865, 865, 865, 948, 426, 871, 814, 669, 814, 948, 948, 815, 948,
2462 816, 817, 818, 818, 818, 818, 664, 664, 664, 426, 948, 673, 948, 948, 811, 812, 812, 812, 812,
2463 948, 888, 888, 873, 889, 889, 889, 889, 948, 867, 867, 867, 867, 847, 847, 847, 847, 948, 948,
2464 948, 848, 873, 814, 669,
2465
2466 814, 948, 948, 815, 948, 816, 817, 818, 818, 818, 818, 664, 664, 664, 848, 948, 673, 948, 948,
2467 948, 823, 823, 823, 823, 571, 413, 571, 948, 948, 572, 948, 573, 825, 826, 826, 826, 826, 571,
2468 413, 571, 948, 948, 572, 948, 573, 574, 875, 875, 875, 875, 675, 669, 675, 948, 948, 676, 948,
2469 948, 825, 826, 826, 826, 826, 948, 896, 896, 876, 897, 897, 897, 897, 334, 870, 870, 870, 870,
2470 862, 862, 862, 862, 948, 948, 948, 863, 876, 588, 420, 588, 948, 948, 589, 948, 590, 591, 834,
2471 834, 834, 834, 588, 420,
2472
2473 588, 863, 948, 589, 948, 590, 591, 834, 834, 834, 834, 353, 227, 353, 948, 948, 354, 948, 355,
2474 356, 837, 837, 837, 837, 353, 227, 353, 948, 948, 354, 948, 355, 356, 837, 837, 837, 837, 420,
2475 420, 420, 948, 948, 421, 948, 948, 948, 839, 839, 839, 839, 603, 424, 603, 948, 948, 604, 948,
2476 605, 606, 842, 842, 842, 842, 603, 424, 603, 948, 948, 604, 948, 605, 606, 842, 842, 842, 842,
2477 708, 625, 708, 948, 948, 709, 882, 883, 711, 884, 884, 884, 884, 628, 629, 628, 948, 948, 630,
2478 948, 472, 473, 850, 850,
2479
2480 850, 850, 948, 904, 904, 851, 905, 905, 905, 905, 906, 907, 948, 908, 908, 908, 908, 948, 872,
2481 872, 872, 872, 948, 851, 470, 382, 470, 948, 948, 471, 885, 886, 473, 887, 887, 887, 887, 625,
2482 625, 625, 948, 948, 626, 948, 948, 948, 852, 852, 852, 852, 948, 909, 910, 853, 911, 911, 911,
2483 911, 912, 912, 948, 913, 913, 913, 913, 574, 875, 875, 875, 875, 948, 853, 722, 629, 722, 948,
2484 948, 723, 890, 891, 725, 892, 892, 892, 892, 633, 634, 633, 948, 948, 635, 948, 284, 285, 855,
2485 855, 855, 855, 948, 914,
2486
2487 915, 856, 916, 916, 916, 916, 917, 918, 948, 919, 919, 919, 919, 881, 881, 881, 881, 948, 948,
2488 856, 282, 172, 282, 948, 948, 283, 893, 894, 285, 895, 895, 895, 895, 629, 629, 629, 948, 948,
2489 638, 948, 948, 948, 857, 857, 857, 857, 948, 920, 920, 858, 921, 921, 921, 921, 922, 923, 948,
2490 924, 924, 924, 924, 881, 881, 881, 881, 948, 948, 858, 738, 634, 738, 948, 948, 739, 898, 899,
2491 741, 900, 900, 900, 900, 640, 634, 640, 948, 948, 641, 948, 487, 488, 860, 860, 860, 860, 948,
2492 925, 926, 861, 927, 927,
2493
2494 927, 927, 135, 130, 135, 948, 948, 136, 940, 941, 940, 928, 948, 942, 948, 861, 485, 386, 485,
2495 948, 948, 486, 901, 902, 488, 903, 903, 903, 903, 708, 625, 708, 948, 948, 709, 948, 710, 711,
2496 884, 884, 884, 884, 628, 629, 628, 948, 948, 630, 469, 472, 889, 889, 889, 889, 897, 897, 897,
2497 897, 631, 905, 905, 905, 905, 905, 905, 905, 905, 908, 908, 908, 908, 908, 908, 908, 908, 948,
2498 631, 625, 625, 625, 948, 948, 626, 948, 948, 948, 889, 889, 889, 889, 722, 629, 722, 948, 948,
2499 723, 948, 724, 725, 892,
2500
2501 892, 892, 892, 633, 634, 633, 948, 948, 635, 281, 284, 908, 908, 908, 908, 948, 948, 948, 864,
2502 388, 911, 911, 911, 911, 911, 911, 911, 911, 913, 913, 913, 913, 916, 916, 916, 916, 864, 388,
2503 629, 629, 629, 948, 948, 638, 948, 948, 948, 897, 897, 897, 897, 738, 634, 738, 948, 948, 739,
2504 948, 740, 741, 900, 900, 900, 900, 640, 634, 640, 948, 948, 641, 484, 487, 948, 559, 911, 911,
2505 911, 911, 948, 948, 642, 666, 916, 916, 916, 916, 948, 948, 916, 916, 916, 916, 135, 130, 135,
2506 869, 948, 136, 642, 666,
2507
2508 660, 660, 660, 948, 948, 661, 948, 948, 948, 913, 913, 913, 913, 869, 919, 919, 919, 919, 919,
2509 919, 919, 919, 334, 919, 919, 919, 919, 937, 948, 948, 415, 921, 921, 921, 921, 921, 921, 921,
2510 921, 924, 924, 924, 924, 924, 924, 924, 924, 948, 415, 924, 924, 924, 924, 948, 948, 948, 874,
2511 927, 927, 927, 927, 927, 927, 927, 927, 574, 927, 927, 927, 927, 135, 130, 135, 677, 874, 136,
2512 135, 130, 135, 948, 943, 136, 943, 948, 948, 944, 948, 940, 941, 940, 948, 677, 942, 943, 946,
2513 943, 946, 948, 944, 947,
2514
2515 946, 946, 946, 946, 948, 947, 947, 946, 948, 946, 948, 948, 947, 934, 948, 948, 948, 948, 936, 46,
2516 46, 46, 46, 46, 46, 46, 46, 80, 80, 80, 80, 80, 80, 80, 80, 110, 110, 110, 110, 110, 110, 110,
2517 110, 120, 120, 120, 120, 120, 120, 120, 120, 134, 134, 134, 134, 134, 134, 134, 134, 138, 948,
2518 948, 138, 175, 948, 948, 175, 948, 175, 175, 175, 176, 176, 176, 176, 176, 176, 176, 176, 214,
2519 948, 948, 214, 948, 214, 214, 215, 215, 215, 215, 215, 215, 215, 215, 230, 230, 948, 230, 948,
2520 230,
2521
2522 230, 230, 233, 233, 233, 233, 233, 233, 233, 233, 239, 239, 948, 239, 239, 239, 239, 239, 257,
2523 257, 257, 257, 257, 257, 257, 257, 270, 270, 270, 270, 270, 270, 270, 270, 276, 276, 948, 948,
2524 276, 276, 281, 281, 281, 281, 281, 281, 281, 281, 294, 294, 294, 294, 294, 294, 294, 294, 305,
2525 305, 305, 305, 305, 305, 305, 305, 316, 316, 316, 316, 316, 316, 316, 316, 330, 330, 330, 330,
2526 330, 330, 330, 330, 341, 341, 341, 341, 341, 341, 341, 341, 352, 352, 352, 352, 352, 352, 352,
2527 352, 230, 230, 948, 230,
2528
2529 948, 230, 230, 230, 233, 233, 233, 233, 233, 233, 233, 233, 239, 239, 948, 239, 239, 239, 239,
2530 239, 134, 134, 134, 134, 134, 134, 134, 134, 138, 948, 948, 138, 257, 257, 257, 257, 257, 257,
2531 257, 257, 270, 270, 270, 270, 270, 270, 270, 270, 276, 276, 948, 948, 276, 276, 281, 281, 281,
2532 281, 281, 281, 281, 281, 438, 438, 438, 438, 438, 438, 438, 438, 453, 453, 453, 453, 453, 453,
2533 453, 453, 469, 469, 469, 469, 469, 469, 469, 469, 484, 484, 484, 484, 484, 484, 484, 484, 294,
2534 294, 294, 294, 294, 294,
2535
2536 294, 294, 501, 501, 501, 501, 501, 501, 501, 501, 305, 305, 305, 305, 305, 305, 305, 305, 516,
2537 516, 516, 516, 516, 516, 516, 516, 528, 528, 528, 528, 528, 528, 528, 528, 316, 316, 316, 316,
2538 316, 316, 316, 316, 543, 543, 543, 543, 543, 543, 543, 543, 555, 555, 555, 555, 555, 555, 555,
2539 555, 330, 330, 330, 330, 330, 330, 330, 330, 570, 570, 570, 570, 570, 570, 570, 570, 341, 341,
2540 341, 341, 341, 341, 341, 341, 587, 587, 587, 587, 587, 587, 587, 587, 352, 352, 352, 352, 352,
2541 352, 352, 352, 602, 602,
2542
2543 602, 602, 602, 602, 602, 602, 134, 134, 134, 134, 134, 134, 134, 134, 138, 948, 948, 138, 438,
2544 438, 438, 438, 438, 438, 438, 438, 257, 257, 257, 257, 257, 257, 257, 257, 453, 453, 453, 453,
2545 453, 453, 453, 453, 469, 469, 469, 469, 469, 469, 469, 469, 281, 281, 281, 281, 281, 281, 281,
2546 281, 484, 484, 484, 484, 484, 484, 484, 484, 294, 294, 294, 294, 294, 294, 294, 294, 501, 501,
2547 501, 501, 501, 501, 501, 501, 305, 305, 305, 305, 305, 305, 305, 305, 516, 516, 516, 516, 516,
2548 516, 516, 516, 528, 528,
2549
2550 528, 528, 528, 528, 528, 528, 316, 316, 316, 316, 316, 316, 316, 316, 543, 543, 543, 543, 543,
2551 543, 543, 543, 555, 555, 555, 555, 555, 555, 555, 555, 330, 330, 330, 330, 330, 330, 330, 330,
2552 570, 570, 570, 570, 570, 570, 570, 570, 341, 341, 341, 341, 341, 341, 341, 341, 587, 587, 587,
2553 587, 587, 587, 587, 587, 352, 352, 352, 352, 352, 352, 352, 352, 602, 602, 602, 602, 602, 602,
2554 602, 602, 134, 134, 134, 134, 134, 134, 134, 134, 138, 948, 948, 138, 438, 438, 438, 438, 438,
2555 438, 438, 438, 257, 257,
2556
2557 257, 257, 257, 257, 257, 257, 453, 453, 453, 453, 453, 453, 453, 453, 707, 707, 707, 707, 707,
2558 707, 707, 707, 469, 469, 469, 469, 469, 469, 469, 469, 721, 721, 721, 721, 721, 721, 721, 721,
2559 281, 281, 281, 281, 281, 281, 281, 281, 737, 737, 737, 737, 737, 737, 737, 737, 484, 484, 484,
2560 484, 484, 484, 484, 484, 501, 501, 501, 501, 501, 501, 501, 501, 305, 305, 305, 305, 305, 305,
2561 305, 305, 516, 516, 516, 516, 516, 516, 516, 516, 528, 528, 528, 528, 528, 528, 528, 528, 316,
2562 316, 316, 316, 316, 316,
2563
2564 316, 316, 543, 543, 543, 543, 543, 543, 543, 543, 783, 783, 783, 783, 783, 783, 783, 783, 555,
2565 555, 555, 555, 555, 555, 555, 555, 797, 797, 797, 797, 797, 797, 797, 797, 330, 330, 330, 330,
2566 330, 330, 330, 330, 813, 813, 813, 813, 813, 813, 813, 813, 570, 570, 570, 570, 570, 570, 570,
2567 570, 587, 587, 587, 587, 587, 587, 587, 587, 352, 352, 352, 352, 352, 352, 352, 352, 602, 602,
2568 602, 602, 602, 602, 602, 602, 134, 134, 134, 134, 134, 134, 134, 134, 138, 948, 948, 138, 438,
2569 438, 438, 438, 438, 438,
2570
2571 438, 438, 257, 257, 257, 257, 257, 257, 257, 257, 453, 453, 453, 453, 453, 453, 453, 453, 707,
2572 707, 707, 707, 707, 707, 707, 707, 469, 469, 469, 469, 469, 469, 469, 469, 721, 721, 721, 721,
2573 721, 721, 721, 721, 281, 281, 281, 281, 281, 281, 281, 281, 737, 737, 737, 737, 737, 737, 737,
2574 737, 484, 484, 484, 484, 484, 484, 484, 484, 501, 501, 501, 501, 501, 501, 501, 501, 305, 305,
2575 305, 305, 305, 305, 305, 305, 516, 516, 516, 516, 516, 516, 516, 516, 528, 528, 528, 528, 528,
2576 528, 528, 528, 316, 316,
2577
2578 316, 316, 316, 316, 316, 316, 543, 543, 543, 543, 543, 543, 543, 543, 783, 783, 783, 783, 783,
2579 783, 783, 783, 555, 555, 555, 555, 555, 555, 555, 555, 797, 797, 797, 797, 797, 797, 797, 797,
2580 330, 330, 330, 330, 330, 330, 330, 330, 813, 813, 813, 813, 813, 813, 813, 813, 570, 570, 570,
2581 570, 570, 570, 570, 570, 587, 587, 587, 587, 587, 587, 587, 587, 352, 352, 352, 352, 352, 352,
2582 352, 352, 602, 602, 602, 602, 602, 602, 602, 602, 134, 134, 134, 134, 134, 134, 134, 134, 138,
2583 948, 948, 138, 707, 707,
2584
2585 707, 707, 707, 707, 707, 707, 469, 469, 469, 469, 469, 469, 469, 469, 721, 721, 721, 721, 721,
2586 721, 721, 721, 281, 281, 281, 281, 281, 281, 281, 281, 737, 737, 737, 737, 737, 737, 737, 737,
2587 484, 484, 484, 484, 484, 484, 484, 484, 939, 939, 939, 939, 939, 939, 939, 939, 945, 945, 948,
2588 945, 945, 945, 945, 945, 45, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2589 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
2590 948, 948, 948, 948,
2591
2592 948, 948, 948, 948, 948, 948, 948, 948, 948, 948 };
2593
2594static const short int yy_chk[7711] = { 0, 0, 1, 1, 1, 0, 0, 1, 2, 2, 2, 885, 885, 2, 3, 3, 3, 3, 3,
2595 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2596 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 60, 60, 5, 6, 6, 6, 431, 1010, 6, 988, 431, 47, 47, 47, 5, 5,
2597 47, 48, 73, 48, 6, 6, 48, 5, 65, 65, 65, 65, 65, 6, 7, 7, 7, 985, 73, 7, 983,
2598
2599 7, 7, 7, 7, 7, 7, 66, 66, 66, 66, 976, 7, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 11, 11, 11,
2600 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 15, 15, 15,
2601 15, 15, 15, 16, 16, 16, 16, 16, 16, 17, 17, 17, 970, 17, 17, 18, 18, 18, 965, 18, 18, 19, 19, 19,
2602 19, 19, 19, 17, 68, 68, 68, 68, 68, 18, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 22, 22,
2603 22,
2604
2605 22, 22, 22, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 275, 933, 39,
2606 39, 39, 25, 39, 39, 40, 40, 40, 930, 40, 40, 464, 929, 275, 25, 879, 25, 26, 26, 26, 26, 26, 26,
2607 299, 51, 51, 51, 464, 26, 51, 39, 346, 443, 41, 41, 41, 40, 41, 41, 878, 26, 299, 26, 27, 27, 27,
2608 27, 27, 27, 346, 443, 42, 42, 42, 27, 42, 42, 49, 49, 49, 886, 886, 49, 846, 41, 458, 27, 844, 27,
2609 28, 28, 28, 28, 28, 28, 69,
2610
2611 69, 69, 69, 130, 28, 130, 42, 458, 130, 49, 71, 71, 71, 71, 690, 465, 28, 689, 28, 29, 29, 29, 29,
2612 29, 29, 74, 74, 74, 74, 687, 29, 465, 43, 43, 43, 43, 43, 43, 76, 76, 76, 76, 29, 43, 29, 30, 30,
2613 30, 30, 30, 30, 77, 77, 77, 77, 77, 30, 615, 44, 44, 44, 44, 44, 44, 78, 78, 78, 78, 30, 44, 30,
2614 31, 31, 31, 31, 31, 31, 70, 70, 70, 70, 70, 31, 893, 893, 70, 85, 85, 85, 85, 75, 75, 75, 75, 31,
2615 614, 31, 32, 32, 32,
2616
2617 32, 32, 32, 70, 88, 88, 88, 88, 32, 613, 75, 82, 82, 82, 612, 82, 82, 497, 894, 894, 32, 432, 32,
2618 33, 33, 33, 75, 33, 33, 84, 84, 84, 84, 84, 506, 497, 86, 86, 86, 86, 86, 33, 901, 901, 86, 87,
2619 87, 87, 87, 87, 902, 902, 506, 33, 521, 33, 34, 34, 34, 428, 34, 34, 86, 90, 90, 90, 90, 90, 91,
2620 91, 91, 91, 521, 369, 34, 93, 93, 93, 93, 93, 94, 94, 94, 94, 368, 367, 34, 366, 34, 35, 35, 35,
2621 35, 35, 35, 99, 99, 99, 99, 99,
2622
2623 35, 100, 100, 100, 100, 101, 101, 101, 101, 101, 365, 364, 35, 101, 35, 36, 36, 36, 36, 36, 36,
2624 103, 103, 103, 103, 362, 36, 104, 104, 104, 104, 101, 105, 105, 105, 105, 253, 252, 36, 251, 36,
2625 37, 37, 37, 37, 37, 37, 104, 108, 108, 108, 108, 37, 107, 107, 107, 107, 107, 114, 114, 114, 114,
2626 114, 104, 37, 533, 37, 38, 38, 38, 38, 38, 38, 115, 115, 115, 115, 250, 38, 548, 112, 112, 112,
2627 533, 112, 112, 118, 118, 118, 118, 38, 249, 38, 67, 67, 67, 247, 548, 67, 246,
2628
2629 245, 67, 67, 67, 67, 67, 121, 121, 121, 67, 112, 121, 112, 117, 117, 117, 117, 117, 123, 123, 123,
2630 244, 123, 123, 152, 150, 149, 67, 72, 72, 72, 148, 147, 72, 146, 144, 143, 72, 72, 72, 72, 126,
2631 126, 126, 126, 127, 127, 127, 127, 128, 128, 128, 128, 129, 129, 129, 142, 72, 129, 131, 131, 131,
2632 583, 140, 131, 127, 132, 133, 132, 133, 139, 132, 133, 72, 79, 79, 79, 124, 592, 79, 583, 127, 79,
2633 79, 79, 79, 79, 134, 134, 134, 79, 113, 134, 135, 135, 135, 592, 607, 135, 136,
2634
2635 136, 136, 96, 83, 136, 695, 703, 64, 79, 89, 89, 89, 712, 63, 89, 607, 62, 89, 89, 89, 89, 89, 61,
2636 695, 703, 89, 137, 137, 137, 726, 712, 137, 153, 153, 153, 153, 155, 155, 155, 155, 155, 59, 58,
2637 89, 92, 92, 92, 726, 57, 92, 137, 56, 92, 92, 92, 92, 92, 742, 158, 158, 92, 158, 158, 158, 158,
2638 159, 159, 159, 159, 161, 161, 161, 161, 55, 758, 742, 161, 54, 92, 95, 95, 95, 766, 53, 95, 52,
2639 45, 95, 95, 95, 95, 95, 758, 0, 161, 95, 167, 167, 167, 167,
2640
2641 766, 160, 160, 160, 160, 160, 166, 166, 166, 160, 0, 166, 0, 95, 109, 109, 109, 0, 0, 109, 0, 0,
2642 109, 109, 109, 109, 109, 160, 162, 162, 109, 162, 162, 162, 162, 169, 169, 169, 169, 171, 171,
2643 171, 171, 171, 179, 179, 179, 179, 109, 116, 116, 116, 0, 0, 116, 771, 0, 116, 116, 116, 116, 116,
2644 0, 174, 174, 116, 174, 174, 174, 174, 176, 176, 176, 771, 176, 176, 177, 177, 177, 779, 177, 177,
2645 0, 116, 119, 119, 119, 0, 0, 119, 0, 0, 119, 119, 119, 119, 119, 779, 182, 182,
2646
2647 119, 182, 182, 182, 182, 183, 183, 183, 183, 180, 180, 180, 180, 180, 0, 0, 0, 180, 119, 156, 156,
2648 156, 0, 0, 156, 0, 156, 156, 156, 156, 156, 156, 157, 157, 157, 180, 0, 157, 0, 157, 157, 157,
2649 157, 157, 157, 164, 164, 164, 788, 0, 164, 0, 164, 0, 164, 164, 164, 164, 165, 165, 165, 0, 0,
2650 165, 0, 165, 788, 165, 165, 165, 165, 172, 172, 172, 0, 0, 172, 0, 172, 172, 172, 172, 172, 172,
2651 173, 173, 173, 0, 0, 173, 0, 173, 173, 173, 173, 173, 173, 181, 181, 181,
2652
2653 181, 0, 0, 802, 181, 185, 185, 185, 185, 185, 188, 188, 0, 188, 188, 188, 188, 189, 189, 189, 189,
2654 802, 181, 186, 186, 186, 0, 0, 186, 0, 186, 186, 186, 186, 186, 186, 187, 187, 187, 818, 834, 187,
2655 842, 187, 187, 187, 187, 187, 187, 191, 191, 191, 191, 191, 192, 192, 192, 818, 834, 192, 842,
2656 192, 192, 192, 192, 192, 192, 193, 193, 193, 0, 0, 193, 0, 193, 193, 193, 193, 193, 193, 194, 194,
2657 884, 194, 194, 194, 194, 195, 195, 195, 195, 197, 197, 197, 197, 197, 198, 198, 198, 0,
2658
2659 884, 198, 0, 198, 198, 198, 198, 198, 198, 199, 199, 199, 0, 0, 199, 0, 199, 199, 199, 199, 199,
2660 199, 200, 200, 0, 200, 200, 200, 200, 202, 202, 202, 202, 203, 203, 203, 203, 203, 0, 0, 892, 203,
2661 204, 204, 204, 204, 900, 205, 205, 204, 205, 205, 205, 205, 206, 206, 206, 206, 892, 203, 208,
2662 208, 208, 208, 900, 0, 0, 204, 210, 210, 210, 210, 210, 211, 211, 211, 0, 0, 211, 0, 211, 211,
2663 211, 211, 211, 211, 212, 212, 212, 0, 0, 212, 0, 212, 212, 212, 212, 212, 212, 213,
2664
2665 213, 0, 213, 213, 213, 213, 215, 215, 215, 0, 215, 215, 216, 216, 216, 0, 216, 216, 218, 218, 218,
2666 218, 220, 220, 220, 220, 220, 223, 223, 0, 223, 223, 223, 223, 0, 239, 215, 239, 215, 0, 239, 0,
2667 216, 0, 216, 221, 221, 221, 0, 0, 221, 0, 221, 221, 221, 221, 221, 221, 222, 222, 222, 0, 0, 222,
2668 0, 222, 222, 222, 222, 222, 222, 224, 224, 224, 224, 225, 225, 225, 0, 0, 225, 0, 0, 225, 225,
2669 225, 225, 225, 0, 0, 0, 225, 226, 226, 226, 226, 226, 229, 229, 0,
2670
2671 229, 229, 229, 229, 237, 237, 237, 237, 0, 225, 227, 227, 227, 0, 0, 227, 0, 227, 227, 227, 227,
2672 227, 227, 228, 228, 228, 0, 0, 228, 0, 228, 228, 228, 228, 228, 228, 231, 231, 231, 0, 0, 231,
2673 232, 232, 232, 0, 232, 232, 233, 233, 233, 0, 233, 233, 234, 234, 234, 0, 234, 234, 235, 235, 235,
2674 0, 235, 235, 240, 241, 240, 241, 0, 240, 241, 242, 242, 242, 0, 0, 242, 254, 254, 254, 254, 254,
2675 255, 255, 255, 255, 263, 263, 263, 263, 0, 242, 256, 256, 256, 0, 0, 256,
2676
2677 0, 0, 256, 256, 256, 256, 256, 0, 0, 0, 256, 262, 262, 262, 0, 0, 262, 265, 265, 265, 265, 266,
2678 266, 266, 266, 0, 0, 262, 256, 257, 257, 257, 0, 0, 257, 0, 257, 257, 257, 257, 257, 257, 258,
2679 258, 258, 262, 0, 258, 0, 258, 258, 258, 258, 258, 258, 264, 264, 264, 0, 0, 264, 0, 0, 0, 264,
2680 264, 264, 264, 267, 267, 267, 267, 268, 268, 268, 268, 269, 269, 269, 269, 276, 276, 276, 0, 0,
2681 276, 278, 278, 278, 278, 278, 0, 268, 279, 279, 279, 279, 287, 287, 287,
2682
2683 287, 289, 289, 289, 289, 0, 0, 0, 268, 270, 270, 270, 0, 0, 270, 0, 270, 0, 270, 270, 270, 270,
2684 271, 271, 271, 0, 0, 271, 0, 271, 0, 271, 271, 271, 271, 272, 272, 272, 0, 0, 272, 0, 272, 0, 272,
2685 272, 272, 272, 273, 273, 273, 0, 0, 273, 0, 273, 0, 273, 273, 273, 273, 274, 274, 274, 0, 0, 274,
2686 0, 274, 0, 274, 274, 274, 274, 0, 0, 286, 286, 286, 0, 0, 286, 290, 290, 290, 290, 292, 292, 292,
2687 292, 274, 0, 286, 291, 291, 291, 291, 291, 300, 300,
2688
2689 300, 300, 303, 303, 303, 303, 274, 280, 280, 280, 286, 0, 280, 0, 0, 280, 280, 280, 280, 280, 0,
2690 0, 0, 280, 302, 302, 302, 302, 302, 0, 0, 0, 293, 293, 293, 293, 293, 0, 0, 0, 293, 280, 281, 281,
2691 281, 0, 0, 281, 0, 281, 281, 281, 281, 281, 281, 282, 282, 282, 293, 0, 282, 0, 282, 282, 282,
2692 282, 282, 282, 288, 288, 288, 0, 0, 288, 0, 0, 0, 288, 288, 288, 288, 294, 294, 294, 0, 0, 294, 0,
2693 294, 294, 294, 294, 294, 294, 301, 301, 301, 0, 0, 301,
2694
2695 0, 0, 0, 301, 301, 301, 301, 304, 304, 304, 0, 0, 304, 0, 0, 304, 304, 304, 304, 304, 0, 0, 0,
2696 304, 310, 310, 310, 0, 0, 310, 311, 311, 311, 311, 313, 313, 313, 313, 313, 0, 310, 304, 305, 305,
2697 305, 0, 0, 305, 0, 305, 305, 305, 305, 305, 305, 0, 0, 0, 310, 312, 312, 312, 0, 0, 312, 0, 0, 0,
2698 312, 312, 312, 312, 314, 314, 314, 314, 315, 315, 315, 0, 0, 315, 0, 0, 315, 315, 315, 315, 315,
2699 0, 0, 0, 315, 321, 321, 321, 0, 0, 321, 322,
2700
2701 322, 322, 322, 324, 324, 324, 324, 0, 0, 321, 315, 316, 316, 316, 0, 0, 316, 0, 316, 316, 316,
2702 316, 316, 316, 0, 0, 0, 321, 323, 323, 323, 0, 0, 323, 0, 0, 0, 323, 323, 323, 323, 325, 325, 325,
2703 325, 327, 327, 327, 327, 327, 328, 328, 328, 328, 329, 329, 329, 0, 0, 329, 0, 0, 329, 329, 329,
2704 329, 329, 0, 0, 0, 329, 335, 335, 335, 0, 0, 335, 336, 336, 336, 336, 338, 338, 338, 338, 338, 0,
2705 335, 329, 330, 330, 330, 0, 0, 330, 0, 330, 330, 330, 330,
2706
2707 330, 330, 0, 0, 0, 335, 337, 337, 337, 0, 0, 337, 0, 0, 0, 337, 337, 337, 337, 339, 339, 339, 339,
2708 340, 340, 340, 340, 340, 0, 0, 0, 340, 347, 347, 347, 347, 349, 349, 349, 349, 349, 350, 350, 350,
2709 350, 358, 358, 358, 358, 340, 341, 341, 341, 0, 0, 341, 0, 341, 341, 341, 341, 341, 341, 348, 348,
2710 348, 0, 0, 348, 0, 0, 0, 348, 348, 348, 348, 351, 351, 351, 0, 0, 351, 0, 0, 351, 351, 351, 351,
2711 351, 0, 0, 0, 351, 357, 357, 357, 0, 0, 357, 371,
2712
2713 371, 371, 371, 371, 381, 381, 381, 381, 381, 357, 351, 352, 352, 352, 0, 0, 352, 0, 352, 352, 352,
2714 352, 352, 352, 0, 0, 0, 357, 359, 359, 359, 0, 0, 359, 0, 0, 0, 359, 359, 359, 359, 361, 361, 361,
2715 374, 374, 361, 374, 374, 374, 374, 378, 378, 0, 378, 378, 378, 378, 0, 0, 361, 372, 372, 372, 0,
2716 0, 372, 0, 372, 372, 372, 372, 372, 372, 373, 373, 373, 0, 0, 373, 0, 373, 373, 373, 373, 373,
2717 373, 375, 375, 375, 0, 0, 375, 0, 375, 375, 375, 375, 375, 375,
2718
2719 376, 376, 376, 0, 0, 376, 0, 376, 376, 376, 376, 376, 376, 377, 377, 377, 0, 0, 377, 0, 377, 377,
2720 377, 377, 377, 377, 380, 380, 380, 380, 380, 380, 380, 380, 380, 384, 384, 0, 384, 384, 384, 384,
2721 389, 389, 389, 389, 380, 0, 0, 389, 380, 380, 380, 390, 390, 0, 390, 390, 390, 390, 0, 0, 380,
2722 382, 382, 382, 0, 389, 382, 0, 382, 382, 382, 382, 382, 382, 383, 383, 383, 0, 0, 383, 0, 383,
2723 383, 383, 383, 383, 383, 385, 385, 385, 0, 0, 385, 0, 385, 385, 385, 385,
2724
2725 385, 385, 386, 386, 386, 0, 0, 386, 0, 386, 386, 386, 386, 386, 386, 387, 387, 387, 0, 0, 387, 0,
2726 387, 387, 387, 387, 387, 387, 388, 388, 388, 0, 0, 388, 388, 388, 388, 388, 388, 388, 388, 391,
2727 391, 391, 0, 0, 391, 391, 391, 391, 391, 391, 391, 391, 392, 392, 392, 0, 0, 392, 0, 0, 0, 392,
2728 392, 392, 392, 0, 395, 395, 392, 395, 395, 395, 395, 403, 403, 0, 403, 403, 403, 403, 427, 427,
2729 427, 0, 0, 427, 392, 393, 393, 393, 0, 0, 393, 0, 393, 393, 393, 393,
2730
2731 393, 393, 394, 394, 394, 0, 0, 394, 0, 394, 394, 394, 394, 394, 394, 396, 396, 396, 0, 0, 396, 0,
2732 396, 396, 396, 396, 396, 396, 397, 397, 397, 0, 0, 397, 0, 397, 397, 397, 397, 397, 397, 398, 398,
2733 398, 0, 0, 398, 0, 398, 398, 398, 398, 398, 398, 399, 399, 399, 0, 0, 399, 399, 399, 399, 399,
2734 399, 399, 399, 400, 400, 400, 0, 0, 400, 0, 0, 0, 400, 400, 400, 400, 0, 411, 411, 400, 411, 411,
2735 411, 411, 435, 435, 435, 435, 435, 416, 416, 416, 416, 0, 0, 0,
2736
2737 416, 400, 401, 401, 401, 0, 0, 401, 0, 401, 401, 401, 401, 401, 401, 402, 402, 402, 416, 0, 402,
2738 0, 402, 402, 402, 402, 402, 402, 404, 404, 404, 0, 0, 404, 0, 404, 404, 404, 404, 404, 404, 405,
2739 405, 405, 0, 0, 405, 0, 405, 405, 405, 405, 405, 405, 406, 406, 406, 0, 0, 406, 0, 406, 406, 406,
2740 406, 406, 406, 407, 407, 407, 0, 0, 407, 407, 407, 407, 407, 407, 407, 407, 408, 408, 408, 0, 0,
2741 408, 0, 0, 0, 408, 408, 408, 408, 0, 417, 417, 408, 417, 417, 417,
2742
2743 417, 422, 422, 0, 422, 422, 422, 422, 436, 436, 436, 436, 0, 0, 408, 409, 409, 409, 0, 0, 409, 0,
2744 409, 409, 409, 409, 409, 409, 410, 410, 410, 0, 0, 410, 0, 410, 410, 410, 410, 410, 410, 412, 412,
2745 412, 0, 0, 412, 0, 412, 412, 412, 412, 412, 412, 413, 413, 413, 0, 0, 413, 0, 413, 413, 413, 413,
2746 413, 413, 414, 414, 414, 0, 0, 414, 0, 414, 414, 414, 414, 414, 414, 415, 415, 415, 0, 0, 415,
2747 415, 415, 415, 415, 415, 415, 415, 418, 418, 418, 0, 0, 418, 418,
2748
2749 418, 418, 418, 418, 418, 418, 419, 419, 419, 0, 0, 419, 0, 0, 0, 419, 419, 419, 419, 0, 0, 0, 419,
2750 444, 444, 444, 444, 451, 451, 451, 451, 437, 437, 437, 437, 437, 0, 0, 0, 437, 419, 420, 420, 420,
2751 0, 0, 420, 0, 420, 420, 420, 420, 420, 420, 421, 421, 421, 437, 0, 421, 0, 421, 421, 421, 421,
2752 421, 421, 423, 423, 423, 0, 0, 423, 0, 423, 423, 423, 423, 423, 423, 424, 424, 424, 0, 0, 424, 0,
2753 424, 424, 424, 424, 424, 424, 425, 425, 425, 0, 0, 425, 0,
2754
2755 425, 425, 425, 425, 425, 425, 426, 426, 426, 0, 0, 426, 426, 426, 426, 426, 426, 426, 426, 438,
2756 438, 438, 0, 0, 438, 0, 438, 438, 438, 438, 438, 438, 439, 439, 439, 0, 0, 439, 0, 439, 439, 439,
2757 439, 439, 439, 445, 445, 445, 0, 0, 445, 0, 0, 0, 445, 445, 445, 445, 446, 446, 446, 0, 0, 446, 0,
2758 446, 446, 446, 446, 446, 446, 447, 447, 447, 0, 0, 447, 0, 447, 447, 447, 447, 447, 447, 448, 448,
2759 448, 0, 0, 448, 0, 0, 448, 448, 448, 448, 448, 0, 0, 0,
2760
2761 448, 450, 450, 450, 450, 450, 459, 459, 459, 459, 460, 460, 460, 460, 467, 467, 467, 467, 448,
2762 449, 449, 449, 0, 0, 449, 0, 449, 449, 449, 449, 449, 449, 452, 452, 452, 0, 0, 452, 0, 0, 452,
2763 452, 452, 452, 452, 0, 0, 0, 452, 466, 466, 466, 466, 466, 461, 461, 461, 461, 461, 686, 686, 686,
2764 461, 0, 686, 0, 452, 453, 453, 453, 686, 0, 453, 0, 453, 453, 453, 453, 453, 453, 461, 463, 463,
2765 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463,
2766
2767 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 463,
2768 463, 463, 463, 463, 463, 463, 463, 463, 463, 468, 468, 468, 0, 0, 468, 0, 0, 468, 468, 468, 468,
2769 468, 0, 0, 0, 468, 474, 474, 474, 0, 0, 474, 475, 475, 475, 475, 481, 481, 481, 481, 481, 0, 474,
2770 468, 469, 469, 469, 0, 0, 469, 0, 469, 469, 469, 469, 469, 469, 470, 470, 470, 474, 0, 470, 0,
2771 470, 470, 470, 470, 470, 470, 476, 476, 476, 0, 0, 476, 0, 0, 0, 476, 476,
2772
2773 476, 476, 477, 477, 477, 0, 0, 477, 0, 477, 477, 477, 477, 477, 477, 478, 478, 478, 0, 0, 478, 0,
2774 478, 478, 478, 478, 478, 478, 479, 479, 479, 0, 0, 479, 0, 0, 479, 479, 479, 479, 479, 0, 0, 0,
2775 479, 482, 482, 482, 482, 490, 490, 490, 490, 491, 491, 491, 491, 493, 493, 493, 493, 0, 479, 480,
2776 480, 480, 0, 0, 480, 0, 480, 480, 480, 480, 480, 480, 483, 483, 483, 0, 0, 483, 0, 0, 483, 483,
2777 483, 483, 483, 0, 0, 0, 483, 489, 489, 489, 0, 0, 489, 494,
2778
2779 494, 494, 494, 498, 498, 498, 498, 498, 0, 489, 483, 484, 484, 484, 0, 0, 484, 0, 484, 484, 484,
2780 484, 484, 484, 0, 0, 0, 489, 492, 492, 492, 0, 0, 492, 0, 0, 0, 492, 492, 492, 492, 0, 0, 0, 492,
2781 499, 499, 499, 499, 507, 507, 507, 507, 500, 500, 500, 500, 500, 0, 0, 0, 500, 492, 495, 495, 495,
2782 0, 0, 495, 0, 495, 495, 495, 495, 495, 495, 496, 496, 496, 500, 0, 496, 0, 496, 496, 496, 496,
2783 496, 496, 501, 501, 501, 0, 0, 501, 0, 501, 501, 501, 501,
2784
2785 501, 501, 502, 502, 502, 0, 0, 502, 0, 502, 502, 502, 502, 502, 502, 508, 508, 508, 0, 0, 508, 0,
2786 0, 0, 508, 508, 508, 508, 509, 509, 509, 0, 0, 509, 0, 509, 509, 509, 509, 509, 509, 510, 510,
2787 510, 0, 0, 510, 0, 510, 510, 510, 510, 510, 510, 511, 511, 511, 0, 0, 511, 0, 0, 511, 511, 511,
2788 511, 511, 0, 0, 0, 511, 513, 513, 513, 513, 513, 514, 514, 514, 514, 522, 522, 522, 522, 523, 523,
2789 523, 523, 511, 512, 512, 512, 0, 0, 512, 0, 512, 512, 512, 512,
2790
2791 512, 512, 515, 515, 515, 0, 0, 515, 0, 0, 515, 515, 515, 515, 515, 0, 0, 0, 515, 525, 525, 525,
2792 525, 525, 524, 524, 524, 524, 524, 928, 928, 928, 524, 0, 928, 0, 515, 516, 516, 516, 0, 0, 516,
2793 0, 516, 516, 516, 516, 516, 516, 524, 526, 526, 526, 526, 527, 527, 527, 527, 527, 0, 0, 0, 527,
2794 534, 534, 534, 534, 540, 540, 540, 540, 540, 541, 541, 541, 541, 549, 549, 549, 549, 527, 528,
2795 528, 528, 0, 0, 528, 0, 528, 528, 528, 528, 528, 528, 529, 529, 529, 0, 0,
2796
2797 529, 0, 529, 529, 529, 529, 529, 529, 535, 535, 535, 0, 0, 535, 0, 0, 0, 535, 535, 535, 535, 536,
2798 536, 536, 0, 0, 536, 0, 536, 536, 536, 536, 536, 536, 537, 537, 537, 0, 0, 537, 0, 537, 537, 537,
2799 537, 537, 537, 538, 538, 538, 0, 0, 538, 0, 0, 538, 538, 538, 538, 538, 0, 0, 0, 538, 550, 550,
2800 550, 550, 553, 553, 553, 553, 551, 551, 551, 551, 551, 0, 0, 0, 551, 538, 539, 539, 539, 0, 0,
2801 539, 0, 539, 539, 539, 539, 539, 539, 542, 542, 542, 551, 0,
2802
2803 542, 0, 0, 542, 542, 542, 542, 542, 0, 0, 0, 542, 552, 552, 552, 552, 552, 561, 561, 561, 561,
2804 567, 567, 567, 567, 567, 0, 0, 0, 542, 543, 543, 543, 0, 0, 543, 0, 543, 543, 543, 543, 543, 543,
2805 554, 554, 554, 0, 0, 554, 0, 0, 554, 554, 554, 554, 554, 0, 0, 0, 554, 560, 560, 560, 0, 0, 560,
2806 568, 568, 568, 568, 576, 576, 576, 576, 0, 0, 560, 554, 555, 555, 555, 0, 0, 555, 0, 555, 555,
2807 555, 555, 555, 555, 556, 556, 556, 560, 0, 556, 0, 556, 556,
2808
2809 556, 556, 556, 556, 562, 562, 562, 0, 0, 562, 0, 0, 0, 562, 562, 562, 562, 563, 563, 563, 0, 0,
2810 563, 0, 563, 563, 563, 563, 563, 563, 564, 564, 564, 0, 0, 564, 0, 564, 564, 564, 564, 564, 564,
2811 565, 565, 565, 0, 0, 565, 0, 0, 565, 565, 565, 565, 565, 0, 0, 0, 565, 575, 575, 575, 0, 0, 575,
2812 577, 577, 577, 577, 579, 579, 579, 579, 0, 0, 575, 565, 566, 566, 566, 0, 0, 566, 0, 566, 566,
2813 566, 566, 566, 566, 569, 569, 569, 575, 0, 569, 0, 0, 569,
2814
2815 569, 569, 569, 569, 0, 0, 0, 569, 580, 580, 580, 580, 584, 584, 584, 584, 584, 585, 585, 585, 585,
2816 593, 593, 593, 593, 569, 570, 570, 570, 0, 0, 570, 0, 570, 570, 570, 570, 570, 570, 578, 578, 578,
2817 0, 0, 578, 0, 0, 0, 578, 578, 578, 578, 0, 0, 0, 578, 599, 599, 599, 599, 599, 0, 0, 0, 586, 586,
2818 586, 586, 586, 0, 0, 0, 586, 578, 581, 581, 581, 0, 0, 581, 0, 581, 581, 581, 581, 581, 581, 582,
2819 582, 582, 586, 0, 582, 0, 582, 582, 582, 582, 582, 582,
2820
2821 587, 587, 587, 0, 0, 587, 0, 587, 587, 587, 587, 587, 587, 588, 588, 588, 0, 0, 588, 0, 588, 588,
2822 588, 588, 588, 588, 594, 594, 594, 0, 0, 594, 0, 0, 0, 594, 594, 594, 594, 595, 595, 595, 0, 0,
2823 595, 0, 595, 595, 595, 595, 595, 595, 596, 596, 596, 0, 0, 596, 0, 596, 596, 596, 596, 596, 596,
2824 597, 597, 597, 0, 0, 597, 0, 0, 597, 597, 597, 597, 597, 0, 0, 0, 597, 600, 600, 600, 600, 608,
2825 608, 608, 608, 609, 609, 609, 609, 691, 691, 691, 691, 0, 597,
2826
2827 598, 598, 598, 0, 0, 598, 0, 598, 598, 598, 598, 598, 598, 601, 601, 601, 0, 0, 601, 0, 0, 601,
2828 601, 601, 601, 601, 611, 611, 611, 601, 0, 611, 0, 0, 0, 610, 610, 610, 610, 610, 937, 937, 937,
2829 610, 0, 937, 0, 601, 602, 602, 602, 0, 937, 602, 611, 602, 602, 602, 602, 602, 602, 610, 616, 616,
2830 616, 616, 0, 617, 617, 616, 617, 617, 617, 617, 622, 622, 0, 622, 622, 622, 622, 692, 692, 692,
2831 692, 0, 0, 616, 618, 618, 618, 0, 0, 618, 618, 618, 618, 618, 618, 618,
2832
2833 618, 619, 619, 619, 0, 0, 619, 0, 619, 619, 619, 619, 619, 619, 0, 627, 627, 619, 627, 627, 627,
2834 627, 639, 639, 0, 639, 639, 639, 639, 699, 699, 699, 699, 0, 0, 619, 620, 620, 620, 0, 0, 620,
2835 620, 620, 620, 620, 620, 620, 620, 621, 621, 621, 0, 0, 621, 0, 0, 0, 621, 621, 621, 621, 0, 644,
2836 644, 621, 644, 644, 644, 644, 704, 704, 704, 704, 704, 643, 643, 643, 643, 0, 0, 0, 643, 621, 623,
2837 623, 623, 0, 0, 623, 623, 623, 623, 623, 623, 623, 623, 624, 624, 624,
2838
2839 643, 0, 624, 0, 0, 0, 624, 624, 624, 624, 0, 649, 649, 624, 649, 649, 649, 649, 705, 705, 705,
2840 705, 0, 651, 651, 651, 651, 0, 0, 0, 651, 624, 625, 625, 625, 0, 0, 625, 0, 625, 625, 625, 625,
2841 625, 625, 626, 626, 626, 651, 0, 626, 0, 626, 626, 626, 626, 626, 626, 628, 628, 628, 0, 0, 628,
2842 0, 628, 628, 628, 628, 628, 628, 629, 629, 629, 0, 0, 629, 0, 629, 629, 629, 629, 629, 629, 630,
2843 630, 630, 0, 0, 630, 0, 630, 630, 630, 630, 630, 630, 631, 631, 631,
2844
2845 0, 0, 631, 631, 631, 631, 631, 631, 631, 631, 632, 632, 632, 0, 0, 632, 0, 632, 632, 632, 632,
2846 632, 632, 0, 652, 652, 632, 652, 652, 652, 652, 657, 657, 0, 657, 657, 657, 657, 713, 713, 713,
2847 713, 0, 0, 632, 633, 633, 633, 0, 0, 633, 0, 633, 633, 633, 633, 633, 633, 634, 634, 634, 0, 0,
2848 634, 0, 634, 634, 634, 634, 634, 634, 635, 635, 635, 0, 0, 635, 0, 635, 635, 635, 635, 635, 635,
2849 636, 636, 636, 0, 0, 636, 636, 636, 636, 636, 636, 636, 636, 637, 637, 637,
2850
2851 0, 0, 637, 0, 0, 0, 637, 637, 637, 637, 0, 662, 662, 637, 662, 662, 662, 662, 674, 674, 0, 674,
2852 674, 674, 674, 718, 718, 718, 718, 718, 0, 637, 638, 638, 638, 0, 0, 638, 0, 638, 638, 638, 638,
2853 638, 638, 640, 640, 640, 0, 0, 640, 0, 640, 640, 640, 640, 640, 640, 641, 641, 641, 0, 0, 641, 0,
2854 641, 641, 641, 641, 641, 641, 642, 642, 642, 0, 0, 642, 642, 642, 642, 642, 642, 642, 642, 645,
2855 645, 645, 0, 0, 645, 645, 645, 645, 645, 645, 645, 645, 646, 646, 646,
2856
2857 0, 0, 646, 0, 646, 646, 646, 646, 646, 646, 0, 679, 679, 646, 679, 679, 679, 679, 719, 719, 719,
2858 719, 0, 678, 678, 678, 678, 0, 0, 0, 678, 646, 647, 647, 647, 0, 0, 647, 647, 647, 647, 647, 647,
2859 647, 647, 648, 648, 648, 678, 0, 648, 0, 0, 0, 648, 648, 648, 648, 0, 684, 684, 648, 684, 684,
2860 684, 684, 727, 727, 727, 727, 706, 706, 706, 706, 706, 0, 0, 0, 706, 648, 650, 650, 650, 0, 0,
2861 650, 650, 650, 650, 650, 650, 650, 650, 653, 653, 653, 706, 0, 653, 653,
2862
2863 653, 653, 653, 653, 653, 653, 654, 654, 654, 0, 0, 654, 0, 654, 654, 654, 654, 654, 654, 0, 0, 0,
2864 654, 698, 698, 698, 0, 0, 698, 728, 728, 728, 728, 734, 734, 734, 734, 734, 0, 698, 654, 655, 655,
2865 655, 0, 0, 655, 655, 655, 655, 655, 655, 655, 655, 656, 656, 656, 698, 0, 656, 0, 0, 0, 656, 656,
2866 656, 656, 0, 0, 0, 656, 735, 735, 735, 735, 743, 743, 743, 743, 729, 729, 729, 729, 729, 0, 0, 0,
2867 729, 656, 658, 658, 658, 0, 0, 658, 658, 658, 658, 658, 658,
2868
2869 658, 658, 659, 659, 659, 729, 0, 659, 0, 0, 0, 659, 659, 659, 659, 0, 0, 0, 659, 744, 744, 744,
2870 744, 746, 746, 746, 746, 745, 745, 745, 745, 745, 0, 0, 0, 745, 659, 660, 660, 660, 0, 0, 660, 0,
2871 660, 660, 660, 660, 660, 660, 661, 661, 661, 745, 0, 661, 0, 661, 661, 661, 661, 661, 661, 663,
2872 663, 663, 0, 0, 663, 0, 663, 663, 663, 663, 663, 663, 664, 664, 664, 0, 0, 664, 0, 664, 664, 664,
2873 664, 664, 664, 665, 665, 665, 0, 0, 665, 0, 665, 665, 665, 665,
2874
2875 665, 665, 666, 666, 666, 0, 0, 666, 666, 666, 666, 666, 666, 666, 666, 667, 667, 667, 0, 0, 667,
2876 0, 667, 667, 667, 667, 667, 667, 0, 0, 0, 667, 751, 751, 751, 751, 752, 752, 752, 752, 753, 753,
2877 753, 753, 753, 0, 0, 0, 753, 667, 668, 668, 668, 0, 0, 668, 0, 668, 668, 668, 668, 668, 668, 669,
2878 669, 669, 753, 0, 669, 0, 669, 669, 669, 669, 669, 669, 670, 670, 670, 0, 0, 670, 0, 670, 670,
2879 670, 670, 670, 670, 671, 671, 671, 0, 0, 671, 671, 671, 671, 671, 671,
2880
2881 671, 671, 672, 672, 672, 0, 0, 672, 0, 0, 0, 672, 672, 672, 672, 0, 0, 0, 672, 754, 754, 754, 754,
2882 755, 755, 755, 755, 762, 762, 762, 762, 767, 767, 767, 767, 0, 672, 673, 673, 673, 0, 0, 673, 0,
2883 673, 673, 673, 673, 673, 673, 675, 675, 675, 0, 0, 675, 0, 675, 675, 675, 675, 675, 675, 676, 676,
2884 676, 0, 0, 676, 0, 676, 676, 676, 676, 676, 676, 677, 677, 677, 0, 0, 677, 677, 677, 677, 677,
2885 677, 677, 677, 680, 680, 680, 0, 0, 680, 680, 680, 680, 680, 680,
2886
2887 680, 680, 681, 681, 681, 0, 0, 681, 0, 681, 681, 681, 681, 681, 681, 0, 0, 0, 681, 761, 761, 761,
2888 0, 0, 761, 768, 768, 768, 768, 775, 775, 775, 775, 0, 0, 761, 681, 682, 682, 682, 0, 0, 682, 682,
2889 682, 682, 682, 682, 682, 682, 683, 683, 683, 761, 0, 683, 0, 0, 0, 683, 683, 683, 683, 0, 0, 0,
2890 683, 774, 774, 774, 0, 0, 774, 780, 780, 780, 780, 780, 781, 781, 781, 781, 0, 774, 683, 685, 685,
2891 685, 0, 0, 685, 685, 685, 685, 685, 685, 685, 685, 693, 693,
2892
2893 693, 774, 0, 693, 0, 693, 693, 693, 693, 693, 693, 694, 694, 694, 0, 0, 694, 0, 694, 694, 694,
2894 694, 694, 694, 696, 696, 696, 0, 0, 696, 0, 696, 696, 696, 696, 696, 696, 697, 697, 697, 0, 0,
2895 697, 0, 697, 697, 697, 697, 697, 697, 700, 700, 700, 0, 0, 700, 0, 0, 0, 700, 700, 700, 700, 701,
2896 701, 701, 0, 0, 701, 0, 701, 701, 701, 701, 701, 701, 702, 702, 702, 0, 0, 702, 0, 702, 702, 702,
2897 702, 702, 702, 707, 707, 707, 0, 0, 707, 0, 707, 707, 707, 707,
2898
2899 707, 707, 708, 708, 708, 0, 0, 708, 0, 708, 708, 708, 708, 708, 708, 714, 714, 714, 0, 0, 714, 0,
2900 0, 0, 714, 714, 714, 714, 715, 715, 715, 0, 0, 715, 0, 715, 715, 715, 715, 715, 715, 716, 716,
2901 716, 0, 0, 716, 0, 716, 716, 716, 716, 716, 716, 717, 717, 717, 0, 0, 717, 0, 0, 717, 717, 717,
2902 717, 717, 0, 0, 0, 717, 789, 789, 789, 789, 0, 782, 782, 782, 782, 782, 938, 938, 938, 782, 0,
2903 938, 0, 717, 720, 720, 720, 0, 0, 720, 0, 0, 720, 720, 720,
2904
2905 720, 720, 782, 0, 0, 720, 794, 794, 794, 794, 794, 795, 795, 795, 795, 803, 803, 803, 803, 804,
2906 804, 804, 804, 720, 721, 721, 721, 0, 0, 721, 0, 721, 721, 721, 721, 721, 721, 722, 722, 722, 0,
2907 0, 722, 0, 722, 722, 722, 722, 722, 722, 730, 730, 730, 0, 0, 730, 0, 730, 730, 730, 730, 730,
2908 730, 731, 731, 731, 0, 0, 731, 0, 731, 731, 731, 731, 731, 731, 732, 732, 732, 0, 0, 732, 0, 0,
2909 732, 732, 732, 732, 732, 0, 0, 0, 732, 810, 810, 810, 810, 810, 0, 0,
2910
2911 0, 805, 805, 805, 805, 805, 0, 0, 0, 805, 732, 733, 733, 733, 0, 0, 733, 0, 733, 733, 733, 733,
2912 733, 733, 736, 736, 736, 805, 0, 736, 0, 0, 736, 736, 736, 736, 736, 0, 0, 0, 736, 811, 811, 811,
2913 811, 819, 819, 819, 819, 820, 820, 820, 820, 822, 822, 822, 822, 0, 736, 737, 737, 737, 0, 0, 737,
2914 0, 737, 737, 737, 737, 737, 737, 747, 747, 747, 0, 0, 747, 0, 0, 0, 747, 747, 747, 747, 748, 748,
2915 748, 0, 0, 748, 0, 748, 748, 748, 748, 748, 748, 749, 749,
2916
2917 749, 0, 0, 749, 0, 749, 749, 749, 749, 749, 749, 750, 750, 750, 0, 0, 750, 0, 0, 750, 750, 750,
2918 750, 750, 0, 0, 0, 750, 827, 827, 827, 827, 828, 828, 828, 828, 821, 821, 821, 821, 821, 0, 0, 0,
2919 821, 750, 756, 756, 756, 0, 0, 756, 0, 756, 756, 756, 756, 756, 756, 757, 757, 757, 821, 0, 757,
2920 0, 757, 757, 757, 757, 757, 757, 759, 759, 759, 0, 0, 759, 0, 759, 759, 759, 759, 759, 759, 760,
2921 760, 760, 0, 0, 760, 0, 760, 760, 760, 760, 760, 760, 763, 763,
2922
2923 763, 0, 0, 763, 0, 0, 0, 763, 763, 763, 763, 764, 764, 764, 0, 0, 764, 0, 764, 764, 764, 764, 764,
2924 764, 765, 765, 765, 0, 0, 765, 0, 765, 765, 765, 765, 765, 765, 769, 769, 769, 0, 0, 769, 0, 769,
2925 769, 769, 769, 769, 769, 770, 770, 770, 0, 0, 770, 0, 770, 770, 770, 770, 770, 770, 772, 772, 772,
2926 0, 0, 772, 0, 772, 772, 772, 772, 772, 772, 773, 773, 773, 0, 0, 773, 0, 773, 773, 773, 773, 773,
2927 773, 776, 776, 776, 0, 0, 776, 0, 0, 0, 776, 776,
2928
2929 776, 776, 777, 777, 777, 0, 0, 777, 0, 777, 777, 777, 777, 777, 777, 778, 778, 778, 0, 0, 778, 0,
2930 778, 778, 778, 778, 778, 778, 783, 783, 783, 0, 0, 783, 0, 783, 783, 783, 783, 783, 783, 784, 784,
2931 784, 0, 0, 784, 0, 784, 784, 784, 784, 784, 784, 790, 790, 790, 0, 0, 790, 0, 0, 0, 790, 790, 790,
2932 790, 791, 791, 791, 0, 0, 791, 0, 791, 791, 791, 791, 791, 791, 792, 792, 792, 0, 0, 792, 0, 792,
2933 792, 792, 792, 792, 792, 793, 793, 793, 0, 0, 793, 0,
2934
2935 0, 793, 793, 793, 793, 793, 0, 0, 0, 793, 830, 830, 830, 830, 0, 829, 829, 829, 829, 829, 939,
2936 939, 939, 829, 0, 939, 0, 793, 796, 796, 796, 0, 0, 796, 0, 0, 796, 796, 796, 796, 796, 829, 0, 0,
2937 796, 831, 831, 831, 831, 838, 838, 838, 838, 843, 843, 843, 0, 0, 843, 0, 0, 843, 796, 797, 797,
2938 797, 0, 0, 797, 0, 797, 797, 797, 797, 797, 797, 798, 798, 798, 0, 0, 798, 0, 798, 798, 798, 798,
2939 798, 798, 806, 806, 806, 0, 0, 806, 0, 806, 806, 806, 806,
2940
2941 806, 806, 807, 807, 807, 0, 0, 807, 0, 807, 807, 807, 807, 807, 807, 808, 808, 808, 0, 0, 808, 0,
2942 0, 808, 808, 808, 808, 808, 0, 0, 0, 808, 837, 837, 837, 848, 848, 837, 848, 848, 848, 848, 865,
2943 865, 865, 865, 865, 0, 837, 808, 809, 809, 809, 0, 0, 809, 0, 809, 809, 809, 809, 809, 809, 812,
2944 812, 812, 837, 0, 812, 0, 0, 812, 812, 812, 812, 812, 0, 853, 853, 812, 853, 853, 853, 853, 867,
2945 867, 867, 867, 867, 847, 847, 847, 847, 0, 0, 0, 847, 812, 813, 813,
2946
2947 813, 0, 0, 813, 0, 813, 813, 813, 813, 813, 813, 823, 823, 823, 847, 0, 823, 0, 0, 0, 823, 823,
2948 823, 823, 824, 824, 824, 0, 0, 824, 0, 824, 824, 824, 824, 824, 824, 825, 825, 825, 0, 0, 825, 0,
2949 825, 825, 825, 825, 825, 825, 826, 826, 826, 0, 0, 826, 0, 0, 826, 826, 826, 826, 826, 0, 858,
2950 858, 826, 858, 858, 858, 858, 870, 870, 870, 870, 870, 862, 862, 862, 862, 0, 0, 0, 862, 826, 832,
2951 832, 832, 0, 0, 832, 0, 832, 832, 832, 832, 832, 832, 833, 833,
2952
2953 833, 862, 0, 833, 0, 833, 833, 833, 833, 833, 833, 835, 835, 835, 0, 0, 835, 0, 835, 835, 835,
2954 835, 835, 835, 836, 836, 836, 0, 0, 836, 0, 836, 836, 836, 836, 836, 836, 839, 839, 839, 0, 0,
2955 839, 0, 0, 0, 839, 839, 839, 839, 840, 840, 840, 0, 0, 840, 0, 840, 840, 840, 840, 840, 840, 841,
2956 841, 841, 0, 0, 841, 0, 841, 841, 841, 841, 841, 841, 849, 849, 849, 0, 0, 849, 849, 849, 849,
2957 849, 849, 849, 849, 850, 850, 850, 0, 0, 850, 0, 850, 850, 850, 850,
2958
2959 850, 850, 0, 863, 863, 850, 863, 863, 863, 863, 864, 864, 0, 864, 864, 864, 864, 872, 872, 872,
2960 872, 872, 0, 850, 851, 851, 851, 0, 0, 851, 851, 851, 851, 851, 851, 851, 851, 852, 852, 852, 0,
2961 0, 852, 0, 0, 0, 852, 852, 852, 852, 0, 866, 866, 852, 866, 866, 866, 866, 868, 868, 0, 868, 868,
2962 868, 868, 875, 875, 875, 875, 875, 0, 852, 854, 854, 854, 0, 0, 854, 854, 854, 854, 854, 854, 854,
2963 854, 855, 855, 855, 0, 0, 855, 0, 855, 855, 855, 855, 855, 855, 0, 869,
2964
2965 869, 855, 869, 869, 869, 869, 871, 871, 0, 871, 871, 871, 871, 880, 880, 880, 880, 0, 0, 855, 856,
2966 856, 856, 0, 0, 856, 856, 856, 856, 856, 856, 856, 856, 857, 857, 857, 0, 0, 857, 0, 0, 0, 857,
2967 857, 857, 857, 0, 873, 873, 857, 873, 873, 873, 873, 874, 874, 0, 874, 874, 874, 874, 881, 881,
2968 881, 881, 0, 0, 857, 859, 859, 859, 0, 0, 859, 859, 859, 859, 859, 859, 859, 859, 860, 860, 860,
2969 0, 0, 860, 0, 860, 860, 860, 860, 860, 860, 0, 876, 876, 860, 876, 876,
2970
2971 876, 876, 877, 877, 877, 0, 0, 877, 940, 940, 940, 877, 0, 940, 0, 860, 861, 861, 861, 0, 0, 861,
2972 861, 861, 861, 861, 861, 861, 861, 882, 882, 882, 0, 0, 882, 0, 882, 882, 882, 882, 882, 882, 887,
2973 887, 887, 0, 0, 887, 887, 887, 888, 888, 888, 888, 896, 896, 896, 896, 887, 904, 904, 904, 904,
2974 905, 905, 905, 905, 906, 906, 906, 906, 907, 907, 907, 907, 0, 887, 889, 889, 889, 0, 0, 889, 0,
2975 0, 0, 889, 889, 889, 889, 890, 890, 890, 0, 0, 890, 0, 890, 890, 890,
2976
2977 890, 890, 890, 895, 895, 895, 0, 0, 895, 895, 895, 908, 908, 908, 908, 0, 0, 0, 908, 895, 909,
2978 909, 909, 909, 910, 910, 910, 910, 912, 912, 912, 912, 914, 914, 914, 914, 908, 895, 897, 897,
2979 897, 0, 0, 897, 0, 0, 0, 897, 897, 897, 897, 898, 898, 898, 0, 0, 898, 0, 898, 898, 898, 898, 898,
2980 898, 903, 903, 903, 0, 0, 903, 903, 903, 0, 911, 911, 911, 911, 911, 0, 0, 903, 911, 915, 915,
2981 915, 915, 0, 0, 916, 916, 916, 916, 936, 936, 936, 916, 0, 936, 903, 911,
2982
2983 913, 913, 913, 0, 0, 913, 0, 0, 0, 913, 913, 913, 913, 916, 917, 917, 917, 917, 918, 918, 918,
2984 918, 919, 919, 919, 919, 919, 936, 0, 0, 919, 920, 920, 920, 920, 921, 921, 921, 921, 922, 922,
2985 922, 922, 923, 923, 923, 923, 0, 919, 924, 924, 924, 924, 0, 0, 0, 924, 925, 925, 925, 925, 926,
2986 926, 926, 926, 927, 927, 927, 927, 927, 931, 931, 931, 927, 924, 931, 934, 934, 934, 0, 941, 934,
2987 941, 0, 0, 941, 0, 942, 942, 942, 0, 927, 942, 943, 944, 943, 944, 0, 943, 944,
2988
2989 945, 946, 945, 946, 0, 945, 946, 947, 0, 947, 0, 0, 947, 931, 0, 0, 0, 0, 934, 949, 949, 949, 949,
2990 949, 949, 949, 949, 950, 950, 950, 950, 950, 950, 950, 950, 951, 951, 951, 951, 951, 951, 951,
2991 951, 952, 952, 952, 952, 952, 952, 952, 952, 953, 953, 953, 953, 953, 953, 953, 953, 954, 0, 0,
2992 954, 955, 0, 0, 955, 0, 955, 955, 955, 956, 956, 956, 956, 956, 956, 956, 956, 957, 0, 0, 957, 0,
2993 957, 957, 958, 958, 958, 958, 958, 958, 958, 958, 959, 959, 0, 959, 0, 959,
2994
2995 959, 959, 960, 960, 960, 960, 960, 960, 960, 960, 961, 961, 0, 961, 961, 961, 961, 961, 962, 962,
2996 962, 962, 962, 962, 962, 962, 963, 963, 963, 963, 963, 963, 963, 963, 964, 964, 0, 0, 964, 964,
2997 966, 966, 966, 966, 966, 966, 966, 966, 967, 967, 967, 967, 967, 967, 967, 967, 968, 968, 968,
2998 968, 968, 968, 968, 968, 969, 969, 969, 969, 969, 969, 969, 969, 971, 971, 971, 971, 971, 971,
2999 971, 971, 972, 972, 972, 972, 972, 972, 972, 972, 973, 973, 973, 973, 973, 973, 973, 973, 974,
3000 974, 0, 974,
3001
3002 0, 974, 974, 974, 975, 975, 975, 975, 975, 975, 975, 975, 977, 977, 0, 977, 977, 977, 977, 977,
3003 978, 978, 978, 978, 978, 978, 978, 978, 979, 0, 0, 979, 980, 980, 980, 980, 980, 980, 980, 980,
3004 981, 981, 981, 981, 981, 981, 981, 981, 982, 982, 0, 0, 982, 982, 984, 984, 984, 984, 984, 984,
3005 984, 984, 986, 986, 986, 986, 986, 986, 986, 986, 987, 987, 987, 987, 987, 987, 987, 987, 989,
3006 989, 989, 989, 989, 989, 989, 989, 990, 990, 990, 990, 990, 990, 990, 990, 991, 991, 991, 991,
3007 991, 991,
3008
3009 991, 991, 992, 992, 992, 992, 992, 992, 992, 992, 993, 993, 993, 993, 993, 993, 993, 993, 994,
3010 994, 994, 994, 994, 994, 994, 994, 995, 995, 995, 995, 995, 995, 995, 995, 996, 996, 996, 996,
3011 996, 996, 996, 996, 997, 997, 997, 997, 997, 997, 997, 997, 998, 998, 998, 998, 998, 998, 998,
3012 998, 999, 999, 999, 999, 999, 999, 999, 999, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1000, 1001,
3013 1001, 1001, 1001, 1001, 1001, 1001, 1001, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1003,
3014 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1004, 1004,
3015
3016 1004, 1004, 1004, 1004, 1004, 1004, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1005, 1006, 0, 0,
3017 1006, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1007, 1008, 1008, 1008, 1008, 1008, 1008, 1008,
3018 1008, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1009, 1011, 1011, 1011, 1011, 1011, 1011, 1011,
3019 1011, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1013, 1013, 1013, 1013, 1013, 1013, 1013,
3020 1013, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1014, 1015, 1015, 1015, 1015, 1015, 1015, 1015,
3021 1015, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1017, 1017, 1017, 1017, 1017, 1017, 1017,
3022 1017, 1018, 1018,
3023
3024 1018, 1018, 1018, 1018, 1018, 1018, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1019, 1020, 1020,
3025 1020, 1020, 1020, 1020, 1020, 1020, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1022, 1022,
3026 1022, 1022, 1022, 1022, 1022, 1022, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024,
3027 1024, 1024, 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1026, 1026,
3028 1026, 1026, 1026, 1026, 1026, 1026, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1028, 1028,
3029 1028, 1028, 1028, 1028, 1028, 1028, 1029, 0, 0, 1029, 1030, 1030, 1030, 1030, 1030, 1030, 1030,
3030 1030, 1031, 1031,
3031
3032 1031, 1031, 1031, 1031, 1031, 1031, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1032, 1033, 1033,
3033 1033, 1033, 1033, 1033, 1033, 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1035, 1035,
3034 1035, 1035, 1035, 1035, 1035, 1035, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1037, 1037,
3035 1037, 1037, 1037, 1037, 1037, 1037, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1038, 1039, 1039,
3036 1039, 1039, 1039, 1039, 1039, 1039, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041,
3037 1041, 1041, 1041, 1041, 1041, 1041, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1042, 1043, 1043,
3038 1043, 1043, 1043, 1043,
3039
3040 1043, 1043, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1045, 1045, 1045, 1045, 1045, 1045,
3041 1045, 1045, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1046, 1047, 1047, 1047, 1047, 1047, 1047,
3042 1047, 1047, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1048, 1049, 1049, 1049, 1049, 1049, 1049,
3043 1049, 1049, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1051, 1051, 1051, 1051, 1051, 1051,
3044 1051, 1051, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1052, 1053, 1053, 1053, 1053, 1053, 1053,
3045 1053, 1053, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1055, 0, 0, 1055, 1056, 1056, 1056,
3046 1056, 1056, 1056,
3047
3048 1056, 1056, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1058, 1058, 1058, 1058, 1058, 1058,
3049 1058, 1058, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1059, 1060, 1060, 1060, 1060, 1060, 1060,
3050 1060, 1060, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1061, 1062, 1062, 1062, 1062, 1062, 1062,
3051 1062, 1062, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1064, 1064, 1064, 1064, 1064, 1064,
3052 1064, 1064, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1065, 1066, 1066, 1066, 1066, 1066, 1066,
3053 1066, 1066, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1068, 1068, 1068, 1068, 1068, 1068,
3054 1068, 1068, 1069, 1069,
3055
3056 1069, 1069, 1069, 1069, 1069, 1069, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1071, 1071,
3057 1071, 1071, 1071, 1071, 1071, 1071, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1073, 1073,
3058 1073, 1073, 1073, 1073, 1073, 1073, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1074, 1075, 1075,
3059 1075, 1075, 1075, 1075, 1075, 1075, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1076, 1077, 1077,
3060 1077, 1077, 1077, 1077, 1077, 1077, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1079, 1079,
3061 1079, 1079, 1079, 1079, 1079, 1079, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1080, 1081, 0, 0,
3062 1081, 1082, 1082,
3063
3064 1082, 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1083, 1084, 1084,
3065 1084, 1084, 1084, 1084, 1084, 1084, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1086, 1086,
3066 1086, 1086, 1086, 1086, 1086, 1086, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1087, 1088, 1088,
3067 1088, 1088, 1088, 1088, 1088, 1088, 1089, 1089, 0, 1089, 1089, 1089, 1089, 1089, 948, 948, 948,
3068 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
3069 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 948,
3070
3071 948, 948, 948, 948, 948, 948, 948, 948, 948, 948 };
3072
3073// static yy_state_type yy_last_accepting_state;
3074// static char *yy_last_accepting_cpos;
3075
3076// extern int yy_flex_debug;
3077// int yy_flex_debug = 1;
3078
3079static const short int yy_rule_linenum[49] = { 0, 122, 127, 128, 129, 130, 131, 132, 133, 134, 135,
3080 136, 137, 138, 141, 145, 149, 157, 160, 164, 169, 177, 178, 180, 184, 195, 199, 205, 206, 211,
3081 220, 234, 235, 240, 249, 260, 263, 264, 266, 270, 274, 279, 281, 282, 289, 295, 302, 305, 309 };
3082
3083/* The intent behind this definition is that it'll catch
3084 * any uses of REJECT which flex missed.
3085 */
3086#define REJECT reject_used_but_not_detected
3087#define yymore() yymore_used_but_not_detected
3088#define YY_MORE_ADJ 0
3089// char *yytext;
3090/**************************************************
3091 * VRML 2.0 Parser
3092 *
3093 * Author(s) : Gavin Bell
3094 * Daniel Woods (first port)
3095 **************************************************
3096 */
3097// #include "tokens.h"
3098#include <string.h>
3099
3100// used to reset the lexer input after initialization of VRML nodes
3101// static void (*theyyInput)(char *, int &, int);
3102
3103// We define the YY_INPUT so we an change the input source later
3104#define YY_INPUT(buf, result, max_size) (*theyyInput)(buf, result, max_size, this)
3105
3106/* Current line number */
3107// int currentLineNumber = 1;
3108// void yyResetLineNumber() { currentLineNumber = 1; }
3109
3110// extern void yyerror(const char *);
3111
3112/* The YACC parser sets this to a token to direct the lexer */
3113/* in cases where just syntax isn't enough: */
3114// int expectToken = 0;
3115
3116/* True when parsing a multiple-valued field: */
3117// static int parsing_mf = 0;
3118
3119/* These are used when parsing SFImage fields: */
3120// static int sfImageIntsParsed = 0;
3121// static int sfImageIntsExpected = 0;
3122
3123#ifdef __cplusplus
3124// extern "C"
3125#endif
3126VTK_ABI_NAMESPACE_BEGIN
3128{
3129 BEGIN INITIAL;
3130 return 1;
3131}
3132VTK_ABI_NAMESPACE_END
3133
3134/* Normal state: parsing nodes. The initial start state is used */
3135/* only to recognize the VRML header. */
3136/* Start tokens for all of the field types, */
3137/* except for MFNode and SFNode, which are almost completely handled */
3138/* by the parser: */
3139/* Big hairy expression for floating point numbers: */
3140/* Ints are decimal or hex (0x##): */
3141/* Whitespace. Using this pattern can screw up currentLineNumber, */
3142/* so it is only used wherever it is really convenient and it is */
3143/* extremely unlikely that the user will put in a carriage return */
3144/* (example: between the floats in an SFVec3f) */
3145/* And the same pattern without the newline */
3146/* Legal characters to start an identifier */
3147/* Legal other characters in an identifier */
3148
3149/* Macros after this point can all be overridden by user definitions in
3150 * section 1.
3151 */
3152
3153#ifdef YY_MALLOC_DECL
3154YY_MALLOC_DECL
3155#else
3156#if __STDC__
3157#ifndef __cplusplus
3158#include <stdlib.h>
3159#endif
3160#else
3161/* Just try to get by without declaring the routines. This will fail
3162 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
3163 * or sizeof(void*) != sizeof(int).
3164 */
3165#endif
3166#endif
3167
3168/* Amount of stuff to slurp up with each read. */
3169#ifndef YY_READ_BUF_SIZE
3170#define YY_READ_BUF_SIZE 8192
3171#endif
3172
3173/* Copy whatever the last rule matched to the standard output. */
3174
3175#ifndef ECHO
3176/* This used to be an fputs(), but since the string might contain NUL's,
3177 * we now use fwrite().
3178 */
3179#define ECHO (void)fwrite(yytext, yyleng, 1, yyout)
3180#endif
3181
3182/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
3183 * is returned in "result".
3184 */
3185#ifndef YY_INPUT
3186#define YY_INPUT(buf, result, max_size) \
3187 if (yy_current_buffer->yy_is_interactive) \
3188 { \
3189 int c = getc(yyin); \
3190 result = c == EOF ? 0 : 1; \
3191 buf[0] = (char)c; \
3192 } \
3193 else if (((result = fread(buf, 1, max_size, yyin)) == 0) && ferror(yyin)) \
3194 YY_FATAL_ERROR("input in flex scanner failed")
3195#endif
3196
3197/* No semi-colon after return; correct usage is to write "yyterminate();" -
3198 * we don't want an extra ';' after the "return" because that will cause
3199 * some compilers to complain about unreachable statements.
3200 */
3201#ifndef yyterminate
3202#define yyterminate() return YY_NULL
3203#endif
3204
3205/* Number of entries by which start-condition stack grows. */
3206#ifndef YY_START_STACK_INCR
3207#define YY_START_STACK_INCR 25
3208#endif
3209
3210/* Report a fatal error. */
3211#ifndef YY_FATAL_ERROR
3212#define YY_FATAL_ERROR(msg) yy_fatal_error(msg)
3213#endif
3214
3215/* Default declaration of generated scanner - a define so the user can
3216 * easily add parameters.
3217 */
3218#ifndef YY_DECL
3219#define YY_DECL int yylex(vtkVRMLImporter* self)
3220#endif
3221
3222/* Code executed at the beginning of each rule, after yytext and yyleng
3223 * have been set up.
3224 */
3225#ifndef YY_USER_ACTION
3226#define YY_USER_ACTION
3227#endif
3228
3229/* Code executed at the end of each rule. */
3230#ifndef YY_BREAK
3231#define YY_BREAK break;
3232#endif
3233
3234VTK_ABI_NAMESPACE_BEGIN
3236{
3237 yy_state_type yy_current_state;
3238 char *yy_cp, *yy_bp;
3239 int yy_act;
3240
3241 /* Switch into a new start state if the parser */
3242 /* just told us that we've read a field name */
3243 /* and should expect a field value (or IS) */
3244 if (expectToken != 0)
3245 {
3246 if (yy_flex_debug)
3247 vtk::print(stderr, "LEX--> Start State {:d}\n", expectToken);
3248
3249 /*
3250 * Annoying. This big switch is necessary because
3251 * LEX wants to assign particular numbers to start
3252 * tokens, and YACC wants to define all the tokens
3253 * used, too. Sigh.
3254 */
3255 switch (expectToken)
3256 {
3257 case SFBOOL:
3258 BEGIN SFB;
3259 break;
3260 case SFCOLOR:
3261 BEGIN SFC;
3262 break;
3263 case SFFLOAT:
3264 BEGIN SFF;
3265 break;
3266 case SFIMAGE:
3267 BEGIN SFIMG;
3268 break;
3269 case SFINT32:
3270 BEGIN SFI;
3271 break;
3272 case SFROTATION:
3273 BEGIN SFR;
3274 break;
3275 case SFSTRING:
3276 BEGIN SFS;
3277 break;
3278 case SFTIME:
3279 BEGIN SFT;
3280 break;
3281 case SFVEC2F:
3282 BEGIN SFV2;
3283 break;
3284 case SFVEC3F:
3285 BEGIN SFV3;
3286 break;
3287 case MFCOLOR:
3288 BEGIN MFC;
3289 break;
3290 case MFFLOAT:
3291 BEGIN MFF;
3292 break;
3293 case MFINT32:
3294 BEGIN MFI;
3295 break;
3296 case MFROTATION:
3297 BEGIN MFR;
3298 break;
3299 case MFSTRING:
3300 BEGIN MFS;
3301 break;
3302 case MFVEC2F:
3303 BEGIN MFV2;
3304 break;
3305 case MFVEC3F:
3306 BEGIN MFV3;
3307 break;
3308
3309 /* SFNode and MFNode are special. Here the lexer just returns */
3310 /* "marker tokens" so the parser knows what type of field is */
3311 /* being parsed; unlike the other fields, parsing of SFNode/MFNode */
3312 /* field happens in the parser. */
3313 case MFNODE:
3314 expectToken = 0;
3315 return MFNODE;
3316 case SFNODE:
3317 expectToken = 0;
3318 return SFNODE;
3319
3320 default:
3321 yyerror("ACK: Bad expectToken");
3322 break;
3323 }
3324 }
3325
3326 /* This is more complicated than they really need to be because */
3327 /* I was ambitious and made the whitespace-matching rule aggressive */
3328
3329 if (yy_init)
3330 {
3331#ifdef YY_USER_INIT
3332 YY_USER_INIT;
3333#endif
3334
3335 if (!yy_start)
3336 yy_start = 1; /* first start state */
3337
3338 if (!yyin)
3339 yyin = stdin;
3340
3341 if (!yyout)
3342 yyout = stdout;
3343
3346 else
3348
3350
3351 yy_init = 0;
3352 }
3353
3354 while (true) /* loops until end-of-file is reached */
3355 {
3356 yy_cp = yy_c_buf_p;
3357
3358 /* Support of yytext. */
3359 *yy_cp = yy_hold_char;
3360
3361 /* yy_bp points to the position in yy_ch_buf of the start of
3362 * the current run.
3363 */
3364 yy_bp = yy_cp;
3365
3366 yy_current_state = yy_start;
3367 yy_match:
3368 do
3369 {
3370 YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
3371 if (yy_accept[yy_current_state])
3372 {
3373 yy_last_accepting_state = yy_current_state;
3374 yy_last_accepting_cpos = yy_cp;
3375 }
3376 while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state)
3377 {
3378 yy_current_state = (int)yy_def[yy_current_state];
3379 if (yy_current_state >= 949)
3380 yy_c = yy_meta[(unsigned int)yy_c];
3381 }
3382 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int)yy_c];
3383 ++yy_cp;
3384 } while (yy_base[yy_current_state] != 7663);
3385
3386 yy_find_action:
3387 yy_act = yy_accept[yy_current_state];
3388
3390
3391 do_action: /* This label is used only to access EOF actions. */
3392
3393 if (yy_flex_debug)
3394 {
3395 if (yy_act == 0)
3396 vtk::print(stderr, "--scanner backing up\n");
3397 else if (yy_act < 49)
3398 vtk::print(
3399 stderr, "--accepting rule at line {:d} (\"{:s}\")\n", yy_rule_linenum[yy_act], yytext);
3400 else if (yy_act == 49)
3401 vtk::print(stderr, "--accepting default rule (\"{:s}\")\n", yytext);
3402 else if (yy_act == 50)
3403 vtk::print(stderr, "--(end of buffer or a NUL)\n");
3404 else
3405 vtk::print(stderr, "--EOF (start condition {:d})\n", YY_START);
3406 }
3407
3408 switch (yy_act)
3409 { /* beginning of action switch */
3410 case 0: /* must back up */
3411 /* undo the effects of YY_DO_BEFORE_ACTION */
3412 *yy_cp = yy_hold_char;
3413 yy_cp = yy_last_accepting_cpos;
3414 yy_current_state = yy_last_accepting_state;
3415 goto yy_find_action;
3416
3417 case 1:
3419 {
3420 BEGIN NODE;
3421 }
3422 YY_BREAK
3423 /* The lexer is in the NODE state when parsing nodes, either */
3424 /* top-level nodes in the .wrl file, in a prototype implementation, */
3425 /* or when parsing the contents of SFNode or MFNode fields. */
3426 case 2:
3428 {
3429 return PROTO;
3430 }
3431 case 3:
3433 {
3434 return EXTERNPROTO;
3435 }
3436 case 4:
3438 {
3439 return DEF;
3440 }
3441 case 5:
3443 {
3444 return USE;
3445 }
3446 case 6:
3448 {
3449 return TO;
3450 }
3451 case 7:
3453 {
3454 return IS;
3455 }
3456 case 8:
3458 {
3459 return ROUTE;
3460 }
3461 case 9:
3463 {
3464 return SFN_NULL;
3465 }
3466 case 10:
3468 {
3469 return EVENTIN;
3470 }
3471 case 11:
3473 {
3474 return EVENTOUT;
3475 }
3476 case 12:
3478 {
3479 return FIELD;
3480 }
3481 case 13:
3483 {
3484 return EXPOSEDFIELD;
3485 }
3486 /* Legal identifiers: */
3487 case 14:
3489 {
3490 yylval.string = vtkVRMLAllocator::StrDup(yytext);
3491 return IDENTIFIER;
3492 }
3493 /* All fields may have an IS declaration: */
3494 case 15:
3496 {
3497 BEGIN NODE;
3498 expectToken = 0;
3499 yyless(0);
3500 }
3501 YY_BREAK
3502 case 16:
3504 {
3505 BEGIN NODE;
3506 expectToken = 0;
3507 yyless(0); /* put back the IS */
3508 }
3509 YY_BREAK
3510 /* All MF field types other than MFNode are completely parsed here */
3511 /* in the lexer, and one token is returned to the parser. They all */
3512 /* share the same rules for open and closing brackets: */
3513 case 17:
3515 {
3516 if (parsing_mf)
3517 yyerror("Double [");
3518 parsing_mf = 1;
3519 yylval.vec2f = self->FloatArrayNew();
3520 yylval.vec2f->SetNumberOfComponents(2);
3521 }
3522 YY_BREAK
3523 case 18:
3525 {
3526 if (parsing_mf)
3527 yyerror("Double [");
3528 parsing_mf = 1;
3529 yylval.mfint32 = self->IdTypeArrayNew();
3530 }
3531 YY_BREAK
3532 case 19:
3534 {
3535 if (parsing_mf)
3536 yyerror("Double [");
3537 parsing_mf = 1;
3538 yylval.vec3f = self->PointsNew();
3539 }
3540 YY_BREAK
3541 case 20:
3543 {
3544 if (!parsing_mf)
3545 yyerror("Unmatched ]");
3546 int tokenFieldType = expectToken;
3547 BEGIN NODE;
3548 parsing_mf = 0;
3549 expectToken = 0;
3550 return tokenFieldType;
3551 }
3552 case 21:
3554 {
3555 BEGIN NODE;
3556 expectToken = 0;
3557 yylval.sfint = 1;
3558 return SFBOOL;
3559 }
3560 case 22:
3562 {
3563 BEGIN NODE;
3564 expectToken = 0;
3565 yylval.sfint = 0;
3566 return SFBOOL;
3567 }
3568 case 23:
3570 {
3571 BEGIN NODE;
3572 expectToken = 0;
3574 return SFINT32;
3575 }
3576 case 24:
3578 {
3579 if (parsing_mf)
3580 {
3581 int num;
3583 yylval.mfint32->InsertNextValue(num);
3584 }
3585 else
3586 {
3587 BEGIN NODE;
3588 expectToken = 0;
3589 return MFINT32;
3590 }
3591 }
3592 YY_BREAK
3593 /* All the floating-point types are pretty similar: */
3594 case 25:
3596 {
3597 BEGIN NODE;
3598 expectToken = 0;
3599 yylval.sffloat = vtk::scan_value<float>(std::string_view(yytext))->value();
3600 return SFFLOAT;
3601 }
3602 case 26:
3604 {
3605 if (parsing_mf)
3606 ; /* Add to array... */
3607 else
3608 {
3609 /* No open bracket means a single value: */
3610 BEGIN NODE;
3611 expectToken = 0;
3612 return MFFLOAT;
3613 }
3614 }
3615 YY_BREAK
3616 case 27:
3618 {
3619 BEGIN NODE;
3620 expectToken = 0;
3621 return SFVEC2F;
3622 }
3623 case 28:
3625 {
3626 if (parsing_mf)
3627 {
3628 // .. add to array...
3629 float num[2];
3630 num[0] = vtk::scan_value<float>(std::string_view(strtok(yytext, " \t")))->value();
3631 num[1] = vtk::scan_value<float>(std::string_view(strtok(nullptr, " \t")))->value();
3632 // equivalent to: sscanf(yytext, "%f %f", &num[0], &num[1]);
3633 yylval.vec2f->InsertNextTuple(num);
3634 }
3635 else
3636 {
3637 BEGIN NODE;
3638 expectToken = 0;
3639 return MFVEC2F;
3640 }
3641 }
3642 YY_BREAK
3643 case 29:
3645 {
3646 BEGIN NODE;
3647 expectToken = 0;
3648 float num[3];
3649 yylval.vec3f = self->PointsNew();
3650 num[0] = vtk::scan_value<float>(std::string_view(strtok(yytext, " \t")))->value();
3651 num[1] = vtk::scan_value<float>(std::string_view(strtok(nullptr, " \t")))->value();
3652 num[2] = vtk::scan_value<float>(std::string_view(strtok(nullptr, " \t")))->value();
3653 // sscanf(yytext, "%f %f %f", &num[0], &num[1], &num[2]);
3654 yylval.vec3f->InsertPoint(0, num);
3655 return SFVEC3F;
3656 }
3657 case 30:
3659 {
3660 if (parsing_mf)
3661 { /* .. add to array... */
3662 float num[3];
3663 num[0] = vtk::scan_value<float>(std::string_view(strtok(yytext, " \t")))->value();
3664 num[1] = vtk::scan_value<float>(std::string_view(strtok(nullptr, " \t")))->value();
3665 num[2] = vtk::scan_value<float>(std::string_view(strtok(nullptr, " \t")))->value();
3666 // sscanf(yytext, "%f %f %f", &num[0], &num[1], &num[2]);
3667 yylval.vec3f->InsertNextPoint(num);
3668 // return MFVEC3F;
3669 }
3670 else
3671 {
3672 BEGIN NODE;
3673 expectToken = 0;
3674 return MFVEC3F;
3675 }
3676 }
3677 YY_BREAK
3678 case 31:
3680 {
3681 BEGIN NODE;
3682 expectToken = 0;
3683 yylval.vec4f[0] =
3684 vtk::scan_value<float>(std::string_view(strtok(yytext, " \t")))->value();
3685 yylval.vec4f[1] =
3686 vtk::scan_value<float>(std::string_view(strtok(nullptr, " \t")))->value();
3687 yylval.vec4f[2] =
3688 vtk::scan_value<float>(std::string_view(strtok(nullptr, " \t")))->value();
3689 yylval.vec4f[3] =
3690 vtk::scan_value<float>(std::string_view(strtok(nullptr, " \t")))->value();
3691 return SFROTATION;
3692 }
3693 case 32:
3695 {
3696 if (parsing_mf)
3697 ; /* .. add to array... */
3698 else
3699 {
3700 BEGIN NODE;
3701 expectToken = 0;
3702 return MFROTATION;
3703 }
3704 }
3705 YY_BREAK
3706 case 33:
3708 {
3709 BEGIN NODE;
3710 expectToken = 0;
3711 float num[3];
3712 yylval.vec3f = self->PointsNew();
3713 num[0] = vtk::scan_value<float>(std::string_view(strtok(yytext, " \t")))->value();
3714 num[1] = vtk::scan_value<float>(std::string_view(strtok(nullptr, " \t")))->value();
3715 num[2] = vtk::scan_value<float>(std::string_view(strtok(nullptr, " \t")))->value();
3716 // sscanf(yytext, "%f %f %f", &num[0], &num[1], &num[2]);
3717 yylval.vec3f->InsertPoint(0, num);
3718 return SFCOLOR;
3719 }
3720 case 34:
3722 {
3723 if (parsing_mf)
3724 { /* .. add to array... */
3725 float num[3];
3726 num[0] = vtk::scan_value<float>(std::string_view(strtok(yytext, " \t")))->value();
3727 num[1] = vtk::scan_value<float>(std::string_view(strtok(nullptr, " \t")))->value();
3728 num[2] = vtk::scan_value<float>(std::string_view(strtok(nullptr, " \t")))->value();
3729 yylval.vec3f->InsertNextPoint(num);
3730 }
3731 else
3732 {
3733 BEGIN NODE;
3734 expectToken = 0;
3735 return MFCOLOR;
3736 }
3737 }
3738 YY_BREAK
3739 case 35:
3741 {
3742 BEGIN NODE;
3743 expectToken = 0;
3744 return SFTIME;
3745 }
3746 /* SFString/MFString */
3747 case 36:
3749 {
3750 BEGIN IN_SFS;
3751 }
3752 YY_BREAK
3753 case 37:
3755 {
3756 BEGIN IN_MFS;
3757 }
3758 YY_BREAK
3759 /* Anything besides open-quote (or whitespace) is an error: */
3760 case 38:
3762 {
3763 yyerror("String missing open-quote");
3764 BEGIN NODE;
3765 expectToken = 0;
3766 return SFSTRING;
3767 }
3768 /* Expect open-quote, open-bracket, or whitespace: */
3769 case 39:
3771 {
3772 yyerror("String missing open-quote");
3773 BEGIN NODE;
3774 expectToken = 0;
3775 return MFSTRING;
3776 }
3777 /* Backslashed-quotes are OK: */
3778 case 40:
3780 YY_BREAK
3781 /* Gobble up anything besides quotes and newlines. */
3782 /* Newlines are legal in strings, but we exclude them here so */
3783 /* that line number are counted correctly by the catch-all newline */
3784 /* rule that applies to everything. */
3785 case 41:
3787 YY_BREAK
3788 /* Quote ends the string: */
3789 case 42:
3791 {
3792 BEGIN NODE;
3793 expectToken = 0;
3794 return SFSTRING;
3795 }
3796 case 43:
3798 {
3799 if (parsing_mf)
3800 BEGIN MFS; /* ... add to array ... */
3801 else
3802 {
3803 BEGIN NODE;
3804 expectToken = 0;
3805 return MFSTRING;
3806 }
3807 }
3808 YY_BREAK
3809 /* SFImage: width height numComponents then width*height integers: */
3810 case 44:
3812 {
3813 int w, h;
3814 auto result = vtk::scan<int, int>(std::string_view(yytext), "{:d} {:d}");
3815 std::tie(w, h) = result->values();
3816 sfImageIntsExpected = 1 + w * h;
3819 }
3820 YY_BREAK
3821 case 45:
3823 {
3826 {
3827 BEGIN NODE;
3828 expectToken = 0;
3829 return SFIMAGE;
3830 }
3831 }
3832 YY_BREAK
3833 /* Whitespace and catch-all rules apply to all start states: */
3834 case 46:
3836 YY_BREAK
3837 /* This is also whitespace, but we'll keep track of line number */
3838 /* to report in errors: */
3839 case 47:
3841 {
3843 }
3844 YY_BREAK
3845 /* This catch-all rule catches anything not covered by any of */
3846 /* the above: */
3847 case 48:
3849 {
3850 return yytext[0];
3851 }
3852 case 49:
3854 YY_FATAL_ERROR("flex scanner jammed");
3855 YY_BREAK
3856 case YY_STATE_EOF(INITIAL):
3857 case YY_STATE_EOF(NODE):
3858 case YY_STATE_EOF(SFB):
3859 case YY_STATE_EOF(SFC):
3860 case YY_STATE_EOF(SFF):
3861 case YY_STATE_EOF(SFIMG):
3862 case YY_STATE_EOF(SFI):
3863 case YY_STATE_EOF(SFR):
3864 case YY_STATE_EOF(SFS):
3865 case YY_STATE_EOF(SFT):
3866 case YY_STATE_EOF(SFV2):
3867 case YY_STATE_EOF(SFV3):
3868 case YY_STATE_EOF(MFC):
3869 case YY_STATE_EOF(MFF):
3870 case YY_STATE_EOF(MFI):
3871 case YY_STATE_EOF(MFR):
3872 case YY_STATE_EOF(MFS):
3873 case YY_STATE_EOF(MFV2):
3874 case YY_STATE_EOF(MFV3):
3875 case YY_STATE_EOF(IN_SFS):
3876 case YY_STATE_EOF(IN_MFS):
3877 case YY_STATE_EOF(IN_SFIMG):
3878 yyterminate();
3879
3880 case YY_END_OF_BUFFER:
3881 {
3882 /* Amount of text matched not including the EOB char. */
3883 int yy_amount_of_matched_text = yy_cp - yytext_ptr - 1;
3884
3885 /* Undo the effects of YY_DO_BEFORE_ACTION. */
3886 *yy_cp = yy_hold_char;
3887
3888 if (yy_current_buffer->yy_buffer_status == yy_buffer_state::YY_BUFFER_NEW)
3889 {
3890 /* We're scanning a new file or input source. It's
3891 * possible that this happened because the user
3892 * just pointed yyin at a new source and called
3893 * yylex(). If so, then we have to assure
3894 * consistency between yy_current_buffer and our
3895 * globals. Here is the right place to do so, because
3896 * this is the first action (other than possibly a
3897 * back-up) that will match for the new input source.
3898 */
3899 yy_n_chars = yy_current_buffer->yy_n_chars;
3900 yy_current_buffer->yy_input_file = yyin;
3902 }
3903
3904 /* Note that here we test for yy_c_buf_p "<=" to the position
3905 * of the first EOB in the buffer, since yy_c_buf_p will
3906 * already have been incremented past the NUL character
3907 * (since all states make transitions on EOB to the
3908 * end-of-buffer state). Contrast this with the test
3909 * in input().
3910 */
3912 { /* This was really a NUL. */
3913 yy_state_type yy_next_state;
3914
3915 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
3916
3917 yy_current_state = yy_get_previous_state();
3918
3919 /* Okay, we're now positioned to make the NUL
3920 * transition. We couldn't have
3921 * yy_get_previous_state() go ahead and do it
3922 * for us because it doesn't know how to deal
3923 * with the possibility of jamming (and we don't
3924 * want to build jamming into it because then it
3925 * will run more slowly).
3926 */
3927
3928 yy_next_state = yy_try_NUL_trans(yy_current_state);
3929
3930 yy_bp = yytext_ptr + YY_MORE_ADJ;
3931
3932 if (yy_next_state)
3933 {
3934 /* Consume the NUL. */
3935 yy_cp = ++yy_c_buf_p;
3936 yy_current_state = yy_next_state;
3937 goto yy_match;
3938 }
3939
3940 else
3941 {
3942 yy_cp = yy_c_buf_p;
3943 goto yy_find_action;
3944 }
3945 }
3946
3947 else
3948 switch (yy_get_next_buffer())
3949 {
3951 {
3953
3954 if (yywrap())
3955 {
3956 /* Note: because we've taken care in
3957 * yy_get_next_buffer() to have set up
3958 * yytext, we can now set up
3959 * yy_c_buf_p so that if some total
3960 * hoser (like flex itself) wants to
3961 * call the scanner after we return the
3962 * YY_NULL, it'll still work - another
3963 * YY_NULL will get returned.
3964 */
3966
3967 yy_act = YY_STATE_EOF(YY_START);
3968 goto do_action;
3969 }
3970
3971 else
3972 {
3975 }
3976 break;
3977 }
3978
3980 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
3981
3982 yy_current_state = yy_get_previous_state();
3983
3984 yy_cp = yy_c_buf_p;
3985 yy_bp = yytext_ptr + YY_MORE_ADJ;
3986 goto yy_match;
3987
3988 case EOB_ACT_LAST_MATCH:
3990
3991 yy_current_state = yy_get_previous_state();
3992
3993 yy_cp = yy_c_buf_p;
3994 yy_bp = yytext_ptr + YY_MORE_ADJ;
3995 goto yy_find_action;
3996 }
3997 break;
3998 }
3999
4000 default:
4001 YY_FATAL_ERROR("fatal flex scanner internal error--no action found");
4002 } /* end of action switch */
4003 } /* end of scanning one token */
4004} /* end of yylex */
4005
4006/* yy_get_next_buffer - try to read in a new buffer
4007 *
4008 * Returns a code representing an action:
4009 * EOB_ACT_LAST_MATCH -
4010 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4011 * EOB_ACT_END_OF_FILE - end of file
4012 */
4013
4015{
4016 char* dest = yy_current_buffer->yy_ch_buf;
4017 char* source = yytext_ptr - 1; /* copy prev. char, too */
4018 int number_to_move, i;
4019 int ret_val;
4020
4021 if (yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1])
4022 YY_FATAL_ERROR("fatal flex scanner internal error--end of buffer missed");
4023
4024 if (yy_current_buffer->yy_fill_buffer == 0)
4025 { /* Don't try to fill the buffer, so this is an EOF. */
4026 if (yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1)
4027 {
4028 /* We matched a singled character, the EOB, so
4029 * treat this as a final EOF.
4030 */
4031 return EOB_ACT_END_OF_FILE;
4032 }
4033
4034 else
4035 {
4036 /* We matched some text prior to the EOB, first
4037 * process it.
4038 */
4039 return EOB_ACT_LAST_MATCH;
4040 }
4041 }
4042
4043 /* Try to read more data. */
4044
4045 /* First move last chars to start of buffer. */
4046 number_to_move = yy_c_buf_p - yytext_ptr;
4047
4048 for (i = 0; i < number_to_move; ++i)
4049 *(dest++) = *(source++);
4050
4052 /* don't do the read, it's not guaranteed to return an EOF,
4053 * just force an EOF
4054 */
4055 yy_n_chars = 0;
4056
4057 else
4058 {
4059 int num_to_read = yy_current_buffer->yy_buf_size - number_to_move - 1;
4060
4061 while (num_to_read <= 0)
4062 { /* Not enough room in the buffer - grow it. */
4063#ifdef YY_USES_REJECT
4064 YY_FATAL_ERROR("input buffer overflow, can't enlarge buffer because scanner uses REJECT");
4065#else
4066
4067 /* just a shorter name for the current buffer */
4069
4070 int yy_c_buf_p_offset = yy_c_buf_p - b->yy_ch_buf;
4071
4072 b->yy_buf_size *= 2;
4073 b->yy_ch_buf = (char*)yy_flex_realloc((void*)b->yy_ch_buf, b->yy_buf_size);
4074
4075 if (!b->yy_ch_buf)
4076 YY_FATAL_ERROR("fatal error - scanner input buffer overflow");
4077
4078 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
4079
4080 num_to_read = yy_current_buffer->yy_buf_size - number_to_move - 1;
4081#endif
4082 }
4083
4084 if (num_to_read > YY_READ_BUF_SIZE)
4085 num_to_read = YY_READ_BUF_SIZE;
4086
4087 /* Read in more data. */
4088 YY_INPUT((&yy_current_buffer->yy_ch_buf[number_to_move]), yy_n_chars, num_to_read);
4089 }
4090
4091 if (yy_n_chars == 0)
4092 {
4093 if (number_to_move - YY_MORE_ADJ == 1)
4094 {
4095 ret_val = EOB_ACT_END_OF_FILE;
4096 yyrestart(yyin);
4097 }
4098
4099 else
4100 {
4101 ret_val = EOB_ACT_LAST_MATCH;
4103 }
4104 }
4105
4106 else
4107 ret_val = EOB_ACT_CONTINUE_SCAN;
4108
4109 yy_n_chars += number_to_move;
4112
4113 /* yytext begins at the second character in yy_ch_buf; the first
4114 * character is the one which preceded it before reading in the latest
4115 * buffer; it needs to be kept around in case it's a newline, so
4116 * yy_get_previous_state() will have with '^' rules active.
4117 */
4118
4119 yytext_ptr = &yy_current_buffer->yy_ch_buf[1];
4120
4121 return ret_val;
4122}
4123
4124/* yy_get_previous_state - get the state just before the EOB char was reached */
4125
4127{
4128 yy_state_type yy_current_state;
4129 char* yy_cp;
4130
4131 yy_current_state = yy_start;
4132
4133 for (yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp)
4134 {
4135 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4136 if (yy_accept[yy_current_state])
4137 {
4138 yy_last_accepting_state = yy_current_state;
4139 yy_last_accepting_cpos = yy_cp;
4140 }
4141 while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state)
4142 {
4143 yy_current_state = (int)yy_def[yy_current_state];
4144 if (yy_current_state >= 949)
4145 yy_c = yy_meta[(unsigned int)yy_c];
4146 }
4147 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int)yy_c];
4148 }
4149
4150 return yy_current_state;
4151}
4152
4153/* yy_try_NUL_trans - try to make a transition on the NUL character
4154 *
4155 * synopsis
4156 * next_state = yy_try_NUL_trans( current_state );
4157 */
4158
4160 yy_state_type yy_current_state)
4161{
4162 int yy_is_jam;
4163 char* yy_cp = yy_c_buf_p;
4164
4165 YY_CHAR yy_c = 1;
4166 if (yy_accept[yy_current_state])
4167 {
4168 yy_last_accepting_state = yy_current_state;
4169 yy_last_accepting_cpos = yy_cp;
4170 }
4171 while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state)
4172 {
4173 yy_current_state = (int)yy_def[yy_current_state];
4174 if (yy_current_state >= 949)
4175 yy_c = yy_meta[(unsigned int)yy_c];
4176 }
4177 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int)yy_c];
4178 yy_is_jam = (yy_current_state == 948);
4179
4180 return yy_is_jam ? 0 : yy_current_state;
4181}
4182
4183inline void vtkVRMLYaccData::yyrestart(FILE* input_file)
4184{
4185 if (!yy_current_buffer)
4187
4188 yy_init_buffer(yy_current_buffer, input_file);
4190}
4191
4193{
4194 if (yy_current_buffer == new_buffer)
4195 return;
4196
4198 {
4199 /* Flush out information for old buffer. */
4201 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
4202 yy_current_buffer->yy_n_chars = yy_n_chars;
4203 }
4204
4205 yy_current_buffer = new_buffer;
4207
4208 /* We don't actually know whether we did this switch during
4209 * EOF (yywrap()) processing, but the only time this flag
4210 * is looked at is after yywrap() is called, so it's safe
4211 * to go ahead and always set it.
4212 */
4214}
4215
4217{
4218 yy_n_chars = yy_current_buffer->yy_n_chars;
4219 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
4220 yyin = yy_current_buffer->yy_input_file;
4222}
4223
4225{
4227
4228 b = (YY_BUFFER_STATE)yy_flex_alloc(sizeof(struct yy_buffer_state));
4229
4230 if (!b)
4231 YY_FATAL_ERROR("out of dynamic memory in yy_create_buffer()");
4232
4233 b->yy_buf_size = size;
4234
4235 /* yy_ch_buf has to be 2 characters longer than the size given because
4236 * we need to put in 2 end-of-buffer characters.
4237 */
4238 b->yy_ch_buf = (char*)yy_flex_alloc(b->yy_buf_size + 2);
4239
4240 if (!b->yy_ch_buf)
4241 YY_FATAL_ERROR("out of dynamic memory in yy_create_buffer()");
4242
4243 yy_init_buffer(b, file);
4244
4245 return b;
4246}
4247
4249{
4250 if (b == yy_current_buffer)
4252
4253 yy_flex_free((void*)b->yy_ch_buf);
4254 yy_flex_free((void*)b);
4255}
4256
4258{
4259 b->yy_input_file = file;
4260
4261 /* We put in the '\n' and start reading from [1] so that an
4262 * initial match-at-newline will be true.
4263 */
4264
4265 b->yy_ch_buf[0] = '\n';
4266 b->yy_n_chars = 1;
4267
4268 /* We always need two end-of-buffer characters. The first causes
4269 * a transition to the end-of-buffer state. The second causes
4270 * a jam in that state.
4271 */
4274
4275 b->yy_buf_pos = &b->yy_ch_buf[1];
4276
4277 b->yy_is_interactive = file ? isatty(fileno(file)) : 0;
4278
4279 b->yy_fill_buffer = 1;
4280
4282}
4283
4284inline void vtkVRMLYaccData::yy_fatal_error(const char msg[])
4285{
4286 vtk::print(stderr, "{:s}\n", msg);
4287 exit(1);
4288}
4289
4290/* Redefine yyless() so it works in section 3 code. */
4291
4292#undef yyless
4293#define yyless(n) \
4294 do \
4295 { \
4296 /* Undo effects of setting up yytext. */ \
4297 yytext[yyleng] = yy_hold_char; \
4298 yy_c_buf_p = yytext + n - YY_MORE_ADJ; \
4299 yy_hold_char = *yy_c_buf_p; \
4300 *yy_c_buf_p = '\0'; \
4301 yyleng = n; \
4302 } while (0)
4303
4304/* Internal utility routines. */
4305
4306#ifndef yytext_ptr
4307#ifdef YY_USE_PROTOS
4308static void yy_flex_strncpy(char* s1, const char* s2, int n)
4309#else
4310static void yy_flex_strncpy(s1, s2, n) char* s1;
4311const char* s2;
4312int n;
4313#endif
4314{
4315 int i;
4316 for (i = 0; i < n; ++i)
4317 s1[i] = s2[i];
4318}
4319#endif
4320
4321inline void* vtkVRMLYaccData::yy_flex_alloc(unsigned int size)
4322{
4323 return malloc(size);
4324}
4325
4326inline void* vtkVRMLYaccData::yy_flex_realloc(void* ptr, unsigned int size)
4327{
4328 return realloc(ptr, size);
4329}
4330
4331inline void vtkVRMLYaccData::yy_flex_free(void* ptr)
4332{
4333 free(ptr);
4334}
4335// End of Auto-generated Lexer Code
4336
4337// Used by the lex input to get characters. Needed to read in memory structure
4338
4339inline void vtkVRMLYaccData::memyyInput(char* buf, int& result, int max_size, vtkVRMLYaccData* self)
4340{
4341
4342 result = static_cast<int>(strlen(strncpy(buf, standardNodes[self->memyyInput_i], max_size)));
4343 self->memyyInput_j = result - static_cast<int>(strlen(standardNodes[self->memyyInput_i]));
4344 if (self->memyyInput_j == 0)
4345 {
4346 self->memyyInput_i++;
4347 }
4348}
4349
4350// Needed to reset the lex input routine to default.
4351inline void vtkVRMLYaccData::defyyInput(char* buf, int& result, int max_size, vtkVRMLYaccData* self)
4352{
4354 {
4355 int c = getc(self->yyin);
4356 result = c == EOF ? 0 : 1;
4357 buf[0] = (char)c;
4358 }
4359 else if (((result = static_cast<int>(fread(buf, 1, max_size, self->yyin))) == 0) &&
4360 ferror(self->yyin))
4361 {
4362 self->yy_fatal_error("input in flex scanner failed");
4363 }
4364}
4365
4366VTK_ABI_NAMESPACE_END
4367#endif
4368// VTK-HeaderTest-Exclude: vtkVRMLImporter_Yacc.h
RealT s2
Definition PyrC2Basis.h:21
int hasEventOut(const char *name) const
const char * getName() const
void addField(const char *name, int type)
void addExposedField(const char *name, int type)
void addEventIn(const char *name, int type)
int hasEventIn(const char *name) const
int hasField(const char *name) const
void addEventOut(const char *name, int type)
VrmlNodeType(const char *nm)
int hasExposedField(const char *name) const
dynamic, self-adjusting array of float
dynamic, self-adjusting array of vtkIdType
abstract base class for most VTK objects
Definition vtkObject.h:162
represent and manipulate 3D points
Definition vtkPoints.h:139
Computes the portion of a dataset which is inside a selection.
imports VRML 2.0 files.
virtual void useNode(const char *)
Needed by the yacc/lex grammar used.
virtual void exitNode()
Needed by the yacc/lex grammar used.
virtual void enterField(const char *)
Needed by the yacc/lex grammar used.
virtual void enterNode(const char *)
Needed by the yacc/lex grammar used.
virtual void exitField()
Needed by the yacc/lex grammar used.
vtkVRMLUseStruct(char *n, vtkObject *o)
int yyparse(vtkVRMLImporter *self)
void yyerror(const char *)
vtkVRMLVectorType< VrmlNodeType::FieldRec * > * currentField
yy_state_type yy_last_accepting_state
struct yy_buffer_state * YY_BUFFER_STATE
yy_state_type yy_get_previous_state()
void beginProto(const char *)
void(* theyyInput)(char *, int &, int, vtkVRMLYaccData *)
yy_state_type yy_try_NUL_trans(yy_state_type current_state)
struct vtkVRMLYaccData::yyltype yyltype
YY_BUFFER_STATE yy_create_buffer(FILE *file, int size)
void * yy_flex_alloc(unsigned int)
void yyrestart(FILE *input_file)
int addField(const char *type, const char *name)
vtkVRMLVectorType< VrmlNodeType * > * CurrentProtoStack
static void memyyInput(char *buf, int &result, int max_size, vtkVRMLYaccData *self)
int add(void(VrmlNodeType::*)(const char *, int), const char *, const char *)
vtkVRMLVectorType< vtkVRMLUseStruct * > * useList
int addEventOut(const char *type, const char *name)
int addExposedField(const char *type, const char *name)
void yy_init_buffer(YY_BUFFER_STATE b, FILE *file)
void yy_delete_buffer(YY_BUFFER_STATE b)
vtkVRMLVectorType< VrmlNodeType * > * typeList
YY_BUFFER_STATE yy_current_buffer
void addToNameSpace(VrmlNodeType *)
int addEventIn(const char *type, const char *name)
static void defyyInput(char *buf, int &result, int max_size, vtkVRMLYaccData *self)
void yy_fatal_error(const char msg[])
int yylex(vtkVRMLImporter *self)
const VrmlNodeType * find(const char *nm)
void * yy_flex_realloc(void *, unsigned int)
int fieldType(const char *type)
void yy_switch_to_buffer(YY_BUFFER_STATE new_buffer)
const VrmlNodeType * nodeType
boost::graph_traits< vtkGraph * >::vertex_descriptor source(boost::graph_traits< vtkGraph * >::edge_descriptor e, vtkGraph *)
Optimized C++ utilities for formatting values to strings and files.
Optimized C++ utilities for scanning values from strings and files.
#define VTK_FROM_CHARS_IF_ERROR_BREAK(string, value)
#define YY_NEW_FILE
#define MFI
#define YYLTYPE
#define SFVEC2F
static const short yycheck[]
#define SFFLOAT
static const short int yy_accept[949]
#define YYMAXDEPTH
#define SFS
#define YYNTBASE
#define SFB
#define USE
static const int yy_ec[256]
#define MFVEC3F
static const char yytranslate[]
#define MFV3
static const short yydefgoto[]
#define MFV2
#define MFVEC2F
#define SFBOOL
static const short int yy_base[1090]
#define DEF
#define YYEOF
#define YYABORT
#define YY_BREAK
#define IN_SFS
#define IDENTIFIER
#define SFVEC3F
#define SFROTATION
#define MFC
#define SFIMAGE
#define SFN_NULL
#define SFF
#define MFFLOAT
#define SFV3
#define MFF
#define YYTRANSLATE(x)
#define SFT
#define ROUTE
#define YY_USER_ACTION
#define SFCOLOR
#define YYFINAL
#define SFTIME
#define YY_MORE_ADJ
#define MFR
#define IN_MFS
#define MFNODE
static void yy_memcpy(char *from, char *to, int count)
#define yytext_ptr
#define SFNODE
static const int yy_meta[48]
#define EOB_ACT_END_OF_FILE
#define MFCOLOR
static const short yytable[]
#define MFINT32
#define SFI
#define MFS
#define IN_SFIMG
static const short yypact[]
#define YY_START
#define EXTERNPROTO
#define EXPOSEDFIELD
static const short yypgoto[]
static const short yyr1[]
#define NODE
static const short yydefact[]
#define EVENTOUT
#define INITIAL
#define SFV2
#define PROTO
#define YYACCEPT
#define EVENTIN
#define YY_READ_BUF_SIZE
#define YY_INPUT(buf, result, max_size)
static const short yyr2[]
static const short int yy_def[1090]
#define YY_END_OF_BUFFER
#define YY_STATE_EOF(state)
#define BEGIN
#define YY_END_OF_BUFFER_CHAR
#define YYFLAG
#define FIELD
static const short int yy_nxt[7711]
#define SFC
#define YY_FATAL_ERROR(msg)
#define yyterminate()
#define SFSTRING
#define YY_DO_BEFORE_ACTION
#define EOB_ACT_LAST_MATCH
#define MFROTATION
#define IS
#define YYTERROR
#define SFIMG
#define EOB_ACT_CONTINUE_SCAN
#define YYEMPTY
#define yyless(n)
#define YYLAST
static const short int yy_chk[7711]
#define YY_BUF_SIZE
#define SFINT32
#define YYINITDEPTH
#define YY_SC_TO_UI(c)
#define TO
static const short int yy_rule_linenum[49]
#define SFR
#define MFSTRING