VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkVRMLInternal_Yacc.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00019 #ifndef vtkVRMLImporter_Yacc_h 00020 #define vtkVRMLImporter_Yacc_h 00021 00022 00023 #include "vtkFloatArray.h" 00024 #include "vtkIdTypeArray.h" 00025 #include "vtkPoints.h" 00026 #include "vtkVRML.h" 00027 #include "vtkVRMLImporter.h" 00028 00029 #include <cassert> 00030 #include <cstdio> 00031 #include <cstring> 00032 00033 // 00034 // The VrmlNodeType class is responsible for storing information about node 00035 // or prototype types. 00036 // 00037 00038 // used to hold the VRML DEF names and assoc vtkObjects 00039 class vtkVRMLUseStruct { 00040 public: 00041 vtkVRMLUseStruct( char *n, vtkObject *o) { defName = n; defObject = o; } 00042 char *defName; 00043 vtkObject *defObject; 00044 00045 void* operator new(size_t n) 00046 { 00047 return vtkVRMLAllocator::AllocateMemory(n); 00048 } 00049 00050 void operator delete(void *vtkNotUsed(ptr)) {} 00051 }; 00052 00053 00054 00055 class VrmlNodeType { 00056 public: 00057 // Constructor. Takes name of new type (e.g. "Transform" or "Box") 00058 // Copies the string given as name. 00059 VrmlNodeType(const char *nm); 00060 00061 // Destructor exists mainly to deallocate storage for name 00062 ~VrmlNodeType(); 00063 00064 // Routines for adding/getting eventIns/Outs/fields 00065 void addEventIn(const char *name, int type); 00066 void addEventOut(const char *name, int type); 00067 void addField(const char *name, int type); 00068 void addExposedField(const char *name, int type); 00069 00070 int hasEventIn(const char *name) const; 00071 int hasEventOut(const char *name) const; 00072 int hasField(const char *name) const; 00073 int hasExposedField(const char *name) const; 00074 00075 const char *getName() const { return name; } 00076 00077 void* operator new(size_t n) 00078 { 00079 return vtkVRMLAllocator::AllocateMemory(n); 00080 } 00081 00082 void operator delete(void *vtkNotUsed(ptr)) {} 00083 00084 struct NameTypeRec { 00085 char *name; 00086 int type; 00087 00088 void* operator new(size_t n) 00089 { 00090 return vtkVRMLAllocator::AllocateMemory(n); 00091 } 00092 00093 void operator delete(void *vtkNotUsed(ptr)) {} 00094 00095 }; 00096 00097 // This is used to keep track of which field in which type of node is being 00098 // parsed. Field are nested (nodes are contained inside MFNode/SFNode fields) 00099 // so a stack of these is needed: 00100 struct FieldRec 00101 { 00102 const VrmlNodeType *nodeType; 00103 const char *fieldName; 00104 }; 00105 00106 private: 00107 void add(vtkVRMLVectorType<NameTypeRec*> &,const char *,int); 00108 int has(const vtkVRMLVectorType<NameTypeRec*> &,const char *) const; 00109 00110 char *name; 00111 00112 vtkVRMLVectorType<NameTypeRec*> eventIns; 00113 vtkVRMLVectorType<NameTypeRec*> eventOuts; 00114 vtkVRMLVectorType<NameTypeRec*> fields; 00115 }; 00116 00117 class vtkVRMLYaccData 00118 { 00119 public: 00120 vtkVRMLYaccData(); 00121 ~vtkVRMLYaccData(); 00122 typedef unsigned char YY_CHAR; 00123 typedef int yy_state_type; 00124 private: 00125 vtkVRMLYaccData(const vtkVRMLYaccData&); // Not implemented 00126 vtkVRMLYaccData& operator=(const vtkVRMLYaccData&); // Not implemented 00127 public: 00128 // Parser variables and functions: 00129 // Currently-being-define proto. Prototypes may be nested, so a stack 00130 // is needed: 00131 vtkVRMLVectorType<VrmlNodeType*> *CurrentProtoStack;// = NULL; 00132 00133 // Some helper routines defined below: 00134 void beginProto(const char *); 00135 void endProto(); 00136 00137 int addField(const char *type, const char *name); 00138 int addEventIn(const char *type, const char *name); 00139 int addEventOut(const char *type, const char *name); 00140 int addExposedField(const char *type, const char *name); 00141 int add(void (VrmlNodeType::*)(const char *, int), const char *, 00142 const char *); 00143 int fieldType(const char *type); 00144 void inScript(); 00145 void expect(int type); 00146 00147 void yyerror(const char *); 00148 int yylex(vtkVRMLImporter* self); 00149 00150 class FakeAlloca; 00151 00152 typedef union { 00153 char *string; 00154 00155 /* Other types that will be needed by a true VRML implementation 00156 * (but are not defined by this parser due to the complexity): 00157 * Node *node; 00158 * list<Node *> *nodeList; 00159 */ 00160 00161 float sffloat; 00162 vtkPoints *vec3f; 00163 vtkFloatArray *vec2f; 00164 vtkIdTypeArray *mfint32; 00165 int sfint; 00166 } YYSTYPE; 00167 00168 00169 typedef 00170 struct yyltype 00171 { 00172 int timestamp; 00173 int first_line; 00174 int first_column; 00175 int last_line; 00176 int last_column; 00177 char *text; 00178 } 00179 yyltype; 00180 00181 00182 int yychar; /* the lookahead symbol */ 00183 YYSTYPE yylval; /* the semantic value of the */ 00184 /* lookahead symbol */ 00185 yyltype yylloc; /* location data for the lookahead */ 00186 /* symbol */ 00187 int yynerrs; /* number of parse errors so far */ 00188 // Lexer variables and functions: 00189 int yyleng; 00190 FILE *yyin, *yyout; 00191 int yywrap(void ); 00192 00193 struct yy_buffer_state 00194 { 00195 FILE *yy_input_file; 00196 00197 char *yy_ch_buf; /* input buffer */ 00198 char *yy_buf_pos; /* current position in input buffer */ 00199 00200 /* Size of input buffer in bytes, not including room for EOB 00201 * characters. 00202 */ 00203 int yy_buf_size; 00204 00205 /* Number of characters read into yy_ch_buf, not including EOB 00206 * characters. 00207 */ 00208 int yy_n_chars; 00209 00210 /* Whether this is an "interactive" input source; if so, and 00211 * if we're using stdio for input, then we want to use getc() 00212 * instead of fread(), to make sure we stop fetching input after 00213 * each newline. 00214 */ 00215 int yy_is_interactive; 00216 00217 /* Whether to try to fill the input buffer when we reach the 00218 * end of it. 00219 */ 00220 int yy_fill_buffer; 00221 00222 enum YY_BUFFER_STATUS_STATE { 00223 YY_BUFFER_NEW=0, 00224 YY_BUFFER_NORMAL=1, 00225 /* When an EOF's been seen but there's still some text to process 00226 * then we mark the buffer as YY_EOF_PENDING, to indicate that we 00227 * shouldn't try reading from the input source any more. We might 00228 * still have a bunch of tokens to match, though, because of 00229 * possible backing-up. 00230 * 00231 * When we actually see the EOF, we change the status to "new" 00232 * (via yyrestart()), so that the user can continue scanning by 00233 * just pointing yyin at a new input file. 00234 */ 00235 YY_BUFFER_EOF_PENDING=2 00236 }; 00237 YY_BUFFER_STATUS_STATE yy_buffer_status; 00238 00239 }; 00240 typedef struct yy_buffer_state *YY_BUFFER_STATE; 00241 00242 YY_BUFFER_STATE yy_current_buffer;// = 0; 00243 00244 /* yy_hold_char holds the character lost when yytext is formed. */ 00245 char yy_hold_char; 00246 00247 int yy_n_chars; /* number of characters read into yy_ch_buf */ 00248 00249 00250 /* Points to current character in buffer. */ 00251 char *yy_c_buf_p;// = (char *) 0; 00252 int yy_init;// = 1; /* whether we need to initialize */ 00253 int yy_start;// = 0; /* start state number */ 00254 00255 /* Flag which is used to allow yywrap()'s to do buffer switches 00256 * instead of setting up a fresh yyin. A bit of a hack ... 00257 */ 00258 int yy_did_buffer_switch_on_eof; 00259 00260 void yyrestart ( FILE *input_file ); 00261 void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); 00262 void yy_load_buffer_state ( void ); 00263 YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); 00264 void yy_delete_buffer ( YY_BUFFER_STATE b ); 00265 void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); 00266 00267 void *yy_flex_alloc ( unsigned int ); 00268 void *yy_flex_realloc ( void *, unsigned int ); 00269 void yy_flex_free ( void * ); 00270 00271 char *yytext; 00272 00273 yy_state_type yy_get_previous_state ( void ); 00274 yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); 00275 int yy_get_next_buffer ( void ); 00276 void yy_fatal_error ( const char msg[] ); 00277 00278 yy_state_type yy_last_accepting_state; 00279 char *yy_last_accepting_cpos; 00280 00281 int yy_flex_debug;// = 1; 00282 00283 // used to reset the lexer input after initialization of VRML nodes 00284 void (*theyyInput)(char *, int &, int, vtkVRMLYaccData*); 00285 00286 00287 /* Current line number */ 00288 int currentLineNumber;// = 1; 00289 void yyResetLineNumber() { currentLineNumber = 1; } 00290 00291 /* The YACC parser sets this to a token to direct the lexer */ 00292 /* in cases where just syntax isn't enough: */ 00293 int expectToken;// = 0; 00294 00295 /* True when parsing a multiple-valued field: */ 00296 int parsing_mf;// = 0; 00297 00298 /* These are used when parsing SFImage fields: */ 00299 int sfImageIntsParsed;// = 0; 00300 int sfImageIntsExpected;// = 0; 00301 00302 int yydebug; /* nonzero means print parse trace */ 00303 int yyparse(vtkVRMLImporter* self); 00304 00305 static void memyyInput(char *buf, int &result, int max_size, vtkVRMLYaccData* self); 00306 static void defyyInput(char *buf, int &result, int max_size, vtkVRMLYaccData* self); 00307 00308 int memyyInput_i;// = 0; 00309 int memyyInput_j;// = 0; 00310 00311 // Used during the parsing 00312 int creatingDEF;// = 0; 00313 char *curDEFName; 00314 00315 // Node types are stored in this data structure: 00316 vtkVRMLVectorType<VrmlNodeType*>* typeList; 00317 vtkVRMLVectorType<vtkVRMLUseStruct *>* useList; 00318 vtkVRMLVectorType<VrmlNodeType::FieldRec*>* currentField; 00319 00320 // Moved from VrmlNodeType when getting rid of static data 00321 // 00322 // Namespace management functions. PROTO definitions add node types 00323 // to the namespace. PROTO implementations are a separate node 00324 // namespace, and require that any nested PROTOs NOT be available 00325 // outside the PROTO implementation. 00326 // addToNameSpace will print an error to stderr if the given type 00327 // is already defined. 00328 void addToNameSpace(VrmlNodeType *); 00329 void pushNameSpace(); 00330 void popNameSpace(); 00331 00332 // Find a node type, given its name. Returns NULL if type is not defined. 00333 const VrmlNodeType *find(const char *nm); 00334 00335 }; 00336 00337 //------------------------------------------------------------------------------------ 00338 // 00339 // Implementation of the above begins here 00340 // 00341 00342 VrmlNodeType::VrmlNodeType(const char *nm) 00343 { 00344 assert(nm != NULL); 00345 name = static_cast<char*>( 00346 vtkVRMLAllocator::AllocateMemory((strlen(nm)+1)*sizeof(char))); 00347 strcpy(name, nm); 00348 } 00349 00350 VrmlNodeType::~VrmlNodeType() 00351 { 00352 // Free strings duplicated when fields/eventIns/eventOuts added: 00353 00354 int i; 00355 for (i = 0;i < eventIns.Count(); i++) 00356 { 00357 NameTypeRec *r = eventIns[i]; 00358 // free(r->name); 00359 delete r; 00360 } 00361 for (i = 0;i < eventOuts.Count(); i++) 00362 { 00363 NameTypeRec *r = eventOuts[i]; 00364 // free(r->name); 00365 delete r; 00366 } 00367 for (i = 0;i < fields.Count(); i++) 00368 { 00369 NameTypeRec *r = fields[i]; 00370 // free(r->name); 00371 delete r; 00372 } 00373 } 00374 void 00375 VrmlNodeType::addEventIn(const char *nodeName, int type) 00376 { 00377 add(eventIns, nodeName, type); 00378 }; 00379 void 00380 VrmlNodeType::addEventOut(const char *nodeName, int type) 00381 { 00382 add(eventOuts, nodeName, type); 00383 }; 00384 void 00385 VrmlNodeType::addField(const char *nodeName, int type) 00386 { 00387 add(fields, nodeName, type); 00388 }; 00389 void 00390 VrmlNodeType::addExposedField(const char *nodeName, int type) 00391 { 00392 char tmp[1000]; 00393 add(fields, nodeName, type); 00394 sprintf(tmp, "set_%s", nodeName); 00395 add(eventIns, tmp, type); 00396 sprintf(tmp, "%s_changed", nodeName); 00397 add(eventOuts, tmp, type); 00398 }; 00399 00400 void 00401 VrmlNodeType::add(vtkVRMLVectorType<NameTypeRec*> &recs, const char *nodeName, int type) 00402 { 00403 NameTypeRec *r = new NameTypeRec; 00404 r->name = vtkVRMLAllocator::StrDup(nodeName); //strdup(nodeName); 00405 r->type = type; 00406 recs += r; 00407 } 00408 00409 int 00410 VrmlNodeType::hasEventIn(const char *nodeName) const 00411 { 00412 return has(eventIns, nodeName); 00413 } 00414 int 00415 VrmlNodeType::hasEventOut(const char *nodeName) const 00416 { 00417 return has(eventOuts, nodeName); 00418 } 00419 int 00420 VrmlNodeType::hasField(const char *nodeName) const 00421 { 00422 return has(fields, nodeName); 00423 } 00424 int 00425 VrmlNodeType::hasExposedField(const char *nodeName) const 00426 { 00427 // Must have field "name", eventIn "set_name", and eventOut 00428 // "name_changed", all with same type: 00429 char tmp[1000]; 00430 int type; 00431 if ( (type = has(fields, nodeName)) == 0) return 0; 00432 00433 sprintf(tmp, "set_%s\n", nodeName); 00434 if (type != has(eventIns, nodeName)) return 0; 00435 00436 sprintf(tmp, "%s_changed", nodeName); 00437 if (type != has(eventOuts, nodeName)) return 0; 00438 00439 return type; 00440 } 00441 int 00442 VrmlNodeType::has(const vtkVRMLVectorType<NameTypeRec*> &recs, const char *nodeName) const 00443 { 00444 for (int i = 0;i < recs.Count(); i++) 00445 { 00446 NameTypeRec *n = recs.Get(i); 00447 if (strcmp(n->name, nodeName) == 0) 00448 return n->type; 00449 } 00450 return 0; 00451 } 00452 00453 00454 00455 00456 //---------------------------------------------------------------------------- 00457 vtkVRMLYaccData::vtkVRMLYaccData() 00458 { 00459 yy_current_buffer = NULL; 00460 yy_c_buf_p = NULL; 00461 yy_init = 1; 00462 yy_start = 0; 00463 yy_flex_debug = 1; 00464 yyin = NULL; 00465 yyout = NULL; 00466 currentLineNumber = 1; 00467 expectToken = 0; 00468 parsing_mf = 0; 00469 sfImageIntsExpected = 0; 00470 sfImageIntsParsed = 0; 00471 memyyInput_i = 0; 00472 memyyInput_j = 0; 00473 creatingDEF = 0; 00474 theyyInput = NULL; 00475 00476 typeList = NULL; 00477 useList = NULL; 00478 currentField = NULL; 00479 } 00480 00481 //---------------------------------------------------------------------------- 00482 vtkVRMLYaccData::~vtkVRMLYaccData() 00483 { 00484 if (yy_current_buffer) 00485 { 00486 yy_delete_buffer(yy_current_buffer); 00487 yy_current_buffer = NULL; 00488 } 00489 } 00490 00491 00492 void vtkVRMLYaccData::addToNameSpace(VrmlNodeType *_type) 00493 { 00494 if (find(_type->getName()) != NULL) 00495 { 00496 cerr << "PROTO " << _type->getName() << " already defined\n"; 00497 return; 00498 } 00499 *typeList += _type; 00500 } 00501 00502 // 00503 // One list is used to store all the node types. Nested namespaces are 00504 // separated by NULL elements. 00505 // This isn't terribly efficient, but it is nice and simple. 00506 // 00507 void vtkVRMLYaccData::pushNameSpace() 00508 { 00509 *typeList += (VrmlNodeType *) NULL; 00510 } 00511 00512 void vtkVRMLYaccData::popNameSpace() 00513 { 00514 // Remove everything up to and including the next NULL marker: 00515 for (int i = 0;i < typeList->Count(); i++) 00516 { 00517 VrmlNodeType *nodeType = typeList->Pop(); 00518 00519 if (nodeType == NULL) 00520 { 00521 break; 00522 } 00523 else 00524 { 00525 // NOTE: Instead of just deleting the VrmlNodeTypes, you will 00526 // probably want to reference count or garbage collect them, since 00527 // any nodes created as part of the PROTO implementation will 00528 // probably point back to their VrmlNodeType structure. 00529 delete nodeType; 00530 } 00531 } 00532 } 00533 00534 const VrmlNodeType* vtkVRMLYaccData::find(const char *_name) 00535 { 00536 // Look through the type stack: 00537 for (int i = 0;i < typeList->Count(); i++) 00538 { 00539 const VrmlNodeType *nt = (*typeList)[i]; 00540 if (nt != NULL && strcmp(nt->getName(),_name) == 0) 00541 { 00542 return nt; 00543 } 00544 } 00545 return NULL; 00546 } 00547 00548 00549 // Begin of Auto-generated Parser Code 00550 00551 00552 /* A Bison parser, made from parser.y with Bison version GNU Bison version 1.24 00553 */ 00554 00555 #define YYBISON 1 /* Identify Bison output. */ 00556 00557 #define IDENTIFIER 258 00558 #define DEF 259 00559 #define USE 260 00560 #define PROTO 261 00561 #define EXTERNPROTO 262 00562 #define TO 263 00563 #define IS 264 00564 #define ROUTE 265 00565 #define SFN_NULL 266 00566 #define EVENTIN 267 00567 #define EVENTOUT 268 00568 #define FIELD 269 00569 #define EXPOSEDFIELD 270 00570 #define SFBOOL 271 00571 #define SFCOLOR 272 00572 #define SFFLOAT 273 00573 #define SFIMAGE 274 00574 #define SFINT32 275 00575 #define SFNODE 276 00576 #define SFROTATION 277 00577 #define SFSTRING 278 00578 #define SFTIME 279 00579 #define SFVEC2F 280 00580 #define SFVEC3F 281 00581 #define MFCOLOR 282 00582 #define MFFLOAT 283 00583 #define MFINT32 284 00584 #define MFROTATION 285 00585 #define MFSTRING 286 00586 #define MFVEC2F 287 00587 #define MFVEC3F 288 00588 #define MFNODE 289 00589 00590 00591 00592 // 00593 // Parser for VRML 2.0 files. 00594 // This is a minimal parser that does NOT generate an in-memory scene graph. 00595 // 00596 00597 // The original parser was developed on a Windows 95 PC with 00598 // Borland's C++ 5.0 development tools. This was then ported 00599 // to a Windows 95 PC with Microsoft's MSDEV C++ 4.0 development 00600 // tools. The port introduced the ifdef's for 00601 // USING_BORLAND_CPP_5 : since this provides a "std namespace", 00602 // TWO_ARGUMENTS_FOR_STL_STACK : STL is a moving target. The stack template 00603 // class takes either one or two arguments. 00604 00605 00606 #define YYDEBUG 1 00607 00608 #include <stdlib.h> 00609 00610 00611 00612 00613 // This is used when the parser knows what kind of token it expects 00614 // to get next-- used when parsing field values (whose types are declared 00615 // and read by the parser) and at certain other places: 00616 //extern int expectToken; 00617 00618 // Current line number (set by lexer) 00619 //extern int currentLineNumber; 00620 00621 // Some helper routines defined below: 00622 //static void beginProto(const char *); 00623 //static void endProto(); 00624 00625 //static int addField(const char *type, const char *name); 00626 //static int addEventIn(const char *type, const char *name); 00627 //static int addEventOut(const char *type, const char *name); 00628 //static int addExposedField(const char *type, const char *name); 00629 //static int add(void (VrmlNodeType::*)(const char *, int), const char *, 00630 // const char *); 00631 //static int fieldType(const char *type); 00632 //static void inScript(); 00633 //static void expect(int type); 00634 00635 //void yyerror(const char *); 00636 //int yylex(vtkVRMLImporter* self); 00637 00638 00639 00640 #ifndef YYLTYPE 00641 00642 #define YYLTYPE yyltype 00643 #endif 00644 00645 #define YYFINAL 128 00646 #define YYFLAG -32768 00647 #define YYNTBASE 40 00648 00649 #define YYTRANSLATE(x) ((unsigned)(x) <= 289 ? yytranslate[x] : 68) 00650 00651 static const char yytranslate[] = { 0, 00652 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00653 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00654 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00655 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00656 2, 2, 2, 2, 2, 39, 2, 2, 2, 2, 00657 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00658 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00659 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00660 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00661 35, 2, 36, 2, 2, 2, 2, 2, 2, 2, 00662 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00663 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00664 2, 2, 37, 2, 38, 2, 2, 2, 2, 2, 00665 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00666 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00667 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00668 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00669 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00670 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00671 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00672 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00673 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00674 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00675 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00676 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 00677 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, 00678 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 00679 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 00680 26, 27, 28, 29, 30, 31, 32, 33, 34 00681 }; 00682 00683 #if YYDEBUG != 0 00684 static const short yyprhs[] = { 0, 00685 0, 2, 3, 6, 8, 10, 12, 14, 15, 16, 00686 22, 25, 27, 29, 30, 40, 41, 42, 51, 52, 00687 55, 59, 63, 64, 70, 71, 77, 78, 81, 85, 00688 89, 93, 97, 106, 107, 113, 114, 117, 118, 122, 00689 124, 126, 130, 134, 135, 141, 147, 153, 155, 157, 00690 159, 161, 163, 165, 167, 169, 171, 173, 175, 177, 00691 179, 181, 183, 185, 187, 190, 193, 196, 199, 203, 00692 205, 206 00693 }; 00694 00695 static const short yyrhs[] = { 41, 00696 0, 0, 41, 42, 0, 43, 0, 46, 0, 58, 00697 0, 59, 0, 0, 0, 4, 44, 3, 45, 59, 00698 0, 5, 3, 0, 47, 0, 49, 0, 0, 6, 00699 3, 48, 35, 52, 36, 37, 41, 38, 0, 0, 00700 0, 7, 3, 50, 35, 56, 36, 51, 65, 0, 00701 0, 52, 53, 0, 12, 3, 3, 0, 13, 3, 00702 3, 0, 0, 14, 3, 3, 54, 65, 0, 0, 00703 15, 3, 3, 55, 65, 0, 0, 56, 57, 0, 00704 12, 3, 3, 0, 13, 3, 3, 0, 14, 3, 00705 3, 0, 15, 3, 3, 0, 10, 3, 39, 3, 00706 8, 3, 39, 3, 0, 0, 3, 60, 37, 61, 00707 38, 0, 0, 61, 62, 0, 0, 3, 63, 65, 00708 0, 58, 0, 46, 0, 12, 3, 3, 0, 13, 00709 3, 3, 0, 0, 14, 3, 3, 64, 65, 0, 00710 12, 3, 3, 9, 3, 0, 13, 3, 3, 9, 00711 3, 0, 16, 0, 17, 0, 27, 0, 18, 0, 00712 28, 0, 19, 0, 20, 0, 29, 0, 22, 0, 00713 30, 0, 23, 0, 31, 0, 24, 0, 25, 0, 00714 32, 0, 26, 0, 33, 0, 21, 43, 0, 21, 00715 11, 0, 34, 66, 0, 9, 3, 0, 35, 67, 00716 36, 0, 43, 0, 0, 67, 43, 0 00717 }; 00718 00719 #endif 00720 00721 #if YYDEBUG != 0 00722 static const short yyrline[] = { 0, 00723 106, 109, 111, 114, 116, 117, 120, 122, 123, 124, 00724 125, 128, 130, 133, 135, 139, 141, 143, 145, 147, 00725 150, 153, 155, 157, 158, 160, 163, 165, 168, 171, 00726 173, 175, 179, 184, 186, 189, 191, 194, 196, 197, 00727 198, 201, 202, 203, 206, 207, 209, 213, 215, 216, 00728 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 00729 227, 228, 229, 230, 232, 233, 234, 235, 238, 240, 00730 243, 245 00731 }; 00732 00733 static const char * const yytname[] = { "$","error","$undefined.","IDENTIFIER", 00734 "DEF","USE","PROTO","EXTERNPROTO","TO","IS","ROUTE","SFN_NULL","EVENTIN","EVENTOUT", 00735 "FIELD","EXPOSEDFIELD","SFBOOL","SFCOLOR","SFFLOAT","SFIMAGE","SFINT32","SFNODE", 00736 "SFROTATION","SFSTRING","SFTIME","SFVEC2F","SFVEC3F","MFCOLOR","MFFLOAT","MFINT32", 00737 "MFROTATION","MFSTRING","MFVEC2F","MFVEC3F","MFNODE","'['","']'","'{'","'}'", 00738 "'.'","vrmlscene","declarations","declaration","nodeDeclaration","@1","@2","protoDeclaration", 00739 "proto","@3","externproto","@4","@5","interfaceDeclarations","interfaceDeclaration", 00740 "@6","@7","externInterfaceDeclarations","externInterfaceDeclaration","routeDeclaration", 00741 "node","@8","nodeGuts","nodeGut","@9","@10","fieldValue","mfnodeValue","nodes", 00742 "" 00743 }; 00744 #endif 00745 00746 static const short yyr1[] = { 0, 00747 40, 41, 41, 42, 42, 42, 43, 44, 45, 43, 00748 43, 46, 46, 48, 47, 50, 51, 49, 52, 52, 00749 53, 53, 54, 53, 55, 53, 56, 56, 57, 57, 00750 57, 57, 58, 60, 59, 61, 61, 63, 62, 62, 00751 62, 62, 62, 64, 62, 62, 62, 65, 65, 65, 00752 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 00753 65, 65, 65, 65, 65, 65, 65, 65, 66, 66, 00754 67, 67 00755 }; 00756 00757 static const short yyr2[] = { 0, 00758 1, 0, 2, 1, 1, 1, 1, 0, 0, 5, 00759 2, 1, 1, 0, 9, 0, 0, 8, 0, 2, 00760 3, 3, 0, 5, 0, 5, 0, 2, 3, 3, 00761 3, 3, 8, 0, 5, 0, 2, 0, 3, 1, 00762 1, 3, 3, 0, 5, 5, 5, 1, 1, 1, 00763 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 00764 1, 1, 1, 1, 2, 2, 2, 2, 3, 1, 00765 0, 2 00766 }; 00767 00768 static const short yydefact[] = { 2, 00769 1, 34, 8, 0, 0, 0, 0, 3, 4, 5, 00770 12, 13, 6, 7, 0, 0, 11, 14, 16, 0, 00771 36, 9, 0, 0, 0, 0, 0, 19, 27, 0, 00772 38, 0, 0, 0, 35, 41, 40, 37, 10, 0, 00773 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 00774 0, 20, 0, 0, 0, 0, 17, 28, 0, 0, 00775 48, 49, 51, 53, 54, 0, 56, 58, 60, 61, 00776 63, 50, 52, 55, 57, 59, 62, 64, 0, 39, 00777 42, 43, 44, 0, 0, 0, 0, 2, 0, 0, 00778 0, 0, 0, 0, 68, 66, 65, 71, 70, 67, 00779 0, 0, 0, 21, 22, 23, 25, 0, 29, 30, 00780 31, 32, 18, 33, 0, 46, 47, 45, 0, 0, 00781 15, 69, 72, 24, 26, 0, 0, 0 00782 }; 00783 00784 static const short yydefgoto[] = { 126, 00785 1, 8, 9, 16, 27, 10, 11, 23, 12, 24, 00786 93, 40, 52, 119, 120, 41, 58, 13, 14, 15, 00787 26, 38, 43, 103, 80, 100, 115 00788 }; 00789 00790 static const short yypact[] = {-32768, 00791 79,-32768,-32768, -1, 0, 3, 4,-32768,-32768,-32768, 00792 -32768,-32768,-32768,-32768, -28, 11,-32768,-32768,-32768, -18, 00793 -32768,-32768, -6, 5, 32, -2, 38,-32768,-32768, 35, 00794 -32768, 39, 41, 45,-32768,-32768,-32768,-32768,-32768, 19, 00795 66, 48, 43, 50, 51, 54, 84, 85, 87, 88, 00796 55,-32768, 90, 91, 92, 93,-32768,-32768, 58, 95, 00797 -32768,-32768,-32768,-32768,-32768, 34,-32768,-32768,-32768,-32768, 00798 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 23,-32768, 00799 94, 96,-32768, 97, 98, 101, 103,-32768, 104, 105, 00800 106, 107, 43, 108,-32768,-32768,-32768,-32768,-32768,-32768, 00801 109, 110, 43,-32768,-32768,-32768,-32768, 12,-32768,-32768, 00802 -32768,-32768,-32768,-32768, 20,-32768,-32768,-32768, 43, 43, 00803 -32768,-32768,-32768,-32768,-32768, 99, 114,-32768 00804 }; 00805 00806 static const short yypgoto[] = {-32768, 00807 27,-32768, -66,-32768,-32768, 100,-32768,-32768,-32768,-32768, 00808 -32768,-32768,-32768,-32768,-32768,-32768,-32768, 102, 89,-32768, 00809 -32768,-32768,-32768,-32768, -73,-32768,-32768 00810 }; 00811 00812 00813 #define YYLAST 128 00814 00815 00816 static const short yytable[] = { 97, 00817 31, 17, 18, 5, 6, 19, 20, 7, 21, 32, 00818 33, 34, 99, 22, 2, 3, 4, 5, 6, 113, 00819 25, 7, 2, 3, 4, 2, 3, 4, 28, 118, 00820 47, 48, 49, 50, 30, 35, 2, 3, 4, 29, 00821 2, 44, 42, 45, 96, 124, 125, 46, 123, 121, 00822 59, 60, 81, 82, 51, 122, 83, 98, 61, 62, 00823 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 00824 73, 74, 75, 76, 77, 78, 79, 53, 54, 55, 00825 56, 2, 3, 4, 5, 6, 84, 85, 7, 86, 00826 87, 88, 89, 90, 91, 92, 94, 95, 127, 104, 00827 105, 57, 101, 106, 102, 107, 109, 110, 111, 112, 00828 114, 116, 117, 128, 108, 39, 0, 0, 0, 0, 00829 0, 0, 0, 0, 0, 36, 0, 37 00830 }; 00831 00832 static const short yycheck[] = { 66, 00833 3, 3, 3, 6, 7, 3, 3, 10, 37, 12, 00834 13, 14, 79, 3, 3, 4, 5, 6, 7, 93, 00835 39, 10, 3, 4, 5, 3, 4, 5, 35, 103, 00836 12, 13, 14, 15, 3, 38, 3, 4, 5, 35, 00837 3, 3, 8, 3, 11, 119, 120, 3, 115, 38, 00838 3, 9, 3, 3, 36, 36, 3, 35, 16, 17, 00839 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 00840 28, 29, 30, 31, 32, 33, 34, 12, 13, 14, 00841 15, 3, 4, 5, 6, 7, 3, 3, 10, 3, 00842 3, 37, 3, 3, 3, 3, 39, 3, 0, 3, 00843 3, 36, 9, 3, 9, 3, 3, 3, 3, 3, 00844 3, 3, 3, 0, 88, 27, -1, -1, -1, -1, 00845 -1, -1, -1, -1, -1, 26, -1, 26 00846 }; 00847 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ 00848 00849 00850 /* Skeleton output parser for bison, 00851 Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. 00852 00853 This program is free software; you can redistribute it and/or modify 00854 it under the terms of the GNU General Public License as published by 00855 the Free Software Foundation; either version 2, or (at your option) 00856 any later version. 00857 00858 This program is distributed in the hope that it will be useful, 00859 but WITHOUT ANY WARRANTY; without even the implied warranty of 00860 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00861 GNU General Public License for more details. 00862 00863 You should have received a copy of the GNU General Public License 00864 along with this program; if not, write to the Free Software 00865 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ 00866 00867 /* As a special exception, when this file is copied by Bison into a 00868 Bison output file, you may use that output file without restriction. 00869 This special exception was added by the Free Software Foundation 00870 in version 1.24 of Bison. */ 00871 00872 //extern int yylex(vtkVRMLImporter* self); 00873 //extern void yyerror(); 00874 00875 #include <list> 00876 // 00877 // This file was originally generated from a yacc grammar source 00878 // file, but subsequently it has been locally modified to suit 00879 // VTK's needs. The use of alloca -- part of the original parser 00880 // boilerplate became problematic because the confusing 00881 // preprocessor #defines with respect to alloca were causing 00882 // compile problems with newer versions of CLang. 00883 // 00884 // This class replaces alloca with a malloc-based allocator that 00885 // cleans up after itself when the FakeAlloca object goes out of 00886 // scope. Whatever performance penalty this incurs is minor and 00887 // would only be noticeably if a very large, deeply nested VRML 00888 // file was imported; in the real world, I think alloca was very 00889 // rarely called here. 00890 00891 class vtkVRMLYaccData::FakeAlloca 00892 { 00893 public: 00894 typedef std::list<void *> list_type; 00895 ~FakeAlloca() 00896 { 00897 for(list_type::iterator it = this->m_allocs.begin(); 00898 it != this->m_allocs.end(); ++it) 00899 { 00900 free(*it); 00901 } 00902 } 00903 void *Allocate(size_t size) 00904 { 00905 void *rval = malloc(size); 00906 m_allocs.push_back(rval); 00907 return rval; 00908 } 00909 private: 00910 list_type m_allocs; 00911 }; 00912 /* This is the parser code that is written into each bison parser 00913 when the %semantic_parser declaration is not specified in the grammar. 00914 It was written by Richard Stallman by simplifying the hairy parser 00915 used when %semantic_parser is specified. */ 00916 00917 /* Note: there must be only one dollar sign in this file. 00918 It is replaced by the list of actions, each action 00919 as one case of the switch. */ 00920 00921 #define yyerrok (yyerrstatus = 0) 00922 #define yyclearin (yychar = YYEMPTY) 00923 #define YYEMPTY -2 00924 #define YYEOF 0 00925 #define YYACCEPT return(0) 00926 #define YYABORT return(1) 00927 #define YYERROR goto yyerrlab1 00928 /* Like YYERROR except do call yyerror. 00929 This remains here temporarily to ease the 00930 transition to the new meaning of YYERROR, for GCC. 00931 Once GCC version 2 has supplanted version 1, this can go. */ 00932 #define YYFAIL goto yyerrlab 00933 #define YYRECOVERING() (!!yyerrstatus) 00934 #define YYBACKUP(token, value) \ 00935 do \ 00936 if (yychar == YYEMPTY && yylen == 1) \ 00937 { yychar = (token), yylval = (value); \ 00938 yychar1 = YYTRANSLATE (yychar); \ 00939 YYPOPSTACK; \ 00940 goto yybackup; \ 00941 } \ 00942 else \ 00943 { yyerror ("syntax error: cannot back up"); YYERROR; } \ 00944 while (0) 00945 00946 #define YYTERROR 1 00947 #define YYERRCODE 256 00948 00949 00950 /* YYINITDEPTH indicates the initial size of the parser's stacks */ 00951 00952 #ifndef YYINITDEPTH 00953 #define YYINITDEPTH 200 00954 #endif 00955 00956 /* YYMAXDEPTH is the maximum size the stacks can grow to 00957 (effective only if the built-in stack extension method is used). */ 00958 00959 #if defined(YYMAXDEPTH) && (YYMAXDEPTH == 0) 00960 #undef YYMAXDEPTH 00961 #endif 00962 00963 #ifndef YYMAXDEPTH 00964 #define YYMAXDEPTH 10000 00965 #endif 00966 00967 static void 00968 __yy_memcpy (char *from, char *to, int count) 00969 { 00970 char *f = from; 00971 char *t = to; 00972 int i = count; 00973 00974 while (i-- > 0) 00975 *t++ = *f++; 00976 } 00977 00978 00979 int vtkVRMLYaccData::yyparse(vtkVRMLImporter* self) 00980 { 00981 FakeAlloca yyallocator; 00982 int yystate; 00983 int yyn; 00984 short *yyssp; 00985 YYSTYPE *yyvsp; 00986 int yyerrstatus; /* number of tokens to shift before error messages enabled */ 00987 int yychar1 = 0; /* lookahead token as an internal (translated) token number */ 00988 00989 short yyssa[YYINITDEPTH]; /* the state stack */ 00990 YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ 00991 00992 short *yyss = yyssa; /* refer to the stacks thru separate pointers */ 00993 YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ 00994 00995 #ifdef YYLSP_NEEDED 00996 YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ 00997 YYLTYPE *yyls = yylsa; 00998 YYLTYPE *yylsp; 00999 01000 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) 01001 #else 01002 #define YYPOPSTACK (yyvsp--, yyssp--) 01003 #endif 01004 01005 int yystacksize = YYINITDEPTH; 01006 01007 #ifdef YYPURE 01008 int yychar; 01009 YYSTYPE yylval; 01010 int yynerrs; 01011 #ifdef YYLSP_NEEDED 01012 YYLTYPE yylloc; 01013 #endif 01014 #endif 01015 01016 YYSTYPE yyval; /* the variable used to return */ 01017 /* semantic values from the action */ 01018 /* routines */ 01019 01020 int yylen; 01021 01022 #if YYDEBUG != 0 01023 if (yydebug) 01024 fprintf(stderr, "Starting parse\n"); 01025 #endif 01026 01027 yystate = 0; 01028 yyerrstatus = 0; 01029 yynerrs = 0; 01030 yychar = YYEMPTY; /* Cause a token to be read. */ 01031 01032 /* Initialize stack pointers. 01033 Waste one element of value and location stack 01034 so that they stay on the same level as the state stack. 01035 The wasted elements are never initialized. */ 01036 01037 yyssp = yyss - 1; 01038 yyvsp = yyvs; 01039 #ifdef YYLSP_NEEDED 01040 yylsp = yyls; 01041 #endif 01042 01043 /* Push a new state, which is found in yystate . */ 01044 /* In all cases, when you get here, the value and location stacks 01045 have just been pushed. so pushing a state here evens the stacks. */ 01046 yynewstate: 01047 01048 *++yyssp = yystate; 01049 01050 if (yyssp >= yyss + yystacksize - 1) 01051 { 01052 /* Give user a chance to reallocate the stack */ 01053 /* Use copies of these so that the &'s don't force the real ones into memory. */ 01054 YYSTYPE *yyvs1 = yyvs; 01055 short *yyss1 = yyss; 01056 #ifdef YYLSP_NEEDED 01057 YYLTYPE *yyls1 = yyls; 01058 #endif 01059 01060 /* Get the current used size of the three stacks, in elements. */ 01061 int size = yyssp - yyss + 1; 01062 01063 #ifdef yyoverflow 01064 /* Each stack pointer address is followed by the size of 01065 the data in use in that stack, in bytes. */ 01066 #ifdef YYLSP_NEEDED 01067 /* This used to be a conditional around just the two extra args, 01068 but that might be undefined if yyoverflow is a macro. */ 01069 yyoverflow("parser stack overflow", 01070 &yyss1, size * sizeof (*yyssp), 01071 &yyvs1, size * sizeof (*yyvsp), 01072 &yyls1, size * sizeof (*yylsp), 01073 &yystacksize); 01074 #else 01075 yyoverflow("parser stack overflow", 01076 &yyss1, size * sizeof (*yyssp), 01077 &yyvs1, size * sizeof (*yyvsp), 01078 &yystacksize); 01079 #endif 01080 01081 yyss = yyss1; yyvs = yyvs1; 01082 #ifdef YYLSP_NEEDED 01083 yyls = yyls1; 01084 #endif 01085 #else /* no yyoverflow */ 01086 /* Extend the stack our own way. */ 01087 if (yystacksize >= YYMAXDEPTH) 01088 { 01089 yyerror("parser stack overflow"); 01090 return 2; 01091 } 01092 yystacksize *= 2; 01093 if (yystacksize > YYMAXDEPTH) 01094 yystacksize = YYMAXDEPTH; 01095 yyss = (short *) yyallocator.Allocate (yystacksize * sizeof (*yyssp)); 01096 __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp)); 01097 yyvs = (YYSTYPE *) yyallocator.Allocate (yystacksize * sizeof (*yyvsp)); 01098 __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp)); 01099 #ifdef YYLSP_NEEDED 01100 yyls = (YYLTYPE *) yyallocator.Allocate (yystacksize * sizeof (*yylsp)); 01101 __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp)); 01102 #endif 01103 #endif /* no yyoverflow */ 01104 01105 yyssp = yyss + size - 1; 01106 yyvsp = yyvs + size - 1; 01107 #ifdef YYLSP_NEEDED 01108 yylsp = yyls + size - 1; 01109 #endif 01110 01111 #if YYDEBUG != 0 01112 if (yydebug) 01113 fprintf(stderr, "Stack size increased to %d\n", yystacksize); 01114 #endif 01115 01116 if (yyssp >= yyss + yystacksize - 1) 01117 YYABORT; 01118 } 01119 01120 #if YYDEBUG != 0 01121 if (yydebug) 01122 fprintf(stderr, "Entering state %d\n", yystate); 01123 #endif 01124 01125 goto yybackup; 01126 yybackup: 01127 01128 /* Do appropriate processing given the current state. */ 01129 /* Read a lookahead token if we need one and don't already have one. */ 01130 /* yyresume: */ 01131 01132 /* First try to decide what to do without reference to lookahead token. */ 01133 01134 yyn = yypact[yystate]; 01135 if (yyn == YYFLAG) 01136 goto yydefault; 01137 01138 /* Not known => get a lookahead token if don't already have one. */ 01139 01140 /* yychar is either YYEMPTY or YYEOF 01141 or a valid token in external form. */ 01142 01143 if (yychar == YYEMPTY) 01144 { 01145 #if YYDEBUG != 0 01146 if (yydebug) 01147 fprintf(stderr, "Reading a token: "); 01148 #endif 01149 yychar = yylex(self); 01150 } 01151 01152 /* Convert token to internal form (in yychar1) for indexing tables with */ 01153 01154 if (yychar <= 0) /* This means end of input. */ 01155 { 01156 yychar1 = 0; 01157 yychar = YYEOF; /* Don't call YYLEX any more */ 01158 01159 #if YYDEBUG != 0 01160 if (yydebug) 01161 fprintf(stderr, "Now at end of input.\n"); 01162 #endif 01163 } 01164 else 01165 { 01166 yychar1 = YYTRANSLATE(yychar); 01167 01168 #if YYDEBUG != 0 01169 if (yydebug) 01170 { 01171 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]); 01172 /* Give the individual parser a way to print the precise meaning 01173 of a token, for further debugging info. */ 01174 #ifdef YYPRINT 01175 YYPRINT (stderr, yychar, yylval); 01176 #endif 01177 fprintf (stderr, ")\n"); 01178 } 01179 #endif 01180 } 01181 01182 yyn += yychar1; 01183 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1) 01184 goto yydefault; 01185 01186 yyn = yytable[yyn]; 01187 01188 /* yyn is what to do for this token type in this state. 01189 Negative => reduce, -yyn is rule number. 01190 Positive => shift, yyn is new state. 01191 New state is final state => don't bother to shift, 01192 just return success. 01193 0, or most negative number => error. */ 01194 01195 if (yyn < 0) 01196 { 01197 if (yyn == YYFLAG) 01198 goto yyerrlab; 01199 yyn = -yyn; 01200 goto yyreduce; 01201 } 01202 else if (yyn == 0) 01203 goto yyerrlab; 01204 01205 if (yyn == YYFINAL) 01206 YYACCEPT; 01207 01208 /* Shift the lookahead token. */ 01209 01210 #if YYDEBUG != 0 01211 if (yydebug) 01212 fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); 01213 #endif 01214 01215 /* Discard the token being shifted unless it is eof. */ 01216 if (yychar != YYEOF) 01217 yychar = YYEMPTY; 01218 01219 *++yyvsp = yylval; 01220 #ifdef YYLSP_NEEDED 01221 *++yylsp = yylloc; 01222 #endif 01223 01224 /* count tokens shifted since error; after three, turn off error status. */ 01225 if (yyerrstatus) yyerrstatus--; 01226 01227 yystate = yyn; 01228 goto yynewstate; 01229 01230 /* Do the default action for the current state. */ 01231 yydefault: 01232 01233 yyn = yydefact[yystate]; 01234 if (yyn == 0) 01235 goto yyerrlab; 01236 01237 /* Do a reduction. yyn is the number of a rule to reduce with. */ 01238 yyreduce: 01239 yylen = yyr2[yyn]; 01240 if (yylen > 0) 01241 yyval = yyvsp[1-yylen]; /* implement default value of the action */ 01242 else 01243 yyval.sfint = 0; 01244 01245 #if YYDEBUG != 0 01246 if (yydebug) 01247 { 01248 int i; 01249 01250 fprintf (stderr, "Reducing via rule %d (line %d), ", 01251 yyn, yyrline[yyn]); 01252 01253 /* Print the symbols being reduced, and their result. */ 01254 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++) 01255 fprintf (stderr, "%s ", yytname[yyrhs[i]]); 01256 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]); 01257 } 01258 #endif 01259 01260 01261 // Note: several free() methods are commented out due to the use of 01262 // vtkVRMLAllocator. 01263 switch (yyn) { 01264 01265 case 8: 01266 { creatingDEF = 1; ; 01267 break;} 01268 case 9: 01269 { curDEFName = yyvsp[0].string; ; 01270 break;} 01271 case 10: 01272 { creatingDEF = 0; ; 01273 break;} 01274 case 11: 01275 { self->useNode(yyvsp[0].string);//free(yyvsp[0].string); ; 01276 break;} 01277 case 14: 01278 { beginProto(yyvsp[0].string); ; 01279 break;} 01280 case 15: 01281 { endProto(); //free(yyvsp[-7].string);; 01282 break;} 01283 case 16: 01284 { beginProto(yyvsp[0].string); ; 01285 break;} 01286 case 17: 01287 { expect(MFSTRING); ; 01288 break;} 01289 case 18: 01290 { endProto(); //free(yyvsp[-6].string); ; 01291 break;} 01292 case 21: 01293 { addEventIn(yyvsp[-1].string, yyvsp[0].string); 01294 //free(yyvsp[-1].string); free(yyvsp[0].string); ; 01295 break;} 01296 case 22: 01297 { addEventOut(yyvsp[-1].string, yyvsp[0].string); 01298 //free(yyvsp[-1].string); free(yyvsp[0].string); ; 01299 break;} 01300 case 23: 01301 { int type = addField(yyvsp[-1].string, yyvsp[0].string); 01302 expect(type); ; 01303 break;} 01304 case 24: 01305 { //free(yyvsp[-3].string); free(yyvsp[-2].string); ; 01306 break;} 01307 case 25: 01308 { int type = addExposedField(yyvsp[-1].string, yyvsp[0].string); 01309 expect(type); ; 01310 break;} 01311 case 26: 01312 { //free(yyvsp[-3].string); free(yyvsp[-2].string); ; 01313 break;} 01314 case 29: 01315 { addEventIn(yyvsp[-1].string, yyvsp[0].string); 01316 //free(yyvsp[-1].string); free(yyvsp[0].string); ; 01317 break;} 01318 case 30: 01319 { addEventOut(yyvsp[-1].string, yyvsp[0].string); 01320 //free(yyvsp[-1].string); free(yyvsp[0].string); ; 01321 break;} 01322 case 31: 01323 { addField(yyvsp[-1].string, yyvsp[0].string); 01324 //free(yyvsp[-1].string); free(yyvsp[0].string); ; 01325 break;} 01326 case 32: 01327 { addExposedField(yyvsp[-1].string, yyvsp[0].string); 01328 //free(yyvsp[-1].string); free(yyvsp[0].string); ; 01329 break;} 01330 case 33: 01331 { //free(yyvsp[-6].string); free(yyvsp[-4].string); free(yyvsp[-2].string); free(yyvsp[0].string); ; 01332 break;} 01333 case 34: 01334 { self->enterNode(yyvsp[0].string); ; 01335 break;} 01336 case 35: 01337 { self->exitNode(); //free(yyvsp[-4].string);; 01338 break;} 01339 case 38: 01340 { self->enterField(yyvsp[0].string); ; 01341 break;} 01342 case 39: 01343 { self->exitField(); //free(yyvsp[-2].string); ; 01344 break;} 01345 case 42: 01346 { inScript(); //free(yyvsp[-1].string); free(yyvsp[0].string); ; 01347 break;} 01348 case 43: 01349 { inScript(); //free(yyvsp[-1].string); free(yyvsp[0].string); ; 01350 break;} 01351 case 44: 01352 { inScript(); 01353 int type = fieldType(yyvsp[-1].string); 01354 expect(type); ; 01355 break;} 01356 case 45: 01357 { //free(yyvsp[-3].string); free(yyvsp[-2].string); ; 01358 break;} 01359 case 46: 01360 { inScript(); //free(yyvsp[-3].string); free(yyvsp[-2].string); free(yyvsp[0].string); ; 01361 break;} 01362 case 47: 01363 { inScript(); //free(yyvsp[-3].string); free(yyvsp[-2].string); free(yyvsp[0].string); ; 01364 break;} 01365 case 49: 01366 {; 01367 break;} 01368 case 50: 01369 { break;} 01370 case 55: 01371 { break;} 01372 case 63: 01373 { ; 01374 break;} 01375 case 64: 01376 { break;} 01377 case 68: 01378 { //free(yyvsp[0].string); ; 01379 break;} 01380 } 01381 /* the action file gets copied in in place of this dollarsign */ 01382 01383 01384 yyvsp -= yylen; 01385 yyssp -= yylen; 01386 #ifdef YYLSP_NEEDED 01387 yylsp -= yylen; 01388 #endif 01389 01390 #if YYDEBUG != 0 01391 if (yydebug) 01392 { 01393 short *ssp1 = yyss - 1; 01394 fprintf (stderr, "state stack now"); 01395 while (ssp1 != yyssp) 01396 fprintf (stderr, " %d", *++ssp1); 01397 fprintf (stderr, "\n"); 01398 } 01399 #endif 01400 01401 *++yyvsp = yyval; 01402 01403 #ifdef YYLSP_NEEDED 01404 yylsp++; 01405 if (yylen == 0) 01406 { 01407 yylsp->first_line = yylloc.first_line; 01408 yylsp->first_column = yylloc.first_column; 01409 yylsp->last_line = (yylsp-1)->last_line; 01410 yylsp->last_column = (yylsp-1)->last_column; 01411 yylsp->text = 0; 01412 } 01413 else 01414 { 01415 yylsp->last_line = (yylsp+yylen-1)->last_line; 01416 yylsp->last_column = (yylsp+yylen-1)->last_column; 01417 } 01418 #endif 01419 01420 /* Now "shift" the result of the reduction. 01421 Determine what state that goes to, 01422 based on the state we popped back to 01423 and the rule number reduced by. */ 01424 01425 yyn = yyr1[yyn]; 01426 01427 yystate = yypgoto[yyn - YYNTBASE] + *yyssp; 01428 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp) 01429 yystate = yytable[yystate]; 01430 else 01431 yystate = yydefgoto[yyn - YYNTBASE]; 01432 01433 goto yynewstate; 01434 01435 yyerrlab: /* here on detecting error */ 01436 01437 if (! yyerrstatus) 01438 /* If not already recovering from an error, report this error. */ 01439 { 01440 ++yynerrs; 01441 01442 #ifdef YYERROR_VERBOSE 01443 yyn = yypact[yystate]; 01444 01445 if (yyn > YYFLAG && yyn < YYLAST) 01446 { 01447 int size = 0; 01448 char *msg; 01449 int x, count; 01450 01451 count = 0; 01452 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */ 01453 for (x = (yyn < 0 ? -yyn : 0); 01454 x < (sizeof(yytname) / sizeof(char *)); x++) 01455 if (yycheck[x + yyn] == x) 01456 size += strlen(yytname[x]) + 15, count++; 01457 msg = (char *) malloc(size + 15); 01458 if (msg != 0) 01459 { 01460 strcpy(msg, "parse error"); 01461 01462 if (count < 5) 01463 { 01464 count = 0; 01465 for (x = (yyn < 0 ? -yyn : 0); 01466 x < (sizeof(yytname) / sizeof(char *)); x++) 01467 if (yycheck[x + yyn] == x) 01468 { 01469 strcat(msg, count == 0 ? ", expecting `" : " or `"); 01470 strcat(msg, yytname[x]); 01471 strcat(msg, "'"); 01472 count++; 01473 } 01474 } 01475 yyerror(msg); 01476 free(msg); 01477 } 01478 else 01479 yyerror ("parse error; also virtual memory exceeded"); 01480 } 01481 else 01482 #endif /* YYERROR_VERBOSE */ 01483 yyerror("parse error"); 01484 } 01485 01486 goto yyerrlab1; 01487 yyerrlab1: /* here on error raised explicitly by an action */ 01488 01489 if (yyerrstatus == 3) 01490 { 01491 /* if just tried and failed to reuse lookahead token after an error, discard it. */ 01492 01493 /* return failure if at end of input */ 01494 if (yychar == YYEOF) 01495 YYABORT; 01496 01497 #if YYDEBUG != 0 01498 if (yydebug) 01499 fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]); 01500 #endif 01501 01502 yychar = YYEMPTY; 01503 } 01504 01505 /* Else will try to reuse lookahead token 01506 after shifting the error token. */ 01507 01508 yyerrstatus = 3; /* Each real token shifted decrements this */ 01509 01510 goto yyerrhandle; 01511 01512 yyerrdefault: /* current state does not do anything special for the error token. */ 01513 01514 #if 0 01515 /* This is wrong; only states that explicitly want error tokens 01516 should shift them. */ 01517 yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/ 01518 if (yyn) goto yydefault; 01519 #endif 01520 01521 yyerrpop: /* pop the current state because it cannot handle the error token */ 01522 01523 if (yyssp == yyss) YYABORT; 01524 yyvsp--; 01525 yystate = *--yyssp; 01526 #ifdef YYLSP_NEEDED 01527 yylsp--; 01528 #endif 01529 01530 #if YYDEBUG != 0 01531 if (yydebug) 01532 { 01533 short *ssp1 = yyss - 1; 01534 fprintf (stderr, "Error: state stack now"); 01535 while (ssp1 != yyssp) 01536 fprintf (stderr, " %d", *++ssp1); 01537 fprintf (stderr, "\n"); 01538 } 01539 #endif 01540 01541 yyerrhandle: 01542 01543 yyn = yypact[yystate]; 01544 if (yyn == YYFLAG) 01545 goto yyerrdefault; 01546 01547 yyn += YYTERROR; 01548 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR) 01549 goto yyerrdefault; 01550 01551 yyn = yytable[yyn]; 01552 if (yyn < 0) 01553 { 01554 if (yyn == YYFLAG) 01555 goto yyerrpop; 01556 yyn = -yyn; 01557 goto yyreduce; 01558 } 01559 else if (yyn == 0) 01560 goto yyerrpop; 01561 01562 if (yyn == YYFINAL) 01563 YYACCEPT; 01564 01565 #if YYDEBUG != 0 01566 if (yydebug) 01567 fprintf(stderr, "Shifting error token, "); 01568 #endif 01569 01570 *++yyvsp = yylval; 01571 #ifdef YYLSP_NEEDED 01572 *++yylsp = yylloc; 01573 #endif 01574 01575 yystate = yyn; 01576 goto yynewstate; 01577 } 01578 01579 01580 void vtkVRMLYaccData::yyerror(const char *msg) 01581 { 01582 cerr << "Error near line " << currentLineNumber << ": " << msg << "\n"; 01583 expect(0); 01584 } 01585 01586 void vtkVRMLYaccData::beginProto(const char *protoName) 01587 { 01588 // Any protos in the implementation are in a local namespace: 01589 pushNameSpace(); 01590 01591 VrmlNodeType *t = new VrmlNodeType(protoName); 01592 *CurrentProtoStack += t; 01593 } 01594 01595 void vtkVRMLYaccData::endProto() 01596 { 01597 // Make any protos defined in implementation unavailable: 01598 popNameSpace(); 01599 01600 // Add this proto definition: 01601 if (CurrentProtoStack->Count() == 0) 01602 { 01603 cerr << "Error: Empty PROTO stack!\n"; 01604 } 01605 else 01606 { 01607 VrmlNodeType *t = CurrentProtoStack->Top(); 01608 CurrentProtoStack->Pop(); 01609 addToNameSpace(t); 01610 } 01611 } 01612 01613 int vtkVRMLYaccData::addField(const char *type, const char *name) 01614 { 01615 return add(&VrmlNodeType::addField, type, name); 01616 } 01617 01618 int vtkVRMLYaccData::addEventIn(const char *type, const char *name) 01619 { 01620 return add(&VrmlNodeType::addEventIn, type, name); 01621 } 01622 int vtkVRMLYaccData::addEventOut(const char *type, const char *name) 01623 { 01624 return add(&VrmlNodeType::addEventOut, type, name); 01625 } 01626 int vtkVRMLYaccData::addExposedField(const char *type, const char *name) 01627 { 01628 return add(&VrmlNodeType::addExposedField, type, name); 01629 } 01630 01631 int vtkVRMLYaccData::add(void (VrmlNodeType::*func)(const char *, int), 01632 const char *typeString, const char *name) 01633 { 01634 int type = fieldType(typeString); 01635 01636 if (type == 0) 01637 { 01638 cerr << "Error: invalid field type: " << type << "\n"; 01639 } 01640 01641 // Need to add support for Script nodes: 01642 // if (inScript) ... ??? 01643 01644 if (CurrentProtoStack->Count() == 0) 01645 { 01646 cerr << "Error: declaration outside of prototype\n"; 01647 return 0; 01648 } 01649 VrmlNodeType *t = CurrentProtoStack->Top(); 01650 (t->*func)(name, type); 01651 01652 return type; 01653 } 01654 01655 int vtkVRMLYaccData::fieldType(const char *type) 01656 { 01657 if (strcmp(type, "SFBool") == 0) return SFBOOL; 01658 if (strcmp(type, "SFColor") == 0) return SFCOLOR; 01659 if (strcmp(type, "SFFloat") == 0) return SFFLOAT; 01660 if (strcmp(type, "SFImage") == 0) return SFIMAGE; 01661 if (strcmp(type, "SFInt32") == 0) return SFINT32; 01662 if (strcmp(type, "SFNode") == 0) return SFNODE; 01663 if (strcmp(type, "SFRotation") == 0) return SFROTATION; 01664 if (strcmp(type, "SFString") == 0) return SFSTRING; 01665 if (strcmp(type, "SFTime") == 0) return SFTIME; 01666 if (strcmp(type, "SFVec2f") == 0) return SFVEC2F; 01667 if (strcmp(type, "SFVec3f") == 0) return SFVEC3F; 01668 if (strcmp(type, "MFColor") == 0) return MFCOLOR; 01669 if (strcmp(type, "MFFloat") == 0) return MFFLOAT; 01670 if (strcmp(type, "MFInt32") == 0) return MFINT32; 01671 if (strcmp(type, "MFNode") == 0) return MFNODE; 01672 if (strcmp(type, "MFRotation") == 0) return MFROTATION; 01673 if (strcmp(type, "MFString") == 0) return MFSTRING; 01674 if (strcmp(type, "MFVec2f") == 0) return MFVEC2F; 01675 if (strcmp(type, "MFVec3f") == 0) return MFVEC3F; 01676 01677 cerr << "Illegal field type: " << type << "\n"; 01678 01679 return 0; 01680 } 01681 01682 void vtkVRMLYaccData::inScript() 01683 { 01684 VrmlNodeType::FieldRec *fr = currentField->Top(); 01685 if (fr->nodeType == NULL || 01686 strcmp(fr->nodeType->getName(), "Script") != 0) 01687 { 01688 yyerror("interface declaration outside of Script or prototype"); 01689 } 01690 } 01691 01692 01693 void vtkVRMLYaccData::expect(int type) 01694 { 01695 expectToken = type; 01696 } 01697 01698 // End of Auto-generated Parser Code 01699 // Begin of Auto-generated Lexer Code 01700 01701 /* A lexical scanner generated by flex */ 01702 01703 01704 #define FLEX_SCANNER 01705 01706 #ifdef WIN32 01707 #include <io.h> 01708 #else 01709 #include <unistd.h> 01710 #endif 01711 01712 /* Use prototypes in function declarations. */ 01713 #define YY_USE_PROTOS 01714 #define YY_PROTO(proto) proto 01715 01716 /* Returned upon end-of-file. */ 01717 #define YY_NULL 0 01718 01719 /* Promotes a possibly negative, possibly signed char to an unsigned 01720 * integer for use as an array index. If the signed char is negative, 01721 * we want to instead treat it as an 8-bit unsigned char, hence the 01722 * double cast. 01723 */ 01724 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) 01725 01726 /* Enter a start condition. This macro really ought to take a parameter, 01727 * but we do it the disgusting crufty way forced on us by the ()-less 01728 * definition of BEGIN. 01729 */ 01730 #define BEGIN yy_start = 1 + 2 * 01731 01732 /* Translate the current start state into a value that can be later handed 01733 * to BEGIN to return to the state. 01734 */ 01735 #define YY_START ((yy_start - 1) / 2) 01736 01737 /* Action number for EOF rule of a given start state. */ 01738 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) 01739 01740 /* Special action meaning "start processing a new file". Now included 01741 * only for backward compatibility with previous versions of flex. 01742 */ 01743 #define YY_NEW_FILE yyrestart( yyin ) 01744 01745 #define YY_END_OF_BUFFER_CHAR 0 01746 01747 /* Size of default input buffer. */ 01748 #define YY_BUF_SIZE 16384 01749 01750 //typedef struct yy_buffer_state *YY_BUFFER_STATE; 01751 01752 //extern int yyleng; 01753 //extern FILE *yyin, *yyout; 01754 01755 #ifdef __cplusplus 01756 extern "C" { 01757 #endif 01758 //extern int yywrap YY_PROTO(( void )); 01759 #ifdef __cplusplus 01760 } 01761 #endif 01762 01763 #define EOB_ACT_CONTINUE_SCAN 0 01764 #define EOB_ACT_END_OF_FILE 1 01765 #define EOB_ACT_LAST_MATCH 2 01766 01767 /* The funky do-while in the following #define is used to turn the definition 01768 * int a single C statement (which needs a semi-colon terminator). This 01769 * avoids problems with code like: 01770 * 01771 * if ( condition_holds ) 01772 * yyless( 5 ); 01773 * else 01774 * do_something_else(); 01775 * 01776 * Prior to using the do-while the compiler would get upset at the 01777 * "else" because it interpreted the "if" statement as being all 01778 * done when it reached the ';' after the yyless() call. 01779 */ 01780 01781 /* Return all but the first 'n' matched characters back to the input stream. */ 01782 01783 #define yyless(n) \ 01784 do \ 01785 { \ 01786 /* Undo effects of setting up yytext. */ \ 01787 *yy_cp = yy_hold_char; \ 01788 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ 01789 YY_DO_BEFORE_ACTION; /* set up yytext again */ \ 01790 } \ 01791 while ( 0 ) 01792 01793 01794 //struct yy_buffer_state 01795 //{ 01796 // FILE *yy_input_file; 01797 01798 // char *yy_ch_buf; /* input buffer */ 01799 // char *yy_buf_pos; /* current position in input buffer */ 01800 01801 /* Size of input buffer in bytes, not including room for EOB 01802 * characters. 01803 */ 01804 // int yy_buf_size; 01805 01806 /* Number of characters read into yy_ch_buf, not including EOB 01807 * characters. 01808 */ 01809 // int yy_n_chars; 01810 01811 /* Whether this is an "interactive" input source; if so, and 01812 * if we're using stdio for input, then we want to use getc() 01813 * instead of fread(), to make sure we stop fetching input after 01814 * each newline. 01815 */ 01816 // int yy_is_interactive; 01817 01818 /* Whether to try to fill the input buffer when we reach the 01819 * end of it. 01820 */ 01821 // int yy_fill_buffer; 01822 01823 // int yy_buffer_status; 01824 //#define YY_BUFFER_NEW 0 01825 //#define YY_BUFFER_NORMAL 1 01826 /* When an EOF's been seen but there's still some text to process 01827 * then we mark the buffer as YY_EOF_PENDING, to indicate that we 01828 * shouldn't try reading from the input source any more. We might 01829 * still have a bunch of tokens to match, though, because of 01830 * possible backing-up. 01831 * 01832 * When we actually see the EOF, we change the status to "new" 01833 * (via yyrestart()), so that the user can continue scanning by 01834 * just pointing yyin at a new input file. 01835 */ 01836 //#define YY_BUFFER_EOF_PENDING 2 01837 //}; 01838 01839 //static YY_BUFFER_STATE yy_current_buffer = 0; 01840 01841 /* We provide macros for accessing buffer states in case in the 01842 * future we want to put the buffer states in a more general 01843 * "scanner state". 01844 */ 01845 #define YY_CURRENT_BUFFER yy_current_buffer 01846 01847 01848 /* yy_hold_char holds the character lost when yytext is formed. */ 01849 //static char yy_hold_char; 01850 01851 //static int yy_n_chars; /* number of characters read into yy_ch_buf */ 01852 01853 01854 //int yyleng; 01855 01856 /* Points to current character in buffer. */ 01857 //static char *yy_c_buf_p = (char *) 0; 01858 //static int yy_init = 1; /* whether we need to initialize */ 01859 //static int yy_start = 0; /* start state number */ 01860 01861 /* Flag which is used to allow yywrap()'s to do buffer switches 01862 * instead of setting up a fresh yyin. A bit of a hack ... 01863 */ 01864 //static int yy_did_buffer_switch_on_eof; 01865 01866 //void yyrestart YY_PROTO(( FILE *input_file )); 01867 //void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); 01868 //void yy_load_buffer_state YY_PROTO(( void )); 01869 //YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); 01870 //void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); 01871 //void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); 01872 01873 //static void *yy_flex_alloc YY_PROTO(( unsigned int )); 01874 //static void *yy_flex_realloc YY_PROTO(( void *, unsigned int )); 01875 //static void yy_flex_free YY_PROTO(( void * )); 01876 01877 #define yy_new_buffer yy_create_buffer 01878 01879 #define INITIAL 0 01880 #define NODE 1 01881 #define SFB 2 01882 #define SFC 3 01883 #define SFF 4 01884 #define SFIMG 5 01885 #define SFI 6 01886 #define SFR 7 01887 #define SFS 8 01888 #define SFT 9 01889 #define SFV2 10 01890 #define SFV3 11 01891 #define MFC 12 01892 #define MFF 13 01893 #define MFI 14 01894 #define MFR 15 01895 #define MFS 16 01896 #define MFV2 17 01897 #define MFV3 18 01898 #define IN_SFS 19 01899 #define IN_MFS 20 01900 #define IN_SFIMG 21 01901 01902 #define FLEX_DEBUG 01903 //FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; 01904 //extern char *yytext; 01905 #define yytext_ptr yytext 01906 01907 #ifndef yytext_ptr 01908 //static void yy_flex_strncpy YY_PROTO(( char *, const char *, int )); 01909 #endif 01910 01911 //static yy_state_type yy_get_previous_state YY_PROTO(( void )); 01912 //static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); 01913 //static int yy_get_next_buffer YY_PROTO(( void )); 01914 //static void yy_fatal_error YY_PROTO(( const char msg[] )); 01915 01916 /* Done after the current pattern has been matched and before the 01917 * corresponding action - sets up yytext. 01918 */ 01919 #define YY_DO_BEFORE_ACTION \ 01920 yytext_ptr = yy_bp; \ 01921 yyleng = yy_cp - yy_bp; \ 01922 yy_hold_char = *yy_cp; \ 01923 *yy_cp = '\0'; \ 01924 yy_c_buf_p = yy_cp; 01925 01926 #define YY_END_OF_BUFFER 50 01927 static const short int yy_accept[949] = 01928 { 0, 01929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01930 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01931 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01932 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01933 0, 0, 0, 0, 50, 48, 46, 47, 46, 14, 01934 46, 14, 14, 14, 14, 14, 14, 14, 14, 14, 01935 14, 48, 48, 48, 48, 48, 48, 48, 48, 25, 01936 48, 48, 48, 48, 23, 23, 48, 48, 48, 38, 01937 36, 38, 38, 48, 48, 35, 48, 48, 48, 48, 01938 48, 48, 48, 48, 48, 48, 19, 20, 48, 48, 01939 01940 26, 17, 48, 24, 24, 18, 48, 48, 48, 39, 01941 37, 39, 39, 48, 48, 48, 48, 48, 48, 41, 01942 41, 42, 41, 41, 43, 48, 45, 45, 46, 47, 01943 46, 47, 47, 46, 46, 46, 46, 14, 14, 14, 01944 7, 14, 14, 14, 6, 14, 14, 14, 14, 0, 01945 15, 0, 0, 0, 0, 0, 0, 0, 0, 25, 01946 25, 0, 0, 0, 0, 0, 23, 23, 0, 0, 01947 0, 0, 0, 0, 38, 38, 38, 15, 0, 35, 01948 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01950 01951 16, 0, 26, 26, 0, 24, 24, 0, 0, 0, 01952 0, 0, 0, 39, 39, 39, 16, 0, 0, 0, 01953 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 01954 41, 41, 41, 41, 41, 40, 45, 45, 47, 47, 01955 47, 46, 4, 14, 14, 14, 14, 5, 14, 14, 01956 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01957 0, 0, 0, 0, 0, 25, 0, 44, 44, 0, 01958 0, 0, 0, 44, 44, 0, 23, 0, 0, 0, 01959 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 01960 0, 0, 27, 0, 0, 0, 0, 0, 27, 0, 01961 01962 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01963 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01964 0, 0, 0, 0, 26, 24, 0, 0, 0, 0, 01965 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 01966 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 01967 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, 01968 46, 14, 9, 14, 14, 14, 14, 14, 0, 21, 01969 0, 0, 0, 0, 0, 0, 0, 0, 44, 44, 01970 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 01971 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01972 01973 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01974 0, 0, 0, 0, 0, 28, 0, 0, 0, 0, 01975 0, 0, 0, 0, 0, 0, 46, 14, 2, 8, 01976 14, 14, 12, 22, 0, 0, 33, 0, 0, 0, 01977 0, 0, 33, 0, 0, 0, 0, 33, 0, 0, 01978 0, 33, 0, 0, 0, 0, 0, 33, 0, 0, 01979 0, 44, 44, 44, 44, 0, 0, 0, 0, 0, 01980 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01982 0, 0, 0, 27, 0, 0, 27, 0, 0, 29, 01983 01984 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 01985 29, 0, 0, 0, 29, 0, 0, 0, 0, 0, 01986 29, 0, 0, 0, 0, 0, 34, 0, 0, 0, 01987 0, 0, 34, 0, 0, 0, 0, 34, 0, 0, 01988 0, 34, 0, 0, 0, 0, 0, 34, 0, 0, 01989 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01990 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01991 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 01992 0, 0, 28, 0, 0, 30, 0, 0, 0, 0, 01993 0, 30, 0, 0, 0, 0, 30, 0, 0, 0, 01994 01995 30, 0, 0, 0, 0, 0, 30, 0, 0, 0, 01996 46, 14, 14, 14, 14, 33, 0, 0, 33, 0, 01997 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01998 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 01999 0, 0, 29, 0, 0, 29, 0, 29, 0, 0, 02000 34, 0, 0, 34, 0, 34, 0, 0, 0, 0, 02001 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 02002 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 02003 30, 0, 30, 0, 0, 46, 14, 10, 14, 14, 02004 0, 33, 0, 0, 33, 0, 0, 33, 0, 33, 02005 02006 0, 0, 33, 0, 0, 31, 0, 0, 0, 0, 02007 0, 31, 0, 0, 0, 0, 31, 0, 0, 31, 02008 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 02009 0, 31, 0, 0, 0, 31, 0, 0, 0, 0, 02010 0, 31, 0, 0, 0, 0, 0, 0, 0, 31, 02011 0, 0, 0, 0, 29, 0, 0, 29, 0, 0, 02012 29, 0, 29, 0, 0, 29, 0, 34, 0, 0, 02013 34, 0, 0, 34, 0, 34, 0, 0, 34, 0, 02014 0, 32, 0, 0, 0, 0, 0, 32, 0, 0, 02015 0, 0, 32, 0, 0, 32, 0, 0, 0, 0, 02016 02017 0, 32, 0, 0, 0, 0, 0, 32, 0, 0, 02018 0, 32, 0, 0, 0, 0, 0, 32, 0, 0, 02019 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 02020 30, 0, 0, 30, 0, 0, 30, 0, 30, 0, 02021 0, 30, 46, 14, 11, 14, 31, 0, 0, 31, 02022 0, 31, 0, 0, 31, 0, 31, 0, 0, 31, 02023 0, 32, 0, 0, 32, 0, 32, 0, 0, 32, 02024 0, 32, 0, 0, 32, 0, 46, 14, 14, 0, 02025 31, 0, 0, 31, 0, 0, 31, 0, 31, 0, 02026 0, 31, 0, 0, 31, 0, 31, 0, 0, 31, 02027 02028 0, 0, 31, 0, 32, 0, 0, 32, 0, 0, 02029 32, 0, 32, 0, 0, 32, 0, 0, 32, 0, 02030 32, 0, 0, 32, 0, 0, 32, 46, 14, 14, 02031 46, 3, 14, 46, 13, 46, 46, 46, 46, 46, 02032 1, 46, 1, 1, 1, 1, 1, 0 02033 } ; 02034 02035 static const int yy_ec[256] = 02036 { 0, 02037 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 02038 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 02039 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 02040 1, 4, 5, 6, 7, 5, 5, 5, 1, 5, 02041 5, 5, 8, 2, 9, 10, 5, 11, 12, 13, 02042 12, 12, 12, 12, 12, 14, 12, 5, 5, 5, 02043 5, 5, 5, 5, 15, 16, 16, 17, 18, 19, 02044 5, 5, 20, 5, 5, 21, 22, 23, 24, 25, 02045 5, 26, 27, 28, 29, 30, 5, 31, 5, 5, 02046 32, 33, 34, 5, 5, 5, 16, 16, 16, 35, 02047 02048 36, 37, 5, 5, 38, 5, 5, 39, 5, 40, 02049 41, 42, 5, 5, 43, 44, 45, 46, 5, 47, 02050 5, 5, 1, 5, 1, 5, 5, 5, 5, 5, 02051 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 02052 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 02053 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 02054 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 02055 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 02056 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 02057 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 02058 02059 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 02060 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 02061 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 02062 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 02063 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 02064 5, 5, 5, 5, 5 02065 } ; 02066 02067 static const int yy_meta[48] = 02068 { 0, 02069 1, 2, 3, 2, 4, 5, 6, 4, 4, 1, 02070 7, 7, 7, 7, 7, 7, 7, 7, 7, 4, 02071 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 02072 4, 8, 1, 8, 7, 7, 7, 4, 4, 4, 02073 4, 4, 4, 4, 4, 4, 4 02074 } ; 02075 02076 static const short int yy_base[1090] = 02077 { 0, 02078 0, 6, 13, 0, 59, 65, 92, 0, 104, 110, 02079 116, 122, 128, 134, 140, 146, 159, 165, 164, 177, 02080 183, 189, 195, 201, 207, 233, 259, 285, 311, 337, 02081 363, 389, 422, 455, 481, 507, 533, 559, 222, 228, 02082 256, 274, 324, 350, 787, 7663, 73, 79, 280, 0, 02083 247, 768, 753, 751, 745, 726, 725, 719, 715, 18, 02084 685, 702, 687, 682, 78, 96, 592, 170, 289, 368, 02085 300, 627, 51, 315, 380, 328, 342, 354, 673, 0, 02086 7663, 410, 677, 420, 376, 427, 436, 394, 708, 454, 02087 458, 743, 466, 470, 778, 676, 7663, 7663, 486, 491, 02088 02089 496, 7663, 511, 517, 522, 7663, 544, 538, 813, 0, 02090 7663, 579, 665, 549, 563, 848, 604, 576, 883, 0, 02091 605, 7663, 617, 672, 7663, 631, 635, 639, 652, 302, 02092 658, 665, 666, 686, 692, 698, 725, 0, 652, 636, 02093 0, 636, 613, 607, 0, 617, 597, 590, 591, 605, 02094 7663, 596, 722, 0, 727, 918, 931, 751, 755, 792, 02095 759, 821, 0, 944, 957, 805, 786, 0, 825, 0, 02096 830, 970, 983, 856, 0, 869, 875, 0, 834, 900, 02097 987, 891, 895, 0, 996, 1022, 1035, 1003, 1007, 0, 02098 1040, 1053, 1066, 1073, 1077, 0, 1082, 1095, 1108, 1115, 02099 02100 7663, 1119, 1124, 1132, 1140, 1144, 0, 1150, 0, 1159, 02101 1172, 1185, 1192, 0, 1205, 1211, 0, 1208, 0, 1213, 02102 1244, 1257, 1220, 1261, 1274, 1283, 1309, 1322, 1290, 0, 02103 1335, 1341, 1347, 1353, 1359, 7663, 1294, 0, 1234, 1365, 02104 1366, 1372, 0, 604, 580, 572, 569, 0, 552, 537, 02105 501, 511, 519, 1370, 1374, 1393, 1428, 1441, 0, 0, 02106 0, 1410, 1378, 1454, 1407, 1411, 1458, 1462, 1466, 1508, 02107 1521, 1534, 1547, 1560, 191, 1479, 0, 1477, 1483, 1606, 02108 1641, 1654, 0, 0, 0, 1575, 1487, 1667, 1491, 1572, 02109 1584, 1576, 1623, 1680, 0, 0, 0, 0, 230, 1588, 02110 02111 1693, 1615, 1592, 1706, 1741, 0, 0, 0, 0, 1723, 02112 1720, 1758, 1725, 1762, 1775, 1810, 0, 0, 0, 0, 02113 1792, 1789, 1827, 1793, 1831, 0, 1836, 1840, 1853, 1888, 02114 0, 0, 0, 0, 1870, 1867, 1905, 1872, 1909, 1914, 02115 1949, 0, 0, 0, 0, 238, 1922, 1962, 1927, 1931, 02116 1975, 2010, 0, 0, 0, 0, 1992, 1935, 2027, 0, 02117 2040, 500, 0, 488, 493, 444, 443, 450, 456, 7663, 02118 1990, 2060, 2073, 2037, 2086, 2099, 2112, 2044, 0, 2116, 02119 1995, 2162, 2175, 2128, 2188, 2201, 2214, 2227, 2132, 2146, 02120 2240, 2253, 2288, 2301, 2261, 2314, 2327, 2340, 2353, 2366, 02121 02122 2401, 2414, 2268, 2427, 2440, 2453, 2466, 2479, 2514, 2527, 02123 2374, 2540, 2553, 2566, 2579, 2383, 2487, 2592, 2605, 2640, 02124 2653, 2494, 2666, 2679, 2692, 2705, 2281, 437, 0, 0, 02125 50, 386, 0, 7663, 2379, 2498, 2622, 2718, 2731, 0, 02126 0, 0, 239, 2613, 2744, 2757, 2770, 2783, 2818, 2792, 02127 2617, 2831, 2866, 0, 0, 0, 0, 272, 2796, 2800, 02128 2845, 0, 2881, 205, 285, 2840, 2804, 2927, 2962, 2975, 02129 0, 0, 0, 2944, 2941, 2988, 3001, 3014, 3027, 3062, 02130 2946, 3035, 3075, 3110, 0, 0, 0, 0, 3092, 3039, 02131 3043, 3127, 3047, 3089, 3162, 3175, 400, 3094, 3135, 3144, 02132 02133 3188, 3201, 0, 0, 0, 417, 3139, 3214, 3227, 3240, 02134 3253, 3288, 3262, 3266, 3301, 3336, 0, 0, 0, 0, 02135 437, 3270, 3274, 3315, 3310, 3341, 3346, 3381, 3394, 0, 02136 0, 0, 548, 3354, 3407, 3420, 3433, 3446, 3481, 3359, 02137 3363, 3494, 3529, 0, 0, 0, 0, 562, 3367, 3454, 02138 3463, 3503, 3458, 3542, 3577, 3590, 0, 0, 0, 3559, 02139 3507, 3603, 3616, 3629, 3642, 3677, 3512, 3556, 3690, 3725, 02140 0, 0, 0, 0, 3659, 3560, 3656, 3738, 3660, 3698, 02141 3773, 3786, 645, 3703, 3707, 3755, 3799, 3812, 0, 0, 02142 0, 661, 3711, 3825, 3838, 3851, 3864, 3899, 3747, 3872, 02143 02144 3912, 3947, 0, 0, 0, 0, 680, 3876, 3880, 3926, 02145 3925, 390, 370, 351, 323, 3952, 3960, 3987, 4000, 4035, 02146 4048, 3967, 4083, 4096, 4131, 4144, 4008, 4157, 4170, 4183, 02147 4196, 4209, 4244, 4257, 4270, 4283, 4296, 4331, 4015, 4344, 02148 4357, 4370, 4065, 4056, 4383, 4396, 4431, 4444, 4104, 4479, 02149 4113, 4217, 4492, 4505, 4540, 4553, 4224, 4588, 4601, 4636, 02150 4649, 4304, 4662, 4675, 4688, 4701, 4714, 4749, 4762, 4775, 02151 4788, 4801, 4836, 4311, 4849, 4862, 4875, 4413, 4404, 4888, 02152 4901, 4936, 4949, 4452, 4984, 2858, 304, 0, 274, 296, 02153 3884, 3971, 4997, 5010, 688, 5023, 5036, 4522, 4019, 5049, 02154 02155 5062, 5075, 689, 4061, 4108, 4461, 5088, 5101, 0, 0, 02156 0, 695, 4228, 5114, 5127, 5140, 5153, 4316, 4408, 5188, 02157 5223, 5236, 0, 0, 0, 712, 4456, 4519, 4570, 5249, 02158 5262, 5275, 5310, 4524, 4561, 5323, 5358, 0, 0, 0, 02159 0, 740, 4565, 4609, 4618, 4613, 5371, 5384, 5397, 5410, 02160 4722, 4726, 4731, 4809, 4813, 5445, 5458, 757, 5471, 5484, 02161 4918, 4817, 5497, 5510, 5523, 765, 4821, 4915, 5536, 5549, 02162 838, 5562, 5575, 4966, 4919, 5588, 5601, 5614, 862, 4964, 02163 4968, 5167, 5627, 5640, 0, 0, 0, 931, 5161, 5653, 02164 5666, 5679, 5692, 5197, 5201, 5727, 5762, 5775, 0, 0, 02165 02166 0, 986, 5205, 5209, 5292, 5788, 5801, 5814, 5849, 5284, 02167 5331, 5862, 5897, 0, 0, 0, 0, 1022, 5335, 5339, 02168 5427, 5343, 5910, 5923, 5936, 5949, 5418, 5422, 5706, 5700, 02169 5735, 5984, 5997, 1023, 6010, 6023, 5831, 5739, 6036, 6049, 02170 6062, 1025, 5752, 268, 0, 250, 5879, 5828, 6075, 6088, 02171 6123, 6136, 5870, 6171, 6184, 6219, 6232, 5957, 6267, 6280, 02172 6315, 5966, 6096, 6103, 5833, 6144, 5875, 6151, 6192, 5962, 02173 6199, 6108, 6240, 6247, 6156, 6288, 6301, 236, 204, 6203, 02174 6251, 6328, 0, 1065, 3, 277, 6341, 6340, 6376, 6389, 02175 0, 1123, 376, 411, 6402, 6344, 6437, 6450, 0, 1129, 02176 02177 435, 443, 6463, 6349, 6353, 6357, 6361, 6401, 6410, 6414, 02178 6464, 6418, 6499, 6422, 6472, 6478, 6504, 6508, 6513, 6521, 02179 6525, 6529, 6533, 6539, 6547, 6551, 6556, 3328, 213, 194, 02180 6569, 0, 188, 6575, 0, 6491, 3939, 5180, 5719, 6307, 02181 6579, 6586, 6592, 6593, 6599, 6600, 6606, 7663, 6619, 6627, 02182 6635, 6643, 6651, 6656, 6663, 6671, 6679, 6686, 6694, 6702, 02183 6710, 6718, 6726, 6733, 163, 6740, 6748, 6756, 6764, 157, 02184 6772, 6780, 6788, 6796, 6804, 104, 6812, 6820, 6825, 6832, 02185 6840, 6847, 93, 6854, 90, 6862, 6870, 66, 6878, 6886, 02186 6894, 6902, 6910, 6918, 6926, 6934, 6942, 6950, 6958, 6966, 02187 02188 6974, 6982, 6990, 6998, 7006, 7011, 7018, 7026, 7034, 64, 02189 7042, 7050, 7058, 7066, 7074, 7082, 7090, 7098, 7106, 7114, 02190 7122, 7130, 7138, 7146, 7154, 7162, 7170, 7178, 7183, 7190, 02191 7198, 7206, 7214, 7222, 7230, 7238, 7246, 7254, 7262, 7270, 02192 7278, 7286, 7294, 7302, 7310, 7318, 7326, 7334, 7342, 7350, 02193 7358, 7366, 7374, 7382, 7387, 7394, 7402, 7410, 7418, 7426, 02194 7434, 7442, 7450, 7458, 7466, 7474, 7482, 7490, 7498, 7506, 02195 7514, 7522, 7530, 7538, 7546, 7554, 7562, 7570, 7578, 7586, 02196 7591, 7598, 7606, 7614, 7622, 7630, 7638, 7646, 7654 02197 } ; 02198 02199 static const short int yy_def[1090] = 02200 { 0, 02201 949, 949, 948, 3, 949, 949, 949, 7, 7, 7, 02202 7, 7, 7, 7, 7, 7, 950, 950, 7, 7, 02203 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 02204 7, 7, 951, 951, 7, 7, 7, 7, 952, 952, 02205 952, 952, 7, 7, 948, 948, 948, 948, 953, 954, 02206 953, 954, 954, 954, 954, 954, 954, 954, 954, 954, 02207 954, 948, 948, 948, 948, 948, 948, 948, 948, 948, 02208 948, 948, 72, 948, 948, 948, 948, 948, 948, 955, 02209 948, 956, 955, 948, 948, 948, 948, 948, 948, 948, 02210 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 02211 02212 948, 948, 948, 948, 948, 948, 948, 948, 948, 957, 02213 948, 958, 957, 948, 948, 948, 948, 948, 948, 959, 02214 959, 948, 960, 959, 948, 948, 948, 948, 948, 948, 02215 953, 948, 961, 953, 953, 953, 953, 954, 954, 954, 02216 954, 954, 954, 954, 954, 954, 954, 954, 954, 948, 02217 948, 948, 948, 67, 67, 948, 962, 948, 948, 948, 02218 948, 948, 73, 948, 963, 964, 948, 965, 948, 79, 02219 79, 948, 966, 948, 955, 956, 956, 955, 948, 948, 02220 948, 948, 948, 89, 89, 948, 967, 948, 948, 92, 02221 92, 948, 968, 948, 948, 95, 95, 948, 969, 948, 02222 02223 948, 948, 948, 948, 948, 948, 970, 948, 109, 109, 02224 948, 971, 948, 957, 958, 958, 957, 948, 116, 116, 02225 948, 972, 948, 948, 948, 225, 948, 973, 948, 974, 02226 974, 975, 975, 975, 975, 948, 948, 976, 977, 977, 02227 977, 978, 979, 979, 979, 979, 979, 979, 979, 979, 02228 979, 948, 948, 948, 948, 948, 980, 980, 258, 258, 02229 258, 258, 948, 948, 948, 948, 948, 948, 948, 981, 02230 981, 981, 981, 981, 274, 982, 983, 948, 948, 948, 02231 984, 984, 282, 282, 282, 282, 948, 948, 948, 948, 02232 948, 948, 948, 967, 294, 294, 294, 294, 294, 948, 02233 02234 948, 948, 948, 948, 968, 305, 305, 305, 305, 305, 02235 948, 948, 948, 948, 948, 969, 316, 316, 316, 316, 02236 316, 948, 948, 948, 948, 985, 948, 948, 948, 971, 02237 330, 330, 330, 330, 330, 948, 948, 948, 948, 948, 02238 972, 341, 341, 341, 341, 341, 948, 948, 948, 948, 02239 948, 973, 352, 352, 352, 352, 352, 948, 948, 976, 02240 978, 979, 979, 979, 979, 979, 979, 979, 948, 948, 02241 256, 948, 986, 948, 258, 948, 987, 258, 988, 274, 02242 280, 948, 989, 948, 282, 948, 990, 385, 948, 948, 02243 991, 948, 948, 992, 948, 993, 948, 994, 993, 948, 02244 02245 948, 995, 948, 996, 948, 997, 996, 948, 948, 998, 02246 948, 999, 948, 1000, 999, 948, 948, 1001, 948, 948, 02247 1002, 948, 1003, 948, 1004, 1003, 1005, 1006, 1006, 1006, 02248 1006, 1006, 1006, 948, 948, 948, 948, 1007, 1007, 439, 02249 439, 439, 439, 948, 948, 1008, 1008, 447, 1009, 948, 02250 948, 948, 1009, 453, 453, 453, 453, 453, 447, 447, 02251 448, 1010, 948, 463, 463, 948, 948, 948, 1011, 1011, 02252 470, 470, 470, 470, 948, 948, 1012, 1012, 478, 1013, 02253 948, 948, 948, 1013, 484, 484, 484, 484, 484, 478, 02254 478, 478, 948, 948, 1014, 1014, 496, 948, 948, 948, 02255 02256 1015, 1015, 502, 502, 502, 502, 948, 948, 1016, 1016, 02257 510, 1017, 948, 948, 948, 1017, 516, 516, 516, 516, 02258 516, 510, 510, 511, 948, 948, 948, 1018, 1018, 529, 02259 529, 529, 529, 948, 948, 1019, 1019, 537, 1020, 948, 02260 948, 948, 1020, 543, 543, 543, 543, 543, 537, 537, 02261 538, 948, 948, 948, 1021, 1021, 556, 556, 556, 556, 02262 948, 948, 1022, 1022, 564, 1023, 948, 948, 948, 1023, 02263 570, 570, 570, 570, 570, 564, 564, 564, 948, 948, 02264 1024, 1024, 582, 948, 948, 948, 1025, 1025, 588, 588, 02265 588, 588, 948, 948, 1026, 1026, 596, 1027, 948, 948, 02266 02267 948, 1027, 602, 602, 602, 602, 602, 596, 596, 597, 02268 1028, 1029, 1029, 1029, 1029, 948, 948, 1030, 1031, 1031, 02269 948, 948, 1032, 948, 948, 1033, 948, 1034, 948, 1035, 02270 1034, 1036, 1036, 948, 1037, 1036, 948, 1035, 948, 1038, 02271 1037, 1038, 948, 948, 1039, 1040, 1040, 948, 948, 1041, 02272 948, 948, 1042, 1043, 1043, 948, 948, 1044, 948, 948, 02273 1045, 948, 1046, 948, 1047, 1046, 1048, 1048, 948, 1049, 02274 1048, 948, 1047, 948, 1050, 1049, 1050, 948, 948, 1051, 02275 1052, 1052, 948, 948, 1053, 1054, 1055, 1055, 1055, 1055, 02276 948, 948, 1056, 1056, 694, 1057, 1057, 697, 948, 948, 02277 02278 1058, 1058, 702, 948, 948, 948, 1059, 1059, 708, 708, 02279 708, 708, 948, 948, 1060, 1060, 716, 948, 948, 948, 02280 1061, 1061, 722, 722, 722, 722, 716, 716, 717, 1062, 02281 1062, 731, 1063, 948, 948, 948, 1063, 737, 737, 737, 02282 737, 737, 731, 731, 732, 948, 948, 1064, 1064, 749, 02283 749, 749, 750, 948, 948, 1065, 1065, 757, 1066, 1066, 02284 760, 948, 948, 1067, 1067, 765, 948, 948, 1068, 1068, 02285 770, 1069, 1069, 773, 948, 948, 1070, 1070, 778, 948, 02286 948, 948, 1071, 1071, 784, 784, 784, 784, 948, 948, 02287 1072, 1072, 792, 948, 948, 948, 1073, 1073, 798, 798, 02288 02289 798, 798, 792, 792, 793, 1074, 1074, 807, 1075, 948, 02290 948, 948, 1075, 813, 813, 813, 813, 813, 807, 807, 02291 808, 948, 948, 1076, 1076, 825, 825, 825, 826, 948, 02292 948, 1077, 1077, 833, 1078, 1078, 836, 948, 948, 1079, 02293 1079, 841, 1080, 1081, 1081, 1081, 948, 948, 1082, 1083, 02294 1083, 948, 948, 1084, 1085, 1085, 948, 948, 1086, 1087, 02295 1087, 948, 948, 784, 793, 792, 796, 948, 798, 808, 02296 807, 812, 948, 813, 826, 825, 1080, 1081, 1081, 948, 02297 948, 1082, 882, 882, 851, 851, 851, 948, 948, 1084, 02298 890, 890, 856, 856, 856, 948, 948, 1086, 898, 898, 02299 02300 861, 861, 861, 948, 948, 784, 784, 784, 792, 792, 02301 793, 948, 948, 798, 798, 798, 807, 807, 808, 948, 02302 823, 813, 813, 813, 825, 825, 826, 1080, 1081, 1081, 02303 1080, 1081, 1081, 1080, 1081, 1080, 1080, 1088, 1088, 1088, 02304 948, 1088, 948, 1089, 1089, 1089, 1089, 0, 948, 948, 02305 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 02306 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 02307 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 02308 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 02309 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 02310 02311 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 02312 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 02313 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 02314 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 02315 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 02316 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 02317 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 02318 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 02319 948, 948, 948, 948, 948, 948, 948, 948, 948 02320 } ; 02321 02322 static const short int yy_nxt[7711] = 02323 { 0, 02324 948, 47, 48, 47, 948, 948, 49, 47, 48, 47, 02325 469, 472, 49, 46, 47, 48, 47, 50, 46, 51, 02326 46, 46, 46, 46, 46, 46, 46, 50, 50, 52, 02327 53, 50, 54, 50, 50, 55, 50, 56, 57, 50, 02328 58, 59, 50, 50, 46, 46, 46, 50, 60, 61, 02329 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 02330 47, 48, 47, 147, 148, 51, 47, 48, 47, 613, 02331 462, 51, 462, 614, 129, 130, 129, 62, 63, 131, 02332 132, 948, 132, 62, 63, 133, 64, 153, 154, 154, 02333 154, 154, 64, 47, 48, 47, 326, 948, 51, 277, 02334 02335 65, 66, 67, 67, 67, 67, 155, 155, 155, 155, 02336 360, 63, 68, 69, 70, 70, 70, 70, 68, 69, 02337 70, 70, 70, 70, 71, 46, 72, 73, 73, 73, 02338 71, 46, 72, 73, 73, 73, 74, 46, 75, 76, 02339 76, 76, 74, 46, 75, 76, 76, 76, 77, 78, 02340 79, 79, 79, 79, 77, 78, 79, 79, 79, 79, 02341 47, 48, 47, 326, 81, 82, 47, 48, 47, 277, 02342 81, 82, 84, 85, 86, 86, 86, 86, 83, 159, 02343 160, 160, 160, 160, 83, 84, 85, 86, 86, 86, 02344 86, 87, 88, 89, 89, 89, 89, 87, 88, 89, 02345 02346 89, 89, 89, 90, 91, 92, 92, 92, 92, 90, 02347 91, 92, 92, 92, 92, 93, 94, 95, 95, 95, 02348 95, 270, 935, 121, 48, 121, 96, 122, 123, 121, 02349 48, 121, 933, 122, 123, 270, 932, 270, 97, 930, 02350 98, 93, 94, 95, 95, 95, 95, 391, 135, 130, 02351 135, 270, 96, 136, 124, 418, 618, 121, 48, 121, 02352 124, 125, 123, 929, 97, 391, 98, 99, 100, 101, 02353 101, 101, 101, 418, 618, 121, 48, 121, 96, 125, 02354 123, 135, 130, 135, 469, 472, 136, 879, 124, 623, 02355 102, 878, 98, 99, 100, 101, 101, 101, 101, 161, 02356 02357 161, 161, 161, 132, 96, 132, 124, 623, 133, 137, 02358 163, 163, 163, 163, 846, 270, 102, 845, 98, 103, 02359 46, 104, 105, 105, 105, 167, 167, 167, 167, 844, 02360 96, 270, 126, 46, 127, 128, 128, 128, 167, 167, 02361 167, 167, 106, 46, 98, 103, 46, 104, 105, 105, 02362 105, 169, 170, 170, 170, 170, 96, 690, 126, 46, 02363 127, 128, 128, 128, 171, 171, 171, 171, 106, 46, 02364 98, 107, 108, 109, 109, 109, 109, 159, 160, 160, 02365 160, 160, 96, 281, 284, 162, 181, 181, 181, 181, 02366 167, 167, 167, 167, 102, 689, 98, 107, 108, 109, 02367 02368 109, 109, 109, 162, 185, 185, 185, 185, 96, 688, 02369 168, 135, 130, 135, 687, 134, 177, 391, 281, 284, 02370 102, 615, 98, 47, 48, 47, 168, 111, 112, 179, 02371 180, 180, 180, 180, 645, 391, 179, 180, 180, 180, 02372 180, 113, 484, 487, 182, 183, 184, 184, 184, 184, 02373 484, 487, 645, 102, 650, 98, 47, 48, 47, 612, 02374 111, 112, 182, 189, 190, 190, 190, 190, 191, 191, 02375 191, 191, 650, 434, 113, 195, 196, 196, 196, 196, 02376 197, 197, 197, 197, 433, 432, 102, 431, 98, 114, 02377 115, 116, 116, 116, 116, 202, 203, 203, 203, 203, 02378 02379 96, 204, 204, 204, 204, 202, 203, 203, 203, 203, 02380 430, 429, 102, 205, 98, 114, 115, 116, 116, 116, 02381 116, 206, 206, 206, 206, 428, 96, 206, 206, 206, 02382 206, 205, 206, 206, 206, 206, 370, 369, 102, 368, 02383 98, 117, 118, 119, 119, 119, 119, 207, 210, 210, 02384 210, 210, 96, 208, 209, 209, 209, 209, 218, 219, 02385 219, 219, 219, 207, 97, 653, 98, 117, 118, 119, 02386 119, 119, 119, 220, 220, 220, 220, 367, 96, 658, 02387 135, 130, 135, 653, 134, 216, 226, 226, 226, 226, 02388 97, 366, 98, 156, 156, 156, 365, 658, 157, 364, 02389 02390 363, 153, 154, 154, 154, 154, 231, 130, 231, 158, 02391 134, 232, 134, 224, 225, 225, 225, 225, 234, 130, 02392 234, 362, 134, 235, 253, 252, 251, 158, 164, 164, 02393 164, 250, 249, 165, 248, 247, 246, 163, 163, 163, 02394 163, 237, 237, 237, 237, 237, 237, 237, 237, 237, 02395 237, 237, 237, 129, 130, 129, 245, 166, 131, 135, 02396 130, 135, 418, 244, 136, 238, 132, 240, 132, 240, 02397 243, 133, 241, 166, 172, 172, 172, 236, 680, 173, 02398 418, 238, 169, 170, 170, 170, 170, 135, 130, 135, 02399 174, 217, 136, 135, 130, 135, 680, 685, 136, 135, 02400 02401 130, 135, 201, 178, 136, 618, 623, 152, 174, 186, 02402 186, 186, 849, 151, 187, 685, 150, 183, 184, 184, 02403 184, 184, 149, 618, 623, 188, 135, 130, 135, 854, 02404 849, 136, 155, 155, 155, 155, 948, 155, 155, 155, 02405 155, 146, 145, 188, 192, 192, 192, 854, 144, 193, 02406 242, 143, 189, 190, 190, 190, 190, 859, 263, 263, 02407 194, 264, 264, 264, 264, 161, 161, 161, 161, 161, 02408 161, 161, 161, 142, 645, 859, 162, 141, 194, 198, 02409 198, 198, 650, 140, 199, 139, 948, 195, 196, 196, 02410 196, 196, 645, 948, 162, 200, 167, 167, 167, 167, 02411 02412 650, 159, 160, 160, 160, 160, 164, 164, 164, 162, 02413 948, 165, 948, 200, 211, 211, 211, 948, 948, 212, 02414 948, 948, 208, 209, 209, 209, 209, 162, 265, 265, 02415 213, 266, 266, 266, 266, 171, 171, 171, 171, 948, 02416 171, 171, 171, 171, 181, 181, 181, 181, 213, 221, 02417 221, 221, 948, 948, 222, 653, 948, 218, 219, 219, 02418 219, 219, 948, 287, 287, 223, 288, 288, 288, 288, 02419 135, 130, 135, 653, 134, 177, 135, 130, 135, 658, 02420 134, 177, 948, 223, 227, 227, 227, 948, 948, 228, 02421 948, 948, 224, 225, 225, 225, 225, 658, 289, 289, 02422 02423 229, 290, 290, 290, 290, 185, 185, 185, 185, 179, 02424 180, 180, 180, 180, 948, 948, 948, 182, 229, 156, 02425 156, 156, 948, 948, 157, 948, 254, 255, 256, 256, 02426 256, 256, 258, 156, 258, 182, 948, 259, 948, 260, 02427 261, 262, 262, 262, 262, 164, 164, 164, 864, 948, 02428 165, 948, 267, 948, 268, 269, 269, 269, 271, 164, 02429 271, 948, 948, 272, 948, 273, 864, 274, 275, 275, 02430 275, 172, 172, 172, 948, 948, 173, 948, 278, 279, 02431 280, 280, 280, 280, 282, 172, 282, 948, 948, 283, 02432 948, 284, 285, 286, 286, 286, 286, 181, 181, 181, 02433 02434 181, 948, 948, 869, 182, 948, 185, 185, 185, 185, 02435 300, 300, 948, 301, 301, 301, 301, 191, 191, 191, 02436 191, 869, 182, 186, 186, 186, 948, 948, 187, 948, 02437 291, 292, 293, 293, 293, 293, 295, 186, 295, 874, 02438 680, 296, 685, 297, 298, 299, 299, 299, 299, 948, 02439 191, 191, 191, 191, 192, 192, 192, 874, 680, 193, 02440 685, 302, 303, 304, 304, 304, 304, 306, 192, 306, 02441 948, 948, 307, 948, 308, 309, 310, 310, 310, 310, 02442 311, 311, 849, 312, 312, 312, 312, 197, 197, 197, 02443 197, 948, 197, 197, 197, 197, 198, 198, 198, 948, 02444 02445 849, 199, 948, 313, 314, 315, 315, 315, 315, 317, 02446 198, 317, 948, 948, 318, 948, 319, 320, 321, 321, 02447 321, 321, 322, 322, 948, 323, 323, 323, 323, 204, 02448 204, 204, 204, 202, 203, 203, 203, 203, 948, 948, 02449 854, 205, 204, 204, 204, 204, 859, 324, 324, 205, 02450 325, 325, 325, 325, 206, 206, 206, 206, 854, 205, 02451 210, 210, 210, 210, 859, 948, 948, 205, 948, 210, 02452 210, 210, 210, 211, 211, 211, 948, 948, 212, 948, 02453 327, 328, 329, 329, 329, 329, 331, 211, 331, 948, 02454 948, 332, 948, 333, 334, 335, 335, 335, 335, 336, 02455 02456 336, 948, 337, 337, 337, 337, 135, 130, 135, 948, 02457 134, 216, 135, 130, 135, 948, 134, 216, 220, 220, 02458 220, 220, 948, 220, 220, 220, 220, 347, 347, 948, 02459 348, 348, 348, 348, 948, 240, 134, 240, 134, 948, 02460 241, 948, 134, 948, 134, 221, 221, 221, 948, 948, 02461 222, 948, 338, 339, 340, 340, 340, 340, 342, 221, 02462 342, 948, 948, 343, 948, 344, 345, 346, 346, 346, 02463 346, 226, 226, 226, 226, 227, 227, 227, 948, 948, 02464 228, 948, 948, 224, 225, 225, 225, 225, 948, 948, 02465 948, 229, 948, 226, 226, 226, 226, 358, 358, 948, 02466 02467 359, 359, 359, 359, 237, 237, 237, 237, 948, 229, 02468 227, 227, 227, 948, 948, 228, 948, 349, 350, 351, 02469 351, 351, 351, 353, 227, 353, 948, 948, 354, 948, 02470 355, 356, 357, 357, 357, 357, 231, 130, 231, 948, 02471 948, 232, 234, 130, 234, 948, 134, 235, 234, 130, 02472 234, 948, 134, 235, 234, 130, 234, 948, 134, 235, 02473 234, 130, 234, 948, 134, 235, 240, 240, 240, 240, 02474 948, 241, 241, 135, 130, 135, 948, 948, 136, 255, 02475 256, 256, 256, 256, 371, 371, 371, 371, 264, 264, 02476 264, 264, 948, 361, 372, 372, 372, 948, 948, 373, 02477 02478 948, 948, 255, 256, 256, 256, 256, 948, 948, 948, 02479 374, 375, 376, 375, 948, 948, 377, 266, 266, 266, 02480 266, 266, 266, 266, 266, 948, 948, 378, 374, 258, 02481 156, 258, 948, 948, 259, 948, 260, 261, 262, 262, 02482 262, 262, 258, 156, 258, 378, 948, 259, 948, 260, 02483 261, 262, 262, 262, 262, 156, 156, 156, 948, 948, 02484 157, 948, 948, 948, 264, 264, 264, 264, 269, 269, 02485 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 02486 164, 164, 164, 948, 948, 165, 279, 280, 280, 280, 02487 280, 948, 379, 381, 381, 381, 381, 288, 288, 288, 02488 02489 288, 290, 290, 290, 290, 948, 948, 948, 379, 271, 02490 164, 271, 948, 948, 272, 948, 273, 948, 274, 275, 02491 275, 275, 271, 164, 271, 948, 948, 272, 948, 273, 02492 948, 274, 275, 275, 275, 271, 164, 271, 948, 948, 02493 272, 948, 273, 948, 274, 275, 275, 275, 271, 164, 02494 271, 948, 948, 272, 948, 273, 948, 274, 275, 275, 02495 275, 271, 164, 271, 948, 948, 272, 948, 273, 948, 02496 274, 275, 275, 275, 948, 948, 385, 386, 385, 948, 02497 948, 387, 290, 290, 290, 290, 389, 389, 389, 389, 02498 380, 948, 388, 292, 293, 293, 293, 293, 301, 301, 02499 02500 301, 301, 392, 392, 392, 392, 380, 382, 382, 382, 02501 388, 948, 383, 948, 948, 279, 280, 280, 280, 280, 02502 948, 948, 948, 384, 303, 304, 304, 304, 304, 948, 02503 948, 948, 292, 293, 293, 293, 293, 948, 948, 948, 02504 390, 384, 282, 172, 282, 948, 948, 283, 948, 284, 02505 285, 286, 286, 286, 286, 282, 172, 282, 390, 948, 02506 283, 948, 284, 285, 286, 286, 286, 286, 172, 172, 02507 172, 948, 948, 173, 948, 948, 948, 288, 288, 288, 02508 288, 295, 186, 295, 948, 948, 296, 948, 297, 298, 02509 299, 299, 299, 299, 186, 186, 186, 948, 948, 187, 02510 02511 948, 948, 948, 301, 301, 301, 301, 393, 393, 393, 02512 948, 948, 394, 948, 948, 303, 304, 304, 304, 304, 02513 948, 948, 948, 395, 396, 397, 396, 948, 948, 398, 02514 312, 312, 312, 312, 314, 315, 315, 315, 315, 948, 02515 399, 395, 306, 192, 306, 948, 948, 307, 948, 308, 02516 309, 310, 310, 310, 310, 948, 948, 948, 399, 192, 02517 192, 192, 948, 948, 193, 948, 948, 948, 312, 312, 02518 312, 312, 400, 400, 400, 400, 401, 401, 401, 948, 02519 948, 402, 948, 948, 314, 315, 315, 315, 315, 948, 02520 948, 948, 403, 404, 405, 404, 948, 948, 406, 323, 02521 02522 323, 323, 323, 325, 325, 325, 325, 948, 948, 407, 02523 403, 317, 198, 317, 948, 948, 318, 948, 319, 320, 02524 321, 321, 321, 321, 948, 948, 948, 407, 198, 198, 02525 198, 948, 948, 199, 948, 948, 948, 323, 323, 323, 02526 323, 325, 325, 325, 325, 328, 329, 329, 329, 329, 02527 408, 408, 408, 408, 409, 409, 409, 948, 948, 410, 02528 948, 948, 328, 329, 329, 329, 329, 948, 948, 948, 02529 411, 412, 413, 412, 948, 948, 414, 337, 337, 337, 02530 337, 339, 340, 340, 340, 340, 948, 415, 411, 331, 02531 211, 331, 948, 948, 332, 948, 333, 334, 335, 335, 02532 02533 335, 335, 948, 948, 948, 415, 211, 211, 211, 948, 02534 948, 212, 948, 948, 948, 337, 337, 337, 337, 416, 02535 416, 416, 416, 339, 340, 340, 340, 340, 948, 948, 02536 948, 417, 348, 348, 348, 348, 350, 351, 351, 351, 02537 351, 419, 419, 419, 419, 359, 359, 359, 359, 417, 02538 342, 221, 342, 948, 948, 343, 948, 344, 345, 346, 02539 346, 346, 346, 221, 221, 221, 948, 948, 222, 948, 02540 948, 948, 348, 348, 348, 348, 420, 420, 420, 948, 02541 948, 421, 948, 948, 350, 351, 351, 351, 351, 948, 02542 948, 948, 422, 423, 424, 423, 948, 948, 425, 948, 02543 02544 371, 371, 371, 371, 948, 381, 381, 381, 381, 426, 02545 422, 353, 227, 353, 948, 948, 354, 948, 355, 356, 02546 357, 357, 357, 357, 948, 948, 948, 426, 227, 227, 02547 227, 948, 948, 228, 948, 948, 948, 359, 359, 359, 02548 359, 135, 130, 135, 444, 444, 136, 445, 445, 445, 02549 445, 459, 460, 948, 461, 461, 461, 461, 948, 948, 02550 427, 372, 372, 372, 948, 948, 373, 948, 435, 436, 02551 437, 437, 437, 437, 439, 372, 439, 948, 948, 440, 02552 948, 441, 442, 443, 443, 443, 443, 375, 376, 375, 02553 948, 948, 377, 948, 446, 447, 448, 448, 448, 448, 02554 02555 376, 376, 376, 948, 948, 449, 948, 450, 451, 452, 02556 452, 452, 452, 454, 376, 454, 948, 948, 455, 948, 02557 456, 457, 458, 458, 458, 458, 463, 464, 464, 464, 02558 465, 465, 465, 465, 465, 475, 475, 948, 476, 476, 02559 476, 476, 389, 389, 389, 389, 270, 948, 948, 390, 02560 465, 465, 465, 493, 493, 948, 494, 494, 494, 494, 02561 948, 948, 270, 382, 382, 382, 948, 390, 383, 948, 02562 466, 467, 468, 468, 468, 468, 470, 382, 470, 948, 02563 948, 471, 948, 472, 473, 474, 474, 474, 474, 385, 02564 386, 385, 948, 948, 387, 948, 477, 478, 479, 479, 02565 02566 479, 479, 386, 386, 386, 948, 948, 480, 948, 481, 02567 482, 483, 483, 483, 483, 485, 386, 485, 948, 948, 02568 486, 948, 487, 488, 489, 489, 489, 489, 282, 172, 02569 282, 948, 948, 283, 490, 491, 285, 492, 492, 492, 02570 492, 295, 186, 295, 948, 948, 296, 495, 496, 298, 02571 497, 497, 497, 497, 393, 393, 393, 948, 948, 394, 02572 948, 948, 948, 392, 392, 392, 392, 948, 507, 507, 02573 395, 508, 508, 508, 508, 534, 534, 948, 535, 535, 02574 535, 535, 135, 130, 611, 948, 948, 136, 395, 393, 02575 393, 393, 948, 948, 394, 948, 498, 499, 500, 500, 02576 02577 500, 500, 502, 393, 502, 948, 948, 503, 948, 504, 02578 505, 506, 506, 506, 506, 396, 397, 396, 948, 948, 02579 398, 948, 509, 510, 511, 511, 511, 511, 397, 397, 02580 397, 948, 948, 512, 948, 513, 514, 515, 515, 515, 02581 515, 517, 397, 517, 948, 948, 518, 948, 519, 520, 02582 521, 521, 521, 521, 306, 192, 306, 948, 948, 307, 02583 522, 523, 309, 524, 524, 524, 524, 401, 401, 401, 02584 948, 948, 402, 948, 948, 948, 400, 400, 400, 400, 02585 948, 561, 561, 403, 562, 562, 562, 562, 436, 437, 02586 437, 437, 437, 416, 416, 416, 416, 948, 948, 948, 02587 02588 417, 403, 401, 401, 401, 948, 948, 402, 948, 525, 02589 526, 527, 527, 527, 527, 529, 401, 529, 417, 948, 02590 530, 948, 531, 532, 533, 533, 533, 533, 404, 405, 02591 404, 948, 948, 406, 948, 536, 537, 538, 538, 538, 02592 538, 405, 405, 405, 948, 948, 539, 948, 540, 541, 02593 542, 542, 542, 542, 544, 405, 544, 948, 948, 545, 02594 948, 546, 547, 548, 548, 548, 548, 317, 198, 317, 02595 948, 948, 318, 549, 550, 320, 551, 551, 551, 551, 02596 409, 409, 409, 948, 948, 410, 948, 948, 948, 408, 02597 408, 408, 408, 948, 579, 579, 411, 580, 580, 580, 02598 02599 580, 593, 593, 948, 594, 594, 594, 594, 616, 616, 02600 616, 616, 948, 948, 411, 409, 409, 409, 948, 948, 02601 410, 948, 552, 553, 554, 554, 554, 554, 556, 409, 02602 556, 948, 948, 557, 948, 558, 559, 560, 560, 560, 02603 560, 412, 413, 412, 948, 948, 414, 948, 563, 564, 02604 565, 565, 565, 565, 413, 413, 413, 948, 948, 566, 02605 948, 567, 568, 569, 569, 569, 569, 571, 413, 571, 02606 948, 948, 572, 948, 573, 574, 575, 575, 575, 575, 02607 331, 211, 331, 948, 948, 332, 576, 577, 334, 578, 02608 578, 578, 578, 342, 221, 342, 948, 948, 343, 581, 02609 02610 582, 345, 583, 583, 583, 583, 420, 420, 420, 948, 02611 948, 421, 948, 948, 948, 419, 419, 419, 419, 948, 02612 948, 948, 422, 445, 445, 445, 445, 621, 621, 621, 02613 621, 436, 437, 437, 437, 437, 948, 948, 948, 617, 02614 422, 420, 420, 420, 948, 948, 421, 948, 584, 585, 02615 586, 586, 586, 586, 588, 420, 588, 617, 948, 589, 02616 948, 590, 591, 592, 592, 592, 592, 423, 424, 423, 02617 948, 948, 425, 948, 595, 596, 597, 597, 597, 597, 02618 424, 424, 424, 948, 948, 598, 948, 599, 600, 601, 02619 601, 601, 601, 603, 424, 603, 948, 948, 604, 948, 02620 02621 605, 606, 607, 607, 607, 607, 353, 227, 353, 948, 02622 948, 354, 608, 609, 356, 610, 610, 610, 610, 439, 02623 372, 439, 948, 948, 440, 948, 441, 442, 443, 443, 02624 443, 443, 439, 372, 439, 948, 948, 440, 948, 441, 02625 442, 443, 443, 443, 443, 372, 372, 372, 948, 948, 02626 373, 948, 948, 948, 445, 445, 445, 445, 258, 156, 02627 258, 948, 948, 259, 948, 260, 447, 448, 448, 448, 02628 448, 258, 156, 258, 948, 948, 259, 948, 260, 261, 02629 619, 619, 619, 619, 375, 376, 375, 948, 948, 377, 02630 948, 948, 447, 448, 448, 448, 448, 948, 948, 948, 02631 02632 620, 451, 452, 452, 452, 452, 461, 461, 461, 461, 02633 461, 461, 461, 461, 624, 624, 624, 624, 620, 454, 02634 376, 454, 948, 948, 455, 948, 456, 457, 458, 458, 02635 458, 458, 372, 372, 372, 948, 948, 373, 948, 948, 02636 451, 452, 452, 452, 452, 948, 948, 948, 622, 467, 02637 468, 468, 468, 468, 261, 461, 461, 461, 461, 135, 02638 130, 135, 378, 948, 136, 948, 622, 454, 376, 454, 02639 843, 948, 455, 948, 456, 457, 458, 458, 458, 458, 02640 378, 270, 271, 164, 271, 270, 270, 272, 270, 273, 02641 270, 463, 464, 464, 464, 465, 465, 465, 465, 465, 02642 02643 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 02644 270, 380, 270, 270, 270, 465, 465, 465, 270, 270, 02645 270, 270, 270, 270, 270, 270, 270, 380, 625, 625, 02646 625, 948, 948, 626, 948, 948, 467, 468, 468, 468, 02647 468, 948, 948, 948, 627, 628, 629, 628, 948, 948, 02648 630, 476, 476, 476, 476, 482, 483, 483, 483, 483, 02649 948, 631, 627, 470, 382, 470, 948, 948, 471, 948, 02650 472, 473, 474, 474, 474, 474, 470, 382, 470, 631, 02651 948, 471, 948, 472, 473, 474, 474, 474, 474, 382, 02652 382, 382, 948, 948, 383, 948, 948, 948, 476, 476, 02653 02654 476, 476, 282, 172, 282, 948, 948, 283, 948, 284, 02655 478, 479, 479, 479, 479, 282, 172, 282, 948, 948, 02656 283, 948, 284, 285, 632, 632, 632, 632, 633, 634, 02657 633, 948, 948, 635, 948, 948, 478, 479, 479, 479, 02658 479, 948, 948, 948, 636, 637, 637, 637, 637, 492, 02659 492, 492, 492, 492, 492, 492, 492, 494, 494, 494, 02660 494, 948, 636, 485, 386, 485, 948, 948, 486, 948, 02661 487, 488, 489, 489, 489, 489, 629, 629, 629, 948, 02662 948, 638, 948, 948, 482, 483, 483, 483, 483, 948, 02663 948, 948, 639, 640, 634, 640, 948, 948, 641, 494, 02664 02665 494, 494, 494, 499, 500, 500, 500, 500, 948, 642, 02666 639, 485, 386, 485, 948, 948, 486, 948, 487, 488, 02667 489, 489, 489, 489, 948, 948, 948, 642, 385, 386, 02668 385, 948, 948, 387, 948, 948, 948, 492, 492, 492, 02669 492, 948, 948, 948, 388, 643, 643, 643, 643, 508, 02670 508, 508, 508, 499, 500, 500, 500, 500, 948, 948, 02671 948, 644, 388, 295, 186, 295, 948, 948, 296, 948, 02672 297, 298, 497, 497, 497, 497, 295, 186, 295, 644, 02673 948, 296, 948, 297, 298, 497, 497, 497, 497, 502, 02674 393, 502, 948, 948, 503, 948, 504, 505, 506, 506, 02675 02676 506, 506, 502, 393, 502, 948, 948, 503, 948, 504, 02677 505, 506, 506, 506, 506, 393, 393, 393, 948, 948, 02678 394, 948, 948, 948, 508, 508, 508, 508, 306, 192, 02679 306, 948, 948, 307, 948, 308, 510, 511, 511, 511, 02680 511, 306, 192, 306, 948, 948, 307, 948, 308, 309, 02681 646, 646, 646, 646, 396, 397, 396, 948, 948, 398, 02682 948, 948, 510, 511, 511, 511, 511, 948, 948, 948, 02683 647, 514, 515, 515, 515, 515, 648, 648, 648, 648, 02684 524, 524, 524, 524, 524, 524, 524, 524, 647, 517, 02685 397, 517, 948, 948, 518, 948, 519, 520, 521, 521, 02686 02687 521, 521, 393, 393, 393, 948, 948, 394, 948, 948, 02688 514, 515, 515, 515, 515, 948, 948, 948, 649, 526, 02689 527, 527, 527, 527, 309, 524, 524, 524, 524, 135, 02690 130, 931, 399, 948, 136, 948, 649, 517, 397, 517, 02691 948, 948, 518, 948, 519, 520, 521, 521, 521, 521, 02692 399, 651, 651, 651, 651, 526, 527, 527, 527, 527, 02693 948, 948, 948, 652, 535, 535, 535, 535, 541, 542, 02694 542, 542, 542, 656, 656, 656, 656, 551, 551, 551, 02695 551, 652, 529, 401, 529, 948, 948, 530, 948, 531, 02696 532, 533, 533, 533, 533, 529, 401, 529, 948, 948, 02697 02698 530, 948, 531, 532, 533, 533, 533, 533, 401, 401, 02699 401, 948, 948, 402, 948, 948, 948, 535, 535, 535, 02700 535, 317, 198, 317, 948, 948, 318, 948, 319, 537, 02701 538, 538, 538, 538, 317, 198, 317, 948, 948, 318, 02702 948, 319, 320, 654, 654, 654, 654, 404, 405, 404, 02703 948, 948, 406, 948, 948, 537, 538, 538, 538, 538, 02704 948, 948, 948, 655, 551, 551, 551, 551, 659, 659, 02705 659, 659, 320, 551, 551, 551, 551, 948, 948, 948, 02706 407, 655, 544, 405, 544, 948, 948, 545, 948, 546, 02707 547, 548, 548, 548, 548, 401, 401, 401, 407, 948, 02708 02709 402, 948, 948, 541, 542, 542, 542, 542, 948, 948, 02710 948, 657, 553, 554, 554, 554, 554, 562, 562, 562, 02711 562, 568, 569, 569, 569, 569, 948, 948, 948, 657, 02712 544, 405, 544, 948, 948, 545, 948, 546, 547, 548, 02713 548, 548, 548, 660, 660, 660, 948, 948, 661, 948, 02714 948, 553, 554, 554, 554, 554, 948, 948, 948, 662, 02715 663, 664, 663, 948, 948, 665, 672, 672, 672, 672, 02716 578, 578, 578, 578, 948, 948, 666, 662, 556, 409, 02717 556, 948, 948, 557, 948, 558, 559, 560, 560, 560, 02718 560, 556, 409, 556, 666, 948, 557, 948, 558, 559, 02719 02720 560, 560, 560, 560, 409, 409, 409, 948, 948, 410, 02721 948, 948, 948, 562, 562, 562, 562, 331, 211, 331, 02722 948, 948, 332, 948, 333, 564, 565, 565, 565, 565, 02723 331, 211, 331, 948, 948, 332, 948, 333, 334, 667, 02724 667, 667, 667, 668, 669, 668, 948, 948, 670, 948, 02725 948, 564, 565, 565, 565, 565, 948, 948, 948, 671, 02726 675, 669, 675, 948, 948, 676, 578, 578, 578, 578, 02727 580, 580, 580, 580, 948, 948, 677, 671, 571, 413, 02728 571, 948, 948, 572, 948, 573, 574, 575, 575, 575, 02729 575, 664, 664, 664, 677, 948, 673, 948, 948, 568, 02730 02731 569, 569, 569, 569, 948, 948, 948, 674, 580, 580, 02732 580, 580, 585, 586, 586, 586, 586, 678, 678, 678, 02733 678, 594, 594, 594, 594, 674, 571, 413, 571, 948, 02734 948, 572, 948, 573, 574, 575, 575, 575, 575, 412, 02735 413, 412, 948, 948, 414, 948, 948, 948, 578, 578, 02736 578, 578, 948, 948, 948, 415, 600, 601, 601, 601, 02737 601, 948, 948, 948, 585, 586, 586, 586, 586, 948, 02738 948, 948, 679, 415, 342, 221, 342, 948, 948, 343, 02739 948, 344, 345, 583, 583, 583, 583, 342, 221, 342, 02740 679, 948, 343, 948, 344, 345, 583, 583, 583, 583, 02741 02742 588, 420, 588, 948, 948, 589, 948, 590, 591, 592, 02743 592, 592, 592, 588, 420, 588, 948, 948, 589, 948, 02744 590, 591, 592, 592, 592, 592, 420, 420, 420, 948, 02745 948, 421, 948, 948, 948, 594, 594, 594, 594, 353, 02746 227, 353, 948, 948, 354, 948, 355, 596, 597, 597, 02747 597, 597, 353, 227, 353, 948, 948, 354, 948, 355, 02748 356, 681, 681, 681, 681, 423, 424, 423, 948, 948, 02749 425, 948, 948, 596, 597, 597, 597, 597, 948, 948, 02750 948, 682, 683, 683, 683, 683, 610, 610, 610, 610, 02751 610, 610, 610, 610, 692, 692, 692, 692, 948, 682, 02752 02753 603, 424, 603, 948, 948, 604, 948, 605, 606, 607, 02754 607, 607, 607, 420, 420, 420, 948, 948, 421, 948, 02755 948, 600, 601, 601, 601, 601, 135, 130, 135, 684, 02756 948, 136, 948, 948, 948, 356, 610, 610, 610, 610, 02757 135, 130, 135, 426, 948, 136, 948, 684, 603, 424, 02758 603, 948, 938, 604, 686, 605, 606, 607, 607, 607, 02759 607, 426, 616, 616, 616, 616, 948, 691, 691, 617, 02760 692, 692, 692, 692, 699, 699, 948, 700, 700, 700, 02761 700, 692, 692, 692, 692, 948, 948, 617, 439, 372, 02762 439, 948, 948, 440, 693, 694, 442, 695, 695, 695, 02763 02764 695, 375, 376, 375, 948, 948, 377, 948, 260, 261, 02765 619, 619, 619, 619, 948, 713, 713, 620, 714, 714, 02766 714, 714, 746, 746, 948, 747, 747, 747, 747, 700, 02767 700, 700, 700, 948, 948, 620, 258, 156, 258, 948, 02768 948, 259, 696, 697, 261, 698, 698, 698, 698, 372, 02769 372, 372, 948, 948, 373, 948, 948, 948, 621, 621, 02770 621, 621, 948, 754, 754, 622, 755, 755, 755, 755, 02771 705, 706, 706, 706, 706, 643, 643, 643, 643, 948, 02772 948, 948, 644, 622, 454, 376, 454, 948, 948, 455, 02773 701, 702, 457, 703, 703, 703, 703, 625, 625, 625, 02774 02775 644, 948, 626, 948, 948, 948, 624, 624, 624, 624, 02776 948, 762, 762, 627, 763, 763, 763, 763, 847, 847, 02777 847, 847, 948, 651, 651, 651, 651, 948, 948, 948, 02778 652, 627, 625, 625, 625, 948, 948, 626, 948, 704, 02779 705, 706, 706, 706, 706, 708, 625, 708, 652, 948, 02780 709, 948, 710, 711, 712, 712, 712, 712, 628, 629, 02781 628, 948, 948, 630, 948, 715, 716, 717, 717, 717, 02782 717, 629, 629, 629, 948, 948, 638, 948, 718, 719, 02783 720, 720, 720, 720, 722, 629, 722, 948, 948, 723, 02784 948, 724, 725, 726, 726, 726, 726, 470, 382, 470, 02785 02786 948, 948, 471, 727, 728, 473, 729, 729, 729, 729, 02787 633, 634, 633, 948, 948, 635, 948, 284, 285, 632, 02788 632, 632, 632, 948, 767, 767, 636, 768, 768, 768, 02789 768, 775, 775, 948, 776, 776, 776, 776, 714, 714, 02790 714, 714, 948, 948, 636, 633, 634, 633, 948, 948, 02791 635, 948, 730, 731, 732, 732, 732, 732, 634, 634, 02792 634, 948, 948, 733, 948, 734, 735, 736, 736, 736, 02793 736, 738, 634, 738, 948, 948, 739, 948, 740, 741, 02794 742, 742, 742, 742, 282, 172, 282, 948, 948, 283, 02795 743, 744, 285, 745, 745, 745, 745, 629, 629, 629, 02796 02797 948, 948, 638, 948, 948, 948, 637, 637, 637, 637, 02798 948, 789, 789, 639, 790, 790, 790, 790, 822, 822, 02799 948, 823, 823, 823, 823, 719, 720, 720, 720, 720, 02800 948, 639, 722, 629, 722, 948, 948, 723, 948, 724, 02801 725, 726, 726, 726, 726, 640, 634, 640, 948, 948, 02802 641, 948, 748, 749, 750, 750, 750, 750, 738, 634, 02803 738, 948, 948, 739, 948, 740, 741, 742, 742, 742, 02804 742, 485, 386, 485, 948, 948, 486, 751, 752, 488, 02805 753, 753, 753, 753, 502, 393, 502, 948, 948, 503, 02806 756, 757, 505, 758, 758, 758, 758, 396, 397, 396, 02807 02808 948, 948, 398, 948, 308, 309, 646, 646, 646, 646, 02809 948, 830, 830, 647, 831, 831, 831, 831, 852, 852, 02810 852, 852, 948, 678, 678, 678, 678, 948, 948, 948, 02811 679, 647, 306, 192, 306, 948, 948, 307, 759, 760, 02812 309, 761, 761, 761, 761, 393, 393, 393, 679, 948, 02813 394, 948, 948, 948, 648, 648, 648, 648, 948, 838, 02814 838, 649, 839, 839, 839, 839, 729, 729, 729, 729, 02815 705, 706, 706, 706, 706, 948, 948, 948, 848, 649, 02816 517, 397, 517, 948, 948, 518, 764, 765, 520, 766, 02817 766, 766, 766, 529, 401, 529, 848, 948, 530, 769, 02818 02819 770, 532, 771, 771, 771, 771, 404, 405, 404, 948, 02820 948, 406, 948, 319, 320, 654, 654, 654, 654, 948, 02821 948, 948, 655, 375, 376, 375, 948, 948, 377, 729, 02822 729, 729, 729, 735, 736, 736, 736, 736, 948, 378, 02823 655, 317, 198, 317, 948, 948, 318, 772, 773, 320, 02824 774, 774, 774, 774, 401, 401, 401, 378, 948, 402, 02825 948, 948, 948, 656, 656, 656, 656, 948, 948, 948, 02826 657, 857, 857, 857, 857, 745, 745, 745, 745, 473, 02827 729, 729, 729, 729, 948, 948, 948, 631, 657, 544, 02828 405, 544, 948, 948, 545, 777, 778, 547, 779, 779, 02829 02830 779, 779, 660, 660, 660, 631, 948, 661, 948, 948, 02831 948, 659, 659, 659, 659, 948, 948, 948, 662, 745, 02832 745, 745, 745, 747, 747, 747, 747, 285, 745, 745, 02833 745, 745, 948, 948, 948, 388, 662, 660, 660, 660, 02834 948, 948, 661, 948, 780, 781, 782, 782, 782, 782, 02835 784, 660, 784, 388, 948, 785, 948, 786, 787, 788, 02836 788, 788, 788, 663, 664, 663, 948, 948, 665, 948, 02837 791, 792, 793, 793, 793, 793, 664, 664, 664, 948, 02838 948, 673, 948, 794, 795, 796, 796, 796, 796, 798, 02839 664, 798, 948, 948, 799, 948, 800, 801, 802, 802, 02840 02841 802, 802, 556, 409, 556, 948, 948, 557, 803, 804, 02842 559, 805, 805, 805, 805, 668, 669, 668, 948, 948, 02843 670, 948, 333, 334, 667, 667, 667, 667, 948, 948, 02844 948, 671, 753, 753, 753, 753, 753, 753, 753, 753, 02845 488, 753, 753, 753, 753, 948, 948, 948, 642, 671, 02846 668, 669, 668, 948, 948, 670, 948, 806, 807, 808, 02847 808, 808, 808, 669, 669, 669, 642, 948, 809, 948, 02848 810, 811, 812, 812, 812, 812, 814, 669, 814, 948, 02849 948, 815, 948, 816, 817, 818, 818, 818, 818, 331, 02850 211, 331, 948, 948, 332, 819, 820, 334, 821, 821, 02851 02852 821, 821, 664, 664, 664, 948, 948, 673, 948, 948, 02853 948, 672, 672, 672, 672, 948, 948, 948, 674, 755, 02854 755, 755, 755, 755, 755, 755, 755, 763, 763, 763, 02855 763, 768, 768, 768, 768, 948, 674, 798, 664, 798, 02856 948, 948, 799, 948, 800, 801, 802, 802, 802, 802, 02857 675, 669, 675, 948, 948, 676, 948, 824, 825, 826, 02858 826, 826, 826, 814, 669, 814, 948, 948, 815, 948, 02859 816, 817, 818, 818, 818, 818, 571, 413, 571, 948, 02860 948, 572, 827, 828, 574, 829, 829, 829, 829, 588, 02861 420, 588, 948, 948, 589, 832, 833, 591, 834, 834, 02862 02863 834, 834, 423, 424, 423, 948, 948, 425, 948, 355, 02864 356, 681, 681, 681, 681, 948, 948, 948, 682, 396, 02865 397, 396, 948, 948, 398, 768, 768, 768, 768, 776, 02866 776, 776, 776, 948, 948, 399, 682, 353, 227, 353, 02867 948, 948, 354, 835, 836, 356, 837, 837, 837, 837, 02868 420, 420, 420, 399, 948, 421, 948, 948, 948, 683, 02869 683, 683, 683, 948, 948, 948, 684, 404, 405, 404, 02870 948, 948, 406, 781, 782, 782, 782, 782, 862, 862, 02871 862, 862, 948, 407, 684, 603, 424, 603, 948, 948, 02872 604, 840, 841, 606, 842, 842, 842, 842, 439, 372, 02873 02874 439, 407, 948, 440, 948, 441, 442, 695, 695, 695, 02875 695, 439, 372, 439, 948, 948, 440, 948, 441, 442, 02876 695, 695, 695, 695, 258, 156, 258, 948, 948, 259, 02877 948, 260, 261, 698, 698, 698, 698, 258, 156, 258, 02878 948, 948, 259, 948, 260, 261, 698, 698, 698, 698, 02879 372, 372, 372, 948, 948, 373, 948, 948, 948, 700, 02880 700, 700, 700, 454, 376, 454, 948, 948, 455, 948, 02881 456, 457, 703, 703, 703, 703, 454, 376, 454, 948, 02882 948, 455, 948, 456, 457, 703, 703, 703, 703, 708, 02883 625, 708, 948, 948, 709, 948, 710, 711, 712, 712, 02884 02885 712, 712, 708, 625, 708, 948, 948, 709, 948, 710, 02886 711, 712, 712, 712, 712, 625, 625, 625, 948, 948, 02887 626, 948, 948, 948, 714, 714, 714, 714, 470, 382, 02888 470, 948, 948, 471, 948, 472, 716, 717, 717, 717, 02889 717, 470, 382, 470, 948, 948, 471, 948, 472, 473, 02890 850, 850, 850, 850, 628, 629, 628, 948, 948, 630, 02891 948, 948, 716, 717, 717, 717, 717, 948, 948, 948, 02892 851, 790, 790, 790, 790, 948, 781, 782, 782, 782, 02893 782, 940, 941, 940, 863, 948, 942, 948, 851, 625, 02894 625, 625, 948, 948, 626, 948, 948, 719, 720, 720, 02895 02896 720, 720, 863, 948, 948, 853, 795, 796, 796, 796, 02897 796, 867, 867, 867, 867, 805, 805, 805, 805, 805, 02898 805, 805, 805, 853, 722, 629, 722, 948, 948, 723, 02899 948, 724, 725, 726, 726, 726, 726, 722, 629, 722, 02900 948, 948, 723, 948, 724, 725, 726, 726, 726, 726, 02901 282, 172, 282, 948, 948, 283, 948, 284, 731, 732, 02902 732, 732, 732, 282, 172, 282, 948, 948, 283, 948, 02903 284, 285, 855, 855, 855, 855, 633, 634, 633, 948, 02904 948, 635, 948, 948, 731, 732, 732, 732, 732, 948, 02905 948, 948, 856, 811, 812, 812, 812, 812, 948, 948, 02906 02907 948, 559, 805, 805, 805, 805, 948, 948, 948, 666, 02908 856, 738, 634, 738, 948, 948, 739, 948, 740, 741, 02909 742, 742, 742, 742, 629, 629, 629, 666, 948, 638, 02910 948, 948, 735, 736, 736, 736, 736, 948, 948, 948, 02911 858, 872, 872, 872, 872, 821, 821, 821, 821, 821, 02912 821, 821, 821, 823, 823, 823, 823, 948, 858, 738, 02913 634, 738, 948, 948, 739, 948, 740, 741, 742, 742, 02914 742, 742, 629, 629, 629, 948, 948, 638, 948, 948, 02915 948, 747, 747, 747, 747, 485, 386, 485, 948, 948, 02916 486, 948, 487, 749, 750, 750, 750, 750, 485, 386, 02917 02918 485, 948, 948, 486, 948, 487, 488, 860, 860, 860, 02919 860, 640, 634, 640, 948, 948, 641, 948, 948, 749, 02920 750, 750, 750, 750, 948, 948, 948, 861, 829, 829, 02921 829, 829, 829, 829, 829, 829, 334, 821, 821, 821, 02922 821, 948, 948, 948, 415, 861, 502, 393, 502, 948, 02923 948, 503, 948, 504, 505, 758, 758, 758, 758, 502, 02924 393, 502, 415, 948, 503, 948, 504, 505, 758, 758, 02925 758, 758, 306, 192, 306, 948, 948, 307, 948, 308, 02926 309, 761, 761, 761, 761, 306, 192, 306, 948, 948, 02927 307, 948, 308, 309, 761, 761, 761, 761, 393, 393, 02928 02929 393, 948, 948, 394, 948, 948, 948, 763, 763, 763, 02930 763, 517, 397, 517, 948, 948, 518, 948, 519, 520, 02931 766, 766, 766, 766, 517, 397, 517, 948, 948, 518, 02932 948, 519, 520, 766, 766, 766, 766, 529, 401, 529, 02933 948, 948, 530, 948, 531, 532, 771, 771, 771, 771, 02934 529, 401, 529, 948, 948, 530, 948, 531, 532, 771, 02935 771, 771, 771, 317, 198, 317, 948, 948, 318, 948, 02936 319, 320, 774, 774, 774, 774, 317, 198, 317, 948, 02937 948, 318, 948, 319, 320, 774, 774, 774, 774, 401, 02938 401, 401, 948, 948, 402, 948, 948, 948, 776, 776, 02939 02940 776, 776, 544, 405, 544, 948, 948, 545, 948, 546, 02941 547, 779, 779, 779, 779, 544, 405, 544, 948, 948, 02942 545, 948, 546, 547, 779, 779, 779, 779, 784, 660, 02943 784, 948, 948, 785, 948, 786, 787, 788, 788, 788, 02944 788, 784, 660, 784, 948, 948, 785, 948, 786, 787, 02945 788, 788, 788, 788, 660, 660, 660, 948, 948, 661, 02946 948, 948, 948, 790, 790, 790, 790, 556, 409, 556, 02947 948, 948, 557, 948, 558, 792, 793, 793, 793, 793, 02948 556, 409, 556, 948, 948, 557, 948, 558, 559, 865, 02949 865, 865, 865, 663, 664, 663, 948, 948, 665, 948, 02950 02951 948, 792, 793, 793, 793, 793, 948, 948, 948, 866, 02952 831, 831, 831, 831, 948, 574, 829, 829, 829, 829, 02953 940, 941, 940, 677, 948, 942, 948, 866, 660, 660, 02954 660, 948, 948, 661, 948, 948, 795, 796, 796, 796, 02955 796, 677, 948, 948, 868, 831, 831, 831, 831, 839, 02956 839, 839, 839, 135, 130, 135, 948, 948, 136, 948, 02957 948, 877, 868, 798, 664, 798, 948, 948, 799, 948, 02958 800, 801, 802, 802, 802, 802, 798, 664, 798, 948, 02959 948, 799, 948, 800, 801, 802, 802, 802, 802, 331, 02960 211, 331, 948, 948, 332, 948, 333, 807, 808, 808, 02961 02962 808, 808, 331, 211, 331, 948, 948, 332, 948, 333, 02963 334, 870, 870, 870, 870, 668, 669, 668, 948, 948, 02964 670, 948, 948, 807, 808, 808, 808, 808, 948, 948, 02965 948, 871, 423, 424, 423, 880, 880, 425, 881, 881, 02966 881, 881, 559, 865, 865, 865, 865, 948, 426, 871, 02967 814, 669, 814, 948, 948, 815, 948, 816, 817, 818, 02968 818, 818, 818, 664, 664, 664, 426, 948, 673, 948, 02969 948, 811, 812, 812, 812, 812, 948, 888, 888, 873, 02970 889, 889, 889, 889, 948, 867, 867, 867, 867, 847, 02971 847, 847, 847, 948, 948, 948, 848, 873, 814, 669, 02972 02973 814, 948, 948, 815, 948, 816, 817, 818, 818, 818, 02974 818, 664, 664, 664, 848, 948, 673, 948, 948, 948, 02975 823, 823, 823, 823, 571, 413, 571, 948, 948, 572, 02976 948, 573, 825, 826, 826, 826, 826, 571, 413, 571, 02977 948, 948, 572, 948, 573, 574, 875, 875, 875, 875, 02978 675, 669, 675, 948, 948, 676, 948, 948, 825, 826, 02979 826, 826, 826, 948, 896, 896, 876, 897, 897, 897, 02980 897, 334, 870, 870, 870, 870, 862, 862, 862, 862, 02981 948, 948, 948, 863, 876, 588, 420, 588, 948, 948, 02982 589, 948, 590, 591, 834, 834, 834, 834, 588, 420, 02983 02984 588, 863, 948, 589, 948, 590, 591, 834, 834, 834, 02985 834, 353, 227, 353, 948, 948, 354, 948, 355, 356, 02986 837, 837, 837, 837, 353, 227, 353, 948, 948, 354, 02987 948, 355, 356, 837, 837, 837, 837, 420, 420, 420, 02988 948, 948, 421, 948, 948, 948, 839, 839, 839, 839, 02989 603, 424, 603, 948, 948, 604, 948, 605, 606, 842, 02990 842, 842, 842, 603, 424, 603, 948, 948, 604, 948, 02991 605, 606, 842, 842, 842, 842, 708, 625, 708, 948, 02992 948, 709, 882, 883, 711, 884, 884, 884, 884, 628, 02993 629, 628, 948, 948, 630, 948, 472, 473, 850, 850, 02994 02995 850, 850, 948, 904, 904, 851, 905, 905, 905, 905, 02996 906, 907, 948, 908, 908, 908, 908, 948, 872, 872, 02997 872, 872, 948, 851, 470, 382, 470, 948, 948, 471, 02998 885, 886, 473, 887, 887, 887, 887, 625, 625, 625, 02999 948, 948, 626, 948, 948, 948, 852, 852, 852, 852, 03000 948, 909, 910, 853, 911, 911, 911, 911, 912, 912, 03001 948, 913, 913, 913, 913, 574, 875, 875, 875, 875, 03002 948, 853, 722, 629, 722, 948, 948, 723, 890, 891, 03003 725, 892, 892, 892, 892, 633, 634, 633, 948, 948, 03004 635, 948, 284, 285, 855, 855, 855, 855, 948, 914, 03005 03006 915, 856, 916, 916, 916, 916, 917, 918, 948, 919, 03007 919, 919, 919, 881, 881, 881, 881, 948, 948, 856, 03008 282, 172, 282, 948, 948, 283, 893, 894, 285, 895, 03009 895, 895, 895, 629, 629, 629, 948, 948, 638, 948, 03010 948, 948, 857, 857, 857, 857, 948, 920, 920, 858, 03011 921, 921, 921, 921, 922, 923, 948, 924, 924, 924, 03012 924, 881, 881, 881, 881, 948, 948, 858, 738, 634, 03013 738, 948, 948, 739, 898, 899, 741, 900, 900, 900, 03014 900, 640, 634, 640, 948, 948, 641, 948, 487, 488, 03015 860, 860, 860, 860, 948, 925, 926, 861, 927, 927, 03016 03017 927, 927, 135, 130, 135, 948, 948, 136, 940, 941, 03018 940, 928, 948, 942, 948, 861, 485, 386, 485, 948, 03019 948, 486, 901, 902, 488, 903, 903, 903, 903, 708, 03020 625, 708, 948, 948, 709, 948, 710, 711, 884, 884, 03021 884, 884, 628, 629, 628, 948, 948, 630, 469, 472, 03022 889, 889, 889, 889, 897, 897, 897, 897, 631, 905, 03023 905, 905, 905, 905, 905, 905, 905, 908, 908, 908, 03024 908, 908, 908, 908, 908, 948, 631, 625, 625, 625, 03025 948, 948, 626, 948, 948, 948, 889, 889, 889, 889, 03026 722, 629, 722, 948, 948, 723, 948, 724, 725, 892, 03027 03028 892, 892, 892, 633, 634, 633, 948, 948, 635, 281, 03029 284, 908, 908, 908, 908, 948, 948, 948, 864, 388, 03030 911, 911, 911, 911, 911, 911, 911, 911, 913, 913, 03031 913, 913, 916, 916, 916, 916, 864, 388, 629, 629, 03032 629, 948, 948, 638, 948, 948, 948, 897, 897, 897, 03033 897, 738, 634, 738, 948, 948, 739, 948, 740, 741, 03034 900, 900, 900, 900, 640, 634, 640, 948, 948, 641, 03035 484, 487, 948, 559, 911, 911, 911, 911, 948, 948, 03036 642, 666, 916, 916, 916, 916, 948, 948, 916, 916, 03037 916, 916, 135, 130, 135, 869, 948, 136, 642, 666, 03038 03039 660, 660, 660, 948, 948, 661, 948, 948, 948, 913, 03040 913, 913, 913, 869, 919, 919, 919, 919, 919, 919, 03041 919, 919, 334, 919, 919, 919, 919, 937, 948, 948, 03042 415, 921, 921, 921, 921, 921, 921, 921, 921, 924, 03043 924, 924, 924, 924, 924, 924, 924, 948, 415, 924, 03044 924, 924, 924, 948, 948, 948, 874, 927, 927, 927, 03045 927, 927, 927, 927, 927, 574, 927, 927, 927, 927, 03046 135, 130, 135, 677, 874, 136, 135, 130, 135, 948, 03047 943, 136, 943, 948, 948, 944, 948, 940, 941, 940, 03048 948, 677, 942, 943, 946, 943, 946, 948, 944, 947, 03049 03050 946, 946, 946, 946, 948, 947, 947, 946, 948, 946, 03051 948, 948, 947, 934, 948, 948, 948, 948, 936, 46, 03052 46, 46, 46, 46, 46, 46, 46, 80, 80, 80, 03053 80, 80, 80, 80, 80, 110, 110, 110, 110, 110, 03054 110, 110, 110, 120, 120, 120, 120, 120, 120, 120, 03055 120, 134, 134, 134, 134, 134, 134, 134, 134, 138, 03056 948, 948, 138, 175, 948, 948, 175, 948, 175, 175, 03057 175, 176, 176, 176, 176, 176, 176, 176, 176, 214, 03058 948, 948, 214, 948, 214, 214, 215, 215, 215, 215, 03059 215, 215, 215, 215, 230, 230, 948, 230, 948, 230, 03060 03061 230, 230, 233, 233, 233, 233, 233, 233, 233, 233, 03062 239, 239, 948, 239, 239, 239, 239, 239, 257, 257, 03063 257, 257, 257, 257, 257, 257, 270, 270, 270, 270, 03064 270, 270, 270, 270, 276, 276, 948, 948, 276, 276, 03065 281, 281, 281, 281, 281, 281, 281, 281, 294, 294, 03066 294, 294, 294, 294, 294, 294, 305, 305, 305, 305, 03067 305, 305, 305, 305, 316, 316, 316, 316, 316, 316, 03068 316, 316, 330, 330, 330, 330, 330, 330, 330, 330, 03069 341, 341, 341, 341, 341, 341, 341, 341, 352, 352, 03070 352, 352, 352, 352, 352, 352, 230, 230, 948, 230, 03071 03072 948, 230, 230, 230, 233, 233, 233, 233, 233, 233, 03073 233, 233, 239, 239, 948, 239, 239, 239, 239, 239, 03074 134, 134, 134, 134, 134, 134, 134, 134, 138, 948, 03075 948, 138, 257, 257, 257, 257, 257, 257, 257, 257, 03076 270, 270, 270, 270, 270, 270, 270, 270, 276, 276, 03077 948, 948, 276, 276, 281, 281, 281, 281, 281, 281, 03078 281, 281, 438, 438, 438, 438, 438, 438, 438, 438, 03079 453, 453, 453, 453, 453, 453, 453, 453, 469, 469, 03080 469, 469, 469, 469, 469, 469, 484, 484, 484, 484, 03081 484, 484, 484, 484, 294, 294, 294, 294, 294, 294, 03082 03083 294, 294, 501, 501, 501, 501, 501, 501, 501, 501, 03084 305, 305, 305, 305, 305, 305, 305, 305, 516, 516, 03085 516, 516, 516, 516, 516, 516, 528, 528, 528, 528, 03086 528, 528, 528, 528, 316, 316, 316, 316, 316, 316, 03087 316, 316, 543, 543, 543, 543, 543, 543, 543, 543, 03088 555, 555, 555, 555, 555, 555, 555, 555, 330, 330, 03089 330, 330, 330, 330, 330, 330, 570, 570, 570, 570, 03090 570, 570, 570, 570, 341, 341, 341, 341, 341, 341, 03091 341, 341, 587, 587, 587, 587, 587, 587, 587, 587, 03092 352, 352, 352, 352, 352, 352, 352, 352, 602, 602, 03093 03094 602, 602, 602, 602, 602, 602, 134, 134, 134, 134, 03095 134, 134, 134, 134, 138, 948, 948, 138, 438, 438, 03096 438, 438, 438, 438, 438, 438, 257, 257, 257, 257, 03097 257, 257, 257, 257, 453, 453, 453, 453, 453, 453, 03098 453, 453, 469, 469, 469, 469, 469, 469, 469, 469, 03099 281, 281, 281, 281, 281, 281, 281, 281, 484, 484, 03100 484, 484, 484, 484, 484, 484, 294, 294, 294, 294, 03101 294, 294, 294, 294, 501, 501, 501, 501, 501, 501, 03102 501, 501, 305, 305, 305, 305, 305, 305, 305, 305, 03103 516, 516, 516, 516, 516, 516, 516, 516, 528, 528, 03104 03105 528, 528, 528, 528, 528, 528, 316, 316, 316, 316, 03106 316, 316, 316, 316, 543, 543, 543, 543, 543, 543, 03107 543, 543, 555, 555, 555, 555, 555, 555, 555, 555, 03108 330, 330, 330, 330, 330, 330, 330, 330, 570, 570, 03109 570, 570, 570, 570, 570, 570, 341, 341, 341, 341, 03110 341, 341, 341, 341, 587, 587, 587, 587, 587, 587, 03111 587, 587, 352, 352, 352, 352, 352, 352, 352, 352, 03112 602, 602, 602, 602, 602, 602, 602, 602, 134, 134, 03113 134, 134, 134, 134, 134, 134, 138, 948, 948, 138, 03114 438, 438, 438, 438, 438, 438, 438, 438, 257, 257, 03115 03116 257, 257, 257, 257, 257, 257, 453, 453, 453, 453, 03117 453, 453, 453, 453, 707, 707, 707, 707, 707, 707, 03118 707, 707, 469, 469, 469, 469, 469, 469, 469, 469, 03119 721, 721, 721, 721, 721, 721, 721, 721, 281, 281, 03120 281, 281, 281, 281, 281, 281, 737, 737, 737, 737, 03121 737, 737, 737, 737, 484, 484, 484, 484, 484, 484, 03122 484, 484, 501, 501, 501, 501, 501, 501, 501, 501, 03123 305, 305, 305, 305, 305, 305, 305, 305, 516, 516, 03124 516, 516, 516, 516, 516, 516, 528, 528, 528, 528, 03125 528, 528, 528, 528, 316, 316, 316, 316, 316, 316, 03126 03127 316, 316, 543, 543, 543, 543, 543, 543, 543, 543, 03128 783, 783, 783, 783, 783, 783, 783, 783, 555, 555, 03129 555, 555, 555, 555, 555, 555, 797, 797, 797, 797, 03130 797, 797, 797, 797, 330, 330, 330, 330, 330, 330, 03131 330, 330, 813, 813, 813, 813, 813, 813, 813, 813, 03132 570, 570, 570, 570, 570, 570, 570, 570, 587, 587, 03133 587, 587, 587, 587, 587, 587, 352, 352, 352, 352, 03134 352, 352, 352, 352, 602, 602, 602, 602, 602, 602, 03135 602, 602, 134, 134, 134, 134, 134, 134, 134, 134, 03136 138, 948, 948, 138, 438, 438, 438, 438, 438, 438, 03137 03138 438, 438, 257, 257, 257, 257, 257, 257, 257, 257, 03139 453, 453, 453, 453, 453, 453, 453, 453, 707, 707, 03140 707, 707, 707, 707, 707, 707, 469, 469, 469, 469, 03141 469, 469, 469, 469, 721, 721, 721, 721, 721, 721, 03142 721, 721, 281, 281, 281, 281, 281, 281, 281, 281, 03143 737, 737, 737, 737, 737, 737, 737, 737, 484, 484, 03144 484, 484, 484, 484, 484, 484, 501, 501, 501, 501, 03145 501, 501, 501, 501, 305, 305, 305, 305, 305, 305, 03146 305, 305, 516, 516, 516, 516, 516, 516, 516, 516, 03147 528, 528, 528, 528, 528, 528, 528, 528, 316, 316, 03148 03149 316, 316, 316, 316, 316, 316, 543, 543, 543, 543, 03150 543, 543, 543, 543, 783, 783, 783, 783, 783, 783, 03151 783, 783, 555, 555, 555, 555, 555, 555, 555, 555, 03152 797, 797, 797, 797, 797, 797, 797, 797, 330, 330, 03153 330, 330, 330, 330, 330, 330, 813, 813, 813, 813, 03154 813, 813, 813, 813, 570, 570, 570, 570, 570, 570, 03155 570, 570, 587, 587, 587, 587, 587, 587, 587, 587, 03156 352, 352, 352, 352, 352, 352, 352, 352, 602, 602, 03157 602, 602, 602, 602, 602, 602, 134, 134, 134, 134, 03158 134, 134, 134, 134, 138, 948, 948, 138, 707, 707, 03159 03160 707, 707, 707, 707, 707, 707, 469, 469, 469, 469, 03161 469, 469, 469, 469, 721, 721, 721, 721, 721, 721, 03162 721, 721, 281, 281, 281, 281, 281, 281, 281, 281, 03163 737, 737, 737, 737, 737, 737, 737, 737, 484, 484, 03164 484, 484, 484, 484, 484, 484, 939, 939, 939, 939, 03165 939, 939, 939, 939, 945, 945, 948, 945, 945, 945, 03166 945, 945, 45, 948, 948, 948, 948, 948, 948, 948, 03167 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 03168 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 03169 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 03170 03171 948, 948, 948, 948, 948, 948, 948, 948, 948, 948 03172 } ; 03173 03174 static const short int yy_chk[7711] = 03175 { 0, 03176 0, 1, 1, 1, 0, 0, 1, 2, 2, 2, 03177 885, 885, 2, 3, 3, 3, 3, 3, 3, 3, 03178 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 03179 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 03180 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 03181 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 03182 5, 5, 5, 60, 60, 5, 6, 6, 6, 431, 03183 1010, 6, 988, 431, 47, 47, 47, 5, 5, 47, 03184 48, 73, 48, 6, 6, 48, 5, 65, 65, 65, 03185 65, 65, 6, 7, 7, 7, 985, 73, 7, 983, 03186 03187 7, 7, 7, 7, 7, 7, 66, 66, 66, 66, 03188 976, 7, 9, 9, 9, 9, 9, 9, 10, 10, 03189 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 03190 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 03191 13, 13, 14, 14, 14, 14, 14, 14, 15, 15, 03192 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 03193 17, 17, 17, 970, 17, 17, 18, 18, 18, 965, 03194 18, 18, 19, 19, 19, 19, 19, 19, 17, 68, 03195 68, 68, 68, 68, 18, 20, 20, 20, 20, 20, 03196 20, 21, 21, 21, 21, 21, 21, 22, 22, 22, 03197 03198 22, 22, 22, 23, 23, 23, 23, 23, 23, 24, 03199 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 03200 25, 275, 933, 39, 39, 39, 25, 39, 39, 40, 03201 40, 40, 930, 40, 40, 464, 929, 275, 25, 879, 03202 25, 26, 26, 26, 26, 26, 26, 299, 51, 51, 03203 51, 464, 26, 51, 39, 346, 443, 41, 41, 41, 03204 40, 41, 41, 878, 26, 299, 26, 27, 27, 27, 03205 27, 27, 27, 346, 443, 42, 42, 42, 27, 42, 03206 42, 49, 49, 49, 886, 886, 49, 846, 41, 458, 03207 27, 844, 27, 28, 28, 28, 28, 28, 28, 69, 03208 03209 69, 69, 69, 130, 28, 130, 42, 458, 130, 49, 03210 71, 71, 71, 71, 690, 465, 28, 689, 28, 29, 03211 29, 29, 29, 29, 29, 74, 74, 74, 74, 687, 03212 29, 465, 43, 43, 43, 43, 43, 43, 76, 76, 03213 76, 76, 29, 43, 29, 30, 30, 30, 30, 30, 03214 30, 77, 77, 77, 77, 77, 30, 615, 44, 44, 03215 44, 44, 44, 44, 78, 78, 78, 78, 30, 44, 03216 30, 31, 31, 31, 31, 31, 31, 70, 70, 70, 03217 70, 70, 31, 893, 893, 70, 85, 85, 85, 85, 03218 75, 75, 75, 75, 31, 614, 31, 32, 32, 32, 03219 03220 32, 32, 32, 70, 88, 88, 88, 88, 32, 613, 03221 75, 82, 82, 82, 612, 82, 82, 497, 894, 894, 03222 32, 432, 32, 33, 33, 33, 75, 33, 33, 84, 03223 84, 84, 84, 84, 506, 497, 86, 86, 86, 86, 03224 86, 33, 901, 901, 86, 87, 87, 87, 87, 87, 03225 902, 902, 506, 33, 521, 33, 34, 34, 34, 428, 03226 34, 34, 86, 90, 90, 90, 90, 90, 91, 91, 03227 91, 91, 521, 369, 34, 93, 93, 93, 93, 93, 03228 94, 94, 94, 94, 368, 367, 34, 366, 34, 35, 03229 35, 35, 35, 35, 35, 99, 99, 99, 99, 99, 03230 03231 35, 100, 100, 100, 100, 101, 101, 101, 101, 101, 03232 365, 364, 35, 101, 35, 36, 36, 36, 36, 36, 03233 36, 103, 103, 103, 103, 362, 36, 104, 104, 104, 03234 104, 101, 105, 105, 105, 105, 253, 252, 36, 251, 03235 36, 37, 37, 37, 37, 37, 37, 104, 108, 108, 03236 108, 108, 37, 107, 107, 107, 107, 107, 114, 114, 03237 114, 114, 114, 104, 37, 533, 37, 38, 38, 38, 03238 38, 38, 38, 115, 115, 115, 115, 250, 38, 548, 03239 112, 112, 112, 533, 112, 112, 118, 118, 118, 118, 03240 38, 249, 38, 67, 67, 67, 247, 548, 67, 246, 03241 03242 245, 67, 67, 67, 67, 67, 121, 121, 121, 67, 03243 112, 121, 112, 117, 117, 117, 117, 117, 123, 123, 03244 123, 244, 123, 123, 152, 150, 149, 67, 72, 72, 03245 72, 148, 147, 72, 146, 144, 143, 72, 72, 72, 03246 72, 126, 126, 126, 126, 127, 127, 127, 127, 128, 03247 128, 128, 128, 129, 129, 129, 142, 72, 129, 131, 03248 131, 131, 583, 140, 131, 127, 132, 133, 132, 133, 03249 139, 132, 133, 72, 79, 79, 79, 124, 592, 79, 03250 583, 127, 79, 79, 79, 79, 79, 134, 134, 134, 03251 79, 113, 134, 135, 135, 135, 592, 607, 135, 136, 03252 03253 136, 136, 96, 83, 136, 695, 703, 64, 79, 89, 03254 89, 89, 712, 63, 89, 607, 62, 89, 89, 89, 03255 89, 89, 61, 695, 703, 89, 137, 137, 137, 726, 03256 712, 137, 153, 153, 153, 153, 155, 155, 155, 155, 03257 155, 59, 58, 89, 92, 92, 92, 726, 57, 92, 03258 137, 56, 92, 92, 92, 92, 92, 742, 158, 158, 03259 92, 158, 158, 158, 158, 159, 159, 159, 159, 161, 03260 161, 161, 161, 55, 758, 742, 161, 54, 92, 95, 03261 95, 95, 766, 53, 95, 52, 45, 95, 95, 95, 03262 95, 95, 758, 0, 161, 95, 167, 167, 167, 167, 03263 03264 766, 160, 160, 160, 160, 160, 166, 166, 166, 160, 03265 0, 166, 0, 95, 109, 109, 109, 0, 0, 109, 03266 0, 0, 109, 109, 109, 109, 109, 160, 162, 162, 03267 109, 162, 162, 162, 162, 169, 169, 169, 169, 171, 03268 171, 171, 171, 171, 179, 179, 179, 179, 109, 116, 03269 116, 116, 0, 0, 116, 771, 0, 116, 116, 116, 03270 116, 116, 0, 174, 174, 116, 174, 174, 174, 174, 03271 176, 176, 176, 771, 176, 176, 177, 177, 177, 779, 03272 177, 177, 0, 116, 119, 119, 119, 0, 0, 119, 03273 0, 0, 119, 119, 119, 119, 119, 779, 182, 182, 03274 03275 119, 182, 182, 182, 182, 183, 183, 183, 183, 180, 03276 180, 180, 180, 180, 0, 0, 0, 180, 119, 156, 03277 156, 156, 0, 0, 156, 0, 156, 156, 156, 156, 03278 156, 156, 157, 157, 157, 180, 0, 157, 0, 157, 03279 157, 157, 157, 157, 157, 164, 164, 164, 788, 0, 03280 164, 0, 164, 0, 164, 164, 164, 164, 165, 165, 03281 165, 0, 0, 165, 0, 165, 788, 165, 165, 165, 03282 165, 172, 172, 172, 0, 0, 172, 0, 172, 172, 03283 172, 172, 172, 172, 173, 173, 173, 0, 0, 173, 03284 0, 173, 173, 173, 173, 173, 173, 181, 181, 181, 03285 03286 181, 0, 0, 802, 181, 185, 185, 185, 185, 185, 03287 188, 188, 0, 188, 188, 188, 188, 189, 189, 189, 03288 189, 802, 181, 186, 186, 186, 0, 0, 186, 0, 03289 186, 186, 186, 186, 186, 186, 187, 187, 187, 818, 03290 834, 187, 842, 187, 187, 187, 187, 187, 187, 191, 03291 191, 191, 191, 191, 192, 192, 192, 818, 834, 192, 03292 842, 192, 192, 192, 192, 192, 192, 193, 193, 193, 03293 0, 0, 193, 0, 193, 193, 193, 193, 193, 193, 03294 194, 194, 884, 194, 194, 194, 194, 195, 195, 195, 03295 195, 197, 197, 197, 197, 197, 198, 198, 198, 0, 03296 03297 884, 198, 0, 198, 198, 198, 198, 198, 198, 199, 03298 199, 199, 0, 0, 199, 0, 199, 199, 199, 199, 03299 199, 199, 200, 200, 0, 200, 200, 200, 200, 202, 03300 202, 202, 202, 203, 203, 203, 203, 203, 0, 0, 03301 892, 203, 204, 204, 204, 204, 900, 205, 205, 204, 03302 205, 205, 205, 205, 206, 206, 206, 206, 892, 203, 03303 208, 208, 208, 208, 900, 0, 0, 204, 210, 210, 03304 210, 210, 210, 211, 211, 211, 0, 0, 211, 0, 03305 211, 211, 211, 211, 211, 211, 212, 212, 212, 0, 03306 0, 212, 0, 212, 212, 212, 212, 212, 212, 213, 03307 03308 213, 0, 213, 213, 213, 213, 215, 215, 215, 0, 03309 215, 215, 216, 216, 216, 0, 216, 216, 218, 218, 03310 218, 218, 220, 220, 220, 220, 220, 223, 223, 0, 03311 223, 223, 223, 223, 0, 239, 215, 239, 215, 0, 03312 239, 0, 216, 0, 216, 221, 221, 221, 0, 0, 03313 221, 0, 221, 221, 221, 221, 221, 221, 222, 222, 03314 222, 0, 0, 222, 0, 222, 222, 222, 222, 222, 03315 222, 224, 224, 224, 224, 225, 225, 225, 0, 0, 03316 225, 0, 0, 225, 225, 225, 225, 225, 0, 0, 03317 0, 225, 226, 226, 226, 226, 226, 229, 229, 0, 03318 03319 229, 229, 229, 229, 237, 237, 237, 237, 0, 225, 03320 227, 227, 227, 0, 0, 227, 0, 227, 227, 227, 03321 227, 227, 227, 228, 228, 228, 0, 0, 228, 0, 03322 228, 228, 228, 228, 228, 228, 231, 231, 231, 0, 03323 0, 231, 232, 232, 232, 0, 232, 232, 233, 233, 03324 233, 0, 233, 233, 234, 234, 234, 0, 234, 234, 03325 235, 235, 235, 0, 235, 235, 240, 241, 240, 241, 03326 0, 240, 241, 242, 242, 242, 0, 0, 242, 254, 03327 254, 254, 254, 254, 255, 255, 255, 255, 263, 263, 03328 263, 263, 0, 242, 256, 256, 256, 0, 0, 256, 03329 03330 0, 0, 256, 256, 256, 256, 256, 0, 0, 0, 03331 256, 262, 262, 262, 0, 0, 262, 265, 265, 265, 03332 265, 266, 266, 266, 266, 0, 0, 262, 256, 257, 03333 257, 257, 0, 0, 257, 0, 257, 257, 257, 257, 03334 257, 257, 258, 258, 258, 262, 0, 258, 0, 258, 03335 258, 258, 258, 258, 258, 264, 264, 264, 0, 0, 03336 264, 0, 0, 0, 264, 264, 264, 264, 267, 267, 03337 267, 267, 268, 268, 268, 268, 269, 269, 269, 269, 03338 276, 276, 276, 0, 0, 276, 278, 278, 278, 278, 03339 278, 0, 268, 279, 279, 279, 279, 287, 287, 287, 03340 03341 287, 289, 289, 289, 289, 0, 0, 0, 268, 270, 03342 270, 270, 0, 0, 270, 0, 270, 0, 270, 270, 03343 270, 270, 271, 271, 271, 0, 0, 271, 0, 271, 03344 0, 271, 271, 271, 271, 272, 272, 272, 0, 0, 03345 272, 0, 272, 0, 272, 272, 272, 272, 273, 273, 03346 273, 0, 0, 273, 0, 273, 0, 273, 273, 273, 03347 273, 274, 274, 274, 0, 0, 274, 0, 274, 0, 03348 274, 274, 274, 274, 0, 0, 286, 286, 286, 0, 03349 0, 286, 290, 290, 290, 290, 292, 292, 292, 292, 03350 274, 0, 286, 291, 291, 291, 291, 291, 300, 300, 03351 03352 300, 300, 303, 303, 303, 303, 274, 280, 280, 280, 03353 286, 0, 280, 0, 0, 280, 280, 280, 280, 280, 03354 0, 0, 0, 280, 302, 302, 302, 302, 302, 0, 03355 0, 0, 293, 293, 293, 293, 293, 0, 0, 0, 03356 293, 280, 281, 281, 281, 0, 0, 281, 0, 281, 03357 281, 281, 281, 281, 281, 282, 282, 282, 293, 0, 03358 282, 0, 282, 282, 282, 282, 282, 282, 288, 288, 03359 288, 0, 0, 288, 0, 0, 0, 288, 288, 288, 03360 288, 294, 294, 294, 0, 0, 294, 0, 294, 294, 03361 294, 294, 294, 294, 301, 301, 301, 0, 0, 301, 03362 03363 0, 0, 0, 301, 301, 301, 301, 304, 304, 304, 03364 0, 0, 304, 0, 0, 304, 304, 304, 304, 304, 03365 0, 0, 0, 304, 310, 310, 310, 0, 0, 310, 03366 311, 311, 311, 311, 313, 313, 313, 313, 313, 0, 03367 310, 304, 305, 305, 305, 0, 0, 305, 0, 305, 03368 305, 305, 305, 305, 305, 0, 0, 0, 310, 312, 03369 312, 312, 0, 0, 312, 0, 0, 0, 312, 312, 03370 312, 312, 314, 314, 314, 314, 315, 315, 315, 0, 03371 0, 315, 0, 0, 315, 315, 315, 315, 315, 0, 03372 0, 0, 315, 321, 321, 321, 0, 0, 321, 322, 03373 03374 322, 322, 322, 324, 324, 324, 324, 0, 0, 321, 03375 315, 316, 316, 316, 0, 0, 316, 0, 316, 316, 03376 316, 316, 316, 316, 0, 0, 0, 321, 323, 323, 03377 323, 0, 0, 323, 0, 0, 0, 323, 323, 323, 03378 323, 325, 325, 325, 325, 327, 327, 327, 327, 327, 03379 328, 328, 328, 328, 329, 329, 329, 0, 0, 329, 03380 0, 0, 329, 329, 329, 329, 329, 0, 0, 0, 03381 329, 335, 335, 335, 0, 0, 335, 336, 336, 336, 03382 336, 338, 338, 338, 338, 338, 0, 335, 329, 330, 03383 330, 330, 0, 0, 330, 0, 330, 330, 330, 330, 03384 03385 330, 330, 0, 0, 0, 335, 337, 337, 337, 0, 03386 0, 337, 0, 0, 0, 337, 337, 337, 337, 339, 03387 339, 339, 339, 340, 340, 340, 340, 340, 0, 0, 03388 0, 340, 347, 347, 347, 347, 349, 349, 349, 349, 03389 349, 350, 350, 350, 350, 358, 358, 358, 358, 340, 03390 341, 341, 341, 0, 0, 341, 0, 341, 341, 341, 03391 341, 341, 341, 348, 348, 348, 0, 0, 348, 0, 03392 0, 0, 348, 348, 348, 348, 351, 351, 351, 0, 03393 0, 351, 0, 0, 351, 351, 351, 351, 351, 0, 03394 0, 0, 351, 357, 357, 357, 0, 0, 357, 371, 03395 03396 371, 371, 371, 371, 381, 381, 381, 381, 381, 357, 03397 351, 352, 352, 352, 0, 0, 352, 0, 352, 352, 03398 352, 352, 352, 352, 0, 0, 0, 357, 359, 359, 03399 359, 0, 0, 359, 0, 0, 0, 359, 359, 359, 03400 359, 361, 361, 361, 374, 374, 361, 374, 374, 374, 03401 374, 378, 378, 0, 378, 378, 378, 378, 0, 0, 03402 361, 372, 372, 372, 0, 0, 372, 0, 372, 372, 03403 372, 372, 372, 372, 373, 373, 373, 0, 0, 373, 03404 0, 373, 373, 373, 373, 373, 373, 375, 375, 375, 03405 0, 0, 375, 0, 375, 375, 375, 375, 375, 375, 03406 03407 376, 376, 376, 0, 0, 376, 0, 376, 376, 376, 03408 376, 376, 376, 377, 377, 377, 0, 0, 377, 0, 03409 377, 377, 377, 377, 377, 377, 380, 380, 380, 380, 03410 380, 380, 380, 380, 380, 384, 384, 0, 384, 384, 03411 384, 384, 389, 389, 389, 389, 380, 0, 0, 389, 03412 380, 380, 380, 390, 390, 0, 390, 390, 390, 390, 03413 0, 0, 380, 382, 382, 382, 0, 389, 382, 0, 03414 382, 382, 382, 382, 382, 382, 383, 383, 383, 0, 03415 0, 383, 0, 383, 383, 383, 383, 383, 383, 385, 03416 385, 385, 0, 0, 385, 0, 385, 385, 385, 385, 03417 03418 385, 385, 386, 386, 386, 0, 0, 386, 0, 386, 03419 386, 386, 386, 386, 386, 387, 387, 387, 0, 0, 03420 387, 0, 387, 387, 387, 387, 387, 387, 388, 388, 03421 388, 0, 0, 388, 388, 388, 388, 388, 388, 388, 03422 388, 391, 391, 391, 0, 0, 391, 391, 391, 391, 03423 391, 391, 391, 391, 392, 392, 392, 0, 0, 392, 03424 0, 0, 0, 392, 392, 392, 392, 0, 395, 395, 03425 392, 395, 395, 395, 395, 403, 403, 0, 403, 403, 03426 403, 403, 427, 427, 427, 0, 0, 427, 392, 393, 03427 393, 393, 0, 0, 393, 0, 393, 393, 393, 393, 03428 03429 393, 393, 394, 394, 394, 0, 0, 394, 0, 394, 03430 394, 394, 394, 394, 394, 396, 396, 396, 0, 0, 03431 396, 0, 396, 396, 396, 396, 396, 396, 397, 397, 03432 397, 0, 0, 397, 0, 397, 397, 397, 397, 397, 03433 397, 398, 398, 398, 0, 0, 398, 0, 398, 398, 03434 398, 398, 398, 398, 399, 399, 399, 0, 0, 399, 03435 399, 399, 399, 399, 399, 399, 399, 400, 400, 400, 03436 0, 0, 400, 0, 0, 0, 400, 400, 400, 400, 03437 0, 411, 411, 400, 411, 411, 411, 411, 435, 435, 03438 435, 435, 435, 416, 416, 416, 416, 0, 0, 0, 03439 03440 416, 400, 401, 401, 401, 0, 0, 401, 0, 401, 03441 401, 401, 401, 401, 401, 402, 402, 402, 416, 0, 03442 402, 0, 402, 402, 402, 402, 402, 402, 404, 404, 03443 404, 0, 0, 404, 0, 404, 404, 404, 404, 404, 03444 404, 405, 405, 405, 0, 0, 405, 0, 405, 405, 03445 405, 405, 405, 405, 406, 406, 406, 0, 0, 406, 03446 0, 406, 406, 406, 406, 406, 406, 407, 407, 407, 03447 0, 0, 407, 407, 407, 407, 407, 407, 407, 407, 03448 408, 408, 408, 0, 0, 408, 0, 0, 0, 408, 03449 408, 408, 408, 0, 417, 417, 408, 417, 417, 417, 03450 03451 417, 422, 422, 0, 422, 422, 422, 422, 436, 436, 03452 436, 436, 0, 0, 408, 409, 409, 409, 0, 0, 03453 409, 0, 409, 409, 409, 409, 409, 409, 410, 410, 03454 410, 0, 0, 410, 0, 410, 410, 410, 410, 410, 03455 410, 412, 412, 412, 0, 0, 412, 0, 412, 412, 03456 412, 412, 412, 412, 413, 413, 413, 0, 0, 413, 03457 0, 413, 413, 413, 413, 413, 413, 414, 414, 414, 03458 0, 0, 414, 0, 414, 414, 414, 414, 414, 414, 03459 415, 415, 415, 0, 0, 415, 415, 415, 415, 415, 03460 415, 415, 415, 418, 418, 418, 0, 0, 418, 418, 03461 03462 418, 418, 418, 418, 418, 418, 419, 419, 419, 0, 03463 0, 419, 0, 0, 0, 419, 419, 419, 419, 0, 03464 0, 0, 419, 444, 444, 444, 444, 451, 451, 451, 03465 451, 437, 437, 437, 437, 437, 0, 0, 0, 437, 03466 419, 420, 420, 420, 0, 0, 420, 0, 420, 420, 03467 420, 420, 420, 420, 421, 421, 421, 437, 0, 421, 03468 0, 421, 421, 421, 421, 421, 421, 423, 423, 423, 03469 0, 0, 423, 0, 423, 423, 423, 423, 423, 423, 03470 424, 424, 424, 0, 0, 424, 0, 424, 424, 424, 03471 424, 424, 424, 425, 425, 425, 0, 0, 425, 0, 03472 03473 425, 425, 425, 425, 425, 425, 426, 426, 426, 0, 03474 0, 426, 426, 426, 426, 426, 426, 426, 426, 438, 03475 438, 438, 0, 0, 438, 0, 438, 438, 438, 438, 03476 438, 438, 439, 439, 439, 0, 0, 439, 0, 439, 03477 439, 439, 439, 439, 439, 445, 445, 445, 0, 0, 03478 445, 0, 0, 0, 445, 445, 445, 445, 446, 446, 03479 446, 0, 0, 446, 0, 446, 446, 446, 446, 446, 03480 446, 447, 447, 447, 0, 0, 447, 0, 447, 447, 03481 447, 447, 447, 447, 448, 448, 448, 0, 0, 448, 03482 0, 0, 448, 448, 448, 448, 448, 0, 0, 0, 03483 03484 448, 450, 450, 450, 450, 450, 459, 459, 459, 459, 03485 460, 460, 460, 460, 467, 467, 467, 467, 448, 449, 03486 449, 449, 0, 0, 449, 0, 449, 449, 449, 449, 03487 449, 449, 452, 452, 452, 0, 0, 452, 0, 0, 03488 452, 452, 452, 452, 452, 0, 0, 0, 452, 466, 03489 466, 466, 466, 466, 461, 461, 461, 461, 461, 686, 03490 686, 686, 461, 0, 686, 0, 452, 453, 453, 453, 03491 686, 0, 453, 0, 453, 453, 453, 453, 453, 453, 03492 461, 463, 463, 463, 463, 463, 463, 463, 463, 463, 03493 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 03494 03495 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 03496 463, 463, 463, 463, 463, 463, 463, 463, 463, 463, 03497 463, 463, 463, 463, 463, 463, 463, 463, 468, 468, 03498 468, 0, 0, 468, 0, 0, 468, 468, 468, 468, 03499 468, 0, 0, 0, 468, 474, 474, 474, 0, 0, 03500 474, 475, 475, 475, 475, 481, 481, 481, 481, 481, 03501 0, 474, 468, 469, 469, 469, 0, 0, 469, 0, 03502 469, 469, 469, 469, 469, 469, 470, 470, 470, 474, 03503 0, 470, 0, 470, 470, 470, 470, 470, 470, 476, 03504 476, 476, 0, 0, 476, 0, 0, 0, 476, 476, 03505 03506 476, 476, 477, 477, 477, 0, 0, 477, 0, 477, 03507 477, 477, 477, 477, 477, 478, 478, 478, 0, 0, 03508 478, 0, 478, 478, 478, 478, 478, 478, 479, 479, 03509 479, 0, 0, 479, 0, 0, 479, 479, 479, 479, 03510 479, 0, 0, 0, 479, 482, 482, 482, 482, 490, 03511 490, 490, 490, 491, 491, 491, 491, 493, 493, 493, 03512 493, 0, 479, 480, 480, 480, 0, 0, 480, 0, 03513 480, 480, 480, 480, 480, 480, 483, 483, 483, 0, 03514 0, 483, 0, 0, 483, 483, 483, 483, 483, 0, 03515 0, 0, 483, 489, 489, 489, 0, 0, 489, 494, 03516 03517 494, 494, 494, 498, 498, 498, 498, 498, 0, 489, 03518 483, 484, 484, 484, 0, 0, 484, 0, 484, 484, 03519 484, 484, 484, 484, 0, 0, 0, 489, 492, 492, 03520 492, 0, 0, 492, 0, 0, 0, 492, 492, 492, 03521 492, 0, 0, 0, 492, 499, 499, 499, 499, 507, 03522 507, 507, 507, 500, 500, 500, 500, 500, 0, 0, 03523 0, 500, 492, 495, 495, 495, 0, 0, 495, 0, 03524 495, 495, 495, 495, 495, 495, 496, 496, 496, 500, 03525 0, 496, 0, 496, 496, 496, 496, 496, 496, 501, 03526 501, 501, 0, 0, 501, 0, 501, 501, 501, 501, 03527 03528 501, 501, 502, 502, 502, 0, 0, 502, 0, 502, 03529 502, 502, 502, 502, 502, 508, 508, 508, 0, 0, 03530 508, 0, 0, 0, 508, 508, 508, 508, 509, 509, 03531 509, 0, 0, 509, 0, 509, 509, 509, 509, 509, 03532 509, 510, 510, 510, 0, 0, 510, 0, 510, 510, 03533 510, 510, 510, 510, 511, 511, 511, 0, 0, 511, 03534 0, 0, 511, 511, 511, 511, 511, 0, 0, 0, 03535 511, 513, 513, 513, 513, 513, 514, 514, 514, 514, 03536 522, 522, 522, 522, 523, 523, 523, 523, 511, 512, 03537 512, 512, 0, 0, 512, 0, 512, 512, 512, 512, 03538 03539 512, 512, 515, 515, 515, 0, 0, 515, 0, 0, 03540 515, 515, 515, 515, 515, 0, 0, 0, 515, 525, 03541 525, 525, 525, 525, 524, 524, 524, 524, 524, 928, 03542 928, 928, 524, 0, 928, 0, 515, 516, 516, 516, 03543 0, 0, 516, 0, 516, 516, 516, 516, 516, 516, 03544 524, 526, 526, 526, 526, 527, 527, 527, 527, 527, 03545 0, 0, 0, 527, 534, 534, 534, 534, 540, 540, 03546 540, 540, 540, 541, 541, 541, 541, 549, 549, 549, 03547 549, 527, 528, 528, 528, 0, 0, 528, 0, 528, 03548 528, 528, 528, 528, 528, 529, 529, 529, 0, 0, 03549 03550 529, 0, 529, 529, 529, 529, 529, 529, 535, 535, 03551 535, 0, 0, 535, 0, 0, 0, 535, 535, 535, 03552 535, 536, 536, 536, 0, 0, 536, 0, 536, 536, 03553 536, 536, 536, 536, 537, 537, 537, 0, 0, 537, 03554 0, 537, 537, 537, 537, 537, 537, 538, 538, 538, 03555 0, 0, 538, 0, 0, 538, 538, 538, 538, 538, 03556 0, 0, 0, 538, 550, 550, 550, 550, 553, 553, 03557 553, 553, 551, 551, 551, 551, 551, 0, 0, 0, 03558 551, 538, 539, 539, 539, 0, 0, 539, 0, 539, 03559 539, 539, 539, 539, 539, 542, 542, 542, 551, 0, 03560 03561 542, 0, 0, 542, 542, 542, 542, 542, 0, 0, 03562 0, 542, 552, 552, 552, 552, 552, 561, 561, 561, 03563 561, 567, 567, 567, 567, 567, 0, 0, 0, 542, 03564 543, 543, 543, 0, 0, 543, 0, 543, 543, 543, 03565 543, 543, 543, 554, 554, 554, 0, 0, 554, 0, 03566 0, 554, 554, 554, 554, 554, 0, 0, 0, 554, 03567 560, 560, 560, 0, 0, 560, 568, 568, 568, 568, 03568 576, 576, 576, 576, 0, 0, 560, 554, 555, 555, 03569 555, 0, 0, 555, 0, 555, 555, 555, 555, 555, 03570 555, 556, 556, 556, 560, 0, 556, 0, 556, 556, 03571 03572 556, 556, 556, 556, 562, 562, 562, 0, 0, 562, 03573 0, 0, 0, 562, 562, 562, 562, 563, 563, 563, 03574 0, 0, 563, 0, 563, 563, 563, 563, 563, 563, 03575 564, 564, 564, 0, 0, 564, 0, 564, 564, 564, 03576 564, 564, 564, 565, 565, 565, 0, 0, 565, 0, 03577 0, 565, 565, 565, 565, 565, 0, 0, 0, 565, 03578 575, 575, 575, 0, 0, 575, 577, 577, 577, 577, 03579 579, 579, 579, 579, 0, 0, 575, 565, 566, 566, 03580 566, 0, 0, 566, 0, 566, 566, 566, 566, 566, 03581 566, 569, 569, 569, 575, 0, 569, 0, 0, 569, 03582 03583 569, 569, 569, 569, 0, 0, 0, 569, 580, 580, 03584 580, 580, 584, 584, 584, 584, 584, 585, 585, 585, 03585 585, 593, 593, 593, 593, 569, 570, 570, 570, 0, 03586 0, 570, 0, 570, 570, 570, 570, 570, 570, 578, 03587 578, 578, 0, 0, 578, 0, 0, 0, 578, 578, 03588 578, 578, 0, 0, 0, 578, 599, 599, 599, 599, 03589 599, 0, 0, 0, 586, 586, 586, 586, 586, 0, 03590 0, 0, 586, 578, 581, 581, 581, 0, 0, 581, 03591 0, 581, 581, 581, 581, 581, 581, 582, 582, 582, 03592 586, 0, 582, 0, 582, 582, 582, 582, 582, 582, 03593 03594 587, 587, 587, 0, 0, 587, 0, 587, 587, 587, 03595 587, 587, 587, 588, 588, 588, 0, 0, 588, 0, 03596 588, 588, 588, 588, 588, 588, 594, 594, 594, 0, 03597 0, 594, 0, 0, 0, 594, 594, 594, 594, 595, 03598 595, 595, 0, 0, 595, 0, 595, 595, 595, 595, 03599 595, 595, 596, 596, 596, 0, 0, 596, 0, 596, 03600 596, 596, 596, 596, 596, 597, 597, 597, 0, 0, 03601 597, 0, 0, 597, 597, 597, 597, 597, 0, 0, 03602 0, 597, 600, 600, 600, 600, 608, 608, 608, 608, 03603 609, 609, 609, 609, 691, 691, 691, 691, 0, 597, 03604 03605 598, 598, 598, 0, 0, 598, 0, 598, 598, 598, 03606 598, 598, 598, 601, 601, 601, 0, 0, 601, 0, 03607 0, 601, 601, 601, 601, 601, 611, 611, 611, 601, 03608 0, 611, 0, 0, 0, 610, 610, 610, 610, 610, 03609 937, 937, 937, 610, 0, 937, 0, 601, 602, 602, 03610 602, 0, 937, 602, 611, 602, 602, 602, 602, 602, 03611 602, 610, 616, 616, 616, 616, 0, 617, 617, 616, 03612 617, 617, 617, 617, 622, 622, 0, 622, 622, 622, 03613 622, 692, 692, 692, 692, 0, 0, 616, 618, 618, 03614 618, 0, 0, 618, 618, 618, 618, 618, 618, 618, 03615 03616 618, 619, 619, 619, 0, 0, 619, 0, 619, 619, 03617 619, 619, 619, 619, 0, 627, 627, 619, 627, 627, 03618 627, 627, 639, 639, 0, 639, 639, 639, 639, 699, 03619 699, 699, 699, 0, 0, 619, 620, 620, 620, 0, 03620 0, 620, 620, 620, 620, 620, 620, 620, 620, 621, 03621 621, 621, 0, 0, 621, 0, 0, 0, 621, 621, 03622 621, 621, 0, 644, 644, 621, 644, 644, 644, 644, 03623 704, 704, 704, 704, 704, 643, 643, 643, 643, 0, 03624 0, 0, 643, 621, 623, 623, 623, 0, 0, 623, 03625 623, 623, 623, 623, 623, 623, 623, 624, 624, 624, 03626 03627 643, 0, 624, 0, 0, 0, 624, 624, 624, 624, 03628 0, 649, 649, 624, 649, 649, 649, 649, 705, 705, 03629 705, 705, 0, 651, 651, 651, 651, 0, 0, 0, 03630 651, 624, 625, 625, 625, 0, 0, 625, 0, 625, 03631 625, 625, 625, 625, 625, 626, 626, 626, 651, 0, 03632 626, 0, 626, 626, 626, 626, 626, 626, 628, 628, 03633 628, 0, 0, 628, 0, 628, 628, 628, 628, 628, 03634 628, 629, 629, 629, 0, 0, 629, 0, 629, 629, 03635 629, 629, 629, 629, 630, 630, 630, 0, 0, 630, 03636 0, 630, 630, 630, 630, 630, 630, 631, 631, 631, 03637 03638 0, 0, 631, 631, 631, 631, 631, 631, 631, 631, 03639 632, 632, 632, 0, 0, 632, 0, 632, 632, 632, 03640 632, 632, 632, 0, 652, 652, 632, 652, 652, 652, 03641 652, 657, 657, 0, 657, 657, 657, 657, 713, 713, 03642 713, 713, 0, 0, 632, 633, 633, 633, 0, 0, 03643 633, 0, 633, 633, 633, 633, 633, 633, 634, 634, 03644 634, 0, 0, 634, 0, 634, 634, 634, 634, 634, 03645 634, 635, 635, 635, 0, 0, 635, 0, 635, 635, 03646 635, 635, 635, 635, 636, 636, 636, 0, 0, 636, 03647 636, 636, 636, 636, 636, 636, 636, 637, 637, 637, 03648 03649 0, 0, 637, 0, 0, 0, 637, 637, 637, 637, 03650 0, 662, 662, 637, 662, 662, 662, 662, 674, 674, 03651 0, 674, 674, 674, 674, 718, 718, 718, 718, 718, 03652 0, 637, 638, 638, 638, 0, 0, 638, 0, 638, 03653 638, 638, 638, 638, 638, 640, 640, 640, 0, 0, 03654 640, 0, 640, 640, 640, 640, 640, 640, 641, 641, 03655 641, 0, 0, 641, 0, 641, 641, 641, 641, 641, 03656 641, 642, 642, 642, 0, 0, 642, 642, 642, 642, 03657 642, 642, 642, 642, 645, 645, 645, 0, 0, 645, 03658 645, 645, 645, 645, 645, 645, 645, 646, 646, 646, 03659 03660 0, 0, 646, 0, 646, 646, 646, 646, 646, 646, 03661 0, 679, 679, 646, 679, 679, 679, 679, 719, 719, 03662 719, 719, 0, 678, 678, 678, 678, 0, 0, 0, 03663 678, 646, 647, 647, 647, 0, 0, 647, 647, 647, 03664 647, 647, 647, 647, 647, 648, 648, 648, 678, 0, 03665 648, 0, 0, 0, 648, 648, 648, 648, 0, 684, 03666 684, 648, 684, 684, 684, 684, 727, 727, 727, 727, 03667 706, 706, 706, 706, 706, 0, 0, 0, 706, 648, 03668 650, 650, 650, 0, 0, 650, 650, 650, 650, 650, 03669 650, 650, 650, 653, 653, 653, 706, 0, 653, 653, 03670 03671 653, 653, 653, 653, 653, 653, 654, 654, 654, 0, 03672 0, 654, 0, 654, 654, 654, 654, 654, 654, 0, 03673 0, 0, 654, 698, 698, 698, 0, 0, 698, 728, 03674 728, 728, 728, 734, 734, 734, 734, 734, 0, 698, 03675 654, 655, 655, 655, 0, 0, 655, 655, 655, 655, 03676 655, 655, 655, 655, 656, 656, 656, 698, 0, 656, 03677 0, 0, 0, 656, 656, 656, 656, 0, 0, 0, 03678 656, 735, 735, 735, 735, 743, 743, 743, 743, 729, 03679 729, 729, 729, 729, 0, 0, 0, 729, 656, 658, 03680 658, 658, 0, 0, 658, 658, 658, 658, 658, 658, 03681 03682 658, 658, 659, 659, 659, 729, 0, 659, 0, 0, 03683 0, 659, 659, 659, 659, 0, 0, 0, 659, 744, 03684 744, 744, 744, 746, 746, 746, 746, 745, 745, 745, 03685 745, 745, 0, 0, 0, 745, 659, 660, 660, 660, 03686 0, 0, 660, 0, 660, 660, 660, 660, 660, 660, 03687 661, 661, 661, 745, 0, 661, 0, 661, 661, 661, 03688 661, 661, 661, 663, 663, 663, 0, 0, 663, 0, 03689 663, 663, 663, 663, 663, 663, 664, 664, 664, 0, 03690 0, 664, 0, 664, 664, 664, 664, 664, 664, 665, 03691 665, 665, 0, 0, 665, 0, 665, 665, 665, 665, 03692 03693 665, 665, 666, 666, 666, 0, 0, 666, 666, 666, 03694 666, 666, 666, 666, 666, 667, 667, 667, 0, 0, 03695 667, 0, 667, 667, 667, 667, 667, 667, 0, 0, 03696 0, 667, 751, 751, 751, 751, 752, 752, 752, 752, 03697 753, 753, 753, 753, 753, 0, 0, 0, 753, 667, 03698 668, 668, 668, 0, 0, 668, 0, 668, 668, 668, 03699 668, 668, 668, 669, 669, 669, 753, 0, 669, 0, 03700 669, 669, 669, 669, 669, 669, 670, 670, 670, 0, 03701 0, 670, 0, 670, 670, 670, 670, 670, 670, 671, 03702 671, 671, 0, 0, 671, 671, 671, 671, 671, 671, 03703 03704 671, 671, 672, 672, 672, 0, 0, 672, 0, 0, 03705 0, 672, 672, 672, 672, 0, 0, 0, 672, 754, 03706 754, 754, 754, 755, 755, 755, 755, 762, 762, 762, 03707 762, 767, 767, 767, 767, 0, 672, 673, 673, 673, 03708 0, 0, 673, 0, 673, 673, 673, 673, 673, 673, 03709 675, 675, 675, 0, 0, 675, 0, 675, 675, 675, 03710 675, 675, 675, 676, 676, 676, 0, 0, 676, 0, 03711 676, 676, 676, 676, 676, 676, 677, 677, 677, 0, 03712 0, 677, 677, 677, 677, 677, 677, 677, 677, 680, 03713 680, 680, 0, 0, 680, 680, 680, 680, 680, 680, 03714 03715 680, 680, 681, 681, 681, 0, 0, 681, 0, 681, 03716 681, 681, 681, 681, 681, 0, 0, 0, 681, 761, 03717 761, 761, 0, 0, 761, 768, 768, 768, 768, 775, 03718 775, 775, 775, 0, 0, 761, 681, 682, 682, 682, 03719 0, 0, 682, 682, 682, 682, 682, 682, 682, 682, 03720 683, 683, 683, 761, 0, 683, 0, 0, 0, 683, 03721 683, 683, 683, 0, 0, 0, 683, 774, 774, 774, 03722 0, 0, 774, 780, 780, 780, 780, 780, 781, 781, 03723 781, 781, 0, 774, 683, 685, 685, 685, 0, 0, 03724 685, 685, 685, 685, 685, 685, 685, 685, 693, 693, 03725 03726 693, 774, 0, 693, 0, 693, 693, 693, 693, 693, 03727 693, 694, 694, 694, 0, 0, 694, 0, 694, 694, 03728 694, 694, 694, 694, 696, 696, 696, 0, 0, 696, 03729 0, 696, 696, 696, 696, 696, 696, 697, 697, 697, 03730 0, 0, 697, 0, 697, 697, 697, 697, 697, 697, 03731 700, 700, 700, 0, 0, 700, 0, 0, 0, 700, 03732 700, 700, 700, 701, 701, 701, 0, 0, 701, 0, 03733 701, 701, 701, 701, 701, 701, 702, 702, 702, 0, 03734 0, 702, 0, 702, 702, 702, 702, 702, 702, 707, 03735 707, 707, 0, 0, 707, 0, 707, 707, 707, 707, 03736 03737 707, 707, 708, 708, 708, 0, 0, 708, 0, 708, 03738 708, 708, 708, 708, 708, 714, 714, 714, 0, 0, 03739 714, 0, 0, 0, 714, 714, 714, 714, 715, 715, 03740 715, 0, 0, 715, 0, 715, 715, 715, 715, 715, 03741 715, 716, 716, 716, 0, 0, 716, 0, 716, 716, 03742 716, 716, 716, 716, 717, 717, 717, 0, 0, 717, 03743 0, 0, 717, 717, 717, 717, 717, 0, 0, 0, 03744 717, 789, 789, 789, 789, 0, 782, 782, 782, 782, 03745 782, 938, 938, 938, 782, 0, 938, 0, 717, 720, 03746 720, 720, 0, 0, 720, 0, 0, 720, 720, 720, 03747 03748 720, 720, 782, 0, 0, 720, 794, 794, 794, 794, 03749 794, 795, 795, 795, 795, 803, 803, 803, 803, 804, 03750 804, 804, 804, 720, 721, 721, 721, 0, 0, 721, 03751 0, 721, 721, 721, 721, 721, 721, 722, 722, 722, 03752 0, 0, 722, 0, 722, 722, 722, 722, 722, 722, 03753 730, 730, 730, 0, 0, 730, 0, 730, 730, 730, 03754 730, 730, 730, 731, 731, 731, 0, 0, 731, 0, 03755 731, 731, 731, 731, 731, 731, 732, 732, 732, 0, 03756 0, 732, 0, 0, 732, 732, 732, 732, 732, 0, 03757 0, 0, 732, 810, 810, 810, 810, 810, 0, 0, 03758 03759 0, 805, 805, 805, 805, 805, 0, 0, 0, 805, 03760 732, 733, 733, 733, 0, 0, 733, 0, 733, 733, 03761 733, 733, 733, 733, 736, 736, 736, 805, 0, 736, 03762 0, 0, 736, 736, 736, 736, 736, 0, 0, 0, 03763 736, 811, 811, 811, 811, 819, 819, 819, 819, 820, 03764 820, 820, 820, 822, 822, 822, 822, 0, 736, 737, 03765 737, 737, 0, 0, 737, 0, 737, 737, 737, 737, 03766 737, 737, 747, 747, 747, 0, 0, 747, 0, 0, 03767 0, 747, 747, 747, 747, 748, 748, 748, 0, 0, 03768 748, 0, 748, 748, 748, 748, 748, 748, 749, 749, 03769 03770 749, 0, 0, 749, 0, 749, 749, 749, 749, 749, 03771 749, 750, 750, 750, 0, 0, 750, 0, 0, 750, 03772 750, 750, 750, 750, 0, 0, 0, 750, 827, 827, 03773 827, 827, 828, 828, 828, 828, 821, 821, 821, 821, 03774 821, 0, 0, 0, 821, 750, 756, 756, 756, 0, 03775 0, 756, 0, 756, 756, 756, 756, 756, 756, 757, 03776 757, 757, 821, 0, 757, 0, 757, 757, 757, 757, 03777 757, 757, 759, 759, 759, 0, 0, 759, 0, 759, 03778 759, 759, 759, 759, 759, 760, 760, 760, 0, 0, 03779 760, 0, 760, 760, 760, 760, 760, 760, 763, 763, 03780 03781 763, 0, 0, 763, 0, 0, 0, 763, 763, 763, 03782 763, 764, 764, 764, 0, 0, 764, 0, 764, 764, 03783 764, 764, 764, 764, 765, 765, 765, 0, 0, 765, 03784 0, 765, 765, 765, 765, 765, 765, 769, 769, 769, 03785 0, 0, 769, 0, 769, 769, 769, 769, 769, 769, 03786 770, 770, 770, 0, 0, 770, 0, 770, 770, 770, 03787 770, 770, 770, 772, 772, 772, 0, 0, 772, 0, 03788 772, 772, 772, 772, 772, 772, 773, 773, 773, 0, 03789 0, 773, 0, 773, 773, 773, 773, 773, 773, 776, 03790 776, 776, 0, 0, 776, 0, 0, 0, 776, 776, 03791 03792 776, 776, 777, 777, 777, 0, 0, 777, 0, 777, 03793 777, 777, 777, 777, 777, 778, 778, 778, 0, 0, 03794 778, 0, 778, 778, 778, 778, 778, 778, 783, 783, 03795 783, 0, 0, 783, 0, 783, 783, 783, 783, 783, 03796 783, 784, 784, 784, 0, 0, 784, 0, 784, 784, 03797 784, 784, 784, 784, 790, 790, 790, 0, 0, 790, 03798 0, 0, 0, 790, 790, 790, 790, 791, 791, 791, 03799 0, 0, 791, 0, 791, 791, 791, 791, 791, 791, 03800 792, 792, 792, 0, 0, 792, 0, 792, 792, 792, 03801 792, 792, 792, 793, 793, 793, 0, 0, 793, 0, 03802 03803 0, 793, 793, 793, 793, 793, 0, 0, 0, 793, 03804 830, 830, 830, 830, 0, 829, 829, 829, 829, 829, 03805 939, 939, 939, 829, 0, 939, 0, 793, 796, 796, 03806 796, 0, 0, 796, 0, 0, 796, 796, 796, 796, 03807 796, 829, 0, 0, 796, 831, 831, 831, 831, 838, 03808 838, 838, 838, 843, 843, 843, 0, 0, 843, 0, 03809 0, 843, 796, 797, 797, 797, 0, 0, 797, 0, 03810 797, 797, 797, 797, 797, 797, 798, 798, 798, 0, 03811 0, 798, 0, 798, 798, 798, 798, 798, 798, 806, 03812 806, 806, 0, 0, 806, 0, 806, 806, 806, 806, 03813 03814 806, 806, 807, 807, 807, 0, 0, 807, 0, 807, 03815 807, 807, 807, 807, 807, 808, 808, 808, 0, 0, 03816 808, 0, 0, 808, 808, 808, 808, 808, 0, 0, 03817 0, 808, 837, 837, 837, 848, 848, 837, 848, 848, 03818 848, 848, 865, 865, 865, 865, 865, 0, 837, 808, 03819 809, 809, 809, 0, 0, 809, 0, 809, 809, 809, 03820 809, 809, 809, 812, 812, 812, 837, 0, 812, 0, 03821 0, 812, 812, 812, 812, 812, 0, 853, 853, 812, 03822 853, 853, 853, 853, 867, 867, 867, 867, 867, 847, 03823 847, 847, 847, 0, 0, 0, 847, 812, 813, 813, 03824 03825 813, 0, 0, 813, 0, 813, 813, 813, 813, 813, 03826 813, 823, 823, 823, 847, 0, 823, 0, 0, 0, 03827 823, 823, 823, 823, 824, 824, 824, 0, 0, 824, 03828 0, 824, 824, 824, 824, 824, 824, 825, 825, 825, 03829 0, 0, 825, 0, 825, 825, 825, 825, 825, 825, 03830 826, 826, 826, 0, 0, 826, 0, 0, 826, 826, 03831 826, 826, 826, 0, 858, 858, 826, 858, 858, 858, 03832 858, 870, 870, 870, 870, 870, 862, 862, 862, 862, 03833 0, 0, 0, 862, 826, 832, 832, 832, 0, 0, 03834 832, 0, 832, 832, 832, 832, 832, 832, 833, 833, 03835 03836 833, 862, 0, 833, 0, 833, 833, 833, 833, 833, 03837 833, 835, 835, 835, 0, 0, 835, 0, 835, 835, 03838 835, 835, 835, 835, 836, 836, 836, 0, 0, 836, 03839 0, 836, 836, 836, 836, 836, 836, 839, 839, 839, 03840 0, 0, 839, 0, 0, 0, 839, 839, 839, 839, 03841 840, 840, 840, 0, 0, 840, 0, 840, 840, 840, 03842 840, 840, 840, 841, 841, 841, 0, 0, 841, 0, 03843 841, 841, 841, 841, 841, 841, 849, 849, 849, 0, 03844 0, 849, 849, 849, 849, 849, 849, 849, 849, 850, 03845 850, 850, 0, 0, 850, 0, 850, 850, 850, 850, 03846 03847 850, 850, 0, 863, 863, 850, 863, 863, 863, 863, 03848 864, 864, 0, 864, 864, 864, 864, 872, 872, 872, 03849 872, 872, 0, 850, 851, 851, 851, 0, 0, 851, 03850 851, 851, 851, 851, 851, 851, 851, 852, 852, 852, 03851 0, 0, 852, 0, 0, 0, 852, 852, 852, 852, 03852 0, 866, 866, 852, 866, 866, 866, 866, 868, 868, 03853 0, 868, 868, 868, 868, 875, 875, 875, 875, 875, 03854 0, 852, 854, 854, 854, 0, 0, 854, 854, 854, 03855 854, 854, 854, 854, 854, 855, 855, 855, 0, 0, 03856 855, 0, 855, 855, 855, 855, 855, 855, 0, 869, 03857 03858 869, 855, 869, 869, 869, 869, 871, 871, 0, 871, 03859 871, 871, 871, 880, 880, 880, 880, 0, 0, 855, 03860 856, 856, 856, 0, 0, 856, 856, 856, 856, 856, 03861 856, 856, 856, 857, 857, 857, 0, 0, 857, 0, 03862 0, 0, 857, 857, 857, 857, 0, 873, 873, 857, 03863 873, 873, 873, 873, 874, 874, 0, 874, 874, 874, 03864 874, 881, 881, 881, 881, 0, 0, 857, 859, 859, 03865 859, 0, 0, 859, 859, 859, 859, 859, 859, 859, 03866 859, 860, 860, 860, 0, 0, 860, 0, 860, 860, 03867 860, 860, 860, 860, 0, 876, 876, 860, 876, 876, 03868 03869 876, 876, 877, 877, 877, 0, 0, 877, 940, 940, 03870 940, 877, 0, 940, 0, 860, 861, 861, 861, 0, 03871 0, 861, 861, 861, 861, 861, 861, 861, 861, 882, 03872 882, 882, 0, 0, 882, 0, 882, 882, 882, 882, 03873 882, 882, 887, 887, 887, 0, 0, 887, 887, 887, 03874 888, 888, 888, 888, 896, 896, 896, 896, 887, 904, 03875 904, 904, 904, 905, 905, 905, 905, 906, 906, 906, 03876 906, 907, 907, 907, 907, 0, 887, 889, 889, 889, 03877 0, 0, 889, 0, 0, 0, 889, 889, 889, 889, 03878 890, 890, 890, 0, 0, 890, 0, 890, 890, 890, 03879 03880 890, 890, 890, 895, 895, 895, 0, 0, 895, 895, 03881 895, 908, 908, 908, 908, 0, 0, 0, 908, 895, 03882 909, 909, 909, 909, 910, 910, 910, 910, 912, 912, 03883 912, 912, 914, 914, 914, 914, 908, 895, 897, 897, 03884 897, 0, 0, 897, 0, 0, 0, 897, 897, 897, 03885 897, 898, 898, 898, 0, 0, 898, 0, 898, 898, 03886 898, 898, 898, 898, 903, 903, 903, 0, 0, 903, 03887 903, 903, 0, 911, 911, 911, 911, 911, 0, 0, 03888 903, 911, 915, 915, 915, 915, 0, 0, 916, 916, 03889 916, 916, 936, 936, 936, 916, 0, 936, 903, 911, 03890 03891 913, 913, 913, 0, 0, 913, 0, 0, 0, 913, 03892 913, 913, 913, 916, 917, 917, 917, 917, 918, 918, 03893 918, 918, 919, 919, 919, 919, 919, 936, 0, 0, 03894 919, 920, 920, 920, 920, 921, 921, 921, 921, 922, 03895 922, 922, 922, 923, 923, 923, 923, 0, 919, 924, 03896 924, 924, 924, 0, 0, 0, 924, 925, 925, 925, 03897 925, 926, 926, 926, 926, 927, 927, 927, 927, 927, 03898 931, 931, 931, 927, 924, 931, 934, 934, 934, 0, 03899 941, 934, 941, 0, 0, 941, 0, 942, 942, 942, 03900 0, 927, 942, 943, 944, 943, 944, 0, 943, 944, 03901 03902 945, 946, 945, 946, 0, 945, 946, 947, 0, 947, 03903 0, 0, 947, 931, 0, 0, 0, 0, 934, 949, 03904 949, 949, 949, 949, 949, 949, 949, 950, 950, 950, 03905 950, 950, 950, 950, 950, 951, 951, 951, 951, 951, 03906 951, 951, 951, 952, 952, 952, 952, 952, 952, 952, 03907 952, 953, 953, 953, 953, 953, 953, 953, 953, 954, 03908 0, 0, 954, 955, 0, 0, 955, 0, 955, 955, 03909 955, 956, 956, 956, 956, 956, 956, 956, 956, 957, 03910 0, 0, 957, 0, 957, 957, 958, 958, 958, 958, 03911 958, 958, 958, 958, 959, 959, 0, 959, 0, 959, 03912 03913 959, 959, 960, 960, 960, 960, 960, 960, 960, 960, 03914 961, 961, 0, 961, 961, 961, 961, 961, 962, 962, 03915 962, 962, 962, 962, 962, 962, 963, 963, 963, 963, 03916 963, 963, 963, 963, 964, 964, 0, 0, 964, 964, 03917 966, 966, 966, 966, 966, 966, 966, 966, 967, 967, 03918 967, 967, 967, 967, 967, 967, 968, 968, 968, 968, 03919 968, 968, 968, 968, 969, 969, 969, 969, 969, 969, 03920 969, 969, 971, 971, 971, 971, 971, 971, 971, 971, 03921 972, 972, 972, 972, 972, 972, 972, 972, 973, 973, 03922 973, 973, 973, 973, 973, 973, 974, 974, 0, 974, 03923 03924 0, 974, 974, 974, 975, 975, 975, 975, 975, 975, 03925 975, 975, 977, 977, 0, 977, 977, 977, 977, 977, 03926 978, 978, 978, 978, 978, 978, 978, 978, 979, 0, 03927 0, 979, 980, 980, 980, 980, 980, 980, 980, 980, 03928 981, 981, 981, 981, 981, 981, 981, 981, 982, 982, 03929 0, 0, 982, 982, 984, 984, 984, 984, 984, 984, 03930 984, 984, 986, 986, 986, 986, 986, 986, 986, 986, 03931 987, 987, 987, 987, 987, 987, 987, 987, 989, 989, 03932 989, 989, 989, 989, 989, 989, 990, 990, 990, 990, 03933 990, 990, 990, 990, 991, 991, 991, 991, 991, 991, 03934 03935 991, 991, 992, 992, 992, 992, 992, 992, 992, 992, 03936 993, 993, 993, 993, 993, 993, 993, 993, 994, 994, 03937 994, 994, 994, 994, 994, 994, 995, 995, 995, 995, 03938 995, 995, 995, 995, 996, 996, 996, 996, 996, 996, 03939 996, 996, 997, 997, 997, 997, 997, 997, 997, 997, 03940 998, 998, 998, 998, 998, 998, 998, 998, 999, 999, 03941 999, 999, 999, 999, 999, 999, 1000, 1000, 1000, 1000, 03942 1000, 1000, 1000, 1000, 1001, 1001, 1001, 1001, 1001, 1001, 03943 1001, 1001, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 1002, 03944 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1003, 1004, 1004, 03945 03946 1004, 1004, 1004, 1004, 1004, 1004, 1005, 1005, 1005, 1005, 03947 1005, 1005, 1005, 1005, 1006, 0, 0, 1006, 1007, 1007, 03948 1007, 1007, 1007, 1007, 1007, 1007, 1008, 1008, 1008, 1008, 03949 1008, 1008, 1008, 1008, 1009, 1009, 1009, 1009, 1009, 1009, 03950 1009, 1009, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 1011, 03951 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1012, 1013, 1013, 03952 1013, 1013, 1013, 1013, 1013, 1013, 1014, 1014, 1014, 1014, 03953 1014, 1014, 1014, 1014, 1015, 1015, 1015, 1015, 1015, 1015, 03954 1015, 1015, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 1016, 03955 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1017, 1018, 1018, 03956 03957 1018, 1018, 1018, 1018, 1018, 1018, 1019, 1019, 1019, 1019, 03958 1019, 1019, 1019, 1019, 1020, 1020, 1020, 1020, 1020, 1020, 03959 1020, 1020, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 1021, 03960 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1022, 1023, 1023, 03961 1023, 1023, 1023, 1023, 1023, 1023, 1024, 1024, 1024, 1024, 03962 1024, 1024, 1024, 1024, 1025, 1025, 1025, 1025, 1025, 1025, 03963 1025, 1025, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 03964 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1028, 1028, 03965 1028, 1028, 1028, 1028, 1028, 1028, 1029, 0, 0, 1029, 03966 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1030, 1031, 1031, 03967 03968 1031, 1031, 1031, 1031, 1031, 1031, 1032, 1032, 1032, 1032, 03969 1032, 1032, 1032, 1032, 1033, 1033, 1033, 1033, 1033, 1033, 03970 1033, 1033, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 1034, 03971 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1035, 1036, 1036, 03972 1036, 1036, 1036, 1036, 1036, 1036, 1037, 1037, 1037, 1037, 03973 1037, 1037, 1037, 1037, 1038, 1038, 1038, 1038, 1038, 1038, 03974 1038, 1038, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 1039, 03975 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1040, 1041, 1041, 03976 1041, 1041, 1041, 1041, 1041, 1041, 1042, 1042, 1042, 1042, 03977 1042, 1042, 1042, 1042, 1043, 1043, 1043, 1043, 1043, 1043, 03978 03979 1043, 1043, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 1044, 03980 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1045, 1046, 1046, 03981 1046, 1046, 1046, 1046, 1046, 1046, 1047, 1047, 1047, 1047, 03982 1047, 1047, 1047, 1047, 1048, 1048, 1048, 1048, 1048, 1048, 03983 1048, 1048, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 1049, 03984 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 1051, 1051, 03985 1051, 1051, 1051, 1051, 1051, 1051, 1052, 1052, 1052, 1052, 03986 1052, 1052, 1052, 1052, 1053, 1053, 1053, 1053, 1053, 1053, 03987 1053, 1053, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 1054, 03988 1055, 0, 0, 1055, 1056, 1056, 1056, 1056, 1056, 1056, 03989 03990 1056, 1056, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 1057, 03991 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1058, 1059, 1059, 03992 1059, 1059, 1059, 1059, 1059, 1059, 1060, 1060, 1060, 1060, 03993 1060, 1060, 1060, 1060, 1061, 1061, 1061, 1061, 1061, 1061, 03994 1061, 1061, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 1062, 03995 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1063, 1064, 1064, 03996 1064, 1064, 1064, 1064, 1064, 1064, 1065, 1065, 1065, 1065, 03997 1065, 1065, 1065, 1065, 1066, 1066, 1066, 1066, 1066, 1066, 03998 1066, 1066, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 1067, 03999 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1068, 1069, 1069, 04000 04001 1069, 1069, 1069, 1069, 1069, 1069, 1070, 1070, 1070, 1070, 04002 1070, 1070, 1070, 1070, 1071, 1071, 1071, 1071, 1071, 1071, 04003 1071, 1071, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 1072, 04004 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1074, 1074, 04005 1074, 1074, 1074, 1074, 1074, 1074, 1075, 1075, 1075, 1075, 04006 1075, 1075, 1075, 1075, 1076, 1076, 1076, 1076, 1076, 1076, 04007 1076, 1076, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 1077, 04008 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1078, 1079, 1079, 04009 1079, 1079, 1079, 1079, 1079, 1079, 1080, 1080, 1080, 1080, 04010 1080, 1080, 1080, 1080, 1081, 0, 0, 1081, 1082, 1082, 04011 04012 1082, 1082, 1082, 1082, 1082, 1082, 1083, 1083, 1083, 1083, 04013 1083, 1083, 1083, 1083, 1084, 1084, 1084, 1084, 1084, 1084, 04014 1084, 1084, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 1085, 04015 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1086, 1087, 1087, 04016 1087, 1087, 1087, 1087, 1087, 1087, 1088, 1088, 1088, 1088, 04017 1088, 1088, 1088, 1088, 1089, 1089, 0, 1089, 1089, 1089, 04018 1089, 1089, 948, 948, 948, 948, 948, 948, 948, 948, 04019 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 04020 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 04021 948, 948, 948, 948, 948, 948, 948, 948, 948, 948, 04022 04023 948, 948, 948, 948, 948, 948, 948, 948, 948, 948 04024 } ; 04025 04026 //static yy_state_type yy_last_accepting_state; 04027 //static char *yy_last_accepting_cpos; 04028 04029 //extern int yy_flex_debug; 04030 //int yy_flex_debug = 1; 04031 04032 static const short int yy_rule_linenum[49] = 04033 { 0, 04034 122, 127, 128, 129, 130, 131, 132, 133, 134, 135, 04035 136, 137, 138, 141, 145, 149, 157, 160, 164, 169, 04036 177, 178, 180, 184, 195, 199, 205, 206, 211, 220, 04037 234, 235, 240, 249, 260, 263, 264, 266, 270, 274, 04038 279, 281, 282, 289, 295, 302, 305, 309 04039 } ; 04040 04041 /* The intent behind this definition is that it'll catch 04042 * any uses of REJECT which flex missed. 04043 */ 04044 #define REJECT reject_used_but_not_detected 04045 #define yymore() yymore_used_but_not_detected 04046 #define YY_MORE_ADJ 0 04047 //char *yytext; 04048 /************************************************** 04049 * VRML 2.0 Parser 04050 * Copyright (C) 1996 Silicon Graphics, Inc. 04051 * 04052 * Author(s) : Gavin Bell 04053 * Daniel Woods (first port) 04054 ************************************************** 04055 */ 04056 //#include "tokens.h" 04057 #include <string.h> 04058 04059 // used to reset the lexer input after initialization of VRML nodes 04060 //static void (*theyyInput)(char *, int &, int); 04061 04062 // We define the YY_INPUT so we an change the input source later 04063 #define YY_INPUT(buf, result, max_size) (*theyyInput)(buf, result, max_size,this); 04064 04065 /* Current line number */ 04066 //int currentLineNumber = 1; 04067 //void yyResetLineNumber() { currentLineNumber = 1; } 04068 04069 //extern void yyerror(const char *); 04070 04071 /* The YACC parser sets this to a token to direct the lexer */ 04072 /* in cases where just syntax isn't enough: */ 04073 //int expectToken = 0; 04074 04075 /* True when parsing a multiple-valued field: */ 04076 //static int parsing_mf = 0; 04077 04078 /* These are used when parsing SFImage fields: */ 04079 //static int sfImageIntsParsed = 0; 04080 //static int sfImageIntsExpected = 0; 04081 04082 #ifdef __cplusplus 04083 //extern "C" 04084 #endif 04085 int vtkVRMLYaccData::yywrap() { BEGIN INITIAL; return 1; } 04086 04087 /* Normal state: parsing nodes. The initial start state is used */ 04088 /* only to recognize the VRML header. */ 04089 /* Start tokens for all of the field types, */ 04090 /* except for MFNode and SFNode, which are almost completely handled */ 04091 /* by the parser: */ 04092 /* Big hairy expression for floating point numbers: */ 04093 /* Ints are decimal or hex (0x##): */ 04094 /* Whitespace. Using this pattern can screw up currentLineNumber, */ 04095 /* so it is only used wherever it is really convenient and it is */ 04096 /* extremely unlikely that the user will put in a carriage return */ 04097 /* (example: between the floats in an SFVec3f) */ 04098 /* And the same pattern without the newline */ 04099 /* Legal characters to start an identifier */ 04100 /* Legal other characters in an identifier */ 04101 04102 /* Macros after this point can all be overridden by user definitions in 04103 * section 1. 04104 */ 04105 04106 #ifdef YY_MALLOC_DECL 04107 YY_MALLOC_DECL 04108 #else 04109 #if __STDC__ 04110 #ifndef __cplusplus 04111 #include <stdlib.h> 04112 #endif 04113 #else 04114 /* Just try to get by without declaring the routines. This will fail 04115 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) 04116 * or sizeof(void*) != sizeof(int). 04117 */ 04118 #endif 04119 #endif 04120 04121 /* Amount of stuff to slurp up with each read. */ 04122 #ifndef YY_READ_BUF_SIZE 04123 #define YY_READ_BUF_SIZE 8192 04124 #endif 04125 04126 /* Copy whatever the last rule matched to the standard output. */ 04127 04128 #ifndef ECHO 04129 /* This used to be an fputs(), but since the string might contain NUL's, 04130 * we now use fwrite(). 04131 */ 04132 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) 04133 #endif 04134 04135 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 04136 * is returned in "result". 04137 */ 04138 #ifndef YY_INPUT 04139 #define YY_INPUT(buf,result,max_size) \ 04140 if ( yy_current_buffer->yy_is_interactive ) \ 04141 { \ 04142 int c = getc( yyin ); \ 04143 result = c == EOF ? 0 : 1; \ 04144 buf[0] = (char) c; \ 04145 } \ 04146 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \ 04147 && ferror( yyin ) ) \ 04148 YY_FATAL_ERROR( "input in flex scanner failed" ); 04149 #endif 04150 04151 /* No semi-colon after return; correct usage is to write "yyterminate();" - 04152 * we don't want an extra ';' after the "return" because that will cause 04153 * some compilers to complain about unreachable statements. 04154 */ 04155 #ifndef yyterminate 04156 #define yyterminate() return YY_NULL 04157 #endif 04158 04159 /* Number of entries by which start-condition stack grows. */ 04160 #ifndef YY_START_STACK_INCR 04161 #define YY_START_STACK_INCR 25 04162 #endif 04163 04164 /* Report a fatal error. */ 04165 #ifndef YY_FATAL_ERROR 04166 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) 04167 #endif 04168 04169 /* Default declaration of generated scanner - a define so the user can 04170 * easily add parameters. 04171 */ 04172 #ifndef YY_DECL 04173 #define YY_DECL int yylex ( vtkVRMLImporter* self ) 04174 #endif 04175 04176 /* Code executed at the beginning of each rule, after yytext and yyleng 04177 * have been set up. 04178 */ 04179 #ifndef YY_USER_ACTION 04180 #define YY_USER_ACTION 04181 #endif 04182 04183 /* Code executed at the end of each rule. */ 04184 #ifndef YY_BREAK 04185 #define YY_BREAK break; 04186 #endif 04187 04188 04189 int vtkVRMLYaccData::yylex ( vtkVRMLImporter* self ) 04190 { 04191 yy_state_type yy_current_state; 04192 char *yy_cp, *yy_bp; 04193 int yy_act; 04194 04195 04196 04197 04198 /* Switch into a new start state if the parser */ 04199 /* just told us that we've read a field name */ 04200 /* and should expect a field value (or IS) */ 04201 if (expectToken != 0) { 04202 if (yy_flex_debug) 04203 fprintf(stderr,"LEX--> Start State %d\n", expectToken); 04204 04205 /* 04206 * Annoying. This big switch is necessary because 04207 * LEX wants to assign particular numbers to start 04208 * tokens, and YACC wants to define all the tokens 04209 * used, too. Sigh. 04210 */ 04211 switch(expectToken) { 04212 case SFBOOL: BEGIN SFB; break; 04213 case SFCOLOR: BEGIN SFC; break; 04214 case SFFLOAT: BEGIN SFF; break; 04215 case SFIMAGE: BEGIN SFIMG; break; 04216 case SFINT32: BEGIN SFI; break; 04217 case SFROTATION: BEGIN SFR; break; 04218 case SFSTRING: BEGIN SFS; break; 04219 case SFTIME: BEGIN SFT; break; 04220 case SFVEC2F: BEGIN SFV2; break; 04221 case SFVEC3F: BEGIN SFV3; break; 04222 case MFCOLOR: BEGIN MFC; break; 04223 case MFFLOAT: BEGIN MFF; break; 04224 case MFINT32: BEGIN MFI; break; 04225 case MFROTATION: BEGIN MFR; break; 04226 case MFSTRING: BEGIN MFS; break; 04227 case MFVEC2F: BEGIN MFV2; break; 04228 case MFVEC3F: BEGIN MFV3; break; 04229 04230 /* SFNode and MFNode are special. Here the lexer just returns */ 04231 /* "marker tokens" so the parser knows what type of field is */ 04232 /* being parsed; unlike the other fields, parsing of SFNode/MFNode */ 04233 /* field happens in the parser. */ 04234 case MFNODE: expectToken = 0; return MFNODE; 04235 case SFNODE: expectToken = 0; return SFNODE; 04236 04237 default: yyerror("ACK: Bad expectToken"); break; 04238 } 04239 } 04240 04241 04242 /* This is more complicated than they really need to be because */ 04243 /* I was ambitious and made the whitespace-matching rule aggressive */ 04244 04245 if ( yy_init ) 04246 { 04247 #ifdef YY_USER_INIT 04248 YY_USER_INIT; 04249 #endif 04250 04251 if ( ! yy_start ) 04252 yy_start = 1; /* first start state */ 04253 04254 if ( ! yyin ) 04255 yyin = stdin; 04256 04257 if ( ! yyout ) 04258 yyout = stdout; 04259 04260 if ( yy_current_buffer ) 04261 yy_init_buffer( yy_current_buffer, yyin ); 04262 else 04263 yy_current_buffer = 04264 yy_create_buffer( yyin, YY_BUF_SIZE ); 04265 04266 yy_load_buffer_state(); 04267 04268 yy_init = 0; 04269 } 04270 04271 while ( 1 ) /* loops until end-of-file is reached */ 04272 { 04273 yy_cp = yy_c_buf_p; 04274 04275 /* Support of yytext. */ 04276 *yy_cp = yy_hold_char; 04277 04278 /* yy_bp points to the position in yy_ch_buf of the start of 04279 * the current run. 04280 */ 04281 yy_bp = yy_cp; 04282 04283 yy_current_state = yy_start; 04284 yy_match: 04285 do 04286 { 04287 YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; 04288 if ( yy_accept[yy_current_state] ) 04289 { 04290 yy_last_accepting_state = yy_current_state; 04291 yy_last_accepting_cpos = yy_cp; 04292 } 04293 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 04294 { 04295 yy_current_state = (int) yy_def[yy_current_state]; 04296 if ( yy_current_state >= 949 ) 04297 yy_c = yy_meta[(unsigned int) yy_c]; 04298 } 04299 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 04300 ++yy_cp; 04301 } 04302 while ( yy_base[yy_current_state] != 7663 ); 04303 04304 yy_find_action: 04305 yy_act = yy_accept[yy_current_state]; 04306 04307 YY_DO_BEFORE_ACTION; 04308 04309 04310 do_action: /* This label is used only to access EOF actions. */ 04311 04312 if ( yy_flex_debug ) 04313 { 04314 if ( yy_act == 0 ) 04315 fprintf( stderr, "--scanner backing up\n" ); 04316 else if ( yy_act < 49 ) 04317 fprintf( stderr, "--accepting rule at line %d (\"%s\")\n", 04318 yy_rule_linenum[yy_act], yytext ); 04319 else if ( yy_act == 49 ) 04320 fprintf( stderr, "--accepting default rule (\"%s\")\n", 04321 yytext ); 04322 else if ( yy_act == 50 ) 04323 fprintf( stderr, "--(end of buffer or a NUL)\n" ); 04324 else 04325 fprintf( stderr, "--EOF (start condition %d)\n", YY_START ); 04326 } 04327 04328 switch ( yy_act ) 04329 { /* beginning of action switch */ 04330 case 0: /* must back up */ 04331 /* undo the effects of YY_DO_BEFORE_ACTION */ 04332 *yy_cp = yy_hold_char; 04333 yy_cp = yy_last_accepting_cpos; 04334 yy_current_state = yy_last_accepting_state; 04335 goto yy_find_action; 04336 04337 case 1: 04338 YY_USER_ACTION 04339 { BEGIN NODE; } 04340 YY_BREAK 04341 /* The lexer is in the NODE state when parsing nodes, either */ 04342 /* top-level nodes in the .wrl file, in a prototype implementation, */ 04343 /* or when parsing the contents of SFNode or MFNode fields. */ 04344 case 2: 04345 YY_USER_ACTION 04346 { return PROTO; } 04347 case 3: 04348 YY_USER_ACTION 04349 { return EXTERNPROTO; } 04350 case 4: 04351 YY_USER_ACTION 04352 { return DEF; } 04353 case 5: 04354 YY_USER_ACTION 04355 { return USE; } 04356 case 6: 04357 YY_USER_ACTION 04358 { return TO; } 04359 case 7: 04360 YY_USER_ACTION 04361 { return IS; } 04362 case 8: 04363 YY_USER_ACTION 04364 { return ROUTE; } 04365 case 9: 04366 YY_USER_ACTION 04367 { return SFN_NULL; } 04368 case 10: 04369 YY_USER_ACTION 04370 { return EVENTIN; } 04371 case 11: 04372 YY_USER_ACTION 04373 { return EVENTOUT; } 04374 case 12: 04375 YY_USER_ACTION 04376 { return FIELD; } 04377 case 13: 04378 YY_USER_ACTION 04379 { return EXPOSEDFIELD; } 04380 /* Legal identifiers: */ 04381 case 14: 04382 YY_USER_ACTION 04383 { 04384 yylval.string = vtkVRMLAllocator::StrDup(yytext); 04385 return IDENTIFIER; } 04386 /* All fields may have an IS declaration: */ 04387 case 15: 04388 YY_USER_ACTION 04389 { BEGIN NODE; 04390 expectToken = 0; 04391 yyless(0); 04392 } 04393 YY_BREAK 04394 case 16: 04395 YY_USER_ACTION 04396 { BEGIN NODE; 04397 expectToken = 0; 04398 yyless(0); /* put back the IS */ 04399 } 04400 YY_BREAK 04401 /* All MF field types other than MFNode are completely parsed here */ 04402 /* in the lexer, and one token is returned to the parser. They all */ 04403 /* share the same rules for open and closing brackets: */ 04404 case 17: 04405 YY_USER_ACTION 04406 { if (parsing_mf) yyerror("Double ["); 04407 parsing_mf = 1; 04408 yylval.vec2f = self->FloatArrayNew(); 04409 yylval.vec2f->SetNumberOfComponents(2); 04410 } 04411 YY_BREAK 04412 case 18: 04413 YY_USER_ACTION 04414 { if (parsing_mf) yyerror("Double ["); 04415 parsing_mf = 1; 04416 yylval.mfint32 = self->IdTypeArrayNew(); 04417 } 04418 YY_BREAK 04419 case 19: 04420 YY_USER_ACTION 04421 { if (parsing_mf) yyerror("Double ["); 04422 parsing_mf = 1; 04423 yylval.vec3f = self->PointsNew(); 04424 } 04425 YY_BREAK 04426 case 20: 04427 YY_USER_ACTION 04428 { if (!parsing_mf) yyerror("Unmatched ]"); 04429 int tokenFieldType = expectToken; 04430 BEGIN NODE; 04431 parsing_mf = 0; 04432 expectToken = 0; 04433 return tokenFieldType; 04434 } 04435 case 21: 04436 YY_USER_ACTION 04437 { BEGIN NODE; expectToken = 0; yylval.sfint = 1; return SFBOOL; } 04438 case 22: 04439 YY_USER_ACTION 04440 { BEGIN NODE; expectToken = 0; yylval.sfint = 0; return SFBOOL; } 04441 case 23: 04442 YY_USER_ACTION 04443 { BEGIN NODE; expectToken = 0; 04444 yylval.sfint = atoi(yytext); 04445 return SFINT32; 04446 } 04447 case 24: 04448 YY_USER_ACTION 04449 { if (parsing_mf) { 04450 int num; 04451 num = atoi(yytext); 04452 yylval.mfint32->InsertNextValue(num); 04453 } 04454 else { 04455 BEGIN NODE; expectToken = 0; return MFINT32; 04456 } 04457 } 04458 YY_BREAK 04459 /* All the floating-point types are pretty similar: */ 04460 case 25: 04461 YY_USER_ACTION 04462 { BEGIN NODE; expectToken = 0; float num; 04463 sscanf(yytext, "%f", &num); 04464 yylval.sffloat = num; 04465 return SFFLOAT; } 04466 case 26: 04467 YY_USER_ACTION 04468 { if (parsing_mf) ; /* Add to array... */ 04469 else { 04470 /* No open bracket means a single value: */ 04471 BEGIN NODE; expectToken = 0; return MFFLOAT; 04472 } 04473 } 04474 YY_BREAK 04475 case 27: 04476 YY_USER_ACTION 04477 { BEGIN NODE; expectToken = 0; return SFVEC2F; } 04478 case 28: 04479 YY_USER_ACTION 04480 { 04481 if (parsing_mf) 04482 { 04483 // .. add to array... 04484 float num[2]; 04485 num[0] = atof(strtok(yytext, " ")); 04486 num[1] = atof(strtok(NULL, " ")); 04487 // equivalent to: sscanf(yytext, "%f %f", &num[0], &num[1]); 04488 yylval.vec2f->InsertNextTuple(num); 04489 } 04490 else 04491 { 04492 BEGIN NODE; expectToken = 0; 04493 return MFVEC2F; 04494 } 04495 } 04496 YY_BREAK 04497 case 29: 04498 YY_USER_ACTION 04499 { BEGIN NODE; expectToken = 0; 04500 float num[3]; 04501 yylval.vec3f = self->PointsNew(); 04502 num[0] = atof(strtok(yytext, " ")); 04503 num[1] = atof(strtok(NULL, " ")); 04504 num[2] = atof(strtok(NULL, " ")); 04505 //sscanf(yytext, "%f %f %f", &num[0], &num[1], &num[2]); 04506 yylval.vec3f->InsertPoint(0, num); 04507 return SFVEC3F; } 04508 case 30: 04509 YY_USER_ACTION 04510 { if (parsing_mf) { /* .. add to array... */ 04511 float num[3]; 04512 num[0] = atof(strtok(yytext, " ")); 04513 num[1] = atof(strtok(NULL, " ")); 04514 num[2] = atof(strtok(NULL, " ")); 04515 //sscanf(yytext, "%f %f %f", &num[0], &num[1], &num[2]); 04516 yylval.vec3f->InsertNextPoint(num); 04517 //return MFVEC3F; 04518 } 04519 else { 04520 BEGIN NODE; expectToken = 0; 04521 return MFVEC3F; 04522 } 04523 } 04524 YY_BREAK 04525 case 31: 04526 YY_USER_ACTION 04527 { BEGIN NODE; expectToken = 0; return SFROTATION; } 04528 case 32: 04529 YY_USER_ACTION 04530 { if (parsing_mf) ; /* .. add to array... */ 04531 else { 04532 BEGIN NODE; expectToken = 0; return MFROTATION; 04533 } 04534 } 04535 YY_BREAK 04536 case 33: 04537 YY_USER_ACTION 04538 { BEGIN NODE; expectToken = 0; 04539 float num[3]; 04540 yylval.vec3f = self->PointsNew(); 04541 num[0] = atof(strtok(yytext, " ")); 04542 num[1] = atof(strtok(NULL, " ")); 04543 num[2] = atof(strtok(NULL, " ")); 04544 //sscanf(yytext, "%f %f %f", &num[0], &num[1], &num[2]); 04545 yylval.vec3f->InsertPoint(0, num); 04546 return SFCOLOR; } 04547 case 34: 04548 YY_USER_ACTION 04549 { if (parsing_mf) { /* .. add to array... */ 04550 float num[3]; 04551 num[0] = atof(strtok(yytext, " ")); 04552 num[1] = atof(strtok(NULL, " ")); 04553 num[2] = atof(strtok(NULL, " ")); 04554 yylval.vec3f->InsertNextPoint(num); 04555 } 04556 else { 04557 BEGIN NODE; expectToken = 0; return MFCOLOR; 04558 } 04559 } 04560 YY_BREAK 04561 case 35: 04562 YY_USER_ACTION 04563 { BEGIN NODE; expectToken = 0; return SFTIME; } 04564 /* SFString/MFString */ 04565 case 36: 04566 YY_USER_ACTION 04567 { BEGIN IN_SFS; } 04568 YY_BREAK 04569 case 37: 04570 YY_USER_ACTION 04571 { BEGIN IN_MFS; } 04572 YY_BREAK 04573 /* Anything besides open-quote (or whitespace) is an error: */ 04574 case 38: 04575 YY_USER_ACTION 04576 { yyerror("String missing open-quote"); 04577 BEGIN NODE; expectToken = 0; return SFSTRING; 04578 } 04579 /* Expect open-quote, open-bracket, or whitespace: */ 04580 case 39: 04581 YY_USER_ACTION 04582 { yyerror("String missing open-quote"); 04583 BEGIN NODE; expectToken = 0; return MFSTRING; 04584 } 04585 /* Backslashed-quotes are OK: */ 04586 case 40: 04587 YY_USER_ACTION 04588 ; 04589 YY_BREAK 04590 /* Gobble up anything besides quotes and newlines. */ 04591 /* Newlines are legal in strings, but we exclude them here so */ 04592 /* that line number are counted correctly by the catch-all newline */ 04593 /* rule that applies to everything. */ 04594 case 41: 04595 YY_USER_ACTION 04596 ; 04597 YY_BREAK 04598 /* Quote ends the string: */ 04599 case 42: 04600 YY_USER_ACTION 04601 { BEGIN NODE; expectToken = 0; return SFSTRING; } 04602 case 43: 04603 YY_USER_ACTION 04604 { if (parsing_mf) BEGIN MFS; /* ... add to array ... */ 04605 else { 04606 BEGIN NODE; expectToken = 0; return MFSTRING; 04607 } 04608 } 04609 YY_BREAK 04610 /* SFImage: width height numComponents then width*height integers: */ 04611 case 44: 04612 YY_USER_ACTION 04613 { int w, h; 04614 sscanf(yytext, "%d %d", &w, &h); 04615 sfImageIntsExpected = 1+w*h; 04616 sfImageIntsParsed = 0; 04617 BEGIN IN_SFIMG; 04618 } 04619 YY_BREAK 04620 case 45: 04621 YY_USER_ACTION 04622 { ++sfImageIntsParsed; 04623 if (sfImageIntsParsed == sfImageIntsExpected) { 04624 BEGIN NODE; expectToken = 0; return SFIMAGE; 04625 } 04626 } 04627 YY_BREAK 04628 /* Whitespace and catch-all rules apply to all start states: */ 04629 case 46: 04630 YY_USER_ACTION 04631 ; 04632 YY_BREAK 04633 /* This is also whitespace, but we'll keep track of line number */ 04634 /* to report in errors: */ 04635 case 47: 04636 YY_USER_ACTION 04637 { ++currentLineNumber; } 04638 YY_BREAK 04639 /* This catch-all rule catches anything not covered by any of */ 04640 /* the above: */ 04641 case 48: 04642 YY_USER_ACTION 04643 { return yytext[0]; } 04644 case 49: 04645 YY_USER_ACTION 04646 YY_FATAL_ERROR( "flex scanner jammed" ); 04647 YY_BREAK 04648 case YY_STATE_EOF(INITIAL): 04649 case YY_STATE_EOF(NODE): 04650 case YY_STATE_EOF(SFB): 04651 case YY_STATE_EOF(SFC): 04652 case YY_STATE_EOF(SFF): 04653 case YY_STATE_EOF(SFIMG): 04654 case YY_STATE_EOF(SFI): 04655 case YY_STATE_EOF(SFR): 04656 case YY_STATE_EOF(SFS): 04657 case YY_STATE_EOF(SFT): 04658 case YY_STATE_EOF(SFV2): 04659 case YY_STATE_EOF(SFV3): 04660 case YY_STATE_EOF(MFC): 04661 case YY_STATE_EOF(MFF): 04662 case YY_STATE_EOF(MFI): 04663 case YY_STATE_EOF(MFR): 04664 case YY_STATE_EOF(MFS): 04665 case YY_STATE_EOF(MFV2): 04666 case YY_STATE_EOF(MFV3): 04667 case YY_STATE_EOF(IN_SFS): 04668 case YY_STATE_EOF(IN_MFS): 04669 case YY_STATE_EOF(IN_SFIMG): 04670 yyterminate(); 04671 04672 case YY_END_OF_BUFFER: 04673 { 04674 /* Amount of text matched not including the EOB char. */ 04675 int yy_amount_of_matched_text = yy_cp - yytext_ptr - 1; 04676 04677 /* Undo the effects of YY_DO_BEFORE_ACTION. */ 04678 *yy_cp = yy_hold_char; 04679 04680 if ( yy_current_buffer->yy_buffer_status == yy_buffer_state::YY_BUFFER_NEW ) 04681 { 04682 /* We're scanning a new file or input source. It's 04683 * possible that this happened because the user 04684 * just pointed yyin at a new source and called 04685 * yylex(). If so, then we have to assure 04686 * consistency between yy_current_buffer and our 04687 * globals. Here is the right place to do so, because 04688 * this is the first action (other than possibly a 04689 * back-up) that will match for the new input source. 04690 */ 04691 yy_n_chars = yy_current_buffer->yy_n_chars; 04692 yy_current_buffer->yy_input_file = yyin; 04693 yy_current_buffer->yy_buffer_status = yy_buffer_state::YY_BUFFER_NORMAL; 04694 } 04695 04696 /* Note that here we test for yy_c_buf_p "<=" to the position 04697 * of the first EOB in the buffer, since yy_c_buf_p will 04698 * already have been incremented past the NUL character 04699 * (since all states make transitions on EOB to the 04700 * end-of-buffer state). Contrast this with the test 04701 * in input(). 04702 */ 04703 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) 04704 { /* This was really a NUL. */ 04705 yy_state_type yy_next_state; 04706 04707 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; 04708 04709 yy_current_state = yy_get_previous_state(); 04710 04711 /* Okay, we're now positioned to make the NUL 04712 * transition. We couldn't have 04713 * yy_get_previous_state() go ahead and do it 04714 * for us because it doesn't know how to deal 04715 * with the possibility of jamming (and we don't 04716 * want to build jamming into it because then it 04717 * will run more slowly). 04718 */ 04719 04720 yy_next_state = yy_try_NUL_trans( yy_current_state ); 04721 04722 yy_bp = yytext_ptr + YY_MORE_ADJ; 04723 04724 if ( yy_next_state ) 04725 { 04726 /* Consume the NUL. */ 04727 yy_cp = ++yy_c_buf_p; 04728 yy_current_state = yy_next_state; 04729 goto yy_match; 04730 } 04731 04732 else 04733 { 04734 yy_cp = yy_c_buf_p; 04735 goto yy_find_action; 04736 } 04737 } 04738 04739 else switch ( yy_get_next_buffer() ) 04740 { 04741 case EOB_ACT_END_OF_FILE: 04742 { 04743 yy_did_buffer_switch_on_eof = 0; 04744 04745 if ( yywrap() ) 04746 { 04747 /* Note: because we've taken care in 04748 * yy_get_next_buffer() to have set up 04749 * yytext, we can now set up 04750 * yy_c_buf_p so that if some total 04751 * hoser (like flex itself) wants to 04752 * call the scanner after we return the 04753 * YY_NULL, it'll still work - another 04754 * YY_NULL will get returned. 04755 */ 04756 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; 04757 04758 yy_act = YY_STATE_EOF(YY_START); 04759 goto do_action; 04760 } 04761 04762 else 04763 { 04764 if ( ! yy_did_buffer_switch_on_eof ) 04765 YY_NEW_FILE; 04766 } 04767 break; 04768 } 04769 04770 case EOB_ACT_CONTINUE_SCAN: 04771 yy_c_buf_p = 04772 yytext_ptr + yy_amount_of_matched_text; 04773 04774 yy_current_state = yy_get_previous_state(); 04775 04776 yy_cp = yy_c_buf_p; 04777 yy_bp = yytext_ptr + YY_MORE_ADJ; 04778 goto yy_match; 04779 04780 case EOB_ACT_LAST_MATCH: 04781 yy_c_buf_p = 04782 &yy_current_buffer->yy_ch_buf[yy_n_chars]; 04783 04784 yy_current_state = yy_get_previous_state(); 04785 04786 yy_cp = yy_c_buf_p; 04787 yy_bp = yytext_ptr + YY_MORE_ADJ; 04788 goto yy_find_action; 04789 } 04790 break; 04791 } 04792 04793 default: 04794 YY_FATAL_ERROR( 04795 "fatal flex scanner internal error--no action found" ); 04796 } /* end of action switch */ 04797 } /* end of scanning one token */ 04798 } /* end of yylex */ 04799 04800 04801 /* yy_get_next_buffer - try to read in a new buffer 04802 * 04803 * Returns a code representing an action: 04804 * EOB_ACT_LAST_MATCH - 04805 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position 04806 * EOB_ACT_END_OF_FILE - end of file 04807 */ 04808 04809 int vtkVRMLYaccData::yy_get_next_buffer() 04810 { 04811 char *dest = yy_current_buffer->yy_ch_buf; 04812 char *source = yytext_ptr - 1; /* copy prev. char, too */ 04813 int number_to_move, i; 04814 int ret_val; 04815 04816 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) 04817 YY_FATAL_ERROR( 04818 "fatal flex scanner internal error--end of buffer missed" ); 04819 04820 if ( yy_current_buffer->yy_fill_buffer == 0 ) 04821 { /* Don't try to fill the buffer, so this is an EOF. */ 04822 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) 04823 { 04824 /* We matched a singled characater, the EOB, so 04825 * treat this as a final EOF. 04826 */ 04827 return EOB_ACT_END_OF_FILE; 04828 } 04829 04830 else 04831 { 04832 /* We matched some text prior to the EOB, first 04833 * process it. 04834 */ 04835 return EOB_ACT_LAST_MATCH; 04836 } 04837 } 04838 04839 /* Try to read more data. */ 04840 04841 /* First move last chars to start of buffer. */ 04842 number_to_move = yy_c_buf_p - yytext_ptr; 04843 04844 for ( i = 0; i < number_to_move; ++i ) 04845 *(dest++) = *(source++); 04846 04847 if ( yy_current_buffer->yy_buffer_status == yy_buffer_state::YY_BUFFER_EOF_PENDING ) 04848 /* don't do the read, it's not guaranteed to return an EOF, 04849 * just force an EOF 04850 */ 04851 yy_n_chars = 0; 04852 04853 else 04854 { 04855 int num_to_read = 04856 yy_current_buffer->yy_buf_size - number_to_move - 1; 04857 04858 while ( num_to_read <= 0 ) 04859 { /* Not enough room in the buffer - grow it. */ 04860 #ifdef YY_USES_REJECT 04861 YY_FATAL_ERROR( 04862 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); 04863 #else 04864 04865 /* just a shorter name for the current buffer */ 04866 YY_BUFFER_STATE b = yy_current_buffer; 04867 04868 int yy_c_buf_p_offset = yy_c_buf_p - b->yy_ch_buf; 04869 04870 b->yy_buf_size *= 2; 04871 b->yy_ch_buf = (char *) 04872 yy_flex_realloc( (void *) b->yy_ch_buf, 04873 b->yy_buf_size ); 04874 04875 if ( ! b->yy_ch_buf ) 04876 YY_FATAL_ERROR( 04877 "fatal error - scanner input buffer overflow" ); 04878 04879 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; 04880 04881 num_to_read = yy_current_buffer->yy_buf_size - 04882 number_to_move - 1; 04883 #endif 04884 } 04885 04886 if ( num_to_read > YY_READ_BUF_SIZE ) 04887 num_to_read = YY_READ_BUF_SIZE; 04888 04889 /* Read in more data. */ 04890 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), 04891 yy_n_chars, num_to_read ); 04892 } 04893 04894 if ( yy_n_chars == 0 ) 04895 { 04896 if ( number_to_move - YY_MORE_ADJ == 1 ) 04897 { 04898 ret_val = EOB_ACT_END_OF_FILE; 04899 yyrestart( yyin ); 04900 } 04901 04902 else 04903 { 04904 ret_val = EOB_ACT_LAST_MATCH; 04905 yy_current_buffer->yy_buffer_status = 04906 yy_buffer_state::YY_BUFFER_EOF_PENDING; 04907 } 04908 } 04909 04910 else 04911 ret_val = EOB_ACT_CONTINUE_SCAN; 04912 04913 yy_n_chars += number_to_move; 04914 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; 04915 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; 04916 04917 /* yytext begins at the second character in yy_ch_buf; the first 04918 * character is the one which preceded it before reading in the latest 04919 * buffer; it needs to be kept around in case it's a newline, so 04920 * yy_get_previous_state() will have with '^' rules active. 04921 */ 04922 04923 yytext_ptr = &yy_current_buffer->yy_ch_buf[1]; 04924 04925 return ret_val; 04926 } 04927 04928 04929 /* yy_get_previous_state - get the state just before the EOB char was reached */ 04930 04931 vtkVRMLYaccData::yy_state_type vtkVRMLYaccData::yy_get_previous_state() 04932 { 04933 yy_state_type yy_current_state; 04934 char *yy_cp; 04935 04936 yy_current_state = yy_start; 04937 04938 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) 04939 { 04940 YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); 04941 if ( yy_accept[yy_current_state] ) 04942 { 04943 yy_last_accepting_state = yy_current_state; 04944 yy_last_accepting_cpos = yy_cp; 04945 } 04946 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 04947 { 04948 yy_current_state = (int) yy_def[yy_current_state]; 04949 if ( yy_current_state >= 949 ) 04950 yy_c = yy_meta[(unsigned int) yy_c]; 04951 } 04952 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 04953 } 04954 04955 return yy_current_state; 04956 } 04957 04958 04959 /* yy_try_NUL_trans - try to make a transition on the NUL character 04960 * 04961 * synopsis 04962 * next_state = yy_try_NUL_trans( current_state ); 04963 */ 04964 04965 vtkVRMLYaccData::yy_state_type vtkVRMLYaccData::yy_try_NUL_trans( yy_state_type yy_current_state ) 04966 { 04967 int yy_is_jam; 04968 char *yy_cp = yy_c_buf_p; 04969 04970 YY_CHAR yy_c = 1; 04971 if ( yy_accept[yy_current_state] ) 04972 { 04973 yy_last_accepting_state = yy_current_state; 04974 yy_last_accepting_cpos = yy_cp; 04975 } 04976 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 04977 { 04978 yy_current_state = (int) yy_def[yy_current_state]; 04979 if ( yy_current_state >= 949 ) 04980 yy_c = yy_meta[(unsigned int) yy_c]; 04981 } 04982 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 04983 yy_is_jam = (yy_current_state == 948); 04984 04985 return yy_is_jam ? 0 : yy_current_state; 04986 } 04987 04988 04989 04990 void vtkVRMLYaccData::yyrestart( FILE *input_file ) 04991 { 04992 if ( ! yy_current_buffer ) 04993 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); 04994 04995 yy_init_buffer( yy_current_buffer, input_file ); 04996 yy_load_buffer_state(); 04997 } 04998 04999 05000 void vtkVRMLYaccData::yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) 05001 { 05002 if ( yy_current_buffer == new_buffer ) 05003 return; 05004 05005 if ( yy_current_buffer ) 05006 { 05007 /* Flush out information for old buffer. */ 05008 *yy_c_buf_p = yy_hold_char; 05009 yy_current_buffer->yy_buf_pos = yy_c_buf_p; 05010 yy_current_buffer->yy_n_chars = yy_n_chars; 05011 } 05012 05013 yy_current_buffer = new_buffer; 05014 yy_load_buffer_state(); 05015 05016 /* We don't actually know whether we did this switch during 05017 * EOF (yywrap()) processing, but the only time this flag 05018 * is looked at is after yywrap() is called, so it's safe 05019 * to go ahead and always set it. 05020 */ 05021 yy_did_buffer_switch_on_eof = 1; 05022 } 05023 05024 05025 void vtkVRMLYaccData::yy_load_buffer_state( void ) 05026 { 05027 yy_n_chars = yy_current_buffer->yy_n_chars; 05028 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; 05029 yyin = yy_current_buffer->yy_input_file; 05030 yy_hold_char = *yy_c_buf_p; 05031 } 05032 05033 05034 vtkVRMLYaccData::YY_BUFFER_STATE vtkVRMLYaccData::yy_create_buffer( FILE *file, int size ) 05035 { 05036 YY_BUFFER_STATE b; 05037 05038 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); 05039 05040 if ( ! b ) 05041 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 05042 05043 b->yy_buf_size = size; 05044 05045 /* yy_ch_buf has to be 2 characters longer than the size given because 05046 * we need to put in 2 end-of-buffer characters. 05047 */ 05048 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); 05049 05050 if ( ! b->yy_ch_buf ) 05051 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 05052 05053 yy_init_buffer( b, file ); 05054 05055 return b; 05056 } 05057 05058 05059 void vtkVRMLYaccData::yy_delete_buffer( YY_BUFFER_STATE b ) 05060 { 05061 if ( b == yy_current_buffer ) 05062 yy_current_buffer = (YY_BUFFER_STATE) 0; 05063 05064 yy_flex_free( (void *) b->yy_ch_buf ); 05065 yy_flex_free( (void *) b ); 05066 } 05067 05068 05069 void vtkVRMLYaccData::yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) 05070 { 05071 b->yy_input_file = file; 05072 05073 /* We put in the '\n' and start reading from [1] so that an 05074 * initial match-at-newline will be true. 05075 */ 05076 05077 b->yy_ch_buf[0] = '\n'; 05078 b->yy_n_chars = 1; 05079 05080 /* We always need two end-of-buffer characters. The first causes 05081 * a transition to the end-of-buffer state. The second causes 05082 * a jam in that state. 05083 */ 05084 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; 05085 b->yy_ch_buf[2] = YY_END_OF_BUFFER_CHAR; 05086 05087 b->yy_buf_pos = &b->yy_ch_buf[1]; 05088 05089 b->yy_is_interactive = file ? isatty( fileno(file) ) : 0; 05090 05091 b->yy_fill_buffer = 1; 05092 05093 b->yy_buffer_status = yy_buffer_state::YY_BUFFER_NEW; 05094 } 05095 05096 05097 void vtkVRMLYaccData::yy_fatal_error( const char msg[] ) 05098 { 05099 (void) fprintf( stderr, "%s\n", msg ); 05100 exit( 1 ); 05101 } 05102 05103 05104 05105 /* Redefine yyless() so it works in section 3 code. */ 05106 05107 #undef yyless 05108 #define yyless(n) \ 05109 do \ 05110 { \ 05111 /* Undo effects of setting up yytext. */ \ 05112 yytext[yyleng] = yy_hold_char; \ 05113 yy_c_buf_p = yytext + n - YY_MORE_ADJ; \ 05114 yy_hold_char = *yy_c_buf_p; \ 05115 *yy_c_buf_p = '\0'; \ 05116 yyleng = n; \ 05117 } \ 05118 while ( 0 ) 05119 05120 05121 /* Internal utility routines. */ 05122 05123 #ifndef yytext_ptr 05124 #ifdef YY_USE_PROTOS 05125 static void yy_flex_strncpy( char *s1, const char *s2, int n ) 05126 #else 05127 static void yy_flex_strncpy( s1, s2, n ) 05128 char *s1; 05129 const char *s2; 05130 int n; 05131 #endif 05132 { 05133 int i; 05134 for ( i = 0; i < n; ++i ) 05135 s1[i] = s2[i]; 05136 } 05137 #endif 05138 05139 05140 void *vtkVRMLYaccData::yy_flex_alloc( unsigned int size ) 05141 { 05142 return (void *) malloc( size ); 05143 } 05144 05145 void *vtkVRMLYaccData::yy_flex_realloc( void *ptr, unsigned int size ) 05146 { 05147 return (void *) realloc( ptr, size ); 05148 } 05149 05150 void vtkVRMLYaccData::yy_flex_free( void *ptr ) 05151 { 05152 free( ptr ); 05153 } 05154 // End of Auto-generated Lexer Code 05155 05156 05157 // Used by the lex input to get characters. Needed to read in memory structure 05158 05159 void vtkVRMLYaccData::memyyInput(char *buf, int &result, int max_size, 05160 vtkVRMLYaccData* self) { 05161 05162 result = static_cast<int>( 05163 strlen(strncpy(buf, standardNodes[self->memyyInput_i], max_size))); 05164 self->memyyInput_j = result - static_cast<int>( 05165 strlen(standardNodes[self->memyyInput_i])); 05166 if ( self->memyyInput_j == 0 ) 05167 { 05168 self->memyyInput_i++; 05169 } 05170 } 05171 05172 // Needed to reset the lex input routine to default. 05173 void vtkVRMLYaccData::defyyInput(char *buf, int &result, int max_size, 05174 vtkVRMLYaccData* self) { 05175 if ( self->yy_current_buffer->yy_is_interactive ) 05176 { 05177 int c = getc( self->yyin ); 05178 result = c == EOF ? 0 : 1; 05179 buf[0] = (char) c; 05180 } 05181 else if( ((result = static_cast<int>(fread( buf, 1, max_size, self->yyin ))) == 0) 05182 && ferror( self->yyin ) ) 05183 { 05184 self->yy_fatal_error( "input in flex scanner failed" ); 05185 } 05186 } 05187 05188 05189 #endif 05190 // VTK-HeaderTest-Exclude: vtkVRMLImporter_Yacc.h