diff --git a/Geo/Geo.cpp b/Geo/Geo.cpp index 8a0cb7fc24d00b4209f45c153ffed49b6f42ef52..2fbb78c353282bbd6de23252cfaeba59761f3cc3 100644 --- a/Geo/Geo.cpp +++ b/Geo/Geo.cpp @@ -1,4 +1,4 @@ -/* $Id: Geo.cpp,v 1.9 2000-12-09 22:26:12 geuzaine Exp $ */ +/* $Id: Geo.cpp,v 1.10 2000-12-11 16:23:11 geuzaine Exp $ */ #include "Gmsh.h" #include "Const.h" @@ -54,7 +54,7 @@ double evaluate_scalarfunction (char *var, double val, char *funct){ return 0.0; } free(TheSymbol.Name); - return TheSymbol.val; + return *(double*)List_Pointer_Fast(TheSymbol.val,0); } void add_infile(char *text, char *fich){ diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index c987f0355d882d1be0e9717857a30046a7483c59..04c78ee52f554f59d97bf1c7dedf4d73f2b7c01e 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -1,172 +1,173 @@ /* A Bison parser, made from Gmsh.y - by GNU Bison version 1.28 */ + by GNU Bison version 1.25 + */ #define YYBISON 1 /* Identify Bison output. */ -#define tDOUBLE 257 -#define tSTRING 258 -#define tBIGSTR 259 -#define tEND 260 -#define tAFFECT 261 -#define tDOTS 262 -#define tPi 263 -#define tExp 264 -#define tLog 265 -#define tLog10 266 -#define tSqrt 267 -#define tSin 268 -#define tAsin 269 -#define tCos 270 -#define tAcos 271 -#define tTan 272 -#define tRand 273 -#define tAtan 274 -#define tAtan2 275 -#define tSinh 276 -#define tCosh 277 -#define tTanh 278 -#define tFabs 279 -#define tFloor 280 -#define tCeil 281 -#define tFmod 282 -#define tModulo 283 -#define tHypot 284 -#define tPrintf 285 -#define tSprintf 286 -#define tDraw 287 -#define tPoint 288 -#define tCircle 289 -#define tEllipsis 290 -#define tLine 291 -#define tSurface 292 -#define tSpline 293 -#define tVolume 294 -#define tCharacteristic 295 -#define tLength 296 -#define tParametric 297 -#define tElliptic 298 -#define tPlane 299 -#define tRuled 300 -#define tTransfinite 301 -#define tComplex 302 -#define tPhysical 303 -#define tUsing 304 -#define tBump 305 -#define tProgression 306 -#define tRotate 307 -#define tTranslate 308 -#define tSymmetry 309 -#define tDilate 310 -#define tExtrude 311 -#define tDuplicata 312 -#define tLoop 313 -#define tRecombine 314 -#define tDelete 315 -#define tCoherence 316 -#define tView 317 -#define tAttractor 318 -#define tLayers 319 -#define tScalarTetrahedron 320 -#define tVectorTetrahedron 321 -#define tTensorTetrahedron 322 -#define tScalarTriangle 323 -#define tVectorTriangle 324 -#define tTensorTriangle 325 -#define tScalarLine 326 -#define tVectorLine 327 -#define tTensorLine 328 -#define tScalarPoint 329 -#define tVectorPoint 330 -#define tTensorPoint 331 -#define tBSpline 332 -#define tNurbs 333 -#define tOrder 334 -#define tWith 335 -#define tBounds 336 -#define tKnots 337 -#define tColor 338 -#define tFor 339 -#define tIn 340 -#define tEndFor 341 -#define tIf 342 -#define tEndIf 343 -#define tExit 344 -#define tMerge 345 -#define tReturn 346 -#define tCall 347 -#define tFunction 348 -#define tB_SPLINE_SURFACE_WITH_KNOTS 349 -#define tB_SPLINE_CURVE_WITH_KNOTS 350 -#define tCARTESIAN_POINT 351 -#define tTRUE 352 -#define tFALSE 353 -#define tUNSPECIFIED 354 -#define tU 355 -#define tV 356 -#define tEDGE_CURVE 357 -#define tVERTEX_POINT 358 -#define tORIENTED_EDGE 359 -#define tPLANE 360 -#define tFACE_OUTER_BOUND 361 -#define tEDGE_LOOP 362 -#define tADVANCED_FACE 363 -#define tVECTOR 364 -#define tDIRECTION 365 -#define tAXIS2_PLACEMENT_3D 366 -#define tISO 367 -#define tENDISO 368 -#define tENDSEC 369 -#define tDATA 370 -#define tHEADER 371 -#define tFILE_DESCRIPTION 372 -#define tFILE_SCHEMA 373 -#define tFILE_NAME 374 -#define tMANIFOLD_SOLID_BREP 375 -#define tCLOSED_SHELL 376 -#define tADVANCED_BREP_SHAPE_REPRESENTATION 377 -#define tFACE_BOUND 378 -#define tCYLINDRICAL_SURFACE 379 -#define tCONICAL_SURFACE 380 -#define tCIRCLE 381 -#define tTRIMMED_CURVE 382 -#define tGEOMETRIC_SET 383 -#define tCOMPOSITE_CURVE_SEGMENT 384 -#define tCONTINUOUS 385 -#define tCOMPOSITE_CURVE 386 -#define tTOROIDAL_SURFACE 387 -#define tPRODUCT_DEFINITION 388 -#define tPRODUCT_DEFINITION_SHAPE 389 -#define tSHAPE_DEFINITION_REPRESENTATION 390 -#define tELLIPSE 391 -#define tTrimmed 392 -#define tSolid 393 -#define tEndSolid 394 -#define tVertex 395 -#define tFacet 396 -#define tNormal 397 -#define tOuter 398 -#define tLoopSTL 399 -#define tEndLoop 400 -#define tEndFacet 401 -#define tAND 402 -#define tOR 403 -#define tNOTEQUAL 404 -#define tEQUAL 405 -#define tAPPROXEQUAL 406 -#define tAFFECTPLUS 407 -#define tAFFECTMINUS 408 -#define tAFFECTTIMES 409 -#define tAFFECTDIVIDE 410 -#define tLESSOREQUAL 411 -#define tGREATEROREQUAL 412 -#define tCROSSPRODUCT 413 -#define UNARYPREC 414 +#define tDOUBLE 258 +#define tSTRING 259 +#define tBIGSTR 260 +#define tEND 261 +#define tAFFECT 262 +#define tDOTS 263 +#define tPi 264 +#define tExp 265 +#define tLog 266 +#define tLog10 267 +#define tSqrt 268 +#define tSin 269 +#define tAsin 270 +#define tCos 271 +#define tAcos 272 +#define tTan 273 +#define tRand 274 +#define tAtan 275 +#define tAtan2 276 +#define tSinh 277 +#define tCosh 278 +#define tTanh 279 +#define tFabs 280 +#define tFloor 281 +#define tCeil 282 +#define tFmod 283 +#define tModulo 284 +#define tHypot 285 +#define tPrintf 286 +#define tSprintf 287 +#define tDraw 288 +#define tPoint 289 +#define tCircle 290 +#define tEllipsis 291 +#define tLine 292 +#define tSurface 293 +#define tSpline 294 +#define tVolume 295 +#define tCharacteristic 296 +#define tLength 297 +#define tParametric 298 +#define tElliptic 299 +#define tPlane 300 +#define tRuled 301 +#define tTransfinite 302 +#define tComplex 303 +#define tPhysical 304 +#define tUsing 305 +#define tBump 306 +#define tProgression 307 +#define tRotate 308 +#define tTranslate 309 +#define tSymmetry 310 +#define tDilate 311 +#define tExtrude 312 +#define tDuplicata 313 +#define tLoop 314 +#define tRecombine 315 +#define tDelete 316 +#define tCoherence 317 +#define tView 318 +#define tAttractor 319 +#define tLayers 320 +#define tScalarTetrahedron 321 +#define tVectorTetrahedron 322 +#define tTensorTetrahedron 323 +#define tScalarTriangle 324 +#define tVectorTriangle 325 +#define tTensorTriangle 326 +#define tScalarLine 327 +#define tVectorLine 328 +#define tTensorLine 329 +#define tScalarPoint 330 +#define tVectorPoint 331 +#define tTensorPoint 332 +#define tBSpline 333 +#define tNurbs 334 +#define tOrder 335 +#define tWith 336 +#define tBounds 337 +#define tKnots 338 +#define tColor 339 +#define tFor 340 +#define tIn 341 +#define tEndFor 342 +#define tIf 343 +#define tEndIf 344 +#define tExit 345 +#define tMerge 346 +#define tReturn 347 +#define tCall 348 +#define tFunction 349 +#define tB_SPLINE_SURFACE_WITH_KNOTS 350 +#define tB_SPLINE_CURVE_WITH_KNOTS 351 +#define tCARTESIAN_POINT 352 +#define tTRUE 353 +#define tFALSE 354 +#define tUNSPECIFIED 355 +#define tU 356 +#define tV 357 +#define tEDGE_CURVE 358 +#define tVERTEX_POINT 359 +#define tORIENTED_EDGE 360 +#define tPLANE 361 +#define tFACE_OUTER_BOUND 362 +#define tEDGE_LOOP 363 +#define tADVANCED_FACE 364 +#define tVECTOR 365 +#define tDIRECTION 366 +#define tAXIS2_PLACEMENT_3D 367 +#define tISO 368 +#define tENDISO 369 +#define tENDSEC 370 +#define tDATA 371 +#define tHEADER 372 +#define tFILE_DESCRIPTION 373 +#define tFILE_SCHEMA 374 +#define tFILE_NAME 375 +#define tMANIFOLD_SOLID_BREP 376 +#define tCLOSED_SHELL 377 +#define tADVANCED_BREP_SHAPE_REPRESENTATION 378 +#define tFACE_BOUND 379 +#define tCYLINDRICAL_SURFACE 380 +#define tCONICAL_SURFACE 381 +#define tCIRCLE 382 +#define tTRIMMED_CURVE 383 +#define tGEOMETRIC_SET 384 +#define tCOMPOSITE_CURVE_SEGMENT 385 +#define tCONTINUOUS 386 +#define tCOMPOSITE_CURVE 387 +#define tTOROIDAL_SURFACE 388 +#define tPRODUCT_DEFINITION 389 +#define tPRODUCT_DEFINITION_SHAPE 390 +#define tSHAPE_DEFINITION_REPRESENTATION 391 +#define tELLIPSE 392 +#define tTrimmed 393 +#define tSolid 394 +#define tEndSolid 395 +#define tVertex 396 +#define tFacet 397 +#define tNormal 398 +#define tOuter 399 +#define tLoopSTL 400 +#define tEndLoop 401 +#define tEndFacet 402 +#define tAFFECTPLUS 403 +#define tAFFECTMINUS 404 +#define tAFFECTTIMES 405 +#define tAFFECTDIVIDE 406 +#define tOR 407 +#define tAND 408 +#define tEQUAL 409 +#define tNOTEQUAL 410 +#define tAPPROXEQUAL 411 +#define tLESSOREQUAL 412 +#define tGREATEROREQUAL 413 +#define tCROSSPRODUCT 414 #define tPLUSPLUS 415 #define tMINUSMINUS 416 +#define UNARYPREC 417 #line 1 "Gmsh.y" - /* $Id: Gmsh.tab.cpp,v 1.43 2000-12-11 00:14:04 geuzaine Exp $ */ + /* $Id: Gmsh.tab.cpp,v 1.44 2000-12-11 16:23:14 geuzaine Exp $ */ #include <stdarg.h> @@ -191,12 +192,12 @@ #include <alloca.h> #endif -int Force_ViewNumber = 0 ; -List_T *Symbol_L; +int Force_ViewNumber = 0 ; +List_T *Symbol_L; -extern Mesh *THEM; +extern Mesh *THEM; extern Post_View *ActualView; -extern char ThePathForIncludes[NAME_STR_L]; +extern char ThePathForIncludes[NAME_STR_L]; static FILE *yyinTab[MAX_OPEN_FILES]; static int yylinenoTab[MAX_OPEN_FILES]; @@ -210,7 +211,7 @@ static Surface *STL_Surf; static Shape TheShape; static int i,j,k,flag,RecursionLevel=0,ImbricatedLoop = 0; static int Last_NumberOfPoints = 0; -static double d; +static double d, *pd; static ExtrudeParams extr; static List_T *ListOfDouble_L,*ListOfDouble2_L; static List_T *ListOfListOfDouble_L, *ListOfColor_L=NULL; @@ -248,26 +249,26 @@ typedef union { -#define YYFINAL 1529 +#define YYFINAL 1567 #define YYFLAG -32768 #define YYNTBASE 181 -#define YYTRANSLATE(x) ((unsigned)(x) <= 416 ? yytranslate[x] : 259) +#define YYTRANSLATE(x) ((unsigned)(x) <= 417 ? yytranslate[x] : 259) static const short yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 169, 2, 2, 2, 166, 2, 2, 173, - 175, 164, 162, 174, 163, 178, 165, 2, 2, 2, + 2, 2, 168, 2, 2, 2, 166, 2, 2, 173, + 174, 164, 162, 178, 163, 177, 165, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 158, - 2, 159, 148, 2, 2, 2, 2, 2, 2, 2, + 2, 160, 152, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 179, 2, 180, 170, 2, 2, 2, 2, 2, 2, + 175, 2, 176, 172, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 176, 2, 177, 2, 2, 2, 2, 2, + 2, 2, 179, 2, 180, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -280,23 +281,23 @@ static const short yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 1, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 160, 161, 167, 168, 171, 172 + 2, 2, 2, 2, 2, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 153, 154, 155, 156, + 157, 159, 161, 167, 169, 170, 171 }; #if YYDEBUG != 0 @@ -314,27 +315,28 @@ static const short yyprhs[] = { 0, 686, 687, 707, 709, 713, 714, 734, 736, 740, 741, 767, 769, 773, 774, 800, 802, 806, 807, 833, 835, 839, 840, 872, 874, 878, 879, 911, 913, 917, 918, - 950, 955, 959, 963, 968, 973, 978, 983, 990, 1002, - 1009, 1021, 1028, 1040, 1047, 1059, 1066, 1078, 1085, 1097, - 1103, 1115, 1121, 1133, 1140, 1152, 1159, 1171, 1178, 1190, - 1199, 1211, 1219, 1228, 1241, 1248, 1254, 1262, 1270, 1283, - 1291, 1301, 1319, 1327, 1336, 1345, 1353, 1365, 1371, 1380, - 1390, 1399, 1422, 1443, 1452, 1461, 1467, 1476, 1484, 1493, - 1499, 1511, 1517, 1527, 1529, 1531, 1533, 1534, 1537, 1542, - 1547, 1551, 1555, 1558, 1561, 1568, 1577, 1586, 1597, 1599, - 1601, 1605, 1608, 1613, 1615, 1624, 1637, 1646, 1659, 1668, - 1681, 1693, 1709, 1711, 1714, 1724, 1727, 1734, 1744, 1754, - 1763, 1772, 1781, 1788, 1793, 1796, 1798, 1800, 1802, 1804, - 1806, 1808, 1812, 1815, 1818, 1821, 1825, 1829, 1833, 1837, - 1841, 1845, 1849, 1853, 1857, 1861, 1865, 1869, 1873, 1877, - 1883, 1888, 1893, 1898, 1903, 1908, 1913, 1918, 1923, 1928, - 1933, 1940, 1945, 1950, 1955, 1960, 1965, 1970, 1977, 1984, - 1991, 1996, 1998, 2000, 2002, 2006, 2015, 2020, 2030, 2035, - 2045, 2049, 2055, 2057, 2060, 2063, 2067, 2071, 2083, 2093, - 2101, 2109, 2113, 2122, 2123, 2127, 2129, 2133, 2134, 2138, - 2142, 2144, 2148, 2149, 2151, 2155, 2157, 2159, 2163, 2167, - 2177, 2185, 2191, 2193, 2199, 2203, 2212, 2214, 2218, 2220, - 2225 + 950, 955, 963, 967, 974, 978, 985, 990, 998, 1003, + 1011, 1016, 1024, 1029, 1037, 1044, 1056, 1063, 1075, 1082, + 1094, 1101, 1113, 1120, 1132, 1139, 1151, 1157, 1169, 1175, + 1187, 1194, 1206, 1213, 1225, 1232, 1244, 1253, 1265, 1273, + 1282, 1295, 1302, 1308, 1316, 1324, 1337, 1345, 1355, 1373, + 1381, 1390, 1399, 1407, 1419, 1425, 1434, 1444, 1453, 1476, + 1497, 1506, 1515, 1521, 1530, 1538, 1547, 1553, 1565, 1571, + 1581, 1583, 1585, 1587, 1588, 1591, 1596, 1601, 1605, 1609, + 1612, 1615, 1622, 1631, 1640, 1651, 1653, 1655, 1659, 1662, + 1667, 1669, 1678, 1691, 1700, 1713, 1722, 1735, 1747, 1763, + 1765, 1768, 1778, 1781, 1788, 1798, 1808, 1817, 1826, 1835, + 1842, 1847, 1850, 1852, 1854, 1856, 1858, 1860, 1862, 1866, + 1869, 1872, 1875, 1879, 1883, 1887, 1891, 1895, 1899, 1903, + 1907, 1911, 1915, 1919, 1923, 1927, 1931, 1937, 1942, 1947, + 1952, 1957, 1962, 1967, 1972, 1977, 1982, 1987, 1994, 1999, + 2004, 2009, 2014, 2019, 2024, 2031, 2038, 2045, 2050, 2052, + 2054, 2056, 2061, 2064, 2070, 2073, 2079, 2083, 2092, 2097, + 2107, 2112, 2122, 2126, 2132, 2134, 2137, 2140, 2144, 2148, + 2160, 2170, 2178, 2186, 2190, 2199, 2200, 2204, 2206, 2210, + 2211, 2215, 2219, 2221, 2225, 2226, 2228, 2232, 2236, 2238, + 2240, 2244, 2248, 2252, 2258, 2268, 2276, 2282, 2284, 2290, + 2294, 2303, 2305, 2309, 2311, 2316 }; static const short yyrhs[] = { 183, @@ -344,264 +346,274 @@ static const short yyrhs[] = { 183, 0, 0, 183, 184, 0, 185, 0, 187, 0, 186, 0, 1, 6, 0, 113, 6, 0, 114, 6, 0, 116, 6, 0, 115, 6, 0, 117, 6, 0, 118, - 173, 249, 174, 5, 175, 6, 0, 119, 173, 249, - 175, 6, 0, 120, 173, 5, 174, 5, 174, 249, - 174, 249, 174, 5, 174, 5, 174, 5, 175, 6, - 0, 3, 7, 97, 173, 5, 174, 247, 175, 6, - 0, 3, 7, 96, 173, 5, 174, 244, 174, 253, - 174, 243, 174, 243, 174, 243, 174, 253, 174, 253, - 174, 243, 175, 6, 0, 3, 7, 95, 173, 5, - 174, 244, 174, 244, 174, 251, 174, 243, 174, 243, - 174, 243, 174, 243, 174, 253, 174, 253, 174, 253, - 174, 253, 174, 243, 175, 6, 0, 3, 7, 103, - 173, 5, 174, 3, 174, 3, 174, 3, 174, 243, - 175, 6, 0, 3, 7, 107, 173, 5, 174, 3, - 174, 243, 175, 6, 0, 3, 7, 124, 173, 5, - 174, 3, 174, 243, 175, 6, 0, 3, 7, 105, - 173, 5, 174, 164, 174, 164, 174, 244, 174, 243, - 175, 6, 0, 3, 7, 108, 173, 5, 174, 253, - 175, 6, 0, 3, 7, 109, 173, 5, 174, 253, - 174, 3, 174, 243, 175, 6, 0, 3, 7, 104, - 173, 5, 174, 3, 175, 6, 0, 3, 7, 110, - 173, 5, 174, 3, 174, 244, 175, 6, 0, 3, - 7, 112, 173, 5, 174, 3, 174, 3, 174, 3, - 175, 6, 0, 3, 7, 111, 173, 5, 174, 247, - 175, 6, 0, 3, 7, 106, 173, 5, 174, 3, - 175, 6, 0, 3, 7, 37, 173, 5, 174, 3, - 174, 3, 175, 6, 0, 3, 7, 122, 173, 5, - 174, 253, 175, 6, 0, 3, 7, 123, 173, 5, - 174, 253, 174, 3, 175, 6, 0, 3, 7, 121, - 173, 5, 174, 3, 175, 6, 0, 3, 7, 125, - 173, 5, 174, 3, 174, 244, 175, 6, 0, 3, - 7, 126, 173, 5, 174, 3, 174, 244, 174, 244, - 175, 6, 0, 3, 7, 133, 173, 5, 174, 3, - 174, 244, 174, 244, 175, 6, 0, 3, 7, 127, - 173, 5, 174, 3, 174, 244, 175, 6, 0, 3, - 7, 137, 173, 5, 174, 3, 174, 244, 174, 244, - 175, 6, 0, 3, 7, 128, 173, 5, 174, 3, - 174, 253, 174, 253, 174, 243, 174, 243, 175, 6, - 0, 3, 7, 129, 173, 5, 174, 253, 175, 6, - 0, 3, 7, 130, 173, 131, 174, 243, 174, 3, - 175, 6, 0, 3, 7, 132, 173, 5, 174, 253, - 174, 243, 175, 6, 0, 3, 7, 134, 173, 5, - 174, 5, 174, 3, 174, 3, 175, 6, 0, 3, - 7, 135, 173, 5, 174, 5, 174, 3, 175, 6, - 0, 3, 7, 136, 173, 3, 174, 3, 175, 6, + 173, 249, 178, 5, 174, 6, 0, 119, 173, 249, + 174, 6, 0, 120, 173, 5, 178, 5, 178, 249, + 178, 249, 178, 5, 178, 5, 178, 5, 174, 6, + 0, 3, 7, 97, 173, 5, 178, 247, 174, 6, + 0, 3, 7, 96, 173, 5, 178, 244, 178, 253, + 178, 243, 178, 243, 178, 243, 178, 253, 178, 253, + 178, 243, 174, 6, 0, 3, 7, 95, 173, 5, + 178, 244, 178, 244, 178, 251, 178, 243, 178, 243, + 178, 243, 178, 243, 178, 253, 178, 253, 178, 253, + 178, 253, 178, 243, 174, 6, 0, 3, 7, 103, + 173, 5, 178, 3, 178, 3, 178, 3, 178, 243, + 174, 6, 0, 3, 7, 107, 173, 5, 178, 3, + 178, 243, 174, 6, 0, 3, 7, 124, 173, 5, + 178, 3, 178, 243, 174, 6, 0, 3, 7, 105, + 173, 5, 178, 164, 178, 164, 178, 244, 178, 243, + 174, 6, 0, 3, 7, 108, 173, 5, 178, 253, + 174, 6, 0, 3, 7, 109, 173, 5, 178, 253, + 178, 3, 178, 243, 174, 6, 0, 3, 7, 104, + 173, 5, 178, 3, 174, 6, 0, 3, 7, 110, + 173, 5, 178, 3, 178, 244, 174, 6, 0, 3, + 7, 112, 173, 5, 178, 3, 178, 3, 178, 3, + 174, 6, 0, 3, 7, 111, 173, 5, 178, 247, + 174, 6, 0, 3, 7, 106, 173, 5, 178, 3, + 174, 6, 0, 3, 7, 37, 173, 5, 178, 3, + 178, 3, 174, 6, 0, 3, 7, 122, 173, 5, + 178, 253, 174, 6, 0, 3, 7, 123, 173, 5, + 178, 253, 178, 3, 174, 6, 0, 3, 7, 121, + 173, 5, 178, 3, 174, 6, 0, 3, 7, 125, + 173, 5, 178, 3, 178, 244, 174, 6, 0, 3, + 7, 126, 173, 5, 178, 3, 178, 244, 178, 244, + 174, 6, 0, 3, 7, 133, 173, 5, 178, 3, + 178, 244, 178, 244, 174, 6, 0, 3, 7, 127, + 173, 5, 178, 3, 178, 244, 174, 6, 0, 3, + 7, 137, 173, 5, 178, 3, 178, 244, 178, 244, + 174, 6, 0, 3, 7, 128, 173, 5, 178, 3, + 178, 253, 178, 253, 178, 243, 178, 243, 174, 6, + 0, 3, 7, 129, 173, 5, 178, 253, 174, 6, + 0, 3, 7, 130, 173, 131, 178, 243, 178, 3, + 174, 6, 0, 3, 7, 132, 173, 5, 178, 253, + 178, 243, 174, 6, 0, 3, 7, 134, 173, 5, + 178, 5, 178, 3, 178, 3, 174, 6, 0, 3, + 7, 135, 173, 5, 178, 5, 178, 3, 174, 6, + 0, 3, 7, 136, 173, 3, 178, 3, 174, 6, 0, 0, 188, 189, 0, 191, 0, 190, 0, 229, 0, 230, 0, 231, 0, 234, 0, 235, 0, 238, 0, 241, 0, 242, 0, 237, 0, 236, 0, 1, - 6, 0, 31, 173, 5, 175, 6, 0, 31, 173, - 5, 174, 244, 175, 6, 0, 63, 5, 176, 192, - 177, 6, 0, 63, 5, 4, 247, 176, 192, 177, + 6, 0, 31, 173, 5, 174, 6, 0, 31, 173, + 5, 178, 244, 174, 6, 0, 63, 5, 179, 192, + 180, 6, 0, 63, 5, 4, 247, 179, 192, 180, 6, 0, 0, 192, 194, 0, 192, 197, 0, 192, 200, 0, 192, 203, 0, 192, 206, 0, 192, 209, 0, 192, 212, 0, 192, 215, 0, 192, 218, 0, 192, 221, 0, 192, 224, 0, 192, 227, 0, 244, - 0, 193, 174, 244, 0, 0, 75, 173, 244, 174, - 244, 174, 244, 175, 195, 176, 193, 177, 6, 0, - 244, 0, 196, 174, 244, 0, 0, 76, 173, 244, - 174, 244, 174, 244, 175, 198, 176, 196, 177, 6, - 0, 244, 0, 199, 174, 244, 0, 0, 77, 173, - 244, 174, 244, 174, 244, 175, 201, 176, 199, 177, - 6, 0, 244, 0, 202, 174, 244, 0, 0, 72, - 173, 244, 174, 244, 174, 244, 174, 244, 174, 244, - 174, 244, 175, 204, 176, 202, 177, 6, 0, 244, - 0, 205, 174, 244, 0, 0, 73, 173, 244, 174, - 244, 174, 244, 174, 244, 174, 244, 174, 244, 175, - 207, 176, 205, 177, 6, 0, 244, 0, 208, 174, - 244, 0, 0, 74, 173, 244, 174, 244, 174, 244, - 174, 244, 174, 244, 174, 244, 175, 210, 176, 208, - 177, 6, 0, 244, 0, 211, 174, 244, 0, 0, - 69, 173, 244, 174, 244, 174, 244, 174, 244, 174, - 244, 174, 244, 174, 244, 174, 244, 174, 244, 175, - 213, 176, 211, 177, 6, 0, 244, 0, 214, 174, - 244, 0, 0, 70, 173, 244, 174, 244, 174, 244, - 174, 244, 174, 244, 174, 244, 174, 244, 174, 244, - 174, 244, 175, 216, 176, 214, 177, 6, 0, 244, - 0, 217, 174, 244, 0, 0, 71, 173, 244, 174, - 244, 174, 244, 174, 244, 174, 244, 174, 244, 174, - 244, 174, 244, 174, 244, 175, 219, 176, 217, 177, - 6, 0, 244, 0, 220, 174, 244, 0, 0, 66, - 173, 244, 174, 244, 174, 244, 174, 244, 174, 244, - 174, 244, 174, 244, 174, 244, 174, 244, 174, 244, - 174, 244, 174, 244, 175, 222, 176, 220, 177, 6, - 0, 244, 0, 223, 174, 244, 0, 0, 67, 173, - 244, 174, 244, 174, 244, 174, 244, 174, 244, 174, - 244, 174, 244, 174, 244, 174, 244, 174, 244, 174, - 244, 174, 244, 175, 225, 176, 223, 177, 6, 0, - 244, 0, 226, 174, 244, 0, 0, 68, 173, 244, - 174, 244, 174, 244, 174, 244, 174, 244, 174, 244, - 174, 244, 174, 244, 174, 244, 174, 244, 174, 244, - 174, 244, 175, 228, 176, 226, 177, 6, 0, 4, - 7, 244, 6, 0, 4, 171, 6, 0, 4, 172, - 6, 0, 4, 154, 244, 6, 0, 4, 155, 244, - 6, 0, 4, 156, 244, 6, 0, 4, 157, 244, - 6, 0, 4, 178, 4, 7, 5, 6, 0, 4, - 178, 63, 179, 244, 180, 178, 4, 7, 5, 6, - 0, 4, 178, 4, 7, 244, 6, 0, 4, 178, - 63, 179, 244, 180, 178, 4, 7, 244, 6, 0, - 4, 178, 4, 154, 244, 6, 0, 4, 178, 63, - 179, 244, 180, 178, 4, 154, 244, 6, 0, 4, - 178, 4, 155, 244, 6, 0, 4, 178, 63, 179, - 244, 180, 178, 4, 155, 244, 6, 0, 4, 178, - 4, 156, 244, 6, 0, 4, 178, 63, 179, 244, - 180, 178, 4, 156, 244, 6, 0, 4, 178, 4, - 157, 244, 6, 0, 4, 178, 63, 179, 244, 180, - 178, 4, 157, 244, 6, 0, 4, 178, 4, 171, - 6, 0, 4, 178, 63, 179, 244, 180, 178, 4, - 171, 244, 6, 0, 4, 178, 4, 172, 6, 0, - 4, 178, 63, 179, 244, 180, 178, 4, 172, 244, - 6, 0, 4, 178, 4, 7, 247, 6, 0, 4, - 178, 63, 179, 244, 180, 178, 4, 7, 247, 6, - 0, 4, 178, 4, 154, 247, 6, 0, 4, 178, - 63, 179, 244, 180, 178, 4, 154, 247, 6, 0, - 4, 178, 4, 155, 247, 6, 0, 4, 178, 63, - 179, 244, 180, 178, 4, 155, 247, 6, 0, 4, - 178, 84, 178, 4, 7, 255, 6, 0, 4, 178, - 63, 179, 244, 180, 178, 84, 7, 256, 6, 0, - 34, 173, 244, 175, 7, 247, 6, 0, 49, 34, - 173, 244, 175, 7, 253, 6, 0, 64, 34, 253, - 7, 176, 244, 174, 244, 174, 244, 177, 6, 0, - 41, 42, 253, 7, 244, 6, 0, 34, 176, 244, - 177, 6, 0, 37, 173, 244, 175, 7, 253, 6, - 0, 39, 173, 244, 175, 7, 253, 6, 0, 64, - 37, 253, 7, 176, 244, 174, 244, 174, 244, 177, - 6, 0, 35, 173, 244, 175, 7, 253, 6, 0, - 35, 173, 244, 175, 7, 253, 45, 247, 6, 0, - 43, 173, 244, 175, 7, 176, 244, 174, 244, 174, - 5, 174, 5, 174, 5, 177, 6, 0, 36, 173, - 244, 175, 7, 253, 6, 0, 49, 37, 173, 244, - 175, 7, 253, 6, 0, 37, 59, 173, 244, 175, - 7, 253, 6, 0, 78, 173, 244, 175, 7, 253, - 6, 0, 79, 173, 244, 175, 7, 253, 83, 253, - 80, 244, 6, 0, 37, 176, 244, 177, 6, 0, - 45, 38, 173, 244, 175, 7, 253, 6, 0, 138, - 38, 173, 244, 175, 7, 244, 253, 6, 0, 46, - 38, 173, 244, 175, 7, 253, 6, 0, 79, 38, - 81, 82, 173, 244, 175, 7, 251, 83, 176, 253, - 174, 253, 177, 80, 176, 244, 174, 244, 177, 6, - 0, 79, 38, 173, 244, 175, 7, 251, 83, 176, - 253, 174, 253, 177, 80, 176, 244, 174, 244, 177, - 6, 0, 49, 38, 173, 244, 175, 7, 253, 6, - 0, 38, 59, 173, 244, 175, 7, 253, 6, 0, - 38, 176, 244, 177, 6, 0, 48, 40, 173, 244, - 175, 7, 253, 6, 0, 40, 173, 244, 175, 7, - 253, 6, 0, 49, 40, 173, 244, 175, 7, 253, - 6, 0, 54, 247, 176, 232, 177, 0, 53, 176, - 247, 174, 247, 174, 244, 177, 176, 232, 177, 0, - 55, 247, 176, 232, 177, 0, 56, 176, 247, 174, - 244, 177, 176, 232, 177, 0, 234, 0, 233, 0, - 231, 0, 0, 233, 230, 0, 58, 176, 233, 177, - 0, 61, 176, 233, 177, 0, 4, 258, 6, 0, - 4, 244, 6, 0, 90, 6, 0, 33, 6, 0, - 85, 173, 244, 8, 244, 175, 0, 85, 173, 244, - 8, 244, 8, 244, 175, 0, 85, 4, 86, 176, - 244, 8, 244, 177, 0, 85, 4, 86, 176, 244, - 8, 244, 8, 244, 177, 0, 87, 0, 92, 0, - 93, 4, 6, 0, 94, 4, 0, 88, 173, 244, - 175, 0, 89, 0, 57, 34, 176, 244, 174, 247, - 177, 6, 0, 57, 34, 176, 244, 174, 247, 174, - 247, 174, 244, 177, 6, 0, 57, 37, 176, 244, - 174, 247, 177, 6, 0, 57, 37, 176, 244, 174, - 247, 174, 247, 174, 244, 177, 6, 0, 57, 38, - 176, 244, 174, 247, 177, 6, 0, 57, 38, 176, - 244, 174, 247, 174, 247, 174, 244, 177, 6, 0, - 57, 38, 176, 244, 174, 247, 177, 176, 239, 177, - 6, 0, 57, 38, 176, 244, 174, 247, 174, 247, - 174, 244, 177, 176, 239, 177, 6, 0, 240, 0, - 239, 240, 0, 65, 176, 253, 174, 253, 174, 253, - 177, 6, 0, 60, 6, 0, 47, 37, 253, 7, - 244, 6, 0, 47, 37, 253, 7, 244, 50, 52, - 244, 6, 0, 47, 37, 253, 7, 244, 50, 51, - 244, 6, 0, 47, 38, 176, 244, 177, 7, 253, - 6, 0, 44, 38, 176, 244, 177, 7, 253, 6, - 0, 47, 40, 176, 244, 177, 7, 253, 6, 0, - 60, 38, 253, 7, 244, 6, 0, 60, 38, 253, - 6, 0, 62, 6, 0, 98, 0, 99, 0, 100, - 0, 101, 0, 102, 0, 245, 0, 173, 244, 175, - 0, 163, 244, 0, 162, 244, 0, 169, 244, 0, - 244, 163, 244, 0, 244, 162, 244, 0, 244, 164, - 244, 0, 244, 165, 244, 0, 244, 166, 244, 0, - 244, 170, 244, 0, 244, 158, 244, 0, 244, 159, - 244, 0, 244, 160, 244, 0, 244, 161, 244, 0, - 244, 152, 244, 0, 244, 151, 244, 0, 244, 149, - 244, 0, 244, 150, 244, 0, 244, 148, 244, 8, - 244, 0, 10, 173, 244, 175, 0, 11, 173, 244, - 175, 0, 12, 173, 244, 175, 0, 13, 173, 244, - 175, 0, 14, 173, 244, 175, 0, 15, 173, 244, - 175, 0, 16, 173, 244, 175, 0, 17, 173, 244, - 175, 0, 18, 173, 244, 175, 0, 20, 173, 244, - 175, 0, 21, 173, 244, 174, 244, 175, 0, 22, - 173, 244, 175, 0, 23, 173, 244, 175, 0, 24, - 173, 244, 175, 0, 25, 173, 244, 175, 0, 26, - 173, 244, 175, 0, 27, 173, 244, 175, 0, 28, - 173, 244, 174, 244, 175, 0, 29, 173, 244, 174, - 244, 175, 0, 30, 173, 244, 174, 244, 175, 0, - 19, 173, 244, 175, 0, 3, 0, 9, 0, 4, - 0, 4, 178, 4, 0, 4, 178, 63, 179, 244, - 180, 178, 4, 0, 4, 178, 4, 171, 0, 4, - 178, 63, 179, 244, 180, 178, 4, 171, 0, 4, - 178, 4, 172, 0, 4, 178, 63, 179, 244, 180, - 178, 4, 172, 0, 244, 8, 244, 0, 244, 8, - 244, 8, 244, 0, 248, 0, 163, 247, 0, 162, - 247, 0, 247, 163, 247, 0, 247, 162, 247, 0, - 176, 244, 174, 244, 174, 244, 174, 244, 174, 244, - 177, 0, 176, 244, 174, 244, 174, 244, 174, 244, - 177, 0, 176, 244, 174, 244, 174, 244, 177, 0, - 173, 244, 174, 244, 174, 244, 175, 0, 4, 178, - 4, 0, 4, 178, 63, 179, 244, 180, 178, 4, - 0, 0, 173, 250, 175, 0, 5, 0, 250, 174, - 5, 0, 0, 176, 252, 177, 0, 173, 252, 175, - 0, 253, 0, 252, 174, 253, 0, 0, 244, 0, - 176, 254, 177, 0, 244, 0, 246, 0, 254, 174, - 244, 0, 254, 174, 246, 0, 176, 244, 174, 244, - 174, 244, 174, 244, 177, 0, 176, 244, 174, 244, - 174, 244, 177, 0, 176, 4, 174, 244, 177, 0, - 4, 0, 4, 178, 84, 178, 4, 0, 176, 257, - 177, 0, 4, 178, 63, 179, 244, 180, 178, 84, - 0, 255, 0, 257, 174, 255, 0, 5, 0, 32, - 173, 5, 175, 0, 32, 173, 5, 174, 244, 175, - 0 + 0, 193, 178, 244, 0, 0, 75, 173, 244, 178, + 244, 178, 244, 174, 195, 179, 193, 180, 6, 0, + 244, 0, 196, 178, 244, 0, 0, 76, 173, 244, + 178, 244, 178, 244, 174, 198, 179, 196, 180, 6, + 0, 244, 0, 199, 178, 244, 0, 0, 77, 173, + 244, 178, 244, 178, 244, 174, 201, 179, 199, 180, + 6, 0, 244, 0, 202, 178, 244, 0, 0, 72, + 173, 244, 178, 244, 178, 244, 178, 244, 178, 244, + 178, 244, 174, 204, 179, 202, 180, 6, 0, 244, + 0, 205, 178, 244, 0, 0, 73, 173, 244, 178, + 244, 178, 244, 178, 244, 178, 244, 178, 244, 174, + 207, 179, 205, 180, 6, 0, 244, 0, 208, 178, + 244, 0, 0, 74, 173, 244, 178, 244, 178, 244, + 178, 244, 178, 244, 178, 244, 174, 210, 179, 208, + 180, 6, 0, 244, 0, 211, 178, 244, 0, 0, + 69, 173, 244, 178, 244, 178, 244, 178, 244, 178, + 244, 178, 244, 178, 244, 178, 244, 178, 244, 174, + 213, 179, 211, 180, 6, 0, 244, 0, 214, 178, + 244, 0, 0, 70, 173, 244, 178, 244, 178, 244, + 178, 244, 178, 244, 178, 244, 178, 244, 178, 244, + 178, 244, 174, 216, 179, 214, 180, 6, 0, 244, + 0, 217, 178, 244, 0, 0, 71, 173, 244, 178, + 244, 178, 244, 178, 244, 178, 244, 178, 244, 178, + 244, 178, 244, 178, 244, 174, 219, 179, 217, 180, + 6, 0, 244, 0, 220, 178, 244, 0, 0, 66, + 173, 244, 178, 244, 178, 244, 178, 244, 178, 244, + 178, 244, 178, 244, 178, 244, 178, 244, 178, 244, + 178, 244, 178, 244, 174, 222, 179, 220, 180, 6, + 0, 244, 0, 223, 178, 244, 0, 0, 67, 173, + 244, 178, 244, 178, 244, 178, 244, 178, 244, 178, + 244, 178, 244, 178, 244, 178, 244, 178, 244, 178, + 244, 178, 244, 174, 225, 179, 223, 180, 6, 0, + 244, 0, 226, 178, 244, 0, 0, 68, 173, 244, + 178, 244, 178, 244, 178, 244, 178, 244, 178, 244, + 178, 244, 178, 244, 178, 244, 178, 244, 178, 244, + 178, 244, 174, 228, 179, 226, 180, 6, 0, 4, + 7, 244, 6, 0, 4, 175, 244, 176, 7, 244, + 6, 0, 4, 169, 6, 0, 4, 175, 244, 176, + 169, 6, 0, 4, 170, 6, 0, 4, 175, 244, + 176, 170, 6, 0, 4, 148, 244, 6, 0, 4, + 175, 244, 176, 148, 244, 6, 0, 4, 149, 244, + 6, 0, 4, 175, 244, 176, 149, 244, 6, 0, + 4, 150, 244, 6, 0, 4, 175, 244, 176, 150, + 244, 6, 0, 4, 151, 244, 6, 0, 4, 175, + 244, 176, 151, 244, 6, 0, 4, 177, 4, 7, + 5, 6, 0, 4, 177, 63, 175, 244, 176, 177, + 4, 7, 5, 6, 0, 4, 177, 4, 7, 244, + 6, 0, 4, 177, 63, 175, 244, 176, 177, 4, + 7, 244, 6, 0, 4, 177, 4, 148, 244, 6, + 0, 4, 177, 63, 175, 244, 176, 177, 4, 148, + 244, 6, 0, 4, 177, 4, 149, 244, 6, 0, + 4, 177, 63, 175, 244, 176, 177, 4, 149, 244, + 6, 0, 4, 177, 4, 150, 244, 6, 0, 4, + 177, 63, 175, 244, 176, 177, 4, 150, 244, 6, + 0, 4, 177, 4, 151, 244, 6, 0, 4, 177, + 63, 175, 244, 176, 177, 4, 151, 244, 6, 0, + 4, 177, 4, 169, 6, 0, 4, 177, 63, 175, + 244, 176, 177, 4, 169, 244, 6, 0, 4, 177, + 4, 170, 6, 0, 4, 177, 63, 175, 244, 176, + 177, 4, 170, 244, 6, 0, 4, 177, 4, 7, + 247, 6, 0, 4, 177, 63, 175, 244, 176, 177, + 4, 7, 247, 6, 0, 4, 177, 4, 148, 247, + 6, 0, 4, 177, 63, 175, 244, 176, 177, 4, + 148, 247, 6, 0, 4, 177, 4, 149, 247, 6, + 0, 4, 177, 63, 175, 244, 176, 177, 4, 149, + 247, 6, 0, 4, 177, 84, 177, 4, 7, 255, + 6, 0, 4, 177, 63, 175, 244, 176, 177, 84, + 7, 256, 6, 0, 34, 173, 244, 174, 7, 247, + 6, 0, 49, 34, 173, 244, 174, 7, 253, 6, + 0, 64, 34, 253, 7, 179, 244, 178, 244, 178, + 244, 180, 6, 0, 41, 42, 253, 7, 244, 6, + 0, 34, 179, 244, 180, 6, 0, 37, 173, 244, + 174, 7, 253, 6, 0, 39, 173, 244, 174, 7, + 253, 6, 0, 64, 37, 253, 7, 179, 244, 178, + 244, 178, 244, 180, 6, 0, 35, 173, 244, 174, + 7, 253, 6, 0, 35, 173, 244, 174, 7, 253, + 45, 247, 6, 0, 43, 173, 244, 174, 7, 179, + 244, 178, 244, 178, 5, 178, 5, 178, 5, 180, + 6, 0, 36, 173, 244, 174, 7, 253, 6, 0, + 49, 37, 173, 244, 174, 7, 253, 6, 0, 37, + 59, 173, 244, 174, 7, 253, 6, 0, 78, 173, + 244, 174, 7, 253, 6, 0, 79, 173, 244, 174, + 7, 253, 83, 253, 80, 244, 6, 0, 37, 179, + 244, 180, 6, 0, 45, 38, 173, 244, 174, 7, + 253, 6, 0, 138, 38, 173, 244, 174, 7, 244, + 253, 6, 0, 46, 38, 173, 244, 174, 7, 253, + 6, 0, 79, 38, 81, 82, 173, 244, 174, 7, + 251, 83, 179, 253, 178, 253, 180, 80, 179, 244, + 178, 244, 180, 6, 0, 79, 38, 173, 244, 174, + 7, 251, 83, 179, 253, 178, 253, 180, 80, 179, + 244, 178, 244, 180, 6, 0, 49, 38, 173, 244, + 174, 7, 253, 6, 0, 38, 59, 173, 244, 174, + 7, 253, 6, 0, 38, 179, 244, 180, 6, 0, + 48, 40, 173, 244, 174, 7, 253, 6, 0, 40, + 173, 244, 174, 7, 253, 6, 0, 49, 40, 173, + 244, 174, 7, 253, 6, 0, 54, 247, 179, 232, + 180, 0, 53, 179, 247, 178, 247, 178, 244, 180, + 179, 232, 180, 0, 55, 247, 179, 232, 180, 0, + 56, 179, 247, 178, 244, 180, 179, 232, 180, 0, + 234, 0, 233, 0, 231, 0, 0, 233, 230, 0, + 58, 179, 233, 180, 0, 61, 179, 233, 180, 0, + 4, 258, 6, 0, 4, 244, 6, 0, 90, 6, + 0, 33, 6, 0, 85, 173, 244, 8, 244, 174, + 0, 85, 173, 244, 8, 244, 8, 244, 174, 0, + 85, 4, 86, 179, 244, 8, 244, 180, 0, 85, + 4, 86, 179, 244, 8, 244, 8, 244, 180, 0, + 87, 0, 92, 0, 93, 4, 6, 0, 94, 4, + 0, 88, 173, 244, 174, 0, 89, 0, 57, 34, + 179, 244, 178, 247, 180, 6, 0, 57, 34, 179, + 244, 178, 247, 178, 247, 178, 244, 180, 6, 0, + 57, 37, 179, 244, 178, 247, 180, 6, 0, 57, + 37, 179, 244, 178, 247, 178, 247, 178, 244, 180, + 6, 0, 57, 38, 179, 244, 178, 247, 180, 6, + 0, 57, 38, 179, 244, 178, 247, 178, 247, 178, + 244, 180, 6, 0, 57, 38, 179, 244, 178, 247, + 180, 179, 239, 180, 6, 0, 57, 38, 179, 244, + 178, 247, 178, 247, 178, 244, 180, 179, 239, 180, + 6, 0, 240, 0, 239, 240, 0, 65, 179, 253, + 178, 253, 178, 253, 180, 6, 0, 60, 6, 0, + 47, 37, 253, 7, 244, 6, 0, 47, 37, 253, + 7, 244, 50, 52, 244, 6, 0, 47, 37, 253, + 7, 244, 50, 51, 244, 6, 0, 47, 38, 179, + 244, 180, 7, 253, 6, 0, 44, 38, 179, 244, + 180, 7, 253, 6, 0, 47, 40, 179, 244, 180, + 7, 253, 6, 0, 60, 38, 253, 7, 244, 6, + 0, 60, 38, 253, 6, 0, 62, 6, 0, 98, + 0, 99, 0, 100, 0, 101, 0, 102, 0, 245, + 0, 173, 244, 174, 0, 163, 244, 0, 162, 244, + 0, 168, 244, 0, 244, 163, 244, 0, 244, 162, + 244, 0, 244, 164, 244, 0, 244, 165, 244, 0, + 244, 166, 244, 0, 244, 172, 244, 0, 244, 158, + 244, 0, 244, 160, 244, 0, 244, 159, 244, 0, + 244, 161, 244, 0, 244, 155, 244, 0, 244, 156, + 244, 0, 244, 154, 244, 0, 244, 153, 244, 0, + 244, 152, 244, 8, 244, 0, 10, 173, 244, 174, + 0, 11, 173, 244, 174, 0, 12, 173, 244, 174, + 0, 13, 173, 244, 174, 0, 14, 173, 244, 174, + 0, 15, 173, 244, 174, 0, 16, 173, 244, 174, + 0, 17, 173, 244, 174, 0, 18, 173, 244, 174, + 0, 20, 173, 244, 174, 0, 21, 173, 244, 178, + 244, 174, 0, 22, 173, 244, 174, 0, 23, 173, + 244, 174, 0, 24, 173, 244, 174, 0, 25, 173, + 244, 174, 0, 26, 173, 244, 174, 0, 27, 173, + 244, 174, 0, 28, 173, 244, 178, 244, 174, 0, + 29, 173, 244, 178, 244, 174, 0, 30, 173, 244, + 178, 244, 174, 0, 19, 173, 244, 174, 0, 3, + 0, 9, 0, 4, 0, 4, 175, 244, 176, 0, + 4, 169, 0, 4, 175, 244, 176, 169, 0, 4, + 170, 0, 4, 175, 244, 176, 170, 0, 4, 177, + 4, 0, 4, 177, 63, 175, 244, 176, 177, 4, + 0, 4, 177, 4, 169, 0, 4, 177, 63, 175, + 244, 176, 177, 4, 169, 0, 4, 177, 4, 170, + 0, 4, 177, 63, 175, 244, 176, 177, 4, 170, + 0, 244, 8, 244, 0, 244, 8, 244, 8, 244, + 0, 248, 0, 163, 247, 0, 162, 247, 0, 247, + 163, 247, 0, 247, 162, 247, 0, 179, 244, 178, + 244, 178, 244, 178, 244, 178, 244, 180, 0, 179, + 244, 178, 244, 178, 244, 178, 244, 180, 0, 179, + 244, 178, 244, 178, 244, 180, 0, 173, 244, 178, + 244, 178, 244, 174, 0, 4, 177, 4, 0, 4, + 177, 63, 175, 244, 176, 177, 4, 0, 0, 173, + 250, 174, 0, 5, 0, 250, 178, 5, 0, 0, + 179, 252, 180, 0, 173, 252, 174, 0, 253, 0, + 252, 178, 253, 0, 0, 244, 0, 4, 175, 176, + 0, 179, 254, 180, 0, 244, 0, 246, 0, 4, + 175, 176, 0, 254, 178, 244, 0, 254, 178, 246, + 0, 254, 178, 4, 175, 176, 0, 179, 244, 178, + 244, 178, 244, 178, 244, 180, 0, 179, 244, 178, + 244, 178, 244, 180, 0, 179, 4, 178, 244, 180, + 0, 4, 0, 4, 177, 84, 177, 4, 0, 179, + 257, 180, 0, 4, 177, 63, 175, 244, 176, 177, + 84, 0, 255, 0, 257, 178, 255, 0, 5, 0, + 32, 173, 5, 174, 0, 32, 173, 5, 178, 244, + 174, 0 }; #endif #if YYDEBUG != 0 static const short yyrline[] = { 0, - 145, 147, 148, 155, 163, 177, 189, 191, 194, 196, - 197, 198, 201, 207, 212, 213, 214, 217, 221, 224, - 230, 235, 241, 249, 254, 258, 264, 269, 273, 278, - 282, 285, 290, 294, 298, 302, 307, 311, 314, 318, - 322, 326, 330, 334, 338, 341, 345, 348, 352, 355, - 364, 368, 374, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 387, 388, 391, 396, 406, 411, 417, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 436, 439, 443, 449, 455, 458, 462, 468, - 474, 477, 481, 487, 493, 496, 500, 508, 514, 517, - 521, 529, 535, 538, 542, 550, 556, 559, 563, 575, - 581, 584, 588, 600, 606, 609, 613, 625, 631, 634, - 638, 651, 657, 660, 664, 677, 683, 686, 690, 703, - 715, 725, 733, 741, 749, 757, 765, 776, 789, 807, - 824, 845, 862, 883, 900, 921, 938, 959, 976, 997, - 1014, 1035, 1052, 1075, 1100, 1129, 1154, 1183, 1208, 1239, - 1252, 1277, 1288, 1294, 1313, 1324, 1332, 1338, 1344, 1363, - 1369, 1385, 1392, 1398, 1404, 1410, 1416, 1435, 1447, 1453, - 1472, 1493, 1501, 1507, 1513, 1519, 1531, 1537, 1543, 1555, - 1561, 1566, 1571, 1578, 1580, 1581, 1584, 1589, 1600, 1618, - 1633, 1705, 1725, 1729, 1748, 1764, 1778, 1800, 1822, 1847, - 1852, 1857, 1864, 1868, 1878, 1884, 1890, 1894, 1898, 1902, - 1906, 1911, 1918, 1922, 1927, 1945, 1955, 1973, 1990, 2007, - 2028, 2048, 2068, 2085, 2109, 2122, 2124, 2125, 2126, 2127, - 2130, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, - 2141, 2142, 2143, 2144, 2145, 2146, 2147, 2148, 2149, 2150, - 2151, 2152, 2153, 2154, 2155, 2156, 2157, 2158, 2159, 2160, - 2161, 2162, 2163, 2164, 2165, 2166, 2167, 2168, 2169, 2170, - 2171, 2174, 2176, 2177, 2186, 2207, 2231, 2252, 2276, 2297, - 2322, 2329, 2342, 2349, 2353, 2357, 2361, 2366, 2371, 2375, - 2379, 2383, 2415, 2452, 2456, 2461, 2465, 2470, 2474, 2478, - 2484, 2490, 2496, 2500, 2506, 2513, 2519, 2528, 2532, 2542, - 2547, 2551, 2556, 2561, 2580, 2585, 2606, 2615, 2621, 2626, - 2630 + 143, 145, 146, 153, 161, 175, 187, 189, 192, 194, + 195, 196, 199, 205, 210, 211, 212, 215, 219, 222, + 228, 233, 239, 247, 252, 256, 262, 267, 271, 276, + 280, 283, 288, 292, 296, 300, 305, 309, 312, 316, + 320, 324, 328, 332, 336, 339, 343, 346, 350, 353, + 362, 366, 372, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 385, 386, 389, 394, 404, 409, 415, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, 431, 434, 437, 441, 447, 453, 456, 460, 466, + 472, 475, 479, 485, 491, 494, 498, 506, 512, 515, + 519, 527, 533, 536, 540, 548, 554, 557, 561, 573, + 579, 582, 586, 598, 604, 607, 611, 623, 629, 632, + 636, 649, 655, 658, 662, 675, 681, 684, 688, 701, + 713, 729, 741, 750, 762, 770, 782, 790, 802, 810, + 822, 830, 842, 854, 873, 886, 904, 921, 942, 959, + 980, 997, 1018, 1035, 1056, 1077, 1103, 1120, 1141, 1158, + 1181, 1206, 1235, 1260, 1289, 1314, 1345, 1358, 1383, 1394, + 1400, 1419, 1430, 1438, 1444, 1450, 1469, 1475, 1491, 1498, + 1504, 1510, 1516, 1522, 1541, 1553, 1559, 1578, 1599, 1607, + 1613, 1619, 1625, 1637, 1643, 1649, 1661, 1667, 1672, 1677, + 1684, 1686, 1687, 1690, 1695, 1706, 1724, 1739, 1811, 1831, + 1835, 1854, 1870, 1884, 1909, 1934, 1960, 1965, 1970, 1977, + 1981, 1991, 1997, 2003, 2007, 2011, 2015, 2019, 2024, 2031, + 2035, 2040, 2058, 2068, 2086, 2103, 2120, 2141, 2161, 2181, + 2198, 2222, 2235, 2237, 2238, 2239, 2240, 2243, 2245, 2246, + 2247, 2248, 2249, 2250, 2251, 2252, 2259, 2260, 2261, 2262, + 2263, 2264, 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, + 2273, 2274, 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, + 2283, 2284, 2285, 2286, 2287, 2288, 2289, 2290, 2295, 2300, + 2304, 2316, 2334, 2346, 2364, 2376, 2396, 2417, 2441, 2462, + 2486, 2507, 2532, 2539, 2552, 2559, 2563, 2567, 2571, 2576, + 2581, 2585, 2589, 2593, 2625, 2662, 2666, 2671, 2675, 2680, + 2684, 2688, 2694, 2700, 2706, 2710, 2716, 2731, 2738, 2744, + 2753, 2765, 2769, 2777, 2790, 2795, 2799, 2804, 2809, 2828, + 2833, 2854, 2863, 2869, 2874, 2878 }; #endif @@ -630,11 +642,11 @@ static const char * const yytname[] = { "$","error","$undefined.","tDOUBLE", "tGEOMETRIC_SET","tCOMPOSITE_CURVE_SEGMENT","tCONTINUOUS","tCOMPOSITE_CURVE", "tTOROIDAL_SURFACE","tPRODUCT_DEFINITION","tPRODUCT_DEFINITION_SHAPE","tSHAPE_DEFINITION_REPRESENTATION", "tELLIPSE","tTrimmed","tSolid","tEndSolid","tVertex","tFacet","tNormal","tOuter", -"tLoopSTL","tEndLoop","tEndFacet","'?'","tAND","tOR","tNOTEQUAL","tEQUAL","tAPPROXEQUAL", -"tAFFECTPLUS","tAFFECTMINUS","tAFFECTTIMES","tAFFECTDIVIDE","'<'","'>'","tLESSOREQUAL", -"tGREATEROREQUAL","'+'","'-'","'*'","'/'","'%'","tCROSSPRODUCT","UNARYPREC", -"'!'","'^'","tPLUSPLUS","tMINUSMINUS","'('","','","')'","'{'","'}'","'.'","'['", -"']'","All","STLFormatItem","StepFormatItems","StepFormatItem","StepSpecial", +"tLoopSTL","tEndLoop","tEndFacet","tAFFECTPLUS","tAFFECTMINUS","tAFFECTTIMES", +"tAFFECTDIVIDE","'?'","tOR","tAND","tEQUAL","tNOTEQUAL","tAPPROXEQUAL","'<'", +"tLESSOREQUAL","'>'","tGREATEROREQUAL","'+'","'-'","'*'","'/'","'%'","tCROSSPRODUCT", +"'!'","tPLUSPLUS","tMINUSMINUS","UNARYPREC","'^'","'('","')'","'['","']'","'.'", +"','","'{'","'}'","All","STLFormatItem","StepFormatItems","StepFormatItem","StepSpecial", "StepHeaderItem","StepDataItem","GeomFormatList","GeomFormat","Printf","View", "Views","ScalarPointValues","ScalarPoint","@1","VectorPointValues","VectorPoint", "@2","TensorPointValues","TensorPoint","@3","ScalarLineValues","ScalarLine", @@ -668,24 +680,25 @@ static const short yyr1[] = { 0, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 229, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 229, 229, 229, 229, 229, 229, 229, 229, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, - 231, 231, 231, 232, 232, 232, 233, 233, 234, 235, - 236, 236, 236, 236, 237, 237, 237, 237, 237, 237, - 237, 237, 237, 237, 238, 238, 238, 238, 238, 238, - 238, 238, 239, 239, 240, 240, 241, 241, 241, 241, - 241, 241, 241, 241, 242, 243, 243, 243, 243, 243, - 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, + 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, + 230, 230, 230, 230, 230, 230, 231, 231, 231, 231, + 232, 232, 232, 233, 233, 234, 235, 236, 236, 236, + 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, + 237, 238, 238, 238, 238, 238, 238, 238, 238, 239, + 239, 240, 240, 241, 241, 241, 241, 241, 241, 241, + 241, 242, 243, 243, 243, 243, 243, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, - 244, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 246, 246, 247, 247, 247, 247, 247, 248, 248, 248, - 248, 248, 248, 249, 249, 250, 250, 251, 251, 251, - 252, 252, 253, 253, 253, 254, 254, 254, 254, 255, - 255, 255, 255, 255, 256, 256, 257, 257, 258, 258, - 258 + 244, 244, 244, 244, 244, 244, 244, 244, 245, 245, + 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, + 245, 245, 246, 246, 247, 247, 247, 247, 247, 248, + 248, 248, 248, 248, 248, 249, 249, 250, 250, 251, + 251, 251, 252, 252, 253, 253, 253, 253, 254, 254, + 254, 254, 254, 254, 255, 255, 255, 255, 255, 256, + 256, 257, 257, 258, 258, 258 }; static const short yyr2[] = { 0, @@ -702,27 +715,28 @@ static const short yyr2[] = { 0, 0, 19, 1, 3, 0, 19, 1, 3, 0, 25, 1, 3, 0, 25, 1, 3, 0, 25, 1, 3, 0, 31, 1, 3, 0, 31, 1, 3, 0, 31, - 4, 3, 3, 4, 4, 4, 4, 6, 11, 6, - 11, 6, 11, 6, 11, 6, 11, 6, 11, 5, - 11, 5, 11, 6, 11, 6, 11, 6, 11, 8, - 11, 7, 8, 12, 6, 5, 7, 7, 12, 7, - 9, 17, 7, 8, 8, 7, 11, 5, 8, 9, - 8, 22, 20, 8, 8, 5, 8, 7, 8, 5, - 11, 5, 9, 1, 1, 1, 0, 2, 4, 4, - 3, 3, 2, 2, 6, 8, 8, 10, 1, 1, - 3, 2, 4, 1, 8, 12, 8, 12, 8, 12, - 11, 15, 1, 2, 9, 2, 6, 9, 9, 8, - 8, 8, 6, 4, 2, 1, 1, 1, 1, 1, - 1, 3, 2, 2, 2, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 6, 4, 4, 4, 4, 4, 4, 6, 6, 6, - 4, 1, 1, 1, 3, 8, 4, 9, 4, 9, - 3, 5, 1, 2, 2, 3, 3, 11, 9, 7, - 7, 3, 8, 0, 3, 1, 3, 0, 3, 3, - 1, 3, 0, 1, 3, 1, 1, 3, 3, 9, - 7, 5, 1, 5, 3, 8, 1, 3, 1, 4, - 6 + 4, 7, 3, 6, 3, 6, 4, 7, 4, 7, + 4, 7, 4, 7, 6, 11, 6, 11, 6, 11, + 6, 11, 6, 11, 6, 11, 5, 11, 5, 11, + 6, 11, 6, 11, 6, 11, 8, 11, 7, 8, + 12, 6, 5, 7, 7, 12, 7, 9, 17, 7, + 8, 8, 7, 11, 5, 8, 9, 8, 22, 20, + 8, 8, 5, 8, 7, 8, 5, 11, 5, 9, + 1, 1, 1, 0, 2, 4, 4, 3, 3, 2, + 2, 6, 8, 8, 10, 1, 1, 3, 2, 4, + 1, 8, 12, 8, 12, 8, 12, 11, 15, 1, + 2, 9, 2, 6, 9, 9, 8, 8, 8, 6, + 4, 2, 1, 1, 1, 1, 1, 1, 3, 2, + 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 5, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, + 4, 4, 4, 4, 6, 6, 6, 4, 1, 1, + 1, 4, 2, 5, 2, 5, 3, 8, 4, 9, + 4, 9, 3, 5, 1, 2, 2, 3, 3, 11, + 9, 7, 7, 3, 8, 0, 3, 1, 3, 0, + 3, 3, 1, 3, 0, 1, 3, 3, 1, 1, + 3, 3, 3, 5, 9, 7, 5, 1, 5, 3, + 8, 1, 3, 1, 4, 6 }; static const short yydefact[] = { 51, @@ -731,1932 +745,1843 @@ static const short yydefact[] = { 51, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 209, 0, 214, 0, 210, 0, + 0, 0, 0, 0, 216, 0, 221, 0, 217, 0, 0, 0, 52, 54, 53, 55, 56, 57, 58, 59, - 64, 63, 60, 61, 62, 282, 284, 283, 0, 0, + 64, 63, 60, 61, 62, 289, 291, 290, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 241, 12, 0, 13, 14, 16, - 15, 17, 304, 304, 0, 65, 329, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, + 0, 0, 0, 0, 248, 12, 0, 13, 14, 16, + 15, 17, 316, 316, 0, 65, 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 313, 0, 0, 0, 0, 313, 0, 0, 0, + 211, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 325, 0, 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 293, 0, 0, 0, 0, 0, 197, 313, 197, - 235, 0, 313, 313, 0, 0, 0, 0, 0, 0, - 203, 0, 212, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 305, 0, 0, 0, 0, 0, 204, 325, + 204, 242, 0, 325, 325, 0, 0, 0, 0, 0, + 0, 210, 0, 219, 0, 293, 295, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 244, 243, 245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 251, 250, 252, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 132, 133, 0, 0, - 0, 202, 0, 0, 201, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 295, 294, 0, 0, 0, 0, - 197, 197, 0, 0, 0, 0, 0, 0, 0, 0, - 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 211, 0, 285, 0, 0, 0, 0, 0, 0, 0, + 133, 135, 0, 0, 0, 0, 209, 0, 0, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 242, 0, 258, 259, 257, - 256, 252, 253, 254, 255, 244, 243, 248, 249, 250, - 251, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 291, 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 307, 306, 0, 0, 0, 0, 204, 204, 0, 0, + 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 218, 0, 0, 297, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 306, 0, 0, 0, 0, 131, 0, 134, - 135, 136, 137, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 247, 246, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 316, 317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 302, 0, 0, 0, 297, 296, - 196, 0, 195, 194, 0, 0, 0, 0, 0, 199, - 198, 234, 0, 200, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 213, 0, 287, 289, 0, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 281, 270, - 0, 272, 273, 274, 275, 276, 277, 0, 0, 0, + 0, 0, 249, 0, 266, 265, 263, 264, 259, 261, + 260, 262, 251, 250, 255, 256, 257, 258, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 318, + 0, 0, 0, 0, 131, 0, 137, 139, 141, 143, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 254, 253, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 291, 329, 330, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 314, 0, 0, 0, 309, 308, + 203, 0, 202, 201, 0, 0, 0, 0, 0, 206, + 205, 241, 0, 207, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 220, 0, 292, 299, 301, 0, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 288, + 277, 0, 279, 280, 281, 282, 283, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 305, 0, 19, 0, 0, 330, 284, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 150, 152, 0, 0, 0, 66, 0, 166, - 313, 313, 0, 313, 178, 0, 186, 313, 313, 0, - 0, 315, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, - 192, 0, 0, 0, 0, 0, 70, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 317, 0, 0, 19, 0, 345, 0, + 0, 0, 0, 0, 0, 0, 0, 291, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 157, 159, 0, 0, 66, 0, 0, 173, 325, 325, + 0, 325, 185, 0, 193, 325, 325, 327, 0, 0, + 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, + 199, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 0, 0, 313, 0, 0, 313, 0, 0, - 0, 0, 0, 0, 0, 0, 260, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 313, 313, 0, - 0, 0, 0, 313, 313, 0, 0, 0, 0, 0, - 313, 0, 313, 0, 0, 0, 0, 0, 307, 0, - 304, 0, 0, 138, 0, 140, 154, 142, 156, 144, - 158, 146, 148, 0, 0, 0, 0, 0, 0, 313, - 0, 313, 0, 0, 291, 318, 319, 165, 0, 313, - 313, 313, 227, 0, 313, 313, 313, 313, 313, 313, - 313, 0, 0, 0, 0, 0, 0, 0, 0, 233, + 81, 82, 0, 0, 325, 0, 0, 325, 0, 0, + 0, 294, 296, 0, 0, 0, 0, 0, 267, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 325, + 325, 0, 0, 0, 0, 325, 325, 0, 0, 0, + 0, 0, 325, 0, 325, 0, 0, 0, 0, 0, + 319, 0, 316, 0, 0, 0, 0, 0, 0, 134, + 136, 0, 145, 0, 147, 161, 149, 163, 151, 165, + 153, 155, 0, 0, 0, 0, 0, 0, 325, 0, + 325, 0, 0, 331, 303, 291, 332, 333, 172, 0, + 325, 325, 325, 234, 0, 325, 325, 325, 325, 325, + 325, 325, 0, 0, 0, 0, 0, 0, 0, 0, + 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 0, 0, 0, 0, 320, + 0, 0, 0, 212, 0, 0, 278, 285, 286, 287, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 68, 0, 0, 0, 0, 308, 0, - 0, 0, 205, 0, 0, 271, 278, 279, 280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 243, 244, 245, 246, 247, 0, + 0, 0, 0, 0, 0, 0, 18, 0, 346, 132, + 138, 140, 142, 144, 297, 0, 0, 338, 0, 0, + 67, 169, 177, 0, 180, 0, 174, 0, 175, 195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 236, 237, 238, 239, 240, 0, 0, - 0, 0, 0, 0, 0, 18, 0, 331, 285, 0, - 0, 323, 0, 0, 67, 162, 170, 0, 173, 0, - 167, 0, 168, 188, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 176, 0, 313, 313, 0, 313, - 0, 0, 313, 0, 0, 0, 0, 313, 0, 0, + 0, 183, 0, 325, 325, 0, 325, 0, 0, 325, + 0, 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 313, 0, 0, 0, - 0, 0, 0, 0, 0, 304, 0, 0, 0, 0, - 284, 0, 160, 0, 175, 185, 292, 0, 231, 179, - 181, 0, 0, 230, 232, 187, 163, 174, 184, 189, - 0, 0, 301, 0, 300, 0, 0, 215, 0, 217, - 0, 219, 0, 69, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 308, 0, - 311, 0, 0, 0, 0, 207, 206, 0, 286, 0, - 0, 0, 0, 21, 0, 30, 0, 34, 0, 28, - 0, 0, 33, 0, 38, 36, 0, 0, 0, 0, - 0, 0, 45, 0, 0, 0, 0, 0, 50, 0, + 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, + 0, 0, 316, 0, 0, 0, 0, 291, 0, 167, + 0, 182, 192, 304, 334, 0, 238, 186, 188, 0, + 0, 237, 239, 194, 170, 181, 191, 196, 0, 0, + 313, 0, 312, 0, 0, 222, 0, 224, 0, 226, + 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 320, 0, 323, 0, + 0, 0, 0, 214, 213, 0, 298, 0, 0, 0, + 0, 21, 0, 30, 0, 34, 0, 28, 0, 0, + 33, 0, 38, 36, 0, 0, 0, 0, 0, 0, + 45, 0, 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 171, 0, 229, 228, 197, 303, 0, - 193, 0, 0, 0, 0, 0, 0, 223, 0, 0, + 0, 178, 0, 236, 235, 204, 315, 0, 200, 0, + 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 313, 310, 309, 313, 0, 0, 180, - 288, 290, 0, 0, 308, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 313, 0, 0, + 0, 322, 325, 321, 325, 0, 0, 187, 300, 302, + 0, 0, 320, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 299, 0, 0, 0, - 226, 313, 0, 224, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 312, - 0, 0, 208, 0, 35, 0, 0, 0, 0, 25, - 0, 31, 0, 37, 26, 39, 0, 42, 0, 46, - 47, 0, 0, 49, 0, 0, 0, 139, 141, 155, - 143, 157, 145, 159, 147, 149, 151, 153, 0, 327, - 0, 161, 324, 322, 0, 0, 191, 0, 0, 0, - 0, 0, 221, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 313, 313, 177, + 0, 0, 0, 0, 311, 0, 0, 0, 233, 325, + 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 0, 0, + 215, 0, 35, 0, 0, 0, 0, 25, 0, 31, + 0, 37, 26, 39, 0, 42, 0, 46, 47, 0, + 0, 49, 0, 0, 0, 146, 148, 162, 150, 164, + 152, 166, 154, 156, 158, 160, 0, 342, 0, 168, + 339, 337, 0, 0, 198, 0, 0, 0, 0, 0, + 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 325, 325, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 286, 0, 0, 325, 0, 0, 298, - 216, 218, 220, 0, 313, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 85, 89, 93, 164, 169, 0, - 0, 0, 0, 0, 0, 0, 29, 32, 40, 0, - 41, 48, 43, 0, 0, 328, 0, 321, 0, 0, + 0, 298, 0, 0, 340, 0, 0, 310, 223, 225, + 227, 0, 325, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 85, 89, 93, 171, 176, 0, 0, 0, + 0, 0, 0, 0, 29, 32, 40, 0, 41, 48, + 43, 0, 0, 343, 0, 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 313, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 313, 0, 0, 0, + 0, 325, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 24, 27, 0, 0, 0, 320, - 0, 222, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 83, 0, 87, 0, 91, 0, 0, - 0, 0, 313, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 24, 27, 0, 0, 0, 335, 0, 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 44, 20, - 326, 172, 225, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 84, 86, 88, 90, 92, 94, 0, 0, - 0, 0, 313, 0, 0, 0, 0, 0, 0, 97, - 101, 105, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 5, 313, + 0, 83, 0, 87, 0, 91, 0, 0, 0, 0, + 325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 183, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 95, 0, 99, 0, 103, 0, 313, 0, 0, + 0, 0, 0, 0, 0, 0, 44, 20, 341, 179, + 232, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 86, 88, 90, 92, 94, 0, 0, 0, 0, + 325, 0, 0, 0, 0, 0, 0, 97, 101, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 182, 0, 22, 0, 0, 0, 0, 0, 0, - 96, 98, 100, 102, 104, 106, 313, 0, 0, 0, - 109, 113, 117, 0, 0, 0, 0, 0, 0, 0, - 313, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 107, 0, 111, 0, 115, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 5, 325, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 190, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, + 0, 99, 0, 103, 0, 325, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, + 0, 22, 0, 0, 0, 0, 0, 0, 96, 98, + 100, 102, 104, 106, 325, 0, 0, 0, 109, 113, + 117, 0, 0, 0, 0, 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 108, 110, 112, 114, 116, 118, 0, 121, 125, - 129, 23, 0, 0, 0, 0, 0, 0, 0, 119, - 0, 123, 0, 127, 0, 0, 0, 0, 0, 0, - 120, 122, 124, 126, 128, 130, 0, 0, 0 + 107, 0, 111, 0, 115, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 108, + 110, 112, 114, 116, 118, 0, 121, 125, 129, 23, + 0, 0, 0, 0, 0, 0, 0, 119, 0, 123, + 0, 127, 0, 0, 0, 0, 0, 0, 120, 122, + 124, 126, 128, 130, 0, 0, 0 }; -static const short yydefgoto[] = { 1527, +static const short yydefgoto[] = { 1565, 4, 5, 18, 19, 20, 21, 6, 63, 64, 65, - 476, 1303, 621, 1251, 1305, 622, 1252, 1307, 623, 1253, - 1411, 624, 1384, 1413, 625, 1385, 1415, 626, 1386, 1472, - 627, 1458, 1474, 628, 1459, 1476, 629, 1460, 1509, 630, - 1503, 1511, 631, 1504, 1513, 632, 1505, 66, 471, 461, - 462, 463, 464, 70, 71, 72, 73, 1017, 1018, 74, - 75, 789, 289, 105, 439, 305, 162, 258, 404, 859, - 950, 951, 440, 804, 1080, 1151, 128 + 486, 1341, 641, 1289, 1343, 642, 1290, 1345, 643, 1291, + 1449, 644, 1422, 1451, 645, 1423, 1453, 646, 1424, 1510, + 647, 1496, 1512, 648, 1497, 1514, 649, 1498, 1547, 650, + 1541, 1549, 651, 1542, 1551, 652, 1543, 66, 481, 471, + 472, 473, 474, 70, 71, 72, 73, 1055, 1056, 74, + 75, 820, 295, 105, 449, 311, 163, 262, 411, 896, + 988, 989, 450, 840, 1118, 1189, 129 }; -static const short yypact[] = { 412, --32768,-32768, -78,-32768, 420, 2319, 1609, 69, 78, 100, - 112, 129, 135, 142, -2, 52, 79,-32768,-32768,-32768, --32768, 163, 219, 109, 169, 77, 115, 124, -45, -37, - 141, 145, 228, 151, 235, 242, 264, 123, 114, 83, - 153, 96, 96, 186, 394, 194, 349, 250, 427, 432, - -4, 270, -31, 30,-32768, 276,-32768, 483,-32768, 489, - 496, 480,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768, 366,-32768, 383, 384, - 386, 387, 389, 390, 391, 392, 393, 396, 397, 398, - 399, 402, 403, 404, 405, 406, 407, 408, 414, 1609, - 1609, 1609, 1609, 1581,-32768,-32768, 2341,-32768,-32768,-32768, --32768,-32768, 415, 415, 545,-32768,-32768, 1609, 416, 1609, - 1609, 1609, 1609, 561, 585, 8, 640, 595, 597,-32768, - 1609, 1609, 1609, 1609, 430, 1609, 1609, 435, 1609, 1609, - 1609, 1518, 1609, 429, 436, 439, 1518, 431, 437, 441, - 443, 444, 445, 446, 96, 447, 96, 96, 1609, 1609, - -85,-32768, -75, 96, 448, 454, 455,-32768, 1518,-32768, --32768, 1, 1518, 1518, 1609, -64, 1609, 535, 1609, 1609, --32768, 616,-32768, 450, 9, 1609, 1609, 1609, 1609, 1609, - 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, - 1609, 1609, 1609, 1609, 1609, 1609, 458, 458, 458, 3001, - 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, - 1609, 1609, 1609, 1609, 1609, 1581, 459, 460, 461, 462, - 463, 465, 466, 467, 472, 474, 475, 476, 477, 484, - 485, 486, 497, 501, 502, 527, 528, 530, 531, 532, - 533, 534, 540, 541, 543, 546, 651, 547, 548, 550, - 703, 715, 744, 850, 910, 1061,-32768,-32768, 144, 529, - 544,-32768, 1609, 1609,-32768, 148, 3029, 2536, 3057, 3085, - 1609, 3113, 2559, 1609, 2582, 3141, 3169, 1609, 7757, 730, - 3197, 1609, 1609, 1609, 731, 1609, 1609, 1609, 1609, 1609, - 1609, 1609, -19, 11,-32768,-32768, 4849, 4876, 96, 96, - 452, 452, 94, 1609, 1609, 1609, 320, 324, 1330, 96, --32768, 732, 733, 3225, 659, 1609, 3253, 566, 995, 3281, --32768, 1609, 207, 564, 3309, 3337, 3365, 3393, 3421, 3449, - 3477, 3505, 3533, 3561, 3589, 4903, 3617, 3645, 3673, 3701, - 3729, 3757, 4930, 4957, 4984,-32768, 2093, 309, 309, 1179, - 1179, 282, 282, 282, 282, -90, -68, 458, 458, 458, - 458, 5011, 741, 743, 746, 747, 749, 750, 751, 752, - 753, 760, 761, 762, 764, 774, 775, 776, 779, 780, - 781, 788, 789, 790, 792, 618, 802, 804, 806, 807, - 812, 816,-32768, 221, 817, 818, 820,-32768, 229,-32768, --32768,-32768,-32768, 323, 1552, 1552, 1609, 1609, 829, 830, - 1609, 819, 236, 236, 1609, 833, 835, 834, 836, 838, - 3785, 841, 843, 3813, 844, 852, 864, 2117,-32768, -114, - 1609, 865, 2605, 3841, 3869, 1609, 2628, 2651, 3897, 3925, - 3953, 3981, 4009, 96,-32768, 678, 1609, 1609,-32768,-32768, --32768, 697, 1721,-32768, 698, 1609, 5034, 5061, 5088,-32768, --32768,-32768, 1609,-32768, -73, -30, 700, 704, 874, 709, - 4037, 876, 1609, 1609,-32768, 4065,-32768,-32768, 1609,-32768, +static const short yypact[] = { 432, +-32768,-32768, -115,-32768, 44, 2780, 1830, 50, 52, 104, + 135, 144, 159, 164, -73, -52, 34,-32768,-32768,-32768, +-32768, 218, 1572, 59, 264, -87, 82, 105, -37, -39, + 121, 129, 8, 138, 285, 286, 290, 272, 330, 370, + 202, 94, 94, 214, 357, 219, 295, 246, 369, 425, + 249, 261, -30, 2,-32768, 265,-32768, 435,-32768, 451, + 460, 429,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 254,-32768, 302, 327, + 331, 338, 348, 359, 366, 367, 387, 389, 393, 394, + 395, 396, 400, 402, 403, 407, 418, 433, 434, 1830, + 1830, 1830, 1830, 1664,-32768,-32768, 2818,-32768,-32768,-32768, +-32768,-32768, 436, 436, 537,-32768,-32768, 1830, 443, 1830, + 1830, 1830, 1830, 590, 602, 1830, 17, 1029, 606, 538, +-32768, 1830, 1830, 1830, 1830, 444, 1830, 1830, 445, 1830, + 1830, 1830, 778, 1830, 440, 447, 448, 778, 446, 449, + 450, 453, 456, 457, 458, 94, 468, 94, 94, 1830, + 1830, -133,-32768, -100, 94, 469, 471, 472,-32768, 778, +-32768,-32768, -2, 778, 778, 1830, -68, 1830, 536, 1830, + 1830,-32768, 618,-32768, 479,-32768,-32768, 1830, 10, 1830, + 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, + 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, + 481, 481, 481, 5757, 1830, 1830, 1830, 1830, 1830, 1830, + 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1664, + 482, 487, 488, 489, 490, 494, 495, 496, 501, 502, + 525, 529, 530, 531, 554, 555, 556, 557, 558, 559, + 561, 563, 564, 565, 566, 568, 569, 570, 571, 572, + 651, 562, 576, 573, 1117, 747, 1162, 1368, 1552, 1599, +-32768,-32768, 5582, 111, 578, 577,-32768, 1830, 1830,-32768, + -75, 5780, 2862, 5803, 5826, 1830, 5849, 2885, 1830, 2908, + 5872, 5895, 273, 1877, 7275, 748, 5918, 1830, 1830, 1830, + 761, 1830, 1830, 1830, 1830, 1830, 1830, 1830, -96, 13, +-32768,-32768, 3341, 3362, 94, 94, 424, 424, -93, 1830, + 1830, 1830, 2711, 31, 2728, 94,-32768, 762, 763, 5941, + 689, 1830, 5964, 593, 1311, 5987,-32768, 1830, 5607, 236, + 598, 6010, 6033, 6056, 6079, 6102, 6125, 6148, 6171, 6194, + 6217, 6240, 3383, 6263, 6286, 6309, 6332, 6355, 6378, 3404, + 3425, 3446,-32768, 2465, 1278, 423, 439, 439, 155, 155, + 155, 155, -145, -131, 481, 481, 481, 481, 2931, 769, + 772, 774, 775, 780, 781, 804, 805, 806, 807, 808, + 809, 810, 811, 812, 813, 814, 816, 817, 818, 819, + 820, 821, 652, 822, 823, 826, 828, 833, 832,-32768, + -26, 834, 835, 837,-32768, -6,-32768,-32768,-32768,-32768, + 115, 667, 984, 984, 1830, 1830, 841, 842, 1830, 839, + 281, 281, 843, 1830, 831, 846, 847, 848, 6401, 849, + 851, 6424, 854, 855, 859, 326, 282, 2499,-32768, -103, + 1830, 860, 2946, 6447, 6470, 1830, 2969, 2992, 6493, 6516, + 6539, 6562, 6585, 94,-32768, 678, 1830, 1830,-32768,-32768, +-32768, 688, 2841,-32768, 690, 1830, 3467, 3488, 3509,-32768, +-32768,-32768, 1830,-32768, -98, 567, 692, 693, 866, 701, + 6608, 869, 1830, 1830,-32768, 6631, 315,-32768,-32768, 1830, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 1609,-32768,-32768,-32768,-32768,-32768,-32768, 1609, 1609, 1609, - 1609, 740, 712, 713, 717, 723, 724, 725, 726, 737, - 738, 739, 745, 748, 766, 768, 770, 772, 773, 778, - 803, 805, 808, 809, 810, 811, 823, 845, 847, 848, - 849, 853, 884,-32768, 842,-32768, 854, 1609,-32768, 742, - 912, 1552, 1552, 1609, 1128, 2, 1547, 4, 1676, 58, - 1712, 1742,-32768,-32768, 2331, 914, 4093,-32768, 96,-32768, - 1518, 1518, 916, 1518,-32768, 917,-32768, 1518, 1518, 1609, - 1609,-32768, 1773, 828, 918, 919, 920, 503, 947, 971, - 973, 974, 986, 987, 1011, 209, 1609, 5115, 5142,-32768, --32768, 2674, 96, 96, 96, 1797,-32768, 856, 857, 859, - 860, 861, 862, 863, 870, 871, 872, 875, 877, 1020, +-32768, 1830,-32768,-32768,-32768,-32768,-32768,-32768, 1830, 1830, + 1830, 1830, 732, 700, 702, 703, 704, 707, 708, 709, + 710, 711, 712, 713, 714, 715, 716, 718, 720, 721, + 723, 724, 725, 726, 727, 728, 730, 731, 733, 734, + 735, 739, 740,-32768, 874, 736,-32768, 741,-32768, 1830, + 1830, 1830, 1830, 1830, 1830, 914, 916, 293, 917, 984, + 984, 1830, 1855, 4, 1870, 43, 1958, 68, 1973, 1988, +-32768,-32768, 5632, 919,-32768, 6654, 94,-32768, 778, 778, + 921, 778,-32768, 922,-32768, 778, 778,-32768, 1606, 1830, + 1905,-32768, 2031, 745, 923, 924, 925, 894, 926, 927, + 928, 929, 930, 931, 935, -91, 1830, 3530, 3551,-32768, +-32768, 3015, 94, 94, 94, 2046,-32768, 770, 776, 777, + 783, 785, 786, 787, 788, 789, 790, 791, 792, 939, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768, 1609, 1609, 1518, 1609, 1030, 1518, 2143, 612, - 1031, 2354, 4121, 4149, 4177, 4205, 7757, 911, 1048, 1609, - 1609, 96, 1050, 1052, 892, 1060, 1062, 1518, 1518, 1063, - 96, 1074, 1075, 1518, 1518, 1078, 1079, 1080, 1081, 1082, - 1518, 355, 1518, 1083, 1059, 1099, 1084, 1102,-32768, 1104, - 415, 4233, 20,-32768, 2973,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768, 933, 24, 1106, 92, 21, 1107, 1518, - 1108, 1518, 1110, 1111, 2166, 2117,-32768,-32768, 1609, 1518, - 1518, 1518,-32768, 491, 1518, 1518, 1518, 1518, 1518, 1518, - 1518, 1609, 2377, 1609, 1609, 942, -101, -95, -93,-32768, - -18, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, - 1609, 1609, 1609,-32768, 5169, 5196, 1114, 4261, 191, 1038, - 1609, 1609,-32768, 1609, 945,-32768,-32768,-32768,-32768, 1609, - 950, 5223, 5250, -17, 951, 953, 955, 956, 961, 962, - 964, 966, 121, 968, 975, 976, 978, 988, 989, 990, - 992, 993, 994,-32768,-32768,-32768,-32768,-32768, 997, 998, - 999, 1001, 1002, 1006, 1003,-32768, 1008,-32768, 207, 957, - 15, 952, 1639, 1143,-32768,-32768,-32768, 96,-32768, 1184, --32768, 1185,-32768,-32768, 1609, 5277, 1186, 1187, 1188, 1609, - 1609, 1189, 1190, 1191, 1192, 1202, 1208, 1210, 2697, 1039, - 4289, 2446, 452, 96, 1212, 96, 1226, 96, 0, 1227, - 5304, 5331, 5358, 5385, 5412, 5439, 5466, 5493, 5520, 5547, - 5574, 5601, 1609, 1609,-32768, 1228, 1518, 1518, 1151, 1518, - 434, 4317, 668, 1237, 1581, 1239, 1609, 1518, 1238, 1240, - 1249, 1092, 1251, 355, 1253, 1242, 1609, 1254, 1270, 1268, - 1275, 1279, 355, 1609, 1609, 1609, 1518, 1277, 1281, 355, - 1609, 1282, 1292, 1290, 1609, 415, 1609, 149, 1293, 1213, - -143, 5628,-32768, 98,-32768,-32768, 7757, 1609,-32768,-32768, --32768, 1823, 1846,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 1123, 1297,-32768, 1609,-32768, 1125, 231,-32768, 262,-32768, - 267,-32768, 97,-32768, 1609, 1609, 1609, 1609, 1609, 1609, - 1609, 1609, 1609, 1609, 1609, 1609, 5655, 5682, 191, 289, --32768, 203, 1129, 1229, 1609,-32768,-32768, 1300, 377, 1581, - 1132, 5709, 1134,-32768, 1136,-32768, 1137,-32768, 1147,-32768, - 1150, 4345,-32768, 1152,-32768,-32768, 1155, 1157, 4373, 5736, - 4401, 1153,-32768, 1158, 1159, 5763, 1161, 1171,-32768, 5790, - 1173, 2400, 946, 1552, 1552, 1609, 1609, 1609, 1609, 25, - 1170, 1609, 1609,-32768, 5817,-32768,-32768, 452,-32768, 2476, --32768, 1609, 1609, 1609, 1344, 1175, -40,-32768, 5844, 5871, - 5898, 5925, 5952, 5979, 6006, 6033, 6060, 6087, 6114, 6141, - 1609, 1609, 1271, 1518,-32768,-32768, 1518, 1609, 2720,-32768, --32768,-32768, 1088, 1350, 191, 355, 1360, 1609, 1366, 355, - 1368, 1374, 1375, 1376, 1377, 1609, 1378, 1518, 1389, 1390, - 1609, 1394, 1392, 1609, 1395, 1221, 1396, 1873, 101, 1903, - 113, 1934, 116, 1958, 1984, 2007, 2034, 1223, 24, 1397, - 1400, 2743, 6168, 1401, 1230, 1609,-32768, 2766, 2789, 2812, --32768, 1518, 1399,-32768, 1609, 1609, 1609, 1609, 1609, 1609, - 1609, 1609, 1609, 1609, 1609, 1609, 2835, 2858, 1234,-32768, - 1246, 2064,-32768, 1609,-32768, 1248, 1250, 1252, 6195,-32768, - 1236,-32768, 1255,-32768,-32768,-32768, 4429,-32768, 1257,-32768, --32768, 4457, 1258,-32768, 4485, 1260, 1408,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1362,-32768, - 245,-32768,-32768,-32768, 1609, 1261,-32768, 2881, 1421, 1422, - 26, 1262,-32768, 6222, 6249, 6276, 6303, 6330, 6357, 6384, - 6411, 6438, 4513, 4541, 4569, 1423, 1426, 1518, 1518,-32768, - 1581, 355, 355, 355, 355, 1431, 1432, 1433, 355, 1434, - 1438, 1439, 1441, 377, 1269, 24,-32768, 2506, 1442,-32768, --32768,-32768,-32768, 97, 1518, 1609, 1609, 1609, 1609, 1609, - 1609, 1609, 1609, 1609,-32768,-32768,-32768,-32768,-32768, 1276, - 1272, 1581, 1278, 1280, 1286, 1287,-32768,-32768,-32768, 1289, --32768,-32768,-32768, 1291, 1609,-32768, 1609,-32768, 1295, -39, - 1296, 6465, 6492, 6519, 6546, 6573, 6600, 6627, 6654, 6681, - 1288, 1302, 1304, 1518, 1371, 2269, 355, 355, 1447, 1460, - 355, 1462, 2423, 2904, 1466, 1470, 1518, 1609, 1609, 1609, - 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1305, - 1307, 1609, 1310, 1311,-32768,-32768, 1306, 1312, 1308,-32768, - 1313,-32768, 1314, 6708, 6735, 6762, 6789, 6816, 6843, 6870, - 6897, 6924, 261, 7757, 288, 7757, 304, 7757, 1409, 1609, - 1581, 355, 1518, 1482, 1486, 1410, 1487, 1489, 1609, 1609, - 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1490, 1609, - 1491, 1609, 1492, 1327, 6951, 1581, 1332, 1335,-32768,-32768, --32768,-32768,-32768, 6978, 7005, 7032, 7059, 7086, 7113, 4597, - 4625, 4653, 7757,-32768, 7757,-32768, 7757,-32768, 1609, 1609, - 7734, 355, 1518, 1609, 1609, 1609, 1609, 1609, 1609,-32768, --32768,-32768, 7140, 2927, 1357, 1337, 1339, 7167, 7194, 7221, - 7248, 7275, 7302, 1338, 1340, 1341, 1609, 1509,-32768, 1518, - 355, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, 1609, - 2950,-32768, 1345, 1343, 7329, 7356, 7383, 7410, 7437, 7464, - 306, 7757, 310, 7757, 314, 7757, 1514, 1518, 1517, 1609, - 1609, 1609, 1609, 1609, 1609, 1609, 1519, 1609, 1543, 1609, - 1544,-32768, 1380,-32768, 7491, 7518, 7545, 4681, 4709, 4737, - 7757,-32768, 7757,-32768, 7757,-32768, 1518, 1609, 1609, 1609, --32768,-32768,-32768, 1383, 7572, 7599, 7626, 1348, 1382, 1407, - 1518, 1609, 1609, 1609, 1609, 1609, 1609, 1385, 7653, 7680, - 7707, 321, 7757, 337, 7757, 338, 7757, 355, 1609, 1609, - 1609, 1609, 1545, 1609, 1546, 1609, 1580, 1412, 4765, 4793, - 4821, 7757,-32768, 7757,-32768, 7757,-32768, 1582,-32768,-32768, --32768,-32768, 1413, 1440, 1464, 1609, 1609, 1609, 339, 7757, - 343, 7757, 381, 7757, 1609, 1608, 1609, 1611, 1609, 1635, - 7757,-32768, 7757,-32768, 7757,-32768, 1615, 1644,-32768 +-32768,-32768, 1830, 1830, 778, 1830, 940, 778, 2557, 944, + 941,-32768,-32768, 5657, 6677, 6700, 6723, 6746, 7275, 838, + 950, 1830, 1830, 94, 951, 975, 825, 977, 978, 778, + 778, 979, 94, 980, 981, 778, 778, 982, 987, 989, + 1012, 1013, 778, 408, 778, 1014, 1015, 1026, 1016, 1033, +-32768, 1031, 436, 6769, 2068, 2083, 2098, 2149, 2164,-32768, +-32768, 21,-32768, 3314,-32768,-32768,-32768,-32768,-32768,-32768, +-32768,-32768, 861, 0, 1034, 106, 9, 1035, 778, 1036, + 778, 1045, 1055,-32768, 2572, 296, 2499,-32768,-32768, 1830, + 778, 778, 778,-32768, 483, 778, 778, 778, 778, 778, + 778, 778, 1830, 5682, 1830, 1830, 853, -127, -123, -120, +-32768, 1188, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, + 1830, 1830, 1830, 1830,-32768, 3572, 3593, 1058, 6792, -56, + 956, 1830, 1830,-32768, 1830, 888,-32768,-32768,-32768,-32768, + 1830, 840, 3614, 3635, -72, 889, 896, 890, 897, 899, + 898, 900, 904, -18, 905, 901, 910, 907, 908, 911, + 912, 913, 915, 920,-32768,-32768,-32768,-32768,-32768, 933, + 934, 936, 937, 942, 945, 943,-32768, 946,-32768,-32768, +-32768,-32768,-32768,-32768, 236, 938, 22, 948, 1933, 1082, +-32768,-32768,-32768, 94,-32768, 1095,-32768, 1116,-32768,-32768, + 1830, 1634, 3656, 1132, 1134, 1135, 1830, 1830, 1137, 1138, + 1142, 1143, 1144, 1145, 1147, 3038, 983, 6815, 1044, 424, + 94, 1148, 94, 1149, 94, 3, 1150, 3677, 3698, 3719, + 3740, 3761, 3782, 3803, 3824, 3845, 3866, 3887, 3908, 1830, + 1830,-32768, 1151, 778, 778, 1076, 778, 364, 6838, 224, + 1157, 1664, 1159, 1830, 778, 1160, 1164, 1163, 1008, 1167, + 408, 1168, 1172, 1830, 1170, 1175, 1174, 1205, 1211, 408, + 1830, 1830, 1830, 778, 1212, 1214, 408, 1830, 1216, 1217, + 1215, 1830, 436, 1830, 251, 1221, 1139, 196, 3929,-32768, + 114,-32768,-32768, 7275,-32768, 1830,-32768,-32768,-32768, 2207, + 2259,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1050, 1242, +-32768, 1830,-32768, 1067, -74,-32768, -54,-32768, 112,-32768, + 18,-32768, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, + 1830, 1830, 1830, 1830, 3950, 3971, -56, 148,-32768, 154, + 1069, 1169, 1830,-32768,-32768, 1244, 368, 1664, 1077, 3992, + 1074,-32768, 1089,-32768, 1096,-32768, 1110,-32768, 1107, 6861, +-32768, 1108,-32768,-32768, 1113, 1114, 6884, 4013, 6907, 1112, +-32768, 1118, 1119, 4034, 1120, 1121,-32768, 4055, 1133, 5707, + 696, 984, 984, 1830, 1830, 1830, 1830, 1, 1152, 1830, + 1830,-32768, 4076,-32768,-32768, 424,-32768, 2804,-32768, 1830, + 1830, 1830, 1285, 1115, -42,-32768, 4097, 4118, 4139, 4160, + 4181, 4202, 4223, 4244, 4265, 4286, 4307, 4328, 1830, 1830, + 1213,-32768, 778,-32768, 778, 1830, 3061,-32768,-32768,-32768, + 2435, 1291, -56, 408, 1309, 1830, 1324, 408, 1325, 1329, + 1327, 1330, 1331, 1830, 1332, 778, 1333, 1334, 1830, 1340, + 1338, 1830, 1341, 1158, 1339, 2274, 126, 2289, 141, 2325, + 145, 2340, 2368, 2383, 2398, 1171, 0, 1343, 1356, 3084, + 4349, 1342, 1182, 1830,-32768, 3107, 3130, 3153,-32768, 778, + 1358,-32768, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, + 1830, 1830, 1830, 1830, 3176, 3199, 1186,-32768, 1191, 2450, +-32768, 1830,-32768, 1192, 1193, 1194, 4370,-32768, 1199,-32768, + 1201,-32768,-32768,-32768, 6930,-32768, 1198,-32768,-32768, 6953, + 1203,-32768, 6976, 1200, 1362,-32768,-32768,-32768,-32768,-32768, +-32768,-32768,-32768,-32768,-32768,-32768, 1316,-32768, 179,-32768, +-32768,-32768, 1830, 1202,-32768, 3222, 1376, 1377, 25, 1207, +-32768, 4391, 4412, 4433, 4454, 4475, 4496, 4517, 4538, 4559, + 6999, 7022, 7045, 1380, 1381, 778, 778,-32768, 1664, 408, + 408, 408, 408, 1382, 1386, 1387, 408, 1388, 1395, 1396, + 1398, 368, 1229, 0,-32768, 2833, 1400,-32768,-32768,-32768, +-32768, 18, 778, 1830, 1830, 1830, 1830, 1830, 1830, 1830, + 1830, 1830,-32768,-32768,-32768,-32768,-32768, 1228, 1227, 1664, + 1231, 1232, 1237, 1238,-32768,-32768,-32768, 1235,-32768,-32768, +-32768, 1236, 1830,-32768, 1830,-32768, 1239, -41, 1241, 4580, + 4601, 4622, 4643, 4664, 4685, 4706, 4727, 4748, 1243, 1256, + 1266, 778, 1335, 2525, 408, 408, 1410, 1414, 408, 1416, + 5732, 3245, 1441, 1442, 778, 1830, 1830, 1830, 1830, 1830, + 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1267, 1270, 1830, + 1280, 1282,-32768,-32768, 1288, 1294, 1301,-32768, 1302,-32768, + 1304, 4769, 4790, 4811, 4832, 4853, 4874, 4895, 4916, 4937, + 180, 7275, 189, 7275, 231, 7275, 1405, 1830, 1664, 408, + 778, 1480, 1481, 1404, 1483, 1484, 1830, 1830, 1830, 1830, + 1830, 1830, 1830, 1830, 1830, 1830, 1485, 1830, 1486, 1830, + 1493, 1321, 4958, 1664, 1323, 1326,-32768,-32768,-32768,-32768, +-32768, 4979, 5000, 5021, 5042, 5063, 5084, 7068, 7091, 7114, + 7275,-32768, 7275,-32768, 7275,-32768, 1830, 1830, 5105, 408, + 778, 1830, 1830, 1830, 1830, 1830, 1830,-32768,-32768,-32768, + 5120, 3268, 1355, 1328, 1336, 5141, 5162, 5183, 5204, 5225, + 5246, 1337, 1346, 1357, 1830, 1497,-32768, 778, 408, 1830, + 1830, 1830, 1830, 1830, 1830, 1830, 1830, 1830, 3291,-32768, + 1363, 1344, 5267, 5288, 5309, 5330, 5351, 5372, 248, 7275, + 278, 7275, 294, 7275, 1499, 778, 1501, 1830, 1830, 1830, + 1830, 1830, 1830, 1830, 1502, 1830, 1503, 1830, 1513,-32768, + 1364,-32768, 5393, 5414, 5435, 7137, 7160, 7183, 7275,-32768, + 7275,-32768, 7275,-32768, 778, 1830, 1830, 1830,-32768,-32768, +-32768, 1365, 5456, 5477, 5498, 1366, 1370, 1372, 778, 1830, + 1830, 1830, 1830, 1830, 1830, 1369, 5519, 5540, 5561, 303, + 7275, 312, 7275, 317, 7275, 408, 1830, 1830, 1830, 1830, + 1529, 1830, 1538, 1830, 1546, 1379, 7206, 7229, 7252, 7275, +-32768, 7275,-32768, 7275,-32768, 1548,-32768,-32768,-32768,-32768, + 1383, 1384, 1385, 1830, 1830, 1830, 318, 7275, 323, 7275, + 353, 7275, 1830, 1549, 1830, 1550, 1830, 1554, 7275,-32768, + 7275,-32768, 7275,-32768, 1561, 1565,-32768 }; static const short yypgoto[] = {-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, - 1064,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, + 947,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, --32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1664, 1666, - -309, -58, 1668,-32768,-32768,-32768,-32768, 471, -1013,-32768, --32768, -872, -7,-32768, 1095, 107,-32768, -113,-32768, -940, - 787, 468,-32768, -1056,-32768,-32768,-32768 +-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 1560, 1562, + -311, 7, 1563,-32768,-32768,-32768,-32768, 325, -1052,-32768, +-32768, -859, -7,-32768, 969, -10,-32768, -113,-32768, -976, + 676, 484,-32768, -1105,-32768,-32768,-32768 }; -#define YYLAST 7927 +#define YYLAST 7447 static const short yytable[] = { 104, - 259, 969, 465, 1094, 320, 932, 176, 687, 1033, 689, - 978, 269, 333, 135, 455, 127, 325, 985, 898, 1015, - 1015, 138, 1150, 799, 1016, 1016, 807, 802, 1078, 173, - 1002, 1203, 174, 178, 185, 608, 609, 610, 611, 612, - 613, 614, 615, 616, 617, 618, 619, 608, 609, 610, - 611, 612, 613, 614, 615, 616, 617, 618, 619, 581, - 309, 310, 582, 691, 7, 808, 309, 310, 309, 310, - 270, 334, 834, 456, 106, 835, 309, 310, 836, 225, - 838, 837, 800, 839, 107, -247, 309, 310, 309, 310, - 311, 271, 207, 208, 209, 210, 226, 806, 899, 156, - 312, 225, 607, 1004, 1116, 108, 1140, -246, 326, 317, - 261, 319, 263, 264, 265, 266, 151, 109, 1142, 152, - 153, 1144, 154, 277, 278, 279, 280, 136, 282, 283, - 137, 285, 286, 287, 110, 291, 1093, 1266, 139, 1236, - 111, 177, 309, 310, 309, 310, 620, 112, 161, 163, - 414, 307, 308, 150, 454, 993, 1015, 869, 840, 147, - 148, 1016, 149, 309, 310, 309, 310, 324, 116, 327, - 113, 329, 330, 1117, 130, 933, 321, 1121, 335, 336, - 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 803, - 1079, 1204, 179, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 309, - 310, 76, 77, 117, 114, 118, 1094, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 131, - 119, 115, 132, 309, 310, 309, 310, 157, 158, 309, - 310, 303, 309, 310, 306, 423, 424, 466, 159, 142, - 313, 160, 144, 431, 309, 310, 434, 309, 310, 145, - 438, 129, 309, 310, 443, 444, 445, 133, 447, 448, - 449, 450, 451, 452, 453, 878, 134, 415, 416, 417, - 418, 146, 994, 995, 996, 997, 467, 468, 469, 1223, - 1224, 1225, 1226, 140, 419, 420, 1230, 141, 481, 998, - 999, 425, 426, 143, 486, 76, 550, 551, 155, 472, - 473, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 26, 27, 28, 29, 30, 31, 32, - 33, 164, 34, 857, 36, 37, 858, 39, 40, 168, - 309, 310, 120, 121, 122, 123, 1034, 487, 488, 1036, - 100, 101, 722, 51, 1283, 1284, 169, 102, 1287, 124, - 125, 103, 309, 310, 543, 544, 126, 52, 53, 222, - 223, 224, 548, 549, 1012, 225, 555, 557, 559, 561, - 562, -7, -7, 565, -7, 459, 460, 567, 1196, -1, - 8, 1197, 9, 309, 310, 170, 475, 165, 309, 310, - 166, 167, 171, 583, 1328, 1013, 172, 1329, 588, 1337, - 1014, 955, 175, 273, 274, 222, 223, 224, 180, 598, - 599, 225, 784, 785, 786, 787, 788, 62, 602, 214, - 215, 1330, 1034, 1035, 1331, 606, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 639, 640, 1332, 225, 1426, - 1333, 642, 1427, 1428, 552, 553, 1429, 1430, 181, 1376, - 1431, 102, 182, 643, 1482, 554, 470, 1483, 160, 183, - 644, 645, 646, 647, 41, 42, 43, 44, 713, 46, - 1484, 1486, 1515, 1485, 1487, 1516, 1517, 184, 1404, 1518, - 556, 558, 560, 926, -7, -7, -7, -7, -7, -7, - -7, -7, 10, 11, 12, 13, 14, 15, 16, 17, - 682, 820, 821, 185, 207, 208, 685, 1041, 1042, 260, - 1, 2, 714, 3, 1519, 186, 187, 1520, 188, 189, - 596, 190, 191, 192, 193, 194, 267, 797, 195, 196, - 197, 198, 705, 706, 199, 200, 201, 202, 203, 204, - 205, 211, 212, 213, 214, 215, 206, 257, 262, 723, - 268, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 275, 276, 281, 225, 292, 1488, 296, 284, 293, 290, - 956, 294, 297, 298, 295, 299, 300, 301, 302, 752, - 328, 331, 332, 314, 304, 745, 746, 225, 748, 315, - 316, 373, 374, 375, 376, 377, 318, 378, 379, 380, - 322, 323, 762, 763, 381, 272, 382, 383, 384, 385, - 211, 212, 213, 214, 215, 403, 386, 387, 388, 306, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 389, - 76, 77, 225, 390, 391, 697, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 1085, 392, - 393, 816, 394, 395, 396, 397, 398, 421, 408, 727, - 728, 729, 399, 400, 829, 401, 831, 832, 402, 409, - 405, 422, 406, 407, 841, 842, 843, 844, 845, 846, - 847, 848, 849, 850, 851, 852, 441, 446, 477, 478, - 480, 483, 489, 861, 862, 513, 863, 514, 536, 410, - 515, 516, 865, 517, 518, 519, 520, 521, 764, 211, - 212, 213, 214, 215, 522, 523, 524, 773, 525, 216, - 217, 218, 219, 273, 274, 222, 223, 224, 526, 527, - 528, 225, 991, 529, 530, 531, 753, 211, 212, 213, - 214, 215, 532, 533, 534, 902, 535, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 537, 907, 538, 225, - 539, 540, 912, 913, 541, 211, 212, 213, 214, 215, - 542, 545, 566, 546, 547, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 563, 564, 102, 225, 568, 570, - 103, 569, 571, 288, 572, 947, 948, 574, 575, 577, - 211, 212, 213, 214, 215, 411, 597, 960, 578, 962, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 972, - 579, 584, 225, 600, 601, 633, 979, 980, 981, 634, - 635, 636, 638, 986, 648, 649, 650, 990, 679, 992, - 651, 211, 212, 213, 214, 215, 652, 653, 654, 655, - 1005, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 656, 657, 658, 225, 904, 412, 1010, 684, 659, 683, - 695, 660, 700, 702, 710, 711, 712, 1019, 1020, 1021, - 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 661, - 927, 662, 929, 663, 931, 664, 665, 1039, 76, 550, - 1067, 666, 1043, 715, 78, 79, 80, 81, 82, 83, + 263, 326, 1132, 838, 1116, 179, 475, 177, 970, 716, + 1071, 1188, 331, 340, 843, 128, 465, 1053, 1053, 139, + 274, 136, 1054, 1054, 835, 935, 229, 7, 315, 316, + 1241, 162, 164, -254, 315, 316, 482, 483, 315, 316, + 229, 315, 316, -1, 8, 317, 9, -253, 718, 143, + 871, 1007, 872, 844, 873, 106, 874, 875, 107, 876, + 1016, 315, 316, 315, 316, 315, 316, 1023, 315, 316, + 315, 316, 341, 720, 601, 466, 602, 1053, 318, 275, + 627, 464, 1054, 836, 476, 132, 753, 315, 316, 315, + 316, 133, 211, 212, 213, 214, 230, 157, 433, 113, + 276, 906, 434, 1050, 332, 936, 1154, 315, 316, 108, + 265, 842, 267, 268, 269, 270, 894, 422, 273, 1042, + 114, 561, 895, 1051, 282, 283, 284, 285, 1274, 287, + 288, 1178, 290, 291, 292, 137, 297, 1131, 1304, 140, + 109, 138, 178, 315, 316, 309, 1180, 554, 312, 110, + 1182, 555, 313, 314, 319, 915, 10, 11, 12, 13, + 14, 15, 16, 17, 111, 315, 316, 559, 330, 112, + 333, 560, 335, 336, 180, 323, 327, 325, 839, 1117, + 339, 971, 342, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 1242, 315, 316, 115, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 116, 1155, 1132, 76, 293, 1159, 315, + 316, 130, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 134, 158, 159, 1031, 423, 424, + 425, 426, 562, 563, 564, 565, 160, 315, 316, 131, + 431, 432, 161, 315, 316, 315, 316, 135, 439, 427, + 428, 442, 174, 566, 567, 175, 448, 315, 316, 1052, + 453, 454, 455, 141, 457, 458, 459, 460, 461, 462, + 463, 142, 315, 316, 469, 470, 315, 316, 148, 149, + 144, 150, 477, 478, 479, 485, 278, 279, 226, 227, + 228, 1072, 145, 146, 491, 1073, 229, 147, 76, 77, + 496, 1073, 170, 1074, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 667, 716, 668, 717, - 718, 669, 670, 671, 672, 1068, 1070, 1072, 1074, 1075, - 1076, 1077, 719, 720, 1082, 1083, 673, 211, 212, 213, - 214, 215, 484, 709, 1088, 1089, 1090, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 680, 721, 674, 225, - 675, 676, 677, 1107, 1108, 744, 678, 681, 732, 733, - 1112, 734, 735, 736, 737, 738, 749, 754, 698, 699, - 1119, 701, 739, 740, 741, 703, 704, 742, 1127, 743, - 761, 760, 765, 1132, 766, 767, 1135, 211, 212, 213, - 214, 215, 768, 792, 769, 772, 413, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 774, 775, 1158, 225, - 778, 779, 780, 781, 782, 791, 794, 1164, 1165, 1166, - 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1069, - 1071, 1073, 747, 793, 795, 750, 1181, 552, 553, 796, - 801, 805, 809, 811, 102, 813, 814, 833, 554, 855, - 860, 160, 864, 866, 870, 770, 771, 871, 872, 900, - 873, 776, 777, 686, 874, 897, 875, 876, 783, 877, - 790, 879, 211, 212, 213, 214, 215, 1198, 903, 880, - 881, 882, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 883, 884, 885, 225, 886, 887, 810, 888, 812, - 889, 890, 891, 1222, 892, 893, 895, 817, 818, 819, - 894, 896, 822, 823, 824, 825, 826, 827, 828, 905, - 906, 909, 910, 911, 914, 915, 916, 917, 1242, 1243, - 1244, 1245, 1246, 1247, 1248, 1249, 1250, 918, 211, 212, - 213, 214, 215, 919, 1256, 920, 922, 928, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 1263, 1114, 1264, - 225, 930, 934, 953, 949, 211, 212, 213, 214, 215, - 959, 961, 965, 964, 971, 216, 217, 218, 219, 273, - 274, 222, 223, 224, 966, 967, 968, 225, 970, 973, - 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301, 1302, 1304, - 1306, 1308, 974, 975, 1311, 211, 212, 213, 214, 215, - 976, 977, 983, 984, 987, 216, 217, 218, 219, 273, - 274, 222, 223, 224, 988, 989, 1001, 225, 1008, 1000, - 1009, 1011, 1335, 1336, 1037, 1040, 1044, 1046, 1038, 1047, - 1048, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, - 1353, 1049, 1355, 1050, 1357, 1052, 1058, 954, 1361, 1053, - 958, 1054, 1059, 1060, 1062, 963, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 1063, 1065, 1081, 225, 1091, - 1092, 1373, 1374, 1109, 982, 1115, 1378, 1379, 1380, 1381, - 1382, 1383, 1118, 26, 27, 28, 29, 30, 31, 32, - 33, 1120, 34, 1122, 36, 37, 1123, 39, 40, 1401, - 1124, 1125, 1126, 1128, 1405, 1406, 1407, 1408, 1409, 1410, - 1412, 1414, 1416, 51, 1130, 1131, 1133, 1134, 1137, 1136, - 1149, 1138, 1152, 1153, 1163, 1156, 1157, 52, 53, 1178, - 1186, 1194, 1435, 1436, 1437, 1438, 1439, 1440, 1441, 1179, - 1443, 1182, 1445, 1183, 1195, 1184, 1201, 1202, 1218, 1187, - 1189, 1219, 1191, 1193, 1199, 1205, 1227, 1228, 1229, 1231, - 1455, 1456, 1457, 1232, 1233, 1234, 1239, 1235, 1255, 1254, - 1281, 1257, 1285, 1258, 1469, 1470, 1471, 1473, 1475, 1477, - 1259, 1260, 1261, 1277, 1262, 1286, 1288, 62, 1265, 1267, - 1291, 1489, 1490, 1491, 1492, 1292, 1494, 1278, 1496, 1279, - 1314, 1309, 1310, 1312, 1313, 1316, 1315, 1339, 1334, 1317, - 1318, 1340, 1342, 1341, 1343, 1354, 1356, 1358, 1510, 1512, - 1514, 1110, 1359, 1389, 1111, 1362, 474, 1521, 1363, 1523, - 1390, 1525, 1391, 1398, 1402, 1399, 1400, 1419, 1418, 1432, - 76, 77, 1434, 1465, 1442, 1129, 78, 79, 80, 81, + 94, 95, 96, 97, 98, 99, 1234, 1366, 1235, 1367, + 1261, 1262, 1263, 1264, 186, 187, 1368, 1268, 1369, 151, + 188, 993, 189, 1040, 172, 215, 216, 217, 218, 219, + 156, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 166, 102, 165, 167, 168, 229, 103, 169, 1032, 1033, + 1034, 1035, 294, 152, 498, 499, 153, 154, 1370, 155, + 1371, 574, 576, 578, 573, 575, 577, 579, 580, 1036, + 1037, 583, 186, 187, 171, 1464, 586, 1465, 188, 173, + 189, -7, -7, 176, -7, 1321, 1322, 181, 339, 1325, + 182, 186, 187, 603, 226, 227, 228, 446, 608, 189, + 186, 187, 229, 616, 183, 1466, 599, 1467, 189, 618, + 619, 186, 187, 184, 186, 187, 185, 188, 622, 712, + 852, 1468, 189, 1469, 190, 626, 41, 42, 43, 44, + 1520, 46, 1521, 662, 663, 659, 660, 100, 101, 1522, + 1375, 1523, 664, 102, 1524, 1553, 1525, 1554, 103, 191, + 1555, 598, 1556, 192, 665, 815, 816, 817, 818, 819, + 193, 666, 667, 668, 669, 215, 216, 217, 218, 219, + 194, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 1557, 195, 1558, 857, 858, 229, 1079, 1080, 196, 197, + 1414, 264, 281, 994, -7, -7, -7, -7, -7, -7, + -7, -7, 704, 705, 706, 707, 708, 709, 964, 198, + 312, 199, 211, 212, 714, 200, 201, 202, 203, 1442, + 1, 2, 204, 3, 205, 206, 726, 218, 219, 207, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 828, + 208, 339, 735, 737, 229, 271, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 209, 210, 272, 261, 754, + 229, 280, 758, 759, 760, 266, 286, 289, 298, 299, + 300, 334, 304, 337, 302, 305, 296, 303, 306, 307, + 308, 301, 628, 629, 630, 631, 632, 633, 634, 635, + 636, 637, 638, 639, 310, 776, 777, 320, 779, 321, + 322, 338, 229, 324, 380, 410, 1526, 328, 329, 381, + 382, 383, 384, 795, 793, 794, 385, 386, 387, 76, + 568, 569, 804, 388, 389, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 390, 76, 568, + 1105, 391, 392, 393, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 394, 395, 396, 397, + 398, 399, 853, 400, 1123, 401, 402, 403, 404, 412, + 405, 406, 407, 408, 409, 866, 640, 868, 869, 413, + 414, 416, 429, 430, 451, 878, 879, 880, 881, 882, + 883, 884, 885, 886, 887, 888, 889, 456, 487, 488, + 490, 493, 500, 524, 898, 899, 525, 900, 526, 527, + 76, 293, 547, 902, 528, 529, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 1444, 1446, - 1493, 1495, 688, 1447, 76, 550, 1461, 1466, 1478, 1162, + 92, 93, 94, 95, 96, 97, 98, 99, 530, 531, + 532, 533, 534, 535, 536, 537, 538, 539, 540, 1029, + 541, 542, 543, 544, 545, 546, 548, 549, 570, 571, + 550, 939, 551, 941, 102, 552, 553, 587, 556, 572, + 557, 558, 584, 944, 339, 161, 581, 582, 585, 950, + 951, 588, 617, 589, 590, 592, 593, 570, 571, 595, + 965, 596, 967, 102, 969, 597, 604, 620, 572, 621, + 653, 654, 655, 656, 161, 658, 670, 671, 701, 672, + 673, 674, 985, 986, 675, 676, 677, 678, 679, 680, + 681, 682, 683, 684, 998, 685, 1000, 686, 687, 744, + 688, 689, 690, 691, 692, 693, 1010, 694, 695, 702, + 696, 697, 698, 1017, 1018, 1019, 699, 700, 703, 710, + 1024, 711, 713, 740, 1028, 724, 1030, 729, 731, 741, + 742, 743, 746, 747, 748, 749, 750, 751, 1043, 100, + 101, 752, 763, 745, 775, 102, 780, 785, 764, 765, + 103, 783, 792, 796, 1048, 766, 294, 767, 768, 769, + 770, 771, 772, 773, 774, 1057, 1058, 1059, 1060, 1061, + 1062, 1063, 1064, 1065, 1066, 1067, 1068, 797, 791, 799, + 800, 803, 805, 806, 809, 1077, 76, 568, 798, 810, + 1081, 811, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 812, 813, 822, 903, 825, 823, + 1107, 1109, 1111, 1106, 1108, 1110, 1112, 1113, 1114, 1115, + 824, 870, 1120, 1121, 277, 826, 827, 837, 897, 841, + 845, 847, 1126, 1127, 1128, 215, 216, 217, 218, 219, + 849, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 850, 1145, 1146, 892, 901, 229, 907, 909, 1150, 908, + 910, 912, 727, 728, 917, 730, 911, 913, 1157, 732, + 733, 914, 916, 918, 919, 920, 1165, 940, 921, 922, + 923, 1170, 924, 925, 1173, 215, 216, 217, 218, 219, + 942, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 926, 927, 934, 928, 929, 229, 1196, 784, 931, 930, + 932, 943, 415, 933, 937, 1202, 1203, 1204, 1205, 1206, + 1207, 1208, 1209, 1210, 1211, 1212, 1213, 947, 778, 948, + 949, 781, 952, 953, 1219, 570, 571, 954, 955, 956, + 957, 102, 958, 966, 968, 972, 572, 987, 991, 960, + 997, 999, 161, 801, 802, 1002, 1003, 417, 1004, 807, + 808, 1005, 1006, 1008, 1009, 1011, 814, 1012, 821, 1013, + 215, 216, 217, 218, 219, 1236, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 215, 216, 217, 218, 219, + 229, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 1014, 1260, 846, 1015, 848, 229, 1022, 1021, 1025, 1026, + 1027, 962, 1039, 963, 854, 855, 856, 1038, 1046, 859, + 860, 861, 862, 863, 864, 865, 1280, 1281, 1282, 1283, + 1284, 1285, 1286, 1287, 1288, 1047, 1049, 1075, 1076, 1078, + 1082, 1084, 1294, 628, 629, 630, 631, 632, 633, 634, + 635, 636, 637, 638, 639, 1301, 1085, 1302, 215, 216, + 217, 218, 219, 1086, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 1087, 1088, 1090, 1091, 1092, 229, 1096, + 1129, 1097, 1098, 1130, 1101, 1147, 1153, 1100, 1332, 1333, + 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1342, 1344, 1346, + 1103, 1156, 1349, 215, 216, 217, 218, 219, 494, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 1119, 1158, + 1160, 1161, 1162, 229, 1175, 1163, 1164, 1166, 1168, 1169, + 1373, 1374, 1171, 1172, 1176, 1174, 1194, 1187, 1190, 1382, + 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1191, + 1393, 1195, 1395, 1201, 1216, 1232, 1399, 877, 1217, 1220, + 1221, 1222, 1224, 418, 1225, 1227, 1229, 1231, 1233, 1237, + 992, 1239, 1240, 996, 1243, 1256, 1257, 1265, 1001, 1411, + 1412, 1266, 1267, 1269, 1416, 1417, 1418, 1419, 1420, 1421, + 1270, 1271, 1272, 1273, 1277, 1292, 1293, 1020, 1295, 1296, + 1297, 1298, 1299, 1300, 1319, 1323, 1303, 1439, 1305, 1324, + 1326, 1315, 1443, 1444, 1445, 1446, 1447, 1448, 1450, 1452, + 1454, 217, 218, 219, 1316, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 1317, 1329, 1347, 1330, 1348, 229, + 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1350, 1481, 1351, + 1483, 1352, 215, 216, 217, 218, 219, 1353, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 1354, 1493, 1494, + 1495, 1355, 229, 1356, 1372, 1377, 1378, 1379, 1380, 1381, + 1392, 1394, 1507, 1508, 1509, 1511, 1513, 1515, 1396, 1397, + 1400, 1427, 1440, 1401, 1470, 1428, 1472, 1480, 1482, 1527, + 1528, 1529, 1530, 1429, 1532, 1436, 1534, 1457, 1484, 215, + 216, 217, 218, 219, 1437, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 1531, 1438, 1548, 1550, 1552, 229, + 1456, 1485, 1499, 1533, 1503, 1559, 1516, 1561, 1504, 1563, + 1505, 1535, 1536, 1540, 1560, 1562, 1148, 419, 1149, 1564, + 1566, 1544, 1545, 1546, 1567, 67, 1278, 68, 69, 738, + 990, 0, 0, 762, 76, 77, 117, 0, 118, 1167, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 1467, 76, 77, 1497, 1498, 1502, 1506, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 76, 77, 1522, 1528, 1507, 1524, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 1508, - 1526, 76, 901, 1529, 952, 1220, 1221, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 67, - 731, 68, 1241, 69, 1240, 707, 0, 0, 0, 100, - 101, 690, 0, 0, 0, 0, 102, 0, 0, 0, - 103, 0, 0, 288, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 552, 553, 0, 225, 692, 0, 0, - 102, 1280, 0, 0, 554, 0, 0, 160, 211, 212, - 213, 214, 215, 0, 1293, 0, 0, 0, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 693, 0, 102, - 225, 0, 0, 103, 26, 27, 28, 29, 30, 31, + 98, 99, 0, 119, 420, 0, 0, 0, 76, 77, + 0, 0, 0, 1200, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 76, 77, 0, 0, + 0, 0, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 0, 0, 76, 77, 0, 0, + 0, 0, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 0, 0, 0, 0, 0, 1258, + 1259, 0, 0, 215, 216, 217, 218, 219, 0, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 120, + 121, 122, 123, 229, 0, 0, 1279, 0, 0, 0, + 0, 0, 0, 100, 101, 0, 0, 0, 0, 102, + 124, 125, 0, 0, 103, 0, 126, 0, 127, 0, + 215, 216, 217, 218, 219, 0, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 100, 101, 0, + 229, 0, 0, 102, 0, 1318, 0, 0, 103, 0, + 0, 734, 0, 0, 0, 0, 0, 0, 1331, 0, + 0, 0, 0, 0, 0, 100, 101, 0, 0, 0, + 0, 102, 0, 0, 0, 0, 103, 0, 0, 945, + 0, 0, 0, 0, 0, 215, 216, 217, 218, 219, + 0, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 0, 102, 76, 77, 1376, 229, 103, 0, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 715, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 717, 0, 0, 0, 76, + 447, 0, 0, 0, 1415, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 76, 736, 0, + 0, 1441, 0, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 76, 938, 0, 0, 1471, + 0, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 719, 0, 0, 0, 0, 1492, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 721, 0, + 0, 0, 1506, 0, 0, 0, 0, 0, 0, 0, + 0, 100, 101, 722, 0, 0, 0, 102, 0, 0, + 0, 0, 103, 0, 0, 0, 215, 216, 217, 218, + 219, 0, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 215, 216, 217, 218, 219, 229, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 739, 0, 100, 101, + 0, 229, 0, 0, 102, 0, 0, 0, 0, 103, + 0, 761, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 100, 101, 0, 0, + 0, 0, 102, 830, 0, 0, 0, 103, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 831, 0, + 0, 0, 0, 0, 100, 101, 0, 0, 0, 0, + 102, 0, 0, 832, 0, 103, 0, 0, 0, 215, + 216, 217, 218, 219, 0, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 215, 216, 217, 218, 219, 229, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 215, + 216, 217, 218, 219, 229, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 833, 0, 0, 0, 0, 229, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 834, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 215, 216, 217, 218, 219, 0, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 215, 216, 217, + 218, 219, 229, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 1044, 0, 0, 0, 0, 229, 0, 215, + 216, 217, 218, 219, 0, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 215, 216, 217, 218, 219, 229, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 215, + 216, 217, 218, 219, 229, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 1045, 0, 0, 0, 0, 229, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1177, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1179, 0, 0, 0, 0, 0, + 215, 216, 217, 218, 219, 0, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 215, 216, 217, 218, 219, + 229, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 1181, 0, 0, 0, 0, 229, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1183, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 215, 216, + 217, 218, 219, 0, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 1184, 0, 0, 0, 0, 229, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1185, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1186, 0, 0, 0, 0, 0, 0, + 215, 216, 217, 218, 219, 0, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 215, 216, 217, 218, 219, + 229, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 215, 216, 217, 218, 219, 229, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 1218, 0, 0, 0, 0, + 229, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 522, 0, 0, 0, 215, 216, 217, 218, + 219, 0, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 215, 216, 217, 218, 219, 229, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 600, 0, 0, 0, + 0, 229, 0, 0, 0, 0, 0, 0, 0, 215, + 216, 217, 218, 219, 0, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 215, 216, 217, 218, 219, 229, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 215, + 216, 217, 218, 219, 229, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 782, 0, 0, 0, 0, 229, + 0, 0, 0, 0, 0, 1152, 0, 0, 0, 851, + 0, 0, 0, 0, 0, 0, 215, 216, 217, 218, + 219, 0, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 215, 216, 217, 218, 219, 229, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 215, 216, 217, 218, + 219, 229, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 215, 216, 217, 218, 219, 0, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 1320, 0, 0, 0, 0, + 229, 0, 0, 0, 0, 0, 215, 216, 217, 218, + 219, 0, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 215, 216, + 217, 218, 219, 0, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 215, 216, 217, 218, 219, 229, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 26, 27, 28, 29, 30, 31, + 32, 33, 0, 34, 0, 36, 37, 0, 39, 40, + 0, 26, 27, 28, 29, 30, 31, 32, 33, 0, + 34, 0, 36, 37, 51, 39, 40, 0, 0, -3, + 22, 0, 0, 23, 0, 0, 0, 0, 52, 53, + 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 52, 53, 0, 0, 0, + 24, 0, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 0, 34, 35, 36, 37, 38, 39, 40, 0, + 0, 0, 41, 42, 43, 44, 45, 46, 0, 47, + 48, 49, 50, 51, 0, 0, 0, 0, 62, 0, + 0, 0, 0, 0, 231, 0, 0, 52, 53, 0, + 0, 0, 0, 0, 54, 62, 55, 56, 57, 58, + 0, 59, 60, 61, 26, 27, 28, 29, 30, 31, 32, 33, 0, 34, 0, 36, 37, 0, 39, 40, - 100, 101, 0, 0, 0, 0, 0, 102, 708, 0, - 1338, 103, 0, 0, 51, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 52, 53, - 100, 101, 730, 0, 0, 0, 0, 102, 0, 0, - 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 211, 212, 213, 214, 215, 1006, 0, - 1377, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 0, 0, 0, 0, - 0, 1007, 0, 0, 0, 0, 0, 1403, 62, 211, - 212, 213, 214, 215, 0, 0, 0, 0, 0, 216, - 217, 218, 219, 273, 274, 222, 223, 224, 1139, 0, - 0, 225, 0, 0, 0, 1433, 0, 0, 0, 211, - 212, 213, 214, 215, 0, 0, 0, 0, 0, 216, - 217, 218, 219, 273, 274, 222, 223, 224, 1141, 0, - 0, 225, 0, 0, 1454, 0, 0, 0, 0, 0, - 211, 212, 213, 214, 215, 0, 0, 0, 1468, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 1143, - 0, 0, 225, 0, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 1145, 0, 0, 225, 0, 0, 0, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 1146, - 0, 0, 225, 211, 212, 213, 214, 215, 0, 0, - 0, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 1147, 0, 0, 225, 0, 0, 0, 0, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 1148, - 0, 0, 225, 0, 0, 0, 0, 0, 0, 0, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 1180, - 0, 0, 225, 0, 0, 0, 0, 0, 0, 0, - 0, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 511, 0, 0, 225, 0, 211, 212, 213, 214, 215, - 0, 0, 0, 0, 0, 216, 217, 218, 219, 273, - 274, 222, 223, 224, 580, 0, 0, 225, 0, 0, - 0, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 751, 0, 0, 225, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 815, 0, 0, 225, 0, 0, 0, - 0, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 0, 0, 0, 0, 0, 0, - 0, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 0, 0, 0, 0, 0, 0, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 211, 212, 213, 214, 215, -3, 22, - 0, 0, 23, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, - 0, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 0, 34, 35, 36, 37, 38, 39, 40, 0, 0, - 0, 41, 42, 43, 44, 45, 46, 227, 47, 48, - 49, 50, 51, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 52, 53, 0, 0, - 0, 0, 0, 54, 0, 55, 56, 57, 58, 1282, - 59, 60, 61, 0, 0, 0, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 228, 229, 230, 225, 0, - 0, 0, 0, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 0, 0, 0, 62, 0, 0, 0, - 0, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 0, 251, 252, 253, 254, 255, 256, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 694, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 755, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 211, 212, 213, - 214, 215, 0, 0, 0, 0, 830, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 0, 0, 0, 225, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 1066, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 211, 212, 213, 214, 215, 0, 0, - 0, 0, 1289, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 0, 0, 0, 924, - 0, 0, 925, 211, 212, 213, 214, 215, 0, 0, - 0, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 0, 0, 0, 1086, - 0, 0, 1087, 211, 212, 213, 214, 215, 0, 0, - 0, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 0, 0, 0, 1237, - 0, 0, 1238, 211, 212, 213, 214, 215, 0, 0, - 0, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 211, 212, 213, 214, - 215, 0, 428, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 211, - 212, 213, 214, 215, 0, 433, 0, 0, 0, 216, - 217, 218, 219, 273, 274, 222, 223, 224, 0, 0, - 0, 225, 211, 212, 213, 214, 215, 0, 435, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 211, 212, 213, 214, 215, - 0, 585, 0, 0, 0, 216, 217, 218, 219, 273, - 274, 222, 223, 224, 0, 0, 0, 225, 211, 212, - 213, 214, 215, 0, 589, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 211, 212, 213, 214, 215, 0, 590, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 211, 212, 213, 214, 215, 0, - 726, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 211, 212, 213, - 214, 215, 0, 921, 0, 0, 0, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 0, 0, 0, 225, - 211, 212, 213, 214, 215, 0, 1113, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 211, 212, 213, 214, 215, 0, 1154, - 0, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 211, 212, 213, 214, - 215, 0, 1159, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 211, - 212, 213, 214, 215, 0, 1160, 0, 0, 0, 216, - 217, 218, 219, 273, 274, 222, 223, 224, 0, 0, - 0, 225, 211, 212, 213, 214, 215, 0, 1161, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 211, 212, 213, 214, 215, - 0, 1176, 0, 0, 0, 216, 217, 218, 219, 273, - 274, 222, 223, 224, 0, 0, 0, 225, 211, 212, - 213, 214, 215, 0, 1177, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 211, 212, 213, 214, 215, 0, 1200, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 211, 212, 213, 214, 215, 0, - 1290, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 211, 212, 213, - 214, 215, 0, 1388, 0, 0, 0, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 0, 0, 0, 225, - 211, 212, 213, 214, 215, 0, 1417, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 457, 356, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 0, 356, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 0, 427, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 0, 429, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 0, 430, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 0, 432, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 0, 436, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 0, 437, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 0, 442, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 0, 479, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 0, 482, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 0, 485, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 0, 490, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 0, 491, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 0, 492, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 0, 493, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 0, 494, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 0, 495, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 0, 496, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 0, 497, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 0, 498, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 0, 499, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 0, 500, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 0, 502, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 0, 503, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 0, 504, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 0, 505, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 0, 506, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 0, 507, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 0, 573, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 0, 576, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 0, 586, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 0, 587, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 0, 591, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 0, 592, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 0, 593, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 0, 594, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 0, 595, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 0, 637, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 0, 641, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 0, 696, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 0, 756, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 0, 757, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 0, 758, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 0, 759, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 0, 798, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 0, 856, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 0, 923, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 0, 957, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 0, 1051, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 0, 1055, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 0, 1057, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 0, 1188, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 0, 1190, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 0, 1192, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 0, 1215, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 0, 1216, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 0, 1217, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 0, 1370, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 0, 1371, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 0, 1372, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 0, 1451, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 0, 1452, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 0, 1453, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 0, 1499, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 0, 1500, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 0, 1501, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 457, 211, 212, 213, 214, 215, 0, 0, - 0, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 0, 0, 0, 458, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 501, 211, 212, 213, - 214, 215, 0, 0, 0, 0, 0, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 0, 0, 0, 225, - 0, 0, 0, 508, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 509, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 512, 0, 0, 510, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 0, 0, 0, 603, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 604, 211, 212, 213, 214, 215, - 0, 0, 0, 0, 0, 216, 217, 218, 219, 273, - 274, 222, 223, 224, 0, 0, 0, 225, 0, 0, - 0, 605, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 724, 211, - 212, 213, 214, 215, 0, 0, 0, 0, 0, 216, - 217, 218, 219, 273, 274, 222, 223, 224, 0, 0, - 0, 225, 0, 0, 0, 725, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 853, 211, 212, 213, 214, 215, 0, 0, - 0, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 0, 0, 0, 854, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 867, 211, 212, 213, - 214, 215, 0, 0, 0, 0, 0, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 0, 0, 0, 225, - 0, 0, 0, 868, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 908, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 0, 0, 0, 935, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 936, 211, 212, 213, 214, 215, - 0, 0, 0, 0, 0, 216, 217, 218, 219, 273, - 274, 222, 223, 224, 0, 0, 0, 225, 0, 0, - 0, 937, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 938, 211, - 212, 213, 214, 215, 0, 0, 0, 0, 0, 216, - 217, 218, 219, 273, 274, 222, 223, 224, 0, 0, - 0, 225, 0, 0, 0, 939, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 940, 211, 212, 213, 214, 215, 0, 0, - 0, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 0, 0, 0, 941, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 942, 211, 212, 213, - 214, 215, 0, 0, 0, 0, 0, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 0, 0, 0, 225, - 0, 0, 0, 943, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 944, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 0, 0, 0, 945, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 946, 211, 212, 213, 214, 215, - 0, 0, 0, 0, 0, 216, 217, 218, 219, 273, - 274, 222, 223, 224, 0, 0, 0, 225, 0, 0, - 0, 1003, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 1031, 211, - 212, 213, 214, 215, 0, 0, 0, 0, 0, 216, - 217, 218, 219, 273, 274, 222, 223, 224, 0, 0, - 0, 225, 0, 0, 0, 1032, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 1045, 211, 212, 213, 214, 215, 0, 0, - 0, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 0, 0, 0, 1056, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 1061, 211, 212, 213, - 214, 215, 0, 0, 0, 0, 0, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 0, 0, 0, 225, - 0, 0, 0, 1064, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 1084, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 0, 0, 0, 1095, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 1096, 211, 212, 213, 214, 215, - 0, 0, 0, 0, 0, 216, 217, 218, 219, 273, - 274, 222, 223, 224, 0, 0, 0, 225, 0, 0, - 0, 1097, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 1098, 211, - 212, 213, 214, 215, 0, 0, 0, 0, 0, 216, - 217, 218, 219, 273, 274, 222, 223, 224, 0, 0, - 0, 225, 0, 0, 0, 1099, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 1100, 211, 212, 213, 214, 215, 0, 0, - 0, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 0, 0, 0, 1101, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 1102, 211, 212, 213, - 214, 215, 0, 0, 0, 0, 0, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 0, 0, 0, 225, - 0, 0, 0, 1103, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 1104, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 0, 0, 0, 1105, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 1106, 211, 212, 213, 214, 215, - 0, 0, 0, 0, 0, 216, 217, 218, 219, 273, - 274, 222, 223, 224, 0, 0, 0, 225, 0, 0, - 0, 1155, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 1185, 211, - 212, 213, 214, 215, 0, 0, 0, 0, 0, 216, - 217, 218, 219, 273, 274, 222, 223, 224, 0, 0, - 0, 225, 0, 0, 0, 1206, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 1207, 211, 212, 213, 214, 215, 0, 0, - 0, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 0, 0, 0, 1208, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 1209, 211, 212, 213, - 214, 215, 0, 0, 0, 0, 0, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 0, 0, 0, 225, - 0, 0, 0, 1210, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 1211, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 0, 0, 0, 1212, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 1213, 211, 212, 213, 214, 215, - 0, 0, 0, 0, 0, 216, 217, 218, 219, 273, - 274, 222, 223, 224, 0, 0, 0, 225, 0, 0, - 0, 1214, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 1268, 211, - 212, 213, 214, 215, 0, 0, 0, 0, 0, 216, - 217, 218, 219, 273, 274, 222, 223, 224, 0, 0, - 0, 225, 0, 0, 0, 1269, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 1270, 211, 212, 213, 214, 215, 0, 0, - 0, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 0, 0, 0, 1271, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 1272, 211, 212, 213, - 214, 215, 0, 0, 0, 0, 0, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 0, 0, 0, 225, - 0, 0, 0, 1273, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 1274, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 0, 0, 0, 1275, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 1276, 211, 212, 213, 214, 215, - 0, 0, 0, 0, 0, 216, 217, 218, 219, 273, - 274, 222, 223, 224, 0, 0, 0, 225, 0, 0, - 0, 1319, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 1320, 211, - 212, 213, 214, 215, 0, 0, 0, 0, 0, 216, - 217, 218, 219, 273, 274, 222, 223, 224, 0, 0, - 0, 225, 0, 0, 0, 1321, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 1322, 211, 212, 213, 214, 215, 0, 0, - 0, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 0, 0, 0, 1323, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 1324, 211, 212, 213, - 214, 215, 0, 0, 0, 0, 0, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 0, 0, 0, 225, - 0, 0, 0, 1325, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 1326, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 0, 0, 0, 1327, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 1360, 211, 212, 213, 214, 215, - 0, 0, 0, 0, 0, 216, 217, 218, 219, 273, - 274, 222, 223, 224, 0, 0, 0, 225, 0, 0, - 0, 1364, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 1365, 211, - 212, 213, 214, 215, 0, 0, 0, 0, 0, 216, - 217, 218, 219, 273, 274, 222, 223, 224, 0, 0, - 0, 225, 0, 0, 0, 1366, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 1367, 211, 212, 213, 214, 215, 0, 0, - 0, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 0, 0, 0, 1368, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 1369, 211, 212, 213, - 214, 215, 0, 0, 0, 0, 0, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 0, 0, 0, 225, - 0, 0, 0, 1387, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 1392, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 0, 0, 0, 1393, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 1394, 211, 212, 213, 214, 215, - 0, 0, 0, 0, 0, 216, 217, 218, 219, 273, - 274, 222, 223, 224, 0, 0, 0, 225, 0, 0, - 0, 1395, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 1396, 211, - 212, 213, 214, 215, 0, 0, 0, 0, 0, 216, - 217, 218, 219, 273, 274, 222, 223, 224, 0, 0, - 0, 225, 0, 0, 0, 1397, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 1420, 211, 212, 213, 214, 215, 0, 0, - 0, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 0, 0, 0, 1421, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 1422, 211, 212, 213, - 214, 215, 0, 0, 0, 0, 0, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 0, 0, 0, 225, - 0, 0, 0, 1423, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 0, - 1424, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 0, 0, 0, 1425, 211, 212, - 213, 214, 215, 0, 0, 0, 0, 0, 216, 217, - 218, 219, 273, 274, 222, 223, 224, 0, 0, 0, - 225, 0, 0, 0, 1448, 211, 212, 213, 214, 215, - 0, 0, 0, 0, 0, 216, 217, 218, 219, 273, - 274, 222, 223, 224, 0, 0, 0, 225, 0, 0, - 0, 1449, 211, 212, 213, 214, 215, 0, 0, 0, - 0, 0, 216, 217, 218, 219, 273, 274, 222, 223, - 224, 0, 0, 0, 225, 0, 0, 0, 1450, 211, - 212, 213, 214, 215, 0, 0, 0, 0, 0, 216, - 217, 218, 219, 273, 274, 222, 223, 224, 0, 0, - 0, 225, 0, 0, 0, 1462, 211, 212, 213, 214, - 215, 0, 0, 0, 0, 0, 216, 217, 218, 219, - 273, 274, 222, 223, 224, 0, 0, 0, 225, 0, - 0, 0, 1463, 211, 212, 213, 214, 215, 0, 0, - 0, 0, 0, 216, 217, 218, 219, 273, 274, 222, - 223, 224, 0, 0, 0, 225, 0, 0, 0, 1464, - 211, 212, 213, 214, 215, 0, 0, 0, 0, 0, - 216, 217, 218, 219, 273, 274, 222, 223, 224, 0, - 0, 0, 225, 0, 0, 0, 1479, 211, 212, 213, - 214, 215, 0, 0, 0, 0, 0, 216, 217, 218, - 219, 273, 274, 222, 223, 224, 0, 0, 0, 225, - 0, 0, 0, 1480, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225, 0, 0, 1375, - 1481, 211, 212, 213, 214, 215, 0, 0, 0, 0, - 0, 216, 217, 218, 219, 273, 274, 222, 223, 224, - 0, 0, 0, 225, 211, 212, 213, 214, 215, 0, - 0, 0, 0, 0, 216, 217, 218, 219, 273, 274, - 222, 223, 224, 0, 0, 0, 225 + 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 0, 0, 484, 0, 0, + 0, 0, 232, 233, 234, 0, 0, 62, 52, 53, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 0, 0, 0, 0, 0, 0, 0, 0, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 0, 255, + 256, 257, 258, 259, 260, 215, 216, 217, 218, 219, + 0, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 0, 0, 62, 0, + 0, 1124, 0, 1125, 215, 216, 217, 218, 219, 0, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 0, 0, 0, 0, 0, + 1275, 0, 1276, 215, 216, 217, 218, 219, 0, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 0, 0, 215, 216, 217, 218, + 219, 436, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 0, 0, 215, + 216, 217, 218, 219, 441, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 523, 0, 0, 0, 0, 229, + 0, 0, 215, 216, 217, 218, 219, 443, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 215, 216, 217, + 218, 219, 229, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 0, 0, + 215, 216, 217, 218, 219, 605, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 0, 0, 215, 216, 217, 218, 219, 609, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 0, 0, 215, 216, 217, 218, + 219, 610, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 0, 0, 215, + 216, 217, 218, 219, 757, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 0, 0, 215, 216, 217, 218, 219, 959, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 0, 0, 215, 216, 217, 218, 219, + 1151, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 0, 0, 215, 216, + 217, 218, 219, 1192, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 0, + 0, 215, 216, 217, 218, 219, 1197, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 0, 0, 215, 216, 217, 218, 219, 1198, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 0, 0, 215, 216, 217, + 218, 219, 1199, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 0, 0, + 215, 216, 217, 218, 219, 1214, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 0, 0, 215, 216, 217, 218, 219, 1215, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 0, 0, 215, 216, 217, 218, + 219, 1238, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 0, 0, 215, + 216, 217, 218, 219, 1328, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 0, 0, 215, 216, 217, 218, 219, 1426, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 0, 0, 215, 216, 217, 218, 219, + 1455, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 0, 363, 0, 0, + 0, 467, 215, 216, 217, 218, 219, 0, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 215, 216, 217, 218, 219, 467, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 215, 216, 217, 218, 219, 468, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 215, 216, 217, 218, 219, + 512, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 215, 216, 217, 218, + 219, 519, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 215, 216, 217, + 218, 219, 520, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 215, 216, + 217, 218, 219, 521, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 215, + 216, 217, 218, 219, 623, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 215, 216, 217, 218, 219, 624, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 215, 216, 217, 218, 219, 625, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 215, 216, 217, 218, 219, 755, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 215, 216, 217, 218, 219, 756, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 215, 216, 217, 218, 219, 890, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 215, 216, 217, 218, 219, + 891, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 215, 216, 217, 218, + 219, 904, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 215, 216, 217, + 218, 219, 905, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 215, 216, + 217, 218, 219, 946, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 215, + 216, 217, 218, 219, 973, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 215, 216, 217, 218, 219, 974, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 215, 216, 217, 218, 219, 975, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 215, 216, 217, 218, 219, 976, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 215, 216, 217, 218, 219, 977, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 215, 216, 217, 218, 219, 978, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 215, 216, 217, 218, 219, + 979, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 215, 216, 217, 218, + 219, 980, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 215, 216, 217, + 218, 219, 981, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 215, 216, + 217, 218, 219, 982, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 215, + 216, 217, 218, 219, 983, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 215, 216, 217, 218, 219, 984, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 215, 216, 217, 218, 219, 1041, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 215, 216, 217, 218, 219, 1069, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 215, 216, 217, 218, 219, 1070, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 215, 216, 217, 218, 219, 1083, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 215, 216, 217, 218, 219, + 1094, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 215, 216, 217, 218, + 219, 1099, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 215, 216, 217, + 218, 219, 1102, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 215, 216, + 217, 218, 219, 1122, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 215, + 216, 217, 218, 219, 1133, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 215, 216, 217, 218, 219, 1134, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 215, 216, 217, 218, 219, 1135, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 215, 216, 217, 218, 219, 1136, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 215, 216, 217, 218, 219, 1137, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 215, 216, 217, 218, 219, 1138, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 215, 216, 217, 218, 219, + 1139, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 215, 216, 217, 218, + 219, 1140, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 215, 216, 217, + 218, 219, 1141, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 215, 216, + 217, 218, 219, 1142, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 215, + 216, 217, 218, 219, 1143, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 215, 216, 217, 218, 219, 1144, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 215, 216, 217, 218, 219, 1193, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 215, 216, 217, 218, 219, 1223, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 215, 216, 217, 218, 219, 1244, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 215, 216, 217, 218, 219, 1245, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 215, 216, 217, 218, 219, + 1246, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 215, 216, 217, 218, + 219, 1247, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 215, 216, 217, + 218, 219, 1248, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 215, 216, + 217, 218, 219, 1249, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 215, + 216, 217, 218, 219, 1250, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 215, 216, 217, 218, 219, 1251, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 215, 216, 217, 218, 219, 1252, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 215, 216, 217, 218, 219, 1306, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 215, 216, 217, 218, 219, 1307, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 215, 216, 217, 218, 219, 1308, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 215, 216, 217, 218, 219, + 1309, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 215, 216, 217, 218, + 219, 1310, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 215, 216, 217, + 218, 219, 1311, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 215, 216, + 217, 218, 219, 1312, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 215, + 216, 217, 218, 219, 1313, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 215, 216, 217, 218, 219, 1314, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 215, 216, 217, 218, 219, 1357, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 215, 216, 217, 218, 219, 1358, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 215, 216, 217, 218, 219, 1359, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 215, 216, 217, 218, 219, 1360, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 215, 216, 217, 218, 219, + 1361, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 215, 216, 217, 218, + 219, 1362, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 215, 216, 217, + 218, 219, 1363, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 215, 216, + 217, 218, 219, 1364, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 215, + 216, 217, 218, 219, 1365, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 215, 216, 217, 218, 219, 1398, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 215, 216, 217, 218, 219, 1402, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 215, 216, 217, 218, 219, 1403, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 215, 216, 217, 218, 219, 1404, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 215, 216, 217, 218, 219, 1405, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 215, 216, 217, 218, 219, + 1406, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 1413, 0, 0, 0, 0, 229, 215, 216, 217, 218, + 219, 1407, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 215, 216, 217, 218, 219, 229, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 215, 216, 217, 218, 219, 1425, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 215, 216, 217, 218, 219, 1430, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 215, 216, 217, 218, 219, 1431, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 215, 216, 217, 218, 219, + 1432, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 215, 216, 217, 218, + 219, 1433, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 215, 216, 217, + 218, 219, 1434, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 215, 216, + 217, 218, 219, 1435, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 215, + 216, 217, 218, 219, 1458, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 215, 216, 217, 218, 219, 1459, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 215, 216, 217, 218, 219, 1460, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 215, 216, 217, 218, 219, 1461, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 215, 216, 217, 218, 219, 1462, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 215, 216, 217, 218, 219, 1463, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 215, 216, 217, 218, 219, + 1486, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 215, 216, 217, 218, + 219, 1487, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 215, 216, 217, + 218, 219, 1488, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 215, 216, + 217, 218, 219, 1500, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 215, + 216, 217, 218, 219, 1501, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 215, 216, 217, 218, 219, 1502, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 215, 216, 217, 218, 219, 1517, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 215, 216, 217, 218, 219, 1518, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 215, 216, 217, 218, 219, 1519, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 0, 0, 0, 421, 215, 216, + 217, 218, 219, 0, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 0, + 0, 0, 497, 215, 216, 217, 218, 219, 0, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 0, 0, 0, 723, 215, 216, + 217, 218, 219, 0, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 0, + 0, 0, 786, 215, 216, 217, 218, 219, 0, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 0, 0, 0, 867, 215, 216, + 217, 218, 219, 0, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 0, + 0, 0, 1104, 215, 216, 217, 218, 219, 0, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 0, 0, 0, 1327, 215, 216, + 217, 218, 219, 0, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 0, + 363, 215, 216, 217, 218, 219, 0, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 0, 435, 215, 216, 217, 218, 219, 0, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 0, 437, 215, 216, 217, + 218, 219, 0, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 0, 438, + 215, 216, 217, 218, 219, 0, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 0, 440, 215, 216, 217, 218, 219, 0, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 0, 444, 215, 216, 217, 218, + 219, 0, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 0, 445, 215, + 216, 217, 218, 219, 0, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 0, 452, 215, 216, 217, 218, 219, 0, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 0, 489, 215, 216, 217, 218, 219, + 0, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 0, 492, 215, 216, + 217, 218, 219, 0, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 0, + 495, 215, 216, 217, 218, 219, 0, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 0, 501, 215, 216, 217, 218, 219, 0, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 0, 502, 215, 216, 217, + 218, 219, 0, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 0, 503, + 215, 216, 217, 218, 219, 0, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 0, 504, 215, 216, 217, 218, 219, 0, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 0, 505, 215, 216, 217, 218, + 219, 0, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 0, 506, 215, + 216, 217, 218, 219, 0, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 0, 507, 215, 216, 217, 218, 219, 0, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 0, 508, 215, 216, 217, 218, 219, + 0, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 0, 509, 215, 216, + 217, 218, 219, 0, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 0, + 510, 215, 216, 217, 218, 219, 0, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 0, 511, 215, 216, 217, 218, 219, 0, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 0, 513, 215, 216, 217, + 218, 219, 0, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 0, 514, + 215, 216, 217, 218, 219, 0, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 0, 515, 215, 216, 217, 218, 219, 0, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 0, 516, 215, 216, 217, 218, + 219, 0, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 0, 517, 215, + 216, 217, 218, 219, 0, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 0, 518, 215, 216, 217, 218, 219, 0, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 0, 591, 215, 216, 217, 218, 219, + 0, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 0, 594, 215, 216, + 217, 218, 219, 0, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 0, + 606, 215, 216, 217, 218, 219, 0, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 0, 607, 215, 216, 217, 218, 219, 0, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 0, 611, 215, 216, 217, + 218, 219, 0, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 0, 612, + 215, 216, 217, 218, 219, 0, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 0, 613, 215, 216, 217, 218, 219, 0, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 0, 614, 215, 216, 217, 218, + 219, 0, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 0, 615, 215, + 216, 217, 218, 219, 0, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 0, 657, 215, 216, 217, 218, 219, 0, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 0, 661, 215, 216, 217, 218, 219, + 0, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 0, 725, 215, 216, + 217, 218, 219, 0, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 0, + 787, 215, 216, 217, 218, 219, 0, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 0, 788, 215, 216, 217, 218, 219, 0, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 0, 789, 215, 216, 217, + 218, 219, 0, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 0, 790, + 215, 216, 217, 218, 219, 0, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 0, 829, 215, 216, 217, 218, 219, 0, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 0, 893, 215, 216, 217, 218, + 219, 0, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 0, 961, 215, + 216, 217, 218, 219, 0, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 0, 995, 215, 216, 217, 218, 219, 0, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 0, 1089, 215, 216, 217, 218, 219, + 0, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 0, 1093, 215, 216, + 217, 218, 219, 0, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 0, + 1095, 215, 216, 217, 218, 219, 0, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 0, 1226, 215, 216, 217, 218, 219, 0, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 0, 1228, 215, 216, 217, + 218, 219, 0, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 0, 1230, + 215, 216, 217, 218, 219, 0, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 0, 1253, 215, 216, 217, 218, 219, 0, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 0, 1254, 215, 216, 217, 218, + 219, 0, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229, 0, 1255, 215, + 216, 217, 218, 219, 0, 220, 221, 222, 223, 278, + 279, 226, 227, 228, 0, 0, 0, 0, 0, 229, + 0, 1408, 215, 216, 217, 218, 219, 0, 220, 221, + 222, 223, 278, 279, 226, 227, 228, 0, 0, 0, + 0, 0, 229, 0, 1409, 215, 216, 217, 218, 219, + 0, 220, 221, 222, 223, 278, 279, 226, 227, 228, + 0, 0, 0, 0, 0, 229, 0, 1410, 215, 216, + 217, 218, 219, 0, 220, 221, 222, 223, 278, 279, + 226, 227, 228, 0, 0, 0, 0, 0, 229, 0, + 1489, 215, 216, 217, 218, 219, 0, 220, 221, 222, + 223, 278, 279, 226, 227, 228, 0, 0, 0, 0, + 0, 229, 0, 1490, 215, 216, 217, 218, 219, 0, + 220, 221, 222, 223, 278, 279, 226, 227, 228, 0, + 0, 0, 0, 0, 229, 0, 1491, 215, 216, 217, + 218, 219, 0, 220, 221, 222, 223, 278, 279, 226, + 227, 228, 0, 0, 0, 0, 0, 229, 0, 1537, + 215, 216, 217, 218, 219, 0, 220, 221, 222, 223, + 278, 279, 226, 227, 228, 0, 0, 0, 0, 0, + 229, 0, 1538, 215, 216, 217, 218, 219, 0, 220, + 221, 222, 223, 278, 279, 226, 227, 228, 0, 0, + 0, 0, 0, 229, 0, 1539, 215, 216, 217, 218, + 219, 0, 220, 221, 222, 223, 278, 279, 226, 227, + 228, 0, 0, 0, 0, 0, 229 }; static const short yycheck[] = { 7, - 114, 874, 312, 1017, 4, 6, 38, 6, 949, 6, - 883, 4, 4, 59, 4, 23, 81, 890, 4, 60, - 60, 59, 1079, 4, 65, 65, 6, 4, 4, 34, - 174, 6, 37, 4, 178, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 174, - 162, 163, 177, 6, 143, 45, 162, 163, 162, 163, - 63, 63, 174, 63, 6, 177, 162, 163, 174, 170, - 174, 177, 63, 177, 7, 176, 162, 163, 162, 163, - 176, 84, 100, 101, 102, 103, 104, 6, 84, 4, - 176, 170, 176, 6, 1045, 6, 6, 176, 173, 168, - 118, 170, 120, 121, 122, 123, 34, 6, 6, 37, - 38, 6, 40, 131, 132, 133, 134, 173, 136, 137, - 176, 139, 140, 141, 6, 143, 177, 177, 176, 1196, - 6, 173, 162, 163, 162, 163, 177, 6, 42, 43, - 7, 159, 160, 40, 174, 7, 60, 175, 177, 37, - 38, 65, 40, 162, 163, 162, 163, 175, 6, 177, - 173, 179, 180, 1046, 6, 176, 176, 1050, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 176, - 176, 176, 173, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 162, - 163, 3, 4, 5, 173, 7, 1240, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 173, - 32, 173, 176, 162, 163, 162, 163, 162, 163, 162, - 163, 155, 162, 163, 158, 273, 274, 174, 173, 42, - 164, 176, 38, 281, 162, 163, 284, 162, 163, 38, - 288, 173, 162, 163, 292, 293, 294, 173, 296, 297, - 298, 299, 300, 301, 302, 175, 173, 154, 155, 156, - 157, 38, 154, 155, 156, 157, 314, 315, 316, 1182, - 1183, 1184, 1185, 173, 171, 172, 1189, 173, 326, 171, - 172, 174, 175, 173, 332, 3, 4, 5, 176, 6, - 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 34, 35, 36, 37, 38, 39, 40, - 41, 176, 43, 173, 45, 46, 176, 48, 49, 176, - 162, 163, 154, 155, 156, 157, 174, 171, 172, 177, - 162, 163, 174, 64, 1257, 1258, 38, 169, 1261, 171, - 172, 173, 162, 163, 174, 175, 178, 78, 79, 164, - 165, 166, 174, 175, 174, 170, 414, 415, 416, 417, - 418, 0, 1, 421, 3, 309, 310, 425, 174, 0, - 1, 177, 3, 162, 163, 176, 320, 34, 162, 163, - 37, 38, 6, 441, 174, 174, 5, 177, 446, 1312, - 174, 8, 173, 162, 163, 164, 165, 166, 173, 457, - 458, 170, 98, 99, 100, 101, 102, 138, 466, 151, - 152, 174, 174, 175, 177, 473, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 483, 484, 174, 170, 174, - 177, 489, 177, 174, 162, 163, 177, 174, 6, 1362, - 177, 169, 4, 501, 174, 173, 177, 177, 176, 4, - 508, 509, 510, 511, 53, 54, 55, 56, 6, 58, - 174, 174, 174, 177, 177, 177, 174, 38, 1391, 177, - 414, 415, 416, 833, 113, 114, 115, 116, 117, 118, - 119, 120, 113, 114, 115, 116, 117, 118, 119, 120, - 548, 51, 52, 178, 552, 553, 554, 171, 172, 5, - 139, 140, 50, 142, 174, 173, 173, 177, 173, 173, - 454, 173, 173, 173, 173, 173, 6, 681, 173, 173, - 173, 173, 580, 581, 173, 173, 173, 173, 173, 173, - 173, 148, 149, 150, 151, 152, 173, 173, 173, 597, - 6, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 6, 5, 173, 170, 176, 1478, 176, 173, 173, 142, - 177, 173, 176, 173, 147, 173, 173, 173, 173, 8, - 86, 6, 173, 176, 178, 633, 634, 170, 636, 176, - 176, 173, 173, 173, 173, 173, 169, 173, 173, 173, - 173, 174, 650, 651, 173, 6, 173, 173, 173, 173, - 148, 149, 150, 151, 152, 5, 173, 173, 173, 553, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 173, - 3, 4, 170, 173, 173, 569, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 1008, 173, - 173, 709, 173, 173, 173, 173, 173, 179, 6, 603, - 604, 605, 173, 173, 722, 173, 724, 725, 173, 5, - 174, 178, 175, 174, 732, 733, 734, 735, 736, 737, - 738, 739, 740, 741, 742, 743, 7, 7, 7, 7, - 82, 176, 179, 751, 752, 5, 754, 5, 131, 6, - 5, 5, 760, 5, 5, 5, 5, 5, 652, 148, - 149, 150, 151, 152, 5, 5, 5, 661, 5, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 5, 5, - 5, 170, 896, 5, 5, 5, 175, 148, 149, 150, - 151, 152, 5, 5, 5, 803, 5, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 5, 815, 5, 170, - 5, 5, 820, 821, 3, 148, 149, 150, 151, 152, - 5, 5, 4, 6, 5, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 6, 6, 169, 170, 6, 6, - 173, 7, 7, 176, 7, 853, 854, 7, 6, 6, - 148, 149, 150, 151, 152, 6, 179, 865, 7, 867, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 877, - 7, 7, 170, 177, 177, 176, 884, 885, 886, 176, - 7, 173, 7, 891, 145, 174, 174, 895, 5, 897, - 174, 148, 149, 150, 151, 152, 174, 174, 174, 174, - 908, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 174, 174, 174, 170, 808, 6, 924, 6, 174, 178, - 7, 174, 7, 7, 7, 7, 7, 935, 936, 937, - 938, 939, 940, 941, 942, 943, 944, 945, 946, 174, - 834, 174, 836, 174, 838, 174, 174, 955, 3, 4, - 5, 174, 960, 7, 9, 10, 11, 12, 13, 14, + 114, 4, 1055, 4, 4, 4, 318, 38, 6, 6, + 987, 1117, 81, 4, 6, 23, 4, 60, 60, 59, + 4, 59, 65, 65, 4, 4, 172, 143, 162, 163, + 6, 42, 43, 179, 162, 163, 6, 7, 162, 163, + 172, 162, 163, 0, 1, 179, 3, 179, 6, 42, + 178, 911, 180, 45, 178, 6, 180, 178, 7, 180, + 920, 162, 163, 162, 163, 162, 163, 927, 162, 163, + 162, 163, 63, 6, 178, 63, 180, 60, 179, 63, + 179, 178, 65, 63, 178, 173, 178, 162, 163, 162, + 163, 179, 100, 101, 102, 103, 104, 4, 174, 173, + 84, 174, 178, 178, 173, 84, 1083, 162, 163, 6, + 118, 6, 120, 121, 122, 123, 173, 7, 126, 6, + 173, 7, 179, 178, 132, 133, 134, 135, 1234, 137, + 138, 6, 140, 141, 142, 173, 144, 180, 180, 179, + 6, 179, 173, 162, 163, 156, 6, 174, 159, 6, + 6, 178, 160, 161, 165, 174, 113, 114, 115, 116, + 117, 118, 119, 120, 6, 162, 163, 174, 176, 6, + 178, 178, 180, 181, 173, 169, 179, 171, 179, 179, + 188, 179, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 179, 162, 163, 173, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 6, 1084, 1278, 3, 4, 1088, 162, + 163, 173, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 173, 162, 163, 7, 148, 149, + 150, 151, 148, 149, 150, 151, 173, 162, 163, 6, + 278, 279, 179, 162, 163, 162, 163, 173, 286, 169, + 170, 289, 34, 169, 170, 37, 294, 162, 163, 178, + 298, 299, 300, 173, 302, 303, 304, 305, 306, 307, + 308, 173, 162, 163, 315, 316, 162, 163, 37, 38, + 173, 40, 320, 321, 322, 326, 162, 163, 164, 165, + 166, 174, 38, 38, 332, 178, 172, 38, 3, 4, + 338, 178, 38, 180, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 174, 7, 174, 7, - 7, 174, 174, 174, 174, 993, 994, 995, 996, 997, - 998, 999, 7, 7, 1002, 1003, 174, 148, 149, 150, - 151, 152, 8, 176, 1012, 1013, 1014, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 175, 7, 174, 170, - 174, 174, 174, 1031, 1032, 6, 174, 174, 173, 173, - 1038, 173, 173, 173, 173, 173, 7, 7, 571, 572, - 1048, 574, 173, 173, 173, 578, 579, 173, 1056, 173, - 3, 141, 3, 1061, 3, 164, 1064, 148, 149, 150, - 151, 152, 3, 5, 3, 3, 6, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 3, 3, 1086, 170, - 3, 3, 3, 3, 3, 3, 3, 1095, 1096, 1097, - 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 993, - 994, 995, 635, 5, 3, 638, 1114, 162, 163, 6, - 178, 6, 6, 6, 169, 6, 6, 176, 173, 6, - 83, 176, 178, 174, 174, 658, 659, 175, 174, 178, - 175, 664, 665, 6, 174, 179, 175, 174, 671, 174, - 673, 174, 148, 149, 150, 151, 152, 1155, 6, 175, - 175, 174, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 174, 174, 174, 170, 174, 174, 700, 175, 702, - 174, 174, 174, 1181, 174, 174, 174, 710, 711, 712, - 175, 174, 715, 716, 717, 718, 719, 720, 721, 6, - 6, 6, 6, 6, 6, 6, 6, 6, 1206, 1207, - 1208, 1209, 1210, 1211, 1212, 1213, 1214, 6, 148, 149, - 150, 151, 152, 6, 1222, 6, 178, 6, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 1235, 141, 1237, - 170, 6, 6, 83, 7, 148, 149, 150, 151, 152, - 4, 3, 3, 6, 3, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 6, 164, 6, 170, 6, 6, - 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276, 1277, - 1278, 1279, 3, 6, 1282, 148, 149, 150, 151, 152, - 6, 3, 6, 3, 3, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 3, 6, 84, 170, 176, 7, - 4, 177, 1310, 1311, 176, 6, 175, 174, 80, 174, - 174, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 1327, - 1328, 175, 1330, 174, 1332, 174, 174, 860, 1336, 175, - 863, 175, 175, 175, 174, 868, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 175, 174, 178, 170, 6, - 176, 1359, 1360, 83, 887, 6, 1364, 1365, 1366, 1367, - 1368, 1369, 3, 34, 35, 36, 37, 38, 39, 40, - 41, 6, 43, 6, 45, 46, 3, 48, 49, 1387, - 6, 6, 6, 6, 1392, 1393, 1394, 1395, 1396, 1397, - 1398, 1399, 1400, 64, 6, 6, 3, 6, 178, 5, - 178, 6, 6, 4, 6, 5, 177, 78, 79, 176, - 175, 4, 1420, 1421, 1422, 1423, 1424, 1425, 1426, 174, - 1428, 174, 1430, 174, 63, 174, 6, 6, 6, 175, - 174, 6, 175, 174, 174, 174, 6, 6, 6, 6, - 1448, 1449, 1450, 6, 6, 5, 5, 179, 177, 174, - 80, 174, 6, 174, 1462, 1463, 1464, 1465, 1466, 1467, - 175, 175, 174, 176, 174, 6, 5, 138, 174, 174, - 5, 1479, 1480, 1481, 1482, 6, 1484, 176, 1486, 176, - 175, 177, 176, 174, 174, 178, 175, 6, 80, 177, - 177, 6, 6, 84, 6, 6, 6, 6, 1506, 1507, - 1508, 1034, 176, 147, 1037, 174, 177, 1515, 174, 1517, - 174, 1519, 174, 176, 6, 176, 176, 175, 174, 6, - 3, 4, 6, 176, 6, 1058, 9, 10, 11, 12, + 25, 26, 27, 28, 29, 30, 178, 178, 180, 180, + 1220, 1221, 1222, 1223, 169, 170, 178, 1227, 180, 40, + 175, 8, 177, 178, 6, 152, 153, 154, 155, 156, + 179, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 34, 168, 179, 37, 38, 172, 173, 179, 148, 149, + 150, 151, 179, 34, 169, 170, 37, 38, 178, 40, + 180, 422, 423, 424, 422, 423, 424, 425, 426, 169, + 170, 429, 169, 170, 179, 178, 434, 180, 175, 5, + 177, 0, 1, 173, 3, 1295, 1296, 173, 446, 1299, + 6, 169, 170, 451, 164, 165, 166, 175, 456, 177, + 169, 170, 172, 464, 4, 178, 175, 180, 177, 467, + 468, 169, 170, 4, 169, 170, 38, 175, 476, 177, + 175, 178, 177, 180, 173, 483, 53, 54, 55, 56, + 178, 58, 180, 169, 170, 493, 494, 162, 163, 178, + 1350, 180, 500, 168, 178, 178, 180, 180, 173, 173, + 178, 176, 180, 173, 512, 98, 99, 100, 101, 102, + 173, 519, 520, 521, 522, 152, 153, 154, 155, 156, + 173, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 178, 173, 180, 51, 52, 172, 169, 170, 173, 173, + 1400, 5, 5, 180, 113, 114, 115, 116, 117, 118, + 119, 120, 560, 561, 562, 563, 564, 565, 870, 173, + 571, 173, 570, 571, 572, 173, 173, 173, 173, 1429, + 139, 140, 173, 142, 173, 173, 587, 155, 156, 173, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 703, + 173, 599, 600, 601, 172, 6, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 173, 173, 6, 173, 617, + 172, 6, 623, 624, 625, 173, 173, 173, 179, 173, + 173, 86, 173, 6, 179, 173, 143, 179, 173, 173, + 173, 148, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 177, 653, 654, 179, 656, 179, + 179, 173, 172, 170, 173, 5, 1516, 174, 175, 173, + 173, 173, 173, 674, 672, 673, 173, 173, 173, 3, + 4, 5, 683, 173, 173, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 173, 3, 4, + 5, 173, 173, 173, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 173, 173, 173, 173, + 173, 173, 740, 173, 1046, 173, 173, 173, 173, 178, + 173, 173, 173, 173, 173, 753, 180, 755, 756, 174, + 178, 5, 175, 177, 7, 763, 764, 765, 766, 767, + 768, 769, 770, 771, 772, 773, 774, 7, 7, 7, + 82, 179, 175, 5, 782, 783, 5, 785, 5, 5, + 3, 4, 131, 791, 5, 5, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 6, 6, - 6, 6, 6, 174, 3, 4, 174, 176, 174, 1092, + 23, 24, 25, 26, 27, 28, 29, 30, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 933, + 5, 5, 5, 5, 5, 5, 5, 5, 162, 163, + 5, 839, 5, 844, 168, 3, 5, 7, 5, 173, + 6, 5, 4, 851, 852, 179, 6, 6, 6, 857, + 858, 6, 175, 7, 7, 7, 6, 162, 163, 6, + 871, 7, 873, 168, 875, 7, 7, 180, 173, 180, + 179, 179, 7, 173, 179, 7, 145, 178, 5, 178, + 178, 178, 890, 891, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 902, 178, 904, 178, 178, 6, + 178, 178, 178, 178, 178, 178, 914, 178, 178, 174, + 178, 178, 178, 921, 922, 923, 178, 178, 178, 6, + 928, 6, 6, 179, 932, 7, 934, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 946, 162, + 163, 7, 173, 50, 6, 168, 7, 7, 173, 173, + 173, 8, 3, 3, 962, 173, 179, 173, 173, 173, + 173, 173, 173, 173, 173, 973, 974, 975, 976, 977, + 978, 979, 980, 981, 982, 983, 984, 3, 141, 3, + 3, 3, 3, 3, 3, 993, 3, 4, 164, 3, + 998, 3, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 3, 3, 3, 178, 3, 5, + 1031, 1032, 1033, 1031, 1032, 1033, 1034, 1035, 1036, 1037, + 5, 179, 1040, 1041, 6, 3, 6, 177, 83, 6, + 6, 6, 1050, 1051, 1052, 152, 153, 154, 155, 156, + 6, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 6, 1069, 1070, 6, 177, 172, 178, 178, 1076, 174, + 174, 174, 589, 590, 174, 592, 178, 178, 1086, 596, + 597, 178, 178, 174, 178, 178, 1094, 6, 178, 178, + 178, 1099, 178, 174, 1102, 152, 153, 154, 155, 156, + 6, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 178, 178, 175, 178, 178, 172, 1124, 174, 174, 178, + 178, 6, 6, 178, 177, 1133, 1134, 1135, 1136, 1137, + 1138, 1139, 1140, 1141, 1142, 1143, 1144, 6, 655, 6, + 6, 658, 6, 6, 1152, 162, 163, 6, 6, 6, + 6, 168, 6, 6, 6, 6, 173, 7, 83, 177, + 4, 3, 179, 680, 681, 6, 3, 6, 6, 686, + 687, 164, 6, 6, 3, 6, 693, 3, 695, 6, + 152, 153, 154, 155, 156, 1193, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 152, 153, 154, 155, 156, + 172, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 6, 1219, 729, 3, 731, 172, 3, 6, 3, 3, + 6, 178, 84, 180, 741, 742, 743, 7, 179, 746, + 747, 748, 749, 750, 751, 752, 1244, 1245, 1246, 1247, + 1248, 1249, 1250, 1251, 1252, 4, 180, 179, 80, 6, + 174, 178, 1260, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 1273, 178, 1275, 152, 153, + 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 174, 178, 178, 174, 174, 172, 178, + 6, 174, 174, 179, 174, 83, 6, 178, 1306, 1307, + 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, + 178, 3, 1320, 152, 153, 154, 155, 156, 8, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 177, 6, + 6, 3, 6, 172, 177, 6, 6, 6, 6, 6, + 1348, 1349, 3, 6, 6, 5, 5, 177, 6, 1357, + 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 4, + 1368, 180, 1370, 6, 179, 4, 1374, 180, 178, 178, + 178, 178, 174, 6, 174, 178, 174, 178, 63, 178, + 897, 6, 6, 900, 178, 6, 6, 6, 905, 1397, + 1398, 6, 6, 6, 1402, 1403, 1404, 1405, 1406, 1407, + 6, 6, 5, 175, 5, 178, 180, 924, 178, 178, + 174, 174, 178, 178, 80, 6, 178, 1425, 178, 6, + 5, 179, 1430, 1431, 1432, 1433, 1434, 1435, 1436, 1437, + 1438, 154, 155, 156, 179, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 179, 5, 180, 6, 179, 172, + 1458, 1459, 1460, 1461, 1462, 1463, 1464, 178, 1466, 178, + 1468, 174, 152, 153, 154, 155, 156, 174, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 177, 1486, 1487, + 1488, 180, 172, 180, 80, 6, 6, 84, 6, 6, + 6, 6, 1500, 1501, 1502, 1503, 1504, 1505, 6, 179, + 178, 147, 6, 178, 6, 178, 6, 6, 6, 1517, + 1518, 1519, 1520, 178, 1522, 179, 1524, 174, 6, 152, + 153, 154, 155, 156, 179, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 6, 179, 1544, 1545, 1546, 172, + 178, 178, 178, 6, 179, 1553, 178, 1555, 179, 1557, + 179, 6, 174, 6, 6, 6, 1073, 6, 1075, 6, + 0, 179, 179, 179, 0, 6, 1242, 6, 6, 601, + 895, -1, -1, 627, 3, 4, 5, -1, 7, 1096, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 176, 3, 4, 6, 175, 6, 176, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 3, 4, 6, 0, 176, 6, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 176, - 6, 3, 4, 0, 858, 1178, 1179, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 6, - 607, 6, 1205, 6, 1204, 581, -1, -1, -1, 162, - 163, 6, -1, -1, -1, -1, 169, -1, -1, -1, - 173, -1, -1, 176, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 162, 163, -1, 170, 6, -1, -1, - 169, 1254, -1, -1, 173, -1, -1, 176, 148, 149, - 150, 151, 152, -1, 1267, -1, -1, -1, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 6, -1, 169, - 170, -1, -1, 173, 34, 35, 36, 37, 38, 39, - 40, 41, -1, 43, -1, 45, 46, -1, 48, 49, - 162, 163, -1, -1, -1, -1, -1, 169, 6, -1, - 1313, 173, -1, -1, 64, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 78, 79, - 162, 163, 6, -1, -1, -1, -1, 169, -1, -1, - -1, 173, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 148, 149, 150, 151, 152, 6, -1, - 1363, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, -1, -1, -1, -1, - -1, 6, -1, -1, -1, -1, -1, 1390, 138, 148, - 149, 150, 151, 152, -1, -1, -1, -1, -1, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 6, -1, - -1, 170, -1, -1, -1, 1418, -1, -1, -1, 148, - 149, 150, 151, 152, -1, -1, -1, -1, -1, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 6, -1, - -1, 170, -1, -1, 1447, -1, -1, -1, -1, -1, - 148, 149, 150, 151, 152, -1, -1, -1, 1461, -1, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 6, - -1, -1, 170, -1, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 6, -1, -1, 170, -1, -1, -1, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 6, - -1, -1, 170, 148, 149, 150, 151, 152, -1, -1, - -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 6, -1, -1, 170, -1, -1, -1, -1, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 6, - -1, -1, 170, -1, -1, -1, -1, -1, -1, -1, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 6, - -1, -1, 170, -1, -1, -1, -1, -1, -1, -1, - -1, 148, 149, 150, 151, 152, -1, -1, -1, -1, - -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 8, -1, -1, 170, -1, 148, 149, 150, 151, 152, - -1, -1, -1, -1, -1, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 8, -1, -1, 170, -1, -1, - -1, 148, 149, 150, 151, 152, -1, -1, -1, -1, - -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 8, -1, -1, 170, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 8, -1, -1, 170, -1, -1, -1, - -1, 148, 149, 150, 151, 152, -1, -1, -1, -1, + 29, 30, -1, 32, 6, -1, -1, -1, 3, 4, + -1, -1, -1, 1130, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 3, 4, -1, -1, + -1, -1, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, -1, -1, 3, 4, -1, -1, + -1, -1, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, -1, -1, -1, -1, -1, 1216, + 1217, -1, -1, 152, 153, 154, 155, 156, -1, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, 148, + 149, 150, 151, 172, -1, -1, 1243, -1, -1, -1, + -1, -1, -1, 162, 163, -1, -1, -1, -1, 168, + 169, 170, -1, -1, 173, -1, 175, -1, 177, -1, + 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, 162, 163, -1, + 172, -1, -1, 168, -1, 1292, -1, -1, 173, -1, + -1, 176, -1, -1, -1, -1, -1, -1, 1305, -1, + -1, -1, -1, -1, -1, 162, 163, -1, -1, -1, + -1, 168, -1, -1, -1, -1, 173, -1, -1, 176, + -1, -1, -1, -1, -1, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, - -1, 148, 149, 150, 151, 152, -1, -1, -1, -1, + -1, 168, 3, 4, 1351, 172, 173, -1, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 6, -1, -1, -1, 3, + 4, -1, -1, -1, 1401, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 3, 4, -1, + -1, 1428, -1, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 3, 4, -1, -1, 1456, + -1, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 6, -1, -1, -1, -1, 1485, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, + -1, -1, 1499, -1, -1, -1, -1, -1, -1, -1, + -1, 162, 163, 6, -1, -1, -1, 168, -1, -1, + -1, -1, 173, -1, -1, -1, 152, 153, 154, 155, + 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 152, 153, 154, 155, 156, 172, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 6, -1, 162, 163, + -1, 172, -1, -1, 168, -1, -1, -1, -1, 173, + -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 162, 163, -1, -1, + -1, -1, 168, 6, -1, -1, -1, 173, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, + -1, -1, -1, -1, 162, 163, -1, -1, -1, -1, + 168, -1, -1, 6, -1, 173, -1, -1, -1, 152, + 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 152, 153, 154, 155, 156, 172, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 152, + 153, 154, 155, 156, 172, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 6, -1, -1, -1, -1, 172, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 152, 153, 154, 155, 156, -1, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 152, 153, 154, + 155, 156, 172, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 6, -1, -1, -1, -1, 172, -1, 152, + 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 152, 153, 154, 155, 156, 172, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 152, + 153, 154, 155, 156, 172, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 6, -1, -1, -1, -1, 172, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, + 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 152, 153, 154, 155, 156, + 172, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 6, -1, -1, -1, -1, 172, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 152, 153, + 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 6, -1, -1, -1, -1, 172, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, + 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 152, 153, 154, 155, 156, + 172, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 152, 153, 154, 155, 156, 172, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 6, -1, -1, -1, -1, + 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 8, -1, -1, -1, 152, 153, 154, 155, + 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 152, 153, 154, 155, 156, 172, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 8, -1, -1, -1, + -1, 172, -1, -1, -1, -1, -1, -1, -1, 152, + 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 152, 153, 154, 155, 156, 172, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 152, + 153, 154, 155, 156, 172, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 8, -1, -1, -1, -1, 172, + -1, -1, -1, -1, -1, 141, -1, -1, -1, 8, + -1, -1, -1, -1, -1, -1, 152, 153, 154, 155, + 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 152, 153, 154, 155, 156, 172, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 152, 153, 154, 155, + 156, 172, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 141, -1, -1, -1, -1, + 172, -1, -1, -1, -1, -1, 152, 153, 154, 155, + 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 152, 153, + 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 152, 153, 154, 155, 156, 172, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, 34, 35, 36, 37, 38, 39, + 40, 41, -1, 43, -1, 45, 46, -1, 48, 49, + -1, 34, 35, 36, 37, 38, 39, 40, 41, -1, + 43, -1, 45, 46, 64, 48, 49, -1, -1, 0, + 1, -1, -1, 4, -1, -1, -1, -1, 78, 79, + -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 78, 79, -1, -1, -1, + 31, -1, 33, 34, 35, 36, 37, 38, 39, 40, + 41, -1, 43, 44, 45, 46, 47, 48, 49, -1, + -1, -1, 53, 54, 55, 56, 57, 58, -1, 60, + 61, 62, 63, 64, -1, -1, -1, -1, 138, -1, + -1, -1, -1, -1, 37, -1, -1, 78, 79, -1, + -1, -1, -1, -1, 85, 138, 87, 88, 89, 90, + -1, 92, 93, 94, 34, 35, 36, 37, 38, 39, + 40, 41, -1, 43, -1, 45, 46, -1, 48, 49, + 180, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 64, -1, -1, 180, -1, -1, + -1, -1, 95, 96, 97, -1, -1, 138, 78, 79, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + -1, -1, -1, -1, -1, -1, -1, -1, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, -1, 132, + 133, 134, 135, 136, 137, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, -1, -1, -1, -1, -1, -1, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 172, -1, -1, 138, -1, + -1, 178, -1, 180, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, - 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, 148, 149, 150, 151, 152, 0, 1, - -1, -1, 4, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, - -1, 33, 34, 35, 36, 37, 38, 39, 40, 41, - -1, 43, 44, 45, 46, 47, 48, 49, -1, -1, - -1, 53, 54, 55, 56, 57, 58, 37, 60, 61, - 62, 63, 64, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 78, 79, -1, -1, - -1, -1, -1, 85, -1, 87, 88, 89, 90, 141, - 92, 93, 94, -1, -1, -1, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 95, 96, 97, 170, -1, - -1, -1, -1, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, -1, -1, -1, 138, -1, -1, -1, - -1, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, -1, 132, 133, 134, 135, 136, 137, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, - 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, 148, 149, 150, 151, 152, -1, -1, -1, -1, - 180, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, 148, 149, 150, 151, 152, -1, - -1, -1, -1, 180, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, 148, 149, 150, - 151, 152, -1, -1, -1, -1, 180, 158, 159, 160, - 161, 162, 163, 164, 165, 166, -1, -1, -1, 170, - 148, 149, 150, 151, 152, -1, -1, -1, -1, 180, - 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, 148, 149, 150, 151, 152, -1, -1, - -1, -1, 180, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, -1, -1, -1, 174, - -1, -1, 177, 148, 149, 150, 151, 152, -1, -1, - -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, -1, -1, -1, 174, - -1, -1, 177, 148, 149, 150, 151, 152, -1, -1, - -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, -1, -1, -1, 174, - -1, -1, 177, 148, 149, 150, 151, 152, -1, -1, - -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, 148, 149, 150, 151, - 152, -1, 177, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, 148, - 149, 150, 151, 152, -1, 177, -1, -1, -1, 158, + -1, -1, -1, -1, 172, -1, -1, -1, -1, -1, + 178, -1, 180, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, - -1, 170, 148, 149, 150, 151, 152, -1, 177, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, 148, 149, 150, 151, 152, - -1, 177, -1, -1, -1, 158, 159, 160, 161, 162, - 163, 164, 165, 166, -1, -1, -1, 170, 148, 149, - 150, 151, 152, -1, 177, -1, -1, -1, 158, 159, + -1, -1, -1, 172, -1, -1, 152, 153, 154, 155, + 156, 180, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, -1, -1, 152, + 153, 154, 155, 156, 180, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 144, -1, -1, -1, -1, 172, + -1, -1, 152, 153, 154, 155, 156, 180, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 152, 153, 154, + 155, 156, 172, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, -1, -1, + 152, 153, 154, 155, 156, 180, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, -1, -1, 152, 153, 154, 155, 156, 180, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, -1, -1, 152, 153, 154, 155, + 156, 180, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, -1, -1, 152, + 153, 154, 155, 156, 180, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + -1, -1, 152, 153, 154, 155, 156, 180, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, 148, 149, 150, 151, 152, -1, 177, -1, -1, - -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, 148, 149, 150, 151, 152, -1, - 177, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, 148, 149, 150, - 151, 152, -1, 177, -1, -1, -1, 158, 159, 160, - 161, 162, 163, 164, 165, 166, -1, -1, -1, 170, - 148, 149, 150, 151, 152, -1, 177, -1, -1, -1, + -1, -1, 172, -1, -1, 152, 153, 154, 155, 156, + 180, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, -1, -1, -1, -1, 172, -1, -1, 152, 153, + 154, 155, 156, 180, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, -1, + -1, 152, 153, 154, 155, 156, 180, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, -1, -1, 152, 153, 154, 155, 156, 180, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, 148, 149, 150, 151, 152, -1, 177, - -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, 148, 149, 150, 151, - 152, -1, 177, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, 148, - 149, 150, 151, 152, -1, 177, -1, -1, -1, 158, + -1, -1, -1, -1, 172, -1, -1, 152, 153, 154, + 155, 156, 180, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, -1, -1, + 152, 153, 154, 155, 156, 180, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, -1, -1, 152, 153, 154, 155, 156, 180, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, - -1, 170, 148, 149, 150, 151, 152, -1, 177, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, 148, 149, 150, 151, 152, - -1, 177, -1, -1, -1, 158, 159, 160, 161, 162, - 163, 164, 165, 166, -1, -1, -1, 170, 148, 149, - 150, 151, 152, -1, 177, -1, -1, -1, 158, 159, + -1, -1, -1, 172, -1, -1, 152, 153, 154, 155, + 156, 180, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, -1, -1, 152, + 153, 154, 155, 156, 180, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + -1, -1, 152, 153, 154, 155, 156, 180, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, 148, 149, 150, 151, 152, -1, 177, -1, -1, - -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, 148, 149, 150, 151, 152, -1, - 177, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, 148, 149, 150, - 151, 152, -1, 177, -1, -1, -1, 158, 159, 160, - 161, 162, 163, 164, 165, 166, -1, -1, -1, 170, - 148, 149, 150, 151, 152, -1, 177, -1, -1, -1, - 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, 174, 175, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, 172, -1, -1, 152, 153, 154, 155, 156, + 180, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, -1, -1, -1, -1, 172, -1, 174, -1, -1, + -1, 178, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, -1, 175, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, -1, 175, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - -1, 175, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, -1, 175, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, -1, 175, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, -1, 172, 152, 153, 154, 155, 156, + 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, -1, -1, -1, -1, 172, 152, 153, 154, 155, + 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, 152, 153, 154, + 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, 152, 153, + 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, 152, + 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, -1, 175, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, -1, 175, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - -1, 175, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, -1, 175, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, -1, 175, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, -1, 172, 152, 153, 154, 155, 156, + 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, -1, -1, -1, -1, 172, 152, 153, 154, 155, + 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, 152, 153, 154, + 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, 152, 153, + 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, 152, + 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, -1, 175, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, -1, 175, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - -1, 175, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, -1, 175, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, -1, 175, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, -1, 172, 152, 153, 154, 155, 156, + 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, -1, -1, -1, -1, 172, 152, 153, 154, 155, + 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, 152, 153, 154, + 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, 152, 153, + 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, 152, + 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, -1, 175, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, -1, 175, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - -1, 175, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, -1, 175, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, -1, 175, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, -1, 172, 152, 153, 154, 155, 156, + 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, -1, -1, -1, -1, 172, 152, 153, 154, 155, + 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, 152, 153, 154, + 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, 152, 153, + 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, 152, + 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, -1, 175, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, -1, 175, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - -1, 175, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, -1, 175, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, -1, 175, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, -1, 172, 152, 153, 154, 155, 156, + 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, -1, -1, -1, -1, 172, 152, 153, 154, 155, + 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, 152, 153, 154, + 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, 152, 153, + 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, 152, + 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, -1, 175, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, -1, 175, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - -1, 175, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, -1, 175, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, -1, 175, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, -1, 172, 152, 153, 154, 155, 156, + 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, -1, -1, -1, -1, 172, 152, 153, 154, 155, + 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, 152, 153, 154, + 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, 152, 153, + 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, 152, + 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, -1, 175, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, -1, 175, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - -1, 175, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, -1, 175, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, -1, 175, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, -1, 172, 152, 153, 154, 155, 156, + 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, -1, -1, -1, -1, 172, 152, 153, 154, 155, + 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, 152, 153, 154, + 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, 152, 153, + 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, 152, + 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, -1, 175, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, -1, 175, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - -1, 175, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, -1, 175, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, -1, 175, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, -1, 172, 152, 153, 154, 155, 156, + 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, -1, -1, -1, -1, 172, 152, 153, 154, 155, + 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, 152, 153, 154, + 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, 152, 153, + 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, 152, + 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, -1, 175, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, -1, 175, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - -1, 175, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, -1, 175, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, -1, 175, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, -1, 172, 152, 153, 154, 155, 156, + 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 146, -1, -1, -1, -1, 172, 152, 153, 154, 155, + 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 152, 153, 154, 155, 156, 172, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, -1, 175, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, -1, 175, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - -1, 175, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, -1, 175, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, -1, 175, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, -1, 172, 152, 153, 154, 155, 156, + 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, -1, -1, -1, -1, 172, 152, 153, 154, 155, + 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, 152, 153, 154, + 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, 152, 153, + 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, 152, + 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, -1, 175, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, -1, 175, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - -1, 175, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, -1, 175, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, -1, 175, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, -1, 172, 152, 153, 154, 155, 156, + 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, -1, -1, -1, -1, 172, 152, 153, 154, 155, + 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, 152, 153, 154, + 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, 152, 153, + 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, 152, + 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, 152, 153, 154, 155, 156, 178, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, -1, 175, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, -1, 175, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - -1, 175, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, -1, 175, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, 172, 152, 153, 154, 155, 156, 178, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, -1, -1, -1, 176, 152, 153, + 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, -1, + -1, -1, 176, 152, 153, 154, 155, 156, -1, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, -1, -1, -1, 176, 152, 153, + 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, -1, + -1, -1, 176, 152, 153, 154, 155, 156, -1, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, -1, -1, -1, 176, 152, 153, + 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, -1, + -1, -1, 176, 152, 153, 154, 155, 156, -1, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, -1, -1, -1, 176, 152, 153, + 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, -1, + 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, -1, 175, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, -1, 172, -1, 174, 152, 153, 154, + 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, -1, 174, + 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, -1, 174, 152, 153, 154, 155, + 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, -1, 174, 152, + 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, -1, 175, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, -1, 175, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - -1, 175, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, -1, 175, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, 172, -1, 174, 152, 153, 154, 155, 156, + -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, -1, -1, -1, -1, 172, -1, 174, 152, 153, + 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, -1, + 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, -1, 175, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, -1, 172, -1, 174, 152, 153, 154, + 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, -1, 174, + 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, -1, 174, 152, 153, 154, 155, + 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, -1, 174, 152, + 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, -1, 175, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, 174, 148, 149, 150, 151, 152, -1, -1, - -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, -1, -1, -1, 174, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, - 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, 174, 148, 149, 150, - 151, 152, -1, -1, -1, -1, -1, 158, 159, 160, - 161, 162, 163, 164, 165, 166, -1, -1, -1, 170, - -1, -1, -1, 174, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - 174, 148, 149, 150, 151, 152, -1, -1, -1, -1, + -1, -1, 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, 144, -1, -1, 174, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, -1, -1, 172, -1, 174, 152, 153, + 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, -1, + 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, -1, 174, 152, 153, 154, 155, 156, -1, + 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, + -1, -1, -1, -1, 172, -1, 174, 152, 153, 154, + 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, -1, 174, + 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, -1, 174, 152, 153, 154, 155, + 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, -1, 174, 152, + 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, 148, 149, 150, 151, 152, -1, -1, -1, -1, + -1, -1, 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, -1, -1, -1, 174, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, - 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, 174, 148, 149, 150, 151, 152, - -1, -1, -1, -1, -1, 158, 159, 160, 161, 162, - 163, 164, 165, 166, -1, -1, -1, 170, -1, -1, - -1, 174, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, 174, 148, - 149, 150, 151, 152, -1, -1, -1, -1, -1, 158, - 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, - -1, 170, -1, -1, -1, 174, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, 174, 148, 149, 150, 151, 152, -1, -1, - -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, -1, -1, -1, 174, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 172, -1, 174, 152, 153, + 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, -1, + 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, 174, 148, 149, 150, - 151, 152, -1, -1, -1, -1, -1, 158, 159, 160, - 161, 162, 163, 164, 165, 166, -1, -1, -1, 170, - -1, -1, -1, 174, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - 174, 148, 149, 150, 151, 152, -1, -1, -1, -1, - -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, -1, -1, -1, 174, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, - 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, 174, 148, 149, 150, 151, 152, - -1, -1, -1, -1, -1, 158, 159, 160, 161, 162, - 163, 164, 165, 166, -1, -1, -1, 170, -1, -1, - -1, 174, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, 174, 148, - 149, 150, 151, 152, -1, -1, -1, -1, -1, 158, + -1, -1, -1, -1, 172, -1, 174, 152, 153, 154, + 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, -1, 174, + 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, - -1, 170, -1, -1, -1, 174, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, 174, 148, 149, 150, 151, 152, -1, -1, - -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, -1, -1, -1, 174, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, - 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, 174, 148, 149, 150, - 151, 152, -1, -1, -1, -1, -1, 158, 159, 160, - 161, 162, 163, 164, 165, 166, -1, -1, -1, 170, - -1, -1, -1, 174, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - 174, 148, 149, 150, 151, 152, -1, -1, -1, -1, - -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, -1, -1, -1, 174, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, 172, -1, 174, 152, 153, 154, 155, + 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, -1, 174, 152, + 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, 174, 148, 149, 150, 151, 152, - -1, -1, -1, -1, -1, 158, 159, 160, 161, 162, - 163, 164, 165, 166, -1, -1, -1, 170, -1, -1, - -1, 174, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, 174, 148, - 149, 150, 151, 152, -1, -1, -1, -1, -1, 158, - 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, - -1, 170, -1, -1, -1, 174, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, 174, 148, 149, 150, 151, 152, -1, -1, - -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, -1, -1, -1, 174, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, - 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, 174, 148, 149, 150, - 151, 152, -1, -1, -1, -1, -1, 158, 159, 160, - 161, 162, 163, 164, 165, 166, -1, -1, -1, 170, - -1, -1, -1, 174, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - 174, 148, 149, 150, 151, 152, -1, -1, -1, -1, + -1, -1, 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, -1, -1, -1, 174, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, - 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, 174, 148, 149, 150, 151, 152, - -1, -1, -1, -1, -1, 158, 159, 160, 161, 162, - 163, 164, 165, 166, -1, -1, -1, 170, -1, -1, - -1, 174, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, 174, 148, - 149, 150, 151, 152, -1, -1, -1, -1, -1, 158, - 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, - -1, 170, -1, -1, -1, 174, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, 174, 148, 149, 150, 151, 152, -1, -1, - -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, -1, -1, -1, 174, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 172, -1, 174, 152, 153, + 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, -1, + 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, 174, 148, 149, 150, - 151, 152, -1, -1, -1, -1, -1, 158, 159, 160, - 161, 162, 163, 164, 165, 166, -1, -1, -1, 170, - -1, -1, -1, 174, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - 174, 148, 149, 150, 151, 152, -1, -1, -1, -1, - -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, -1, -1, -1, 174, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, - 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, 174, 148, 149, 150, 151, 152, - -1, -1, -1, -1, -1, 158, 159, 160, 161, 162, - 163, 164, 165, 166, -1, -1, -1, 170, -1, -1, - -1, 174, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, 174, 148, - 149, 150, 151, 152, -1, -1, -1, -1, -1, 158, + -1, -1, -1, -1, 172, -1, 174, 152, 153, 154, + 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, -1, 174, + 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, - -1, 170, -1, -1, -1, 174, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, 174, 148, 149, 150, 151, 152, -1, -1, - -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, -1, -1, -1, 174, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, - 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, 174, 148, 149, 150, - 151, 152, -1, -1, -1, -1, -1, 158, 159, 160, - 161, 162, 163, 164, 165, 166, -1, -1, -1, 170, - -1, -1, -1, 174, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - 174, 148, 149, 150, 151, 152, -1, -1, -1, -1, - -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, -1, -1, -1, 174, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, 172, -1, 174, 152, 153, 154, 155, + 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, -1, 174, 152, + 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, 174, 148, 149, 150, 151, 152, - -1, -1, -1, -1, -1, 158, 159, 160, 161, 162, - 163, 164, 165, 166, -1, -1, -1, 170, -1, -1, - -1, 174, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, 174, 148, - 149, 150, 151, 152, -1, -1, -1, -1, -1, 158, - 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, - -1, 170, -1, -1, -1, 174, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, 174, 148, 149, 150, 151, 152, -1, -1, - -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, -1, -1, -1, 174, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, - 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, 174, 148, 149, 150, - 151, 152, -1, -1, -1, -1, -1, 158, 159, 160, - 161, 162, 163, 164, 165, 166, -1, -1, -1, 170, - -1, -1, -1, 174, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - 174, 148, 149, 150, 151, 152, -1, -1, -1, -1, + -1, -1, 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, -1, -1, -1, 174, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, - 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, 174, 148, 149, 150, 151, 152, - -1, -1, -1, -1, -1, 158, 159, 160, 161, 162, - 163, 164, 165, 166, -1, -1, -1, 170, -1, -1, - -1, 174, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, 174, 148, - 149, 150, 151, 152, -1, -1, -1, -1, -1, 158, - 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, - -1, 170, -1, -1, -1, 174, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, 174, 148, 149, 150, 151, 152, -1, -1, - -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, -1, -1, -1, 174, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 172, -1, 174, 152, 153, + 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, -1, + 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, 174, 148, 149, 150, - 151, 152, -1, -1, -1, -1, -1, 158, 159, 160, - 161, 162, 163, 164, 165, 166, -1, -1, -1, 170, - -1, -1, -1, 174, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - 174, 148, 149, 150, 151, 152, -1, -1, -1, -1, - -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, -1, -1, -1, 174, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, - 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, 174, 148, 149, 150, 151, 152, - -1, -1, -1, -1, -1, 158, 159, 160, 161, 162, - 163, 164, 165, 166, -1, -1, -1, 170, -1, -1, - -1, 174, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, 174, 148, - 149, 150, 151, 152, -1, -1, -1, -1, -1, 158, + -1, -1, -1, -1, 172, -1, 174, 152, 153, 154, + 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, -1, 174, + 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, - -1, 170, -1, -1, -1, 174, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, 174, 148, 149, 150, 151, 152, -1, -1, - -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, -1, -1, -1, 174, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, - 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, 174, 148, 149, 150, - 151, 152, -1, -1, -1, -1, -1, 158, 159, 160, - 161, 162, 163, 164, 165, 166, -1, -1, -1, 170, - -1, -1, -1, 174, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - 174, 148, 149, 150, 151, 152, -1, -1, -1, -1, - -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, -1, -1, -1, 174, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, + -1, -1, -1, 172, -1, 174, 152, 153, 154, 155, + 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172, -1, 174, 152, + 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, -1, -1, -1, -1, 172, + -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, 174, 148, 149, 150, 151, 152, - -1, -1, -1, -1, -1, 158, 159, 160, 161, 162, - 163, 164, 165, 166, -1, -1, -1, 170, -1, -1, - -1, 174, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, 174, 148, - 149, 150, 151, 152, -1, -1, -1, -1, -1, 158, - 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, - -1, 170, -1, -1, -1, 174, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, 174, 148, 149, 150, 151, 152, -1, -1, - -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, -1, -1, -1, 174, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, - 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, 174, 148, 149, 150, - 151, 152, -1, -1, -1, -1, -1, 158, 159, 160, - 161, 162, 163, 164, 165, 166, -1, -1, -1, 170, - -1, -1, -1, 174, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, -1, - 174, 148, 149, 150, 151, 152, -1, -1, -1, -1, + -1, -1, 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, -1, -1, -1, 174, 148, 149, - 150, 151, 152, -1, -1, -1, -1, -1, 158, 159, - 160, 161, 162, 163, 164, 165, 166, -1, -1, -1, - 170, -1, -1, -1, 174, 148, 149, 150, 151, 152, - -1, -1, -1, -1, -1, 158, 159, 160, 161, 162, - 163, 164, 165, 166, -1, -1, -1, 170, -1, -1, - -1, 174, 148, 149, 150, 151, 152, -1, -1, -1, - -1, -1, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, -1, -1, 170, -1, -1, -1, 174, 148, - 149, 150, 151, 152, -1, -1, -1, -1, -1, 158, - 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, - -1, 170, -1, -1, -1, 174, 148, 149, 150, 151, - 152, -1, -1, -1, -1, -1, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, -1, -1, 170, -1, - -1, -1, 174, 148, 149, 150, 151, 152, -1, -1, - -1, -1, -1, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, -1, -1, 170, -1, -1, -1, 174, - 148, 149, 150, 151, 152, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 172, -1, 174, 152, 153, + 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 172, -1, + 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, -1, -1, -1, + -1, 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - -1, -1, 170, -1, -1, -1, 174, 148, 149, 150, - 151, 152, -1, -1, -1, -1, -1, 158, 159, 160, - 161, 162, 163, 164, 165, 166, -1, -1, -1, 170, - -1, -1, -1, 174, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170, -1, -1, 146, - 174, 148, 149, 150, 151, 152, -1, -1, -1, -1, - -1, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, -1, -1, 170, 148, 149, 150, 151, 152, -1, - -1, -1, -1, -1, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, -1, -1, 170 + -1, -1, -1, -1, 172, -1, 174, 152, 153, 154, + 155, 156, -1, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, -1, -1, -1, -1, 172, -1, 174, + 152, 153, 154, 155, 156, -1, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, -1, -1, -1, -1, + 172, -1, 174, 152, 153, 154, 155, 156, -1, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 172, -1, 174, 152, 153, 154, 155, + 156, -1, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, -1, -1, -1, -1, 172 }; /* -*-C-*- Note some compilers choke on comments on `#line' lines. */ -#line 3 "/usr/lib/bison.simple" -/* This file comes from bison-1.28. */ +#line 3 "/usr/local/share/bison.simple" /* Skeleton output parser for bison, Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. @@ -2673,66 +2598,46 @@ static const short yycheck[] = { 7, You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* As a special exception, when this file is copied by Bison into a Bison output file, you may use that output file without restriction. This special exception was added by the Free Software Foundation in version 1.24 of Bison. */ -/* This is the parser code that is written into each bison parser - when the %semantic_parser declaration is not specified in the grammar. - It was written by Richard Stallman by simplifying the hairy parser - used when %semantic_parser is specified. */ - -#ifndef YYSTACK_USE_ALLOCA -#ifdef alloca -#define YYSTACK_USE_ALLOCA -#else /* alloca not defined */ +#ifndef alloca #ifdef __GNUC__ -#define YYSTACK_USE_ALLOCA #define alloca __builtin_alloca #else /* not GNU C. */ -#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386)) -#define YYSTACK_USE_ALLOCA +#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) #include <alloca.h> #else /* not sparc */ -/* We think this test detects Watcom and Microsoft C. */ -/* This used to test MSDOS, but that is a bad idea - since that symbol is in the user namespace. */ -#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__) -#if 0 /* No need for malloc.h, which pollutes the namespace; - instead, just don't use alloca. */ +#if defined (MSDOS) && !defined (__TURBOC__) #include <malloc.h> -#endif #else /* not MSDOS, or __TURBOC__ */ #if defined(_AIX) -/* I don't know what this was needed for, but it pollutes the namespace. - So I turned it off. rms, 2 May 1997. */ -/* #include <malloc.h> */ +#include <malloc.h> #pragma alloca -#define YYSTACK_USE_ALLOCA -#else /* not MSDOS, or __TURBOC__, or _AIX */ -#if 0 -#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up, - and on HPUX 10. Eventually we can turn this on. */ -#define YYSTACK_USE_ALLOCA -#define alloca __builtin_alloca +#else /* not MSDOS, __TURBOC__, or _AIX */ +#ifdef __hpux +#ifdef __cplusplus +extern "C" { +void *alloca (unsigned int); +}; +#else /* not __cplusplus */ +void *alloca (); +#endif /* not __cplusplus */ #endif /* __hpux */ -#endif #endif /* not _AIX */ #endif /* not MSDOS, or __TURBOC__ */ -#endif /* not sparc */ -#endif /* not GNU C */ -#endif /* alloca not defined */ -#endif /* YYSTACK_USE_ALLOCA not defined */ +#endif /* not sparc. */ +#endif /* not GNU C. */ +#endif /* alloca not defined. */ -#ifdef YYSTACK_USE_ALLOCA -#define YYSTACK_ALLOC alloca -#else -#define YYSTACK_ALLOC malloc -#endif +/* This is the parser code that is written into each bison parser + when the %semantic_parser declaration is not specified in the grammar. + It was written by Richard Stallman by simplifying the hairy parser + used when %semantic_parser is specified. */ /* Note: there must be only one dollar sign in this file. It is replaced by the list of actions, each action @@ -2742,8 +2647,8 @@ static const short yycheck[] = { 7, #define yyclearin (yychar = YYEMPTY) #define YYEMPTY -2 #define YYEOF 0 -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab +#define YYACCEPT return(0) +#define YYABORT return(1) #define YYERROR goto yyerrlab1 /* Like YYERROR except do call yyerror. This remains here temporarily to ease the @@ -2824,12 +2729,12 @@ int yydebug; /* nonzero means print parse trace */ #ifndef YYMAXDEPTH #define YYMAXDEPTH 10000 #endif - -/* Define __yy_memcpy. Note that the size argument - should be passed with type unsigned int, because that is what the non-GCC - definitions require. With GCC, __builtin_memcpy takes an arg - of type size_t, but it can handle unsigned int. */ +/* Prevent warning if -Wstrict-prototypes. */ +#ifdef __GNUC__ +int yyparse (void); +#endif + #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */ #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT) #else /* not GNU C or C++ */ @@ -2841,7 +2746,7 @@ static void __yy_memcpy (to, from, count) char *to; char *from; - unsigned int count; + int count; { register char *f = from; register char *t = to; @@ -2856,10 +2761,10 @@ __yy_memcpy (to, from, count) /* This is the most reliable way to avoid incompatibilities in available built-in functions on various systems. */ static void -__yy_memcpy (char *to, char *from, unsigned int count) +__yy_memcpy (char *to, char *from, int count) { - register char *t = to; register char *f = from; + register char *t = to; register int i = count; while (i-- > 0) @@ -2869,7 +2774,7 @@ __yy_memcpy (char *to, char *from, unsigned int count) #endif #endif -#line 217 "/usr/lib/bison.simple" +#line 196 "/usr/local/share/bison.simple" /* The user can define YYPARSE_PARAM as the name of an argument to be passed into yyparse. The argument should have type void *. @@ -2890,15 +2795,6 @@ __yy_memcpy (char *to, char *from, unsigned int count) #define YYPARSE_PARAM_DECL #endif /* not YYPARSE_PARAM */ -/* Prevent warning if -Wstrict-prototypes. */ -#ifdef __GNUC__ -#ifdef YYPARSE_PARAM -int yyparse (void *); -#else -int yyparse (void); -#endif -#endif - int yyparse(YYPARSE_PARAM_ARG) YYPARSE_PARAM_DECL @@ -2927,7 +2823,6 @@ yyparse(YYPARSE_PARAM_ARG) #endif int yystacksize = YYINITDEPTH; - int yyfree_stacks = 0; #ifdef YYPURE int yychar; @@ -3012,32 +2907,18 @@ yynewstate: if (yystacksize >= YYMAXDEPTH) { yyerror("parser stack overflow"); - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } return 2; } yystacksize *= 2; if (yystacksize > YYMAXDEPTH) yystacksize = YYMAXDEPTH; -#ifndef YYSTACK_USE_ALLOCA - yyfree_stacks = 1; -#endif - yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp)); - __yy_memcpy ((char *)yyss, (char *)yyss1, - size * (unsigned int) sizeof (*yyssp)); - yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp)); - __yy_memcpy ((char *)yyvs, (char *)yyvs1, - size * (unsigned int) sizeof (*yyvsp)); + yyss = (short *) alloca (yystacksize * sizeof (*yyssp)); + __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp)); + yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp)); + __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp)); #ifdef YYLSP_NEEDED - yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp)); - __yy_memcpy ((char *)yyls, (char *)yyls1, - size * (unsigned int) sizeof (*yylsp)); + yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp)); + __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp)); #endif #endif /* no yyoverflow */ @@ -3198,7 +3079,7 @@ yyreduce: switch (yyn) { case 4: -#line 157 "Gmsh.y" +#line 155 "Gmsh.y" { Msg(PARSER_INFO,"STL File Format"); STL_Surf = Create_Surface(1,MSH_SURF_STL,1); @@ -3207,7 +3088,7 @@ case 4: ; break;} case 5: -#line 171 "Gmsh.y" +#line 169 "Gmsh.y" { STL_Surf->STL->Add_Facet( yyvsp[-12].d, yyvsp[-11].d, yyvsp[-10].d, yyvsp[-8].d, yyvsp[-7].d, yyvsp[-6].d, @@ -3216,7 +3097,7 @@ case 5: ; break;} case 6: -#line 178 "Gmsh.y" +#line 176 "Gmsh.y" { Msg(PARSER_INFO,"STL File Format Read"); Tree_Add(THEM->Surfaces, &STL_Surf); @@ -3224,83 +3105,83 @@ case 6: ; break;} case 9: -#line 195 "Gmsh.y" +#line 193 "Gmsh.y" { return 1; ; break;} case 10: -#line 196 "Gmsh.y" +#line 194 "Gmsh.y" { return 1; ; break;} case 11: -#line 197 "Gmsh.y" +#line 195 "Gmsh.y" { return 1; ; break;} case 12: -#line 198 "Gmsh.y" +#line 196 "Gmsh.y" { yyerrok ; return 1; ; break;} case 13: -#line 203 "Gmsh.y" +#line 201 "Gmsh.y" { Msg(PARSER_INFO,"Step Iso-10303-21 File Format"); Create_Step_Solid_BRep(); ; break;} case 14: -#line 208 "Gmsh.y" +#line 206 "Gmsh.y" { Msg(PARSER_INFO,"Step Iso-10303-21 File Format Read"); Resolve_BREP (); ; break;} case 18: -#line 219 "Gmsh.y" +#line 217 "Gmsh.y" { ; break;} case 19: -#line 222 "Gmsh.y" +#line 220 "Gmsh.y" { ; break;} case 20: -#line 226 "Gmsh.y" +#line 224 "Gmsh.y" { ; break;} case 21: -#line 232 "Gmsh.y" +#line 230 "Gmsh.y" { Add_Cartesian_Point((int)yyvsp[-8].d,yyvsp[-4].c,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2]); ; break;} case 22: -#line 238 "Gmsh.y" +#line 236 "Gmsh.y" { Add_BSpline_Curve_With_Knots ((int)yyvsp[-22].d, yyvsp[-18].c, (int) yyvsp[-16].d, yyvsp[-14].l, yyvsp[-6].l, yyvsp[-4].l, 0., 1.); ; break;} case 23: -#line 245 "Gmsh.y" +#line 243 "Gmsh.y" { Add_BSpline_Surface_With_Knots ((int)yyvsp[-30].d, yyvsp[-26].c, (int) yyvsp[-24].d, (int) yyvsp[-22].d, yyvsp[-20].l, yyvsp[-10].l, yyvsp[-8].l, yyvsp[-6].l, yyvsp[-4].l, 0., 1., 0., 1. ); ; break;} case 24: -#line 251 "Gmsh.y" +#line 249 "Gmsh.y" { Add_Edge_Curve ((int)yyvsp[-14].d, yyvsp[-10].c , (int)yyvsp[-8].d , (int)yyvsp[-6].d, (int)yyvsp[-4].d); ; break;} case 25: -#line 255 "Gmsh.y" +#line 253 "Gmsh.y" { Add_Face_Outer_Bound((int)yyvsp[-10].d,yyvsp[-6].c,(int)yyvsp[-4].d,yyvsp[-2].i,1); ; break;} case 26: -#line 259 "Gmsh.y" +#line 257 "Gmsh.y" { /* La je dois voir la norme ! Face_Bound : trou externe a la surface ! */ Msg(PARSER_INFO,"Found a Face Bound"); @@ -3308,306 +3189,306 @@ case 26: ; break;} case 27: -#line 266 "Gmsh.y" +#line 264 "Gmsh.y" { Add_Oriented_Edge((int)yyvsp[-14].d,yyvsp[-10].c,(int)yyvsp[-4].d,yyvsp[-2].i); ; break;} case 28: -#line 270 "Gmsh.y" +#line 268 "Gmsh.y" { Add_Edge_Loop((int)yyvsp[-8].d,yyvsp[-4].c,yyvsp[-2].l); ; break;} case 29: -#line 275 "Gmsh.y" +#line 273 "Gmsh.y" { Add_Advanced_Face((int)yyvsp[-12].d,yyvsp[-8].c,yyvsp[-6].l,(int)yyvsp[-4].d,yyvsp[-2].i); ; break;} case 30: -#line 279 "Gmsh.y" +#line 277 "Gmsh.y" { Add_Vertex_Point((int)yyvsp[-8].d,yyvsp[-4].c,(int)yyvsp[-2].d); ; break;} case 31: -#line 283 "Gmsh.y" +#line 281 "Gmsh.y" { ; break;} case 32: -#line 287 "Gmsh.y" +#line 285 "Gmsh.y" { Add_Axis2_Placement3D ( (int)yyvsp[-12].d, (int)yyvsp[-4].d, (int)yyvsp[-2].d, (int)yyvsp[-6].d); ; break;} case 33: -#line 291 "Gmsh.y" +#line 289 "Gmsh.y" { Add_Direction((int)yyvsp[-8].d , yyvsp[-4].c, yyvsp[-2].v[0], yyvsp[-2].v[1], yyvsp[-2].v[2]); ; break;} case 34: -#line 295 "Gmsh.y" +#line 293 "Gmsh.y" { Add_Plane((int)yyvsp[-8].d,yyvsp[-4].c,(int)yyvsp[-2].d); ; break;} case 35: -#line 299 "Gmsh.y" +#line 297 "Gmsh.y" { Add_Line ((int)yyvsp[-10].d, yyvsp[-6].c , (int) yyvsp[-4].d, (int)yyvsp[-2].d); ; break;} case 36: -#line 303 "Gmsh.y" +#line 301 "Gmsh.y" { Msg(PARSER_INFO,"Found a Closed shell"); Add_Closed_Shell((int)yyvsp[-8].d, yyvsp[-4].c , yyvsp[-2].l); ; break;} case 37: -#line 309 "Gmsh.y" +#line 307 "Gmsh.y" { ; break;} case 38: -#line 312 "Gmsh.y" +#line 310 "Gmsh.y" { ; break;} case 39: -#line 315 "Gmsh.y" +#line 313 "Gmsh.y" { Add_Cylinder ((int)yyvsp[-10].d, yyvsp[-6].c , (int)yyvsp[-4].d, yyvsp[-2].d); ; break;} case 40: -#line 319 "Gmsh.y" +#line 317 "Gmsh.y" { Add_Cone ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d,yyvsp[-2].d); ; break;} case 41: -#line 323 "Gmsh.y" +#line 321 "Gmsh.y" { Add_Torus ((int)yyvsp[-12].d, yyvsp[-8].c , (int)yyvsp[-6].d, yyvsp[-4].d,yyvsp[-2].d); ; break;} case 42: -#line 327 "Gmsh.y" +#line 325 "Gmsh.y" { Add_Circle((int) yyvsp[-10].d, yyvsp[-6].c, (int) yyvsp[-4].d, yyvsp[-2].d); ; break;} case 43: -#line 331 "Gmsh.y" +#line 329 "Gmsh.y" { Add_Ellipsis((int) yyvsp[-12].d, yyvsp[-8].c, (int) yyvsp[-6].d, yyvsp[-4].d, yyvsp[-2].d); ; break;} case 44: -#line 336 "Gmsh.y" +#line 334 "Gmsh.y" { ; break;} case 45: -#line 339 "Gmsh.y" +#line 337 "Gmsh.y" { ; break;} case 46: -#line 343 "Gmsh.y" +#line 341 "Gmsh.y" { ; break;} case 47: -#line 346 "Gmsh.y" +#line 344 "Gmsh.y" { ; break;} case 48: -#line 350 "Gmsh.y" +#line 348 "Gmsh.y" { ; break;} case 49: -#line 353 "Gmsh.y" +#line 351 "Gmsh.y" { ; break;} case 50: -#line 356 "Gmsh.y" +#line 354 "Gmsh.y" { ; break;} case 51: -#line 366 "Gmsh.y" +#line 364 "Gmsh.y" { ; break;} case 52: -#line 369 "Gmsh.y" +#line 367 "Gmsh.y" { Msg(PARSER_INFO,"Gmsh File Format Read"); ; break;} case 53: -#line 375 "Gmsh.y" +#line 373 "Gmsh.y" { return 1; ; break;} case 54: -#line 376 "Gmsh.y" +#line 374 "Gmsh.y" { return 1; ; break;} case 55: -#line 377 "Gmsh.y" +#line 375 "Gmsh.y" { return 1; ; break;} case 56: -#line 378 "Gmsh.y" +#line 376 "Gmsh.y" { return 1; ; break;} case 57: -#line 379 "Gmsh.y" +#line 377 "Gmsh.y" { return 1; ; break;} case 58: -#line 380 "Gmsh.y" +#line 378 "Gmsh.y" { return 1; ; break;} case 59: -#line 381 "Gmsh.y" +#line 379 "Gmsh.y" { return 1; ; break;} case 60: -#line 382 "Gmsh.y" +#line 380 "Gmsh.y" { return 1; ; break;} case 61: -#line 383 "Gmsh.y" +#line 381 "Gmsh.y" { return 1; ; break;} case 62: -#line 384 "Gmsh.y" +#line 382 "Gmsh.y" { return 1; ; break;} case 63: -#line 385 "Gmsh.y" +#line 383 "Gmsh.y" {return 1;; break;} case 64: -#line 387 "Gmsh.y" +#line 385 "Gmsh.y" { return 1; ; break;} case 65: -#line 388 "Gmsh.y" +#line 386 "Gmsh.y" { yyerrok; return 1;; break;} case 66: -#line 393 "Gmsh.y" +#line 391 "Gmsh.y" { Msg(PARSER_INFO, yyvsp[-2].c); ; break;} case 67: -#line 397 "Gmsh.y" +#line 395 "Gmsh.y" { Msg(PARSER_INFO, yyvsp[-4].c, yyvsp[-2].d); ; break;} case 68: -#line 408 "Gmsh.y" +#line 406 "Gmsh.y" { EndView(1, Force_ViewNumber,yyname,yyvsp[-4].c,0.,0.,0.); ; break;} case 69: -#line 412 "Gmsh.y" +#line 410 "Gmsh.y" { EndView(1, Force_ViewNumber,yyname,yyvsp[-6].c,yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2]); ; break;} case 70: -#line 419 "Gmsh.y" +#line 417 "Gmsh.y" { BeginView(1); ; break;} case 83: -#line 438 "Gmsh.y" +#line 436 "Gmsh.y" { List_Add(ActualView->SP, &yyvsp[0].d) ; ; break;} case 84: -#line 440 "Gmsh.y" +#line 438 "Gmsh.y" { List_Add(ActualView->SP, &yyvsp[0].d) ; ; break;} case 85: -#line 445 "Gmsh.y" +#line 443 "Gmsh.y" { List_Add(ActualView->SP, &yyvsp[-5].d); List_Add(ActualView->SP, &yyvsp[-3].d); List_Add(ActualView->SP, &yyvsp[-1].d); ; break;} case 86: -#line 450 "Gmsh.y" +#line 448 "Gmsh.y" { ActualView->NbSP++ ; ; break;} case 87: -#line 457 "Gmsh.y" +#line 455 "Gmsh.y" { List_Add(ActualView->VP, &yyvsp[0].d) ; ; break;} case 88: -#line 459 "Gmsh.y" +#line 457 "Gmsh.y" { List_Add(ActualView->VP, &yyvsp[0].d) ; ; break;} case 89: -#line 464 "Gmsh.y" +#line 462 "Gmsh.y" { List_Add(ActualView->VP, &yyvsp[-5].d); List_Add(ActualView->VP, &yyvsp[-3].d); List_Add(ActualView->VP, &yyvsp[-1].d); ; break;} case 90: -#line 469 "Gmsh.y" +#line 467 "Gmsh.y" { ActualView->NbVP++ ; ; break;} case 91: -#line 476 "Gmsh.y" +#line 474 "Gmsh.y" { List_Add(ActualView->TP, &yyvsp[0].d) ; ; break;} case 92: -#line 478 "Gmsh.y" +#line 476 "Gmsh.y" { List_Add(ActualView->TP, &yyvsp[0].d) ; ; break;} case 93: -#line 483 "Gmsh.y" +#line 481 "Gmsh.y" { List_Add(ActualView->TP, &yyvsp[-5].d); List_Add(ActualView->TP, &yyvsp[-3].d); List_Add(ActualView->TP, &yyvsp[-1].d); ; break;} case 94: -#line 488 "Gmsh.y" +#line 486 "Gmsh.y" { ActualView->NbTP++ ; ; break;} case 95: -#line 495 "Gmsh.y" +#line 493 "Gmsh.y" { List_Add(ActualView->SL, &yyvsp[0].d) ; ; break;} case 96: -#line 497 "Gmsh.y" +#line 495 "Gmsh.y" { List_Add(ActualView->SL, &yyvsp[0].d) ; ; break;} case 97: -#line 503 "Gmsh.y" +#line 501 "Gmsh.y" { List_Add(ActualView->SL, &yyvsp[-11].d); List_Add(ActualView->SL, &yyvsp[-5].d); List_Add(ActualView->SL, &yyvsp[-9].d); List_Add(ActualView->SL, &yyvsp[-3].d); @@ -3615,21 +3496,21 @@ case 97: ; break;} case 98: -#line 509 "Gmsh.y" +#line 507 "Gmsh.y" { ActualView->NbSL++ ; ; break;} case 99: -#line 516 "Gmsh.y" +#line 514 "Gmsh.y" { List_Add(ActualView->VL, &yyvsp[0].d) ; ; break;} case 100: -#line 518 "Gmsh.y" +#line 516 "Gmsh.y" { List_Add(ActualView->VL, &yyvsp[0].d) ; ; break;} case 101: -#line 524 "Gmsh.y" +#line 522 "Gmsh.y" { List_Add(ActualView->SL, &yyvsp[-11].d); List_Add(ActualView->SL, &yyvsp[-5].d); List_Add(ActualView->SL, &yyvsp[-9].d); List_Add(ActualView->SL, &yyvsp[-3].d); @@ -3637,21 +3518,21 @@ case 101: ; break;} case 102: -#line 530 "Gmsh.y" +#line 528 "Gmsh.y" { ActualView->NbVL++ ; ; break;} case 103: -#line 537 "Gmsh.y" +#line 535 "Gmsh.y" { List_Add(ActualView->TL, &yyvsp[0].d) ; ; break;} case 104: -#line 539 "Gmsh.y" +#line 537 "Gmsh.y" { List_Add(ActualView->TL, &yyvsp[0].d) ; ; break;} case 105: -#line 545 "Gmsh.y" +#line 543 "Gmsh.y" { List_Add(ActualView->SL, &yyvsp[-11].d); List_Add(ActualView->SL, &yyvsp[-5].d); List_Add(ActualView->SL, &yyvsp[-9].d); List_Add(ActualView->SL, &yyvsp[-3].d); @@ -3659,21 +3540,21 @@ case 105: ; break;} case 106: -#line 551 "Gmsh.y" +#line 549 "Gmsh.y" { ActualView->NbTL++ ; ; break;} case 107: -#line 558 "Gmsh.y" +#line 556 "Gmsh.y" { List_Add(ActualView->ST, &yyvsp[0].d) ; ; break;} case 108: -#line 560 "Gmsh.y" +#line 558 "Gmsh.y" { List_Add(ActualView->ST, &yyvsp[0].d) ; ; break;} case 109: -#line 567 "Gmsh.y" +#line 565 "Gmsh.y" { List_Add(ActualView->ST, &yyvsp[-17].d); List_Add(ActualView->ST, &yyvsp[-11].d); List_Add(ActualView->ST, &yyvsp[-5].d); @@ -3684,21 +3565,21 @@ case 109: ; break;} case 110: -#line 576 "Gmsh.y" +#line 574 "Gmsh.y" { ActualView->NbST++ ; ; break;} case 111: -#line 583 "Gmsh.y" +#line 581 "Gmsh.y" { List_Add(ActualView->VT, &yyvsp[0].d) ; ; break;} case 112: -#line 585 "Gmsh.y" +#line 583 "Gmsh.y" { List_Add(ActualView->VT, &yyvsp[0].d) ; ; break;} case 113: -#line 592 "Gmsh.y" +#line 590 "Gmsh.y" { List_Add(ActualView->VT, &yyvsp[-17].d); List_Add(ActualView->VT, &yyvsp[-11].d); List_Add(ActualView->VT, &yyvsp[-5].d); @@ -3709,21 +3590,21 @@ case 113: ; break;} case 114: -#line 601 "Gmsh.y" +#line 599 "Gmsh.y" { ActualView->NbVT++ ; ; break;} case 115: -#line 608 "Gmsh.y" +#line 606 "Gmsh.y" { List_Add(ActualView->TT, &yyvsp[0].d) ; ; break;} case 116: -#line 610 "Gmsh.y" +#line 608 "Gmsh.y" { List_Add(ActualView->TT, &yyvsp[0].d) ; ; break;} case 117: -#line 617 "Gmsh.y" +#line 615 "Gmsh.y" { List_Add(ActualView->TT, &yyvsp[-17].d); List_Add(ActualView->TT, &yyvsp[-11].d); List_Add(ActualView->TT, &yyvsp[-5].d); @@ -3734,21 +3615,21 @@ case 117: ; break;} case 118: -#line 626 "Gmsh.y" +#line 624 "Gmsh.y" { ActualView->NbTT++ ; ; break;} case 119: -#line 633 "Gmsh.y" +#line 631 "Gmsh.y" { List_Add(ActualView->SS, &yyvsp[0].d) ; ; break;} case 120: -#line 635 "Gmsh.y" +#line 633 "Gmsh.y" { List_Add(ActualView->SS, &yyvsp[0].d) ; ; break;} case 121: -#line 643 "Gmsh.y" +#line 641 "Gmsh.y" { List_Add(ActualView->SS, &yyvsp[-23].d); List_Add(ActualView->SS, &yyvsp[-17].d); List_Add(ActualView->SS, &yyvsp[-11].d); List_Add(ActualView->SS, &yyvsp[-5].d); @@ -3759,21 +3640,21 @@ case 121: ; break;} case 122: -#line 652 "Gmsh.y" +#line 650 "Gmsh.y" { ActualView->NbSS++ ; ; break;} case 123: -#line 659 "Gmsh.y" +#line 657 "Gmsh.y" { List_Add(ActualView->VS, &yyvsp[0].d) ; ; break;} case 124: -#line 661 "Gmsh.y" +#line 659 "Gmsh.y" { List_Add(ActualView->VS, &yyvsp[0].d) ; ; break;} case 125: -#line 669 "Gmsh.y" +#line 667 "Gmsh.y" { List_Add(ActualView->VS, &yyvsp[-23].d); List_Add(ActualView->VS, &yyvsp[-17].d); List_Add(ActualView->VS, &yyvsp[-11].d); List_Add(ActualView->VS, &yyvsp[-5].d); @@ -3784,21 +3665,21 @@ case 125: ; break;} case 126: -#line 678 "Gmsh.y" +#line 676 "Gmsh.y" { ActualView->NbVS++ ; ; break;} case 127: -#line 685 "Gmsh.y" +#line 683 "Gmsh.y" { List_Add(ActualView->TS, &yyvsp[0].d) ; ; break;} case 128: -#line 687 "Gmsh.y" +#line 685 "Gmsh.y" { List_Add(ActualView->TS, &yyvsp[0].d) ; ; break;} case 129: -#line 695 "Gmsh.y" +#line 693 "Gmsh.y" { List_Add(ActualView->TS, &yyvsp[-23].d); List_Add(ActualView->TS, &yyvsp[-17].d); List_Add(ActualView->TS, &yyvsp[-11].d); List_Add(ActualView->TS, &yyvsp[-5].d); @@ -3809,122 +3690,235 @@ case 129: ; break;} case 130: -#line 704 "Gmsh.y" +#line 702 "Gmsh.y" { ActualView->NbTS++ ; ; break;} case 131: -#line 720 "Gmsh.y" +#line 718 "Gmsh.y" { TheSymbol.Name = yyvsp[-3].c; - TheSymbol.val = yyvsp[-1].d; - List_Replace(Symbol_L,&TheSymbol,CompareSymbols); + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + TheSymbol.val = List_Create(1,1,sizeof(double)); + List_Put(TheSymbol.val, 0, &yyvsp[-1].d); + List_Add(Symbol_L, &TheSymbol); + } + else{ + List_Write(pSymbol->val, 0, &yyvsp[-1].d); + } ; break;} case 132: -#line 726 "Gmsh.y" +#line 730 "Gmsh.y" { - TheSymbol.Name = yyvsp[-2].c ; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) - vyyerror("Unknown Variable '%s'", yyvsp[-2].c) ; - else - pSymbol->val += 1. ; + TheSymbol.Name = yyvsp[-6].c; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + TheSymbol.val = List_Create(5,5,sizeof(double)); + List_Put(TheSymbol.val, (int)yyvsp[-4].d, &yyvsp[-1].d); + List_Add(Symbol_L, &TheSymbol); + } + else{ + List_Put(pSymbol->val, (int)yyvsp[-4].d, &yyvsp[-1].d); + } ; break;} case 133: -#line 734 "Gmsh.y" +#line 742 "Gmsh.y" { TheSymbol.Name = yyvsp[-2].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) vyyerror("Unknown Variable '%s'", yyvsp[-2].c) ; - else - pSymbol->val -= 1. ; + else{ + *(double*)List_Pointer_Fast(pSymbol->val, 0) += 1.0 ; + } ; break;} case 134: -#line 742 "Gmsh.y" +#line 751 "Gmsh.y" { - TheSymbol.Name = yyvsp[-3].c ; + TheSymbol.Name = yyvsp[-5].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) - vyyerror("Unknown Variable '%s'", yyvsp[-3].c) ; - else - pSymbol->val += yyvsp[-1].d ; + vyyerror("Unknown Variable '%s'", yyvsp[-5].c) ; + else{ + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-3].d))) + *pd += 1.0 ; + else + vyyerror("Uninitialized Variable '%s[%d]'", yyvsp[-5].c, (int)yyvsp[-3].d) ; + } ; break;} case 135: -#line 750 "Gmsh.y" +#line 763 "Gmsh.y" { - TheSymbol.Name = yyvsp[-3].c ; + TheSymbol.Name = yyvsp[-2].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) - vyyerror("Unknown Variable '%s'", yyvsp[-3].c) ; + vyyerror("Unknown Variable '%s'", yyvsp[-2].c) ; else - pSymbol->val -= yyvsp[-1].d ; + *(double*)List_Pointer_Fast(pSymbol->val, 0) -= 1. ; ; break;} case 136: -#line 758 "Gmsh.y" +#line 771 "Gmsh.y" { - TheSymbol.Name = yyvsp[-3].c ; + TheSymbol.Name = yyvsp[-5].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) - vyyerror("Unknown Variable '%s'", yyvsp[-3].c) ; - else - pSymbol->val *= yyvsp[-1].d ; + vyyerror("Unknown Variable '%s'", yyvsp[-5].c) ; + else{ + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-3].d))) + *pd -= 1.0 ; + else + vyyerror("Uninitialized Variable '%s[%d]'", yyvsp[-5].c, (int)yyvsp[-3].d) ; + } ; break;} case 137: -#line 766 "Gmsh.y" +#line 783 "Gmsh.y" { TheSymbol.Name = yyvsp[-3].c ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) vyyerror("Unknown Variable '%s'", yyvsp[-3].c) ; else - pSymbol->val /= yyvsp[-1].d ; + *(double*)List_Pointer_Fast(pSymbol->val, 0) += yyvsp[-1].d ; ; break;} case 138: -#line 777 "Gmsh.y" -{ - if(!(pStrCat = Get_StringOptionCategory(yyvsp[-5].c))) - vyyerror("Unknown String Option Class '%s'", yyvsp[-5].c); +#line 791 "Gmsh.y" +{ + TheSymbol.Name = yyvsp[-6].c ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + vyyerror("Unknown Variable '%s'", yyvsp[-6].c) ; else{ - if(!(pStrOpt = Get_StringOption(yyvsp[-3].c, pStrCat))) - vyyerror("Unknown String Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c); - else{ - *pStrOpt = yyvsp[-1].c ; - } + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-4].d))) + *pd += yyvsp[-1].d ; + else + vyyerror("Uninitialized Variable '%s[%d]'", yyvsp[-6].c, (int)yyvsp[-4].d) ; } ; break;} case 139: -#line 790 "Gmsh.y" +#line 803 "Gmsh.y" { - if(strcmp(yyvsp[-10].c, "PostProcessing")) - vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c); - else{ - if(!(pStrViewOpt = Get_StringViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){ - if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d); - else vyyerror("Unknown String Option '%s.View[%d].%s'", - yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c); - } - else{ - strcpy(pStrViewOpt, yyvsp[-1].c) ; - } - } + TheSymbol.Name = yyvsp[-3].c ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + vyyerror("Unknown Variable '%s'", yyvsp[-3].c) ; + else + *(double*)List_Pointer_Fast(pSymbol->val, 0) -= yyvsp[-1].d ; ; break;} case 140: -#line 808 "Gmsh.y" +#line 811 "Gmsh.y" { - if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))) - vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c); + TheSymbol.Name = yyvsp[-6].c ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + vyyerror("Unknown Variable '%s'", yyvsp[-6].c) ; else{ - if(!(pNumOpt = Get_NumberOption(yyvsp[-3].c, pNumCat, &i))) - vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c); - else{ - switch(i){ - case GMSH_DOUBLE : *(double*)pNumOpt = yyvsp[-1].d ; break ; - case GMSH_FLOAT : *(float*)pNumOpt = (float)yyvsp[-1].d ; break ; + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-4].d))) + *pd -= yyvsp[-1].d ; + else + vyyerror("Uninitialized Variable '%s[%d]'", yyvsp[-6].c, (int)yyvsp[-4].d) ; + } + ; + break;} +case 141: +#line 823 "Gmsh.y" +{ + TheSymbol.Name = yyvsp[-3].c ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + vyyerror("Unknown Variable '%s'", yyvsp[-3].c) ; + else + *(double*)List_Pointer_Fast(pSymbol->val, 0) *= yyvsp[-1].d ; + ; + break;} +case 142: +#line 831 "Gmsh.y" +{ + TheSymbol.Name = yyvsp[-6].c ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + vyyerror("Unknown Variable '%s'", yyvsp[-6].c) ; + else{ + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-4].d))) + *pd *= yyvsp[-1].d ; + else + vyyerror("Uninitialized Variable '%s[%d]'", yyvsp[-6].c, (int)yyvsp[-4].d) ; + } + ; + break;} +case 143: +#line 843 "Gmsh.y" +{ + if(!yyvsp[-1].d) + vyyerror("Division by Zero in '%s /= %g'", yyvsp[-3].c, yyvsp[-1].d); + else{ + TheSymbol.Name = yyvsp[-3].c ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + vyyerror("Unknown Variable '%s'", yyvsp[-3].c) ; + else + *(double*)List_Pointer_Fast(pSymbol->val, 0) /= yyvsp[-1].d ; + } + ; + break;} +case 144: +#line 855 "Gmsh.y" +{ + if(!yyvsp[-1].d) + vyyerror("Division by Zero in '%s[%d] /= %g'", yyvsp[-6].c, (int)yyvsp[-4].d, yyvsp[-1].d); + else{ + TheSymbol.Name = yyvsp[-6].c ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + vyyerror("Unknown Variable '%s'", yyvsp[-6].c) ; + else{ + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-4].d))) + *pd /= yyvsp[-1].d ; + else + vyyerror("Uninitialized Variable '%s[%d]'", yyvsp[-6].c, (int)yyvsp[-4].d) ; + } + } + ; + break;} +case 145: +#line 874 "Gmsh.y" +{ + if(!(pStrCat = Get_StringOptionCategory(yyvsp[-5].c))) + vyyerror("Unknown String Option Class '%s'", yyvsp[-5].c); + else{ + if(!(pStrOpt = Get_StringOption(yyvsp[-3].c, pStrCat))) + vyyerror("Unknown String Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c); + else{ + *pStrOpt = yyvsp[-1].c ; + } + } + ; + break;} +case 146: +#line 887 "Gmsh.y" +{ + if(strcmp(yyvsp[-10].c, "PostProcessing")) + vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c); + else{ + if(!(pStrViewOpt = Get_StringViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){ + if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d); + else vyyerror("Unknown String Option '%s.View[%d].%s'", + yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c); + } + else{ + strcpy(pStrViewOpt, yyvsp[-1].c) ; + } + } + ; + break;} +case 147: +#line 905 "Gmsh.y" +{ + if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))) + vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c); + else{ + if(!(pNumOpt = Get_NumberOption(yyvsp[-3].c, pNumCat, &i))) + vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c); + else{ + switch(i){ + case GMSH_DOUBLE : *(double*)pNumOpt = yyvsp[-1].d ; break ; + case GMSH_FLOAT : *(float*)pNumOpt = (float)yyvsp[-1].d ; break ; case GMSH_LONG : *(long*)pNumOpt = (long)yyvsp[-1].d ; break ; case GMSH_INT : *(int*)pNumOpt = (int)yyvsp[-1].d ; break ; } @@ -3932,8 +3926,8 @@ case 140: } ; break;} -case 141: -#line 825 "Gmsh.y" +case 148: +#line 922 "Gmsh.y" { if(strcmp(yyvsp[-10].c, "PostProcessing")) vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c); @@ -3954,8 +3948,8 @@ case 141: } ; break;} -case 142: -#line 846 "Gmsh.y" +case 149: +#line 943 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))) vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c); @@ -3973,8 +3967,8 @@ case 142: } ; break;} -case 143: -#line 863 "Gmsh.y" +case 150: +#line 960 "Gmsh.y" { if(strcmp(yyvsp[-10].c, "PostProcessing")) vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c); @@ -3995,8 +3989,8 @@ case 143: } ; break;} -case 144: -#line 884 "Gmsh.y" +case 151: +#line 981 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))) vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c); @@ -4014,8 +4008,8 @@ case 144: } ; break;} -case 145: -#line 901 "Gmsh.y" +case 152: +#line 998 "Gmsh.y" { if(strcmp(yyvsp[-10].c, "PostProcessing")) vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c); @@ -4036,8 +4030,8 @@ case 145: } ; break;} -case 146: -#line 922 "Gmsh.y" +case 153: +#line 1019 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))) vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c); @@ -4055,8 +4049,8 @@ case 146: } ; break;} -case 147: -#line 939 "Gmsh.y" +case 154: +#line 1036 "Gmsh.y" { if(strcmp(yyvsp[-10].c, "PostProcessing")) vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c); @@ -4077,49 +4071,58 @@ case 147: } ; break;} -case 148: -#line 960 "Gmsh.y" +case 155: +#line 1057 "Gmsh.y" { - if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))) - vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c); + if(!yyvsp[-1].d) + vyyerror("Division by Zero in '%s.%s /= %g'", yyvsp[-5].c, yyvsp[-3].c, yyvsp[-1].d); else{ - if(!(pNumOpt = Get_NumberOption(yyvsp[-3].c, pNumCat, &i))) - vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c); + if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-5].c))) + vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-5].c); else{ - switch(i){ - case GMSH_DOUBLE : *(double*)pNumOpt /= yyvsp[-1].d ; break ; - case GMSH_FLOAT : *(float*)pNumOpt /= (float)yyvsp[-1].d ; break ; - case GMSH_LONG : *(long*)pNumOpt /= (long)yyvsp[-1].d ; break ; - case GMSH_INT : *(int*)pNumOpt /= (int)yyvsp[-1].d ; break ; + if(!(pNumOpt = Get_NumberOption(yyvsp[-3].c, pNumCat, &i))) + vyyerror("Unknown Numeric Option '%s.%s'", yyvsp[-5].c, yyvsp[-3].c); + else{ + switch(i){ + case GMSH_DOUBLE : *(double*)pNumOpt /= yyvsp[-1].d ; break ; + case GMSH_FLOAT : *(float*)pNumOpt /= (float)yyvsp[-1].d ; break ; + case GMSH_LONG : *(long*)pNumOpt /= (long)yyvsp[-1].d ; break ; + case GMSH_INT : *(int*)pNumOpt /= (int)yyvsp[-1].d ; break ; + } } } } ; break;} -case 149: -#line 977 "Gmsh.y" +case 156: +#line 1078 "Gmsh.y" { - if(strcmp(yyvsp[-10].c, "PostProcessing")) - vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c); + if(!yyvsp[-1].d) + vyyerror("Division by Zero in '%s.View[%d].%s /= %g'", + yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c, yyvsp[-1].d); else{ - if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){ - if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d); - else vyyerror("Unknown Numeric Option '%s.View[%d].%s'", - yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c); - } + if(strcmp(yyvsp[-10].c, "PostProcessing")) + vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c); else{ - switch(i){ - case GMSH_DOUBLE : *(double*)pNumOpt /= yyvsp[-1].d ; break ; - case GMSH_FLOAT : *(float*)pNumOpt /= (float)yyvsp[-1].d ; break ; - case GMSH_LONG : *(long*)pNumOpt /= (long)yyvsp[-1].d ; break ; - case GMSH_INT : *(int*)pNumOpt /= (int)yyvsp[-1].d ; break ; + if(!(pNumOpt = Get_NumberViewOption((int)yyvsp[-6].d, yyvsp[-3].c, &i))){ + if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)yyvsp[-6].d); + else vyyerror("Unknown Numeric Option '%s.View[%d].%s'", + yyvsp[-10].c, (int)yyvsp[-6].d, yyvsp[-3].c); + } + else{ + switch(i){ + case GMSH_DOUBLE : *(double*)pNumOpt /= yyvsp[-1].d ; break ; + case GMSH_FLOAT : *(float*)pNumOpt /= (float)yyvsp[-1].d ; break ; + case GMSH_LONG : *(long*)pNumOpt /= (long)yyvsp[-1].d ; break ; + case GMSH_INT : *(int*)pNumOpt /= (int)yyvsp[-1].d ; break ; + } } } } ; break;} -case 150: -#line 998 "Gmsh.y" +case 157: +#line 1104 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-4].c))) vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-4].c); @@ -4137,8 +4140,8 @@ case 150: } ; break;} -case 151: -#line 1015 "Gmsh.y" +case 158: +#line 1121 "Gmsh.y" { if(strcmp(yyvsp[-10].c, "PostProcessing")) vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c); @@ -4159,8 +4162,8 @@ case 151: } ; break;} -case 152: -#line 1036 "Gmsh.y" +case 159: +#line 1142 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-4].c))) vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-4].c); @@ -4178,8 +4181,8 @@ case 152: } ; break;} -case 153: -#line 1053 "Gmsh.y" +case 160: +#line 1159 "Gmsh.y" { if(strcmp(yyvsp[-10].c, "PostProcessing")) vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c); @@ -4200,8 +4203,8 @@ case 153: } ; break;} -case 154: -#line 1076 "Gmsh.y" +case 161: +#line 1182 "Gmsh.y" { if(!(pArrCat = Get_ArrayOptionCategory(yyvsp[-5].c))) vyyerror("Unknown Array Option Class '%s'", yyvsp[-5].c); @@ -4227,8 +4230,8 @@ case 154: } ; break;} -case 155: -#line 1101 "Gmsh.y" +case 162: +#line 1207 "Gmsh.y" { if(strcmp(yyvsp[-10].c, "PostProcessing")) vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c); @@ -4257,8 +4260,8 @@ case 155: } ; break;} -case 156: -#line 1130 "Gmsh.y" +case 163: +#line 1236 "Gmsh.y" { if(!(pArrCat = Get_ArrayOptionCategory(yyvsp[-5].c))) vyyerror("Unknown Array Option Class '%s'", yyvsp[-5].c); @@ -4284,8 +4287,8 @@ case 156: } ; break;} -case 157: -#line 1155 "Gmsh.y" +case 164: +#line 1261 "Gmsh.y" { if(strcmp(yyvsp[-10].c, "PostProcessing")) vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c); @@ -4314,8 +4317,8 @@ case 157: } ; break;} -case 158: -#line 1184 "Gmsh.y" +case 165: +#line 1290 "Gmsh.y" { if(!(pArrCat = Get_ArrayOptionCategory(yyvsp[-5].c))) vyyerror("Unknown Array Option Class '%s'", yyvsp[-5].c); @@ -4341,8 +4344,8 @@ case 158: } ; break;} -case 159: -#line 1209 "Gmsh.y" +case 166: +#line 1315 "Gmsh.y" { if(strcmp(yyvsp[-10].c, "PostProcessing")) vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c); @@ -4371,8 +4374,8 @@ case 159: } ; break;} -case 160: -#line 1240 "Gmsh.y" +case 167: +#line 1346 "Gmsh.y" { if(!(pColCat = Get_ColorOptionCategory(yyvsp[-7].c))) vyyerror("Unknown Color Option Class '%s'", yyvsp[-7].c); @@ -4385,8 +4388,8 @@ case 160: } ; break;} -case 161: -#line 1253 "Gmsh.y" +case 168: +#line 1359 "Gmsh.y" { if(strcmp(yyvsp[-10].c, "PostProcessing")) vyyerror("Unknown View Option Class '%s'", yyvsp[-10].c); @@ -4405,24 +4408,24 @@ case 161: } ; break;} -case 162: -#line 1282 "Gmsh.y" +case 169: +#line 1388 "Gmsh.y" { Cdbpts101((int)yyvsp[-4].d,yyvsp[-1].v[0],yyvsp[-1].v[1],yyvsp[-1].v[2],yyvsp[-1].v[3],yyvsp[-1].v[4]); yyval.s.Type = MSH_POINT; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 163: -#line 1289 "Gmsh.y" +case 170: +#line 1395 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_POINT,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_PHYSICAL_POINT; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 164: -#line 1295 "Gmsh.y" +case 171: +#line 1401 "Gmsh.y" { Vertex *v; Attractor *a; @@ -4442,8 +4445,8 @@ case 164: } ; break;} -case 165: -#line 1314 "Gmsh.y" +case 172: +#line 1420 "Gmsh.y" { for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ List_Read(yyvsp[-3].l,i,&d); @@ -4455,31 +4458,31 @@ case 165: } ; break;} -case 166: -#line 1325 "Gmsh.y" +case 173: +#line 1431 "Gmsh.y" { yyval.s.Type = MSH_POINT; yyval.s.Num = (int)yyvsp[-2].d; ; break;} -case 167: -#line 1333 "Gmsh.y" +case 174: +#line 1439 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_LINE,1,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_LINE; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 168: -#line 1339 "Gmsh.y" +case 175: +#line 1445 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_SPLN,3,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_SPLN; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 169: -#line 1345 "Gmsh.y" +case 176: +#line 1451 "Gmsh.y" { Curve *c; Attractor *a; @@ -4499,16 +4502,16 @@ case 169: } ; break;} -case 170: -#line 1364 "Gmsh.y" +case 177: +#line 1470 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_CIRC,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_CIRC ; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 171: -#line 1370 "Gmsh.y" +case 178: +#line 1476 "Gmsh.y" { List_T *temp; int i,j; @@ -4525,48 +4528,48 @@ case 171: yyval.s.Num = (int)yyvsp[-6].d; ; break;} -case 172: -#line 1387 "Gmsh.y" +case 179: +#line 1493 "Gmsh.y" { Cdbseg101((int)yyvsp[-14].d,MSH_SEGM_PARAMETRIC,2,NULL,NULL,-1,-1,yyvsp[-10].d,yyvsp[-8].d,yyvsp[-6].c,yyvsp[-4].c,yyvsp[-2].c); yyval.s.Type = MSH_SEGM_PARAMETRIC ; yyval.s.Num = (int)yyvsp[-14].d; ; break;} -case 173: -#line 1393 "Gmsh.y" +case 180: +#line 1499 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_ELLI,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_ELLI ; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 174: -#line 1399 "Gmsh.y" +case 181: +#line 1505 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_LINE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_PHYSICAL_LINE; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 175: -#line 1405 "Gmsh.y" +case 182: +#line 1511 "Gmsh.y" { yyval.s.Type = MSH_SEGM_LOOP; Cdbz101((int)yyvsp[-4].d,yyval.s.Type,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 176: -#line 1411 "Gmsh.y" +case 183: +#line 1517 "Gmsh.y" { Cdbseg101((int)yyvsp[-4].d,MSH_SEGM_BSPLN,2,yyvsp[-1].l,NULL,-1,-1,0.,1.,NULL,NULL,NULL); yyval.s.Type = MSH_SEGM_BSPLN; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 177: -#line 1417 "Gmsh.y" +case 184: +#line 1523 "Gmsh.y" { List_T *Temp; int i; @@ -4586,8 +4589,8 @@ case 177: List_Delete(Temp); ; break;} -case 178: -#line 1436 "Gmsh.y" +case 185: +#line 1542 "Gmsh.y" { yyval.s.Num = (int)yyvsp[-2].d; Curve *c = FindCurve(yyval.s.Num,THEM); @@ -4597,16 +4600,16 @@ case 178: yyval.s.Type = c->Typ; ; break;} -case 179: -#line 1448 "Gmsh.y" +case 186: +#line 1554 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_SURF_PLAN,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_SURF_PLAN; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 180: -#line 1454 "Gmsh.y" +case 187: +#line 1560 "Gmsh.y" { Surface *s,*support; support = FindSurface((int)yyvsp[-2].d,THEM); @@ -4626,8 +4629,8 @@ case 180: } ; break;} -case 181: -#line 1473 "Gmsh.y" +case 188: +#line 1579 "Gmsh.y" { List_Read(yyvsp[-1].l,0,&d); i = (int)d; @@ -4649,38 +4652,38 @@ case 181: } ; break;} -case 182: -#line 1496 "Gmsh.y" +case 189: +#line 1602 "Gmsh.y" { CreateNurbsSurface ( (int) yyvsp[-16].d , (int)yyvsp[-4].d , (int)yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l); yyval.s.Type = MSH_SURF_NURBS; yyval.s.Num = (int)yyvsp[-16].d; ; break;} -case 183: -#line 1504 "Gmsh.y" +case 190: +#line 1610 "Gmsh.y" { CreateNurbsSurfaceSupport ((int)yyvsp[-16].d, (int) yyvsp[-4].d , (int) yyvsp[-2].d , yyvsp[-13].l, yyvsp[-10].l, yyvsp[-8].l); ; break;} -case 184: -#line 1508 "Gmsh.y" +case 191: +#line 1614 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_SURFACE,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_PHYSICAL_SURFACE; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 185: -#line 1514 "Gmsh.y" +case 192: +#line 1620 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_SURF_LOOP,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_SURF_LOOP; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 186: -#line 1520 "Gmsh.y" +case 193: +#line 1626 "Gmsh.y" { yyval.s.Num = (int)yyvsp[-2].d; Surface *s = FindSurface(yyval.s.Num,THEM); @@ -4690,85 +4693,85 @@ case 186: yyval.s.Type = s->Typ; ; break;} -case 187: -#line 1532 "Gmsh.y" +case 194: +#line 1638 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_VOLUME; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 188: -#line 1538 "Gmsh.y" +case 195: +#line 1644 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_VOLUME; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 189: -#line 1544 "Gmsh.y" +case 196: +#line 1650 "Gmsh.y" { Cdbz101((int)yyvsp[-4].d,MSH_PHYSICAL_VOLUME,0,0,0,0,0,NULL,yyvsp[-1].l,NULL); yyval.s.Type = MSH_PHYSICAL_VOLUME; yyval.s.Num = (int)yyvsp[-4].d; ; break;} -case 190: -#line 1557 "Gmsh.y" +case 197: +#line 1663 "Gmsh.y" { TranslateShapes (yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-1].l,1); yyval.l = yyvsp[-1].l; ; break;} -case 191: -#line 1562 "Gmsh.y" +case 198: +#line 1668 "Gmsh.y" { RotateShapes(yyvsp[-8].v[0],yyvsp[-8].v[1],yyvsp[-8].v[2],yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l); yyval.l = yyvsp[-1].l; ; break;} -case 192: -#line 1567 "Gmsh.y" +case 199: +#line 1673 "Gmsh.y" { SymmetryShapes(yyvsp[-3].v[0],yyvsp[-3].v[1],yyvsp[-3].v[2],yyvsp[-3].v[3],yyvsp[-1].l,1); yyval.l = yyvsp[-1].l; ; break;} -case 193: -#line 1572 "Gmsh.y" +case 200: +#line 1678 "Gmsh.y" { DilatShapes(yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].d,yyvsp[-1].l,1); yyval.l = yyvsp[-1].l; ; break;} -case 194: -#line 1579 "Gmsh.y" +case 201: +#line 1685 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 195: -#line 1580 "Gmsh.y" +case 202: +#line 1686 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 196: -#line 1581 "Gmsh.y" +case 203: +#line 1687 "Gmsh.y" { yyval.l = yyvsp[0].l; ; break;} -case 197: -#line 1586 "Gmsh.y" +case 204: +#line 1692 "Gmsh.y" { yyval.l = List_Create(3,3,sizeof(Shape)); ; break;} -case 198: -#line 1590 "Gmsh.y" +case 205: +#line 1696 "Gmsh.y" { List_Add(yyval.l,&yyvsp[0].s); yyval.l = yyvsp[-1].l; ; break;} -case 199: -#line 1602 "Gmsh.y" +case 206: +#line 1708 "Gmsh.y" { yyval.l = List_Create(3,3,sizeof(Shape)); for(i=0;i<List_Nbr(yyvsp[-1].l);i++){ @@ -4779,8 +4782,8 @@ case 199: } ; break;} -case 200: -#line 1620 "Gmsh.y" +case 207: +#line 1726 "Gmsh.y" { for(i=0;i<List_Nbr(yyvsp[-1].l);i++){ List_Read (yyvsp[-1].l,i,&TheShape); @@ -4788,8 +4791,8 @@ case 200: } ; break;} -case 201: -#line 1635 "Gmsh.y" +case 208: +#line 1741 "Gmsh.y" { if(!strcmp(yyvsp[-2].c, "Include")){ @@ -4861,8 +4864,8 @@ case 201: vyyerror("Unknown Command '%s'", yyvsp[-2].c); ; break;} -case 202: -#line 1706 "Gmsh.y" +case 209: +#line 1812 "Gmsh.y" { if(!strcmp(yyvsp[-2].c, "Sleep")){ @@ -4883,14 +4886,14 @@ case 202: vyyerror("Unknown Command '%s'", yyvsp[-2].c); ; break;} -case 203: -#line 1726 "Gmsh.y" +case 210: +#line 1832 "Gmsh.y" { exit(0); ; break;} -case 204: -#line 1730 "Gmsh.y" +case 211: +#line 1836 "Gmsh.y" { if(!CTX.interactive){ // we're in interactive mode if(Tree_Nbr(THEM->Points) != Last_NumberOfPoints){ @@ -4904,8 +4907,8 @@ case 204: } ; break;} -case 205: -#line 1751 "Gmsh.y" +case 212: +#line 1857 "Gmsh.y" { FILE* ff; if(RecursionLevel) @@ -4920,8 +4923,8 @@ case 205: fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]); ; break;} -case 206: -#line 1765 "Gmsh.y" +case 213: +#line 1871 "Gmsh.y" { FILE* ff; if(RecursionLevel) @@ -4936,8 +4939,8 @@ case 206: fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]); ; break;} -case 207: -#line 1779 "Gmsh.y" +case 214: +#line 1885 "Gmsh.y" { FILE* ff; if(RecursionLevel) @@ -4951,17 +4954,20 @@ case 207: LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-6].c ; TheSymbol.Name = yyvsp[-6].c; - TheSymbol.val = yyvsp[-3].d; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) - List_Add(Symbol_L,&TheSymbol); - else - pSymbol->val = yyvsp[-3].d; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + TheSymbol.val = List_Create(1,1,sizeof(double)); + List_Put(TheSymbol.val, 0, &yyvsp[-3].d); + List_Add(Symbol_L, &TheSymbol); + } + else{ + List_Write(pSymbol->val, 0, &yyvsp[-3].d); + } fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]); ; break;} -case 208: -#line 1801 "Gmsh.y" +case 215: +#line 1910 "Gmsh.y" { FILE* ff; if(RecursionLevel) @@ -4973,19 +4979,22 @@ case 208: LoopControlVariablesTab[ImbricatedLoop][1] = yyvsp[-3].d ; LoopControlVariablesTab[ImbricatedLoop][2] = yyvsp[-1].d ; LoopControlVariablesNameTab[ImbricatedLoop] = yyvsp[-8].c ; - + TheSymbol.Name = yyvsp[-8].c; - TheSymbol.val = yyvsp[-5].d; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) - List_Add(Symbol_L,&TheSymbol); - else - pSymbol->val = yyvsp[-5].d; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + TheSymbol.val = List_Create(1,1,sizeof(double)); + List_Put(TheSymbol.val, 0, &yyvsp[-5].d); + List_Add(Symbol_L, &TheSymbol); + } + else{ + List_Write(pSymbol->val, 0, &yyvsp[-5].d); + } fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]); ; break;} -case 209: -#line 1823 "Gmsh.y" +case 216: +#line 1935 "Gmsh.y" { if(LoopControlVariablesTab[ImbricatedLoop-1][1] > LoopControlVariablesTab[ImbricatedLoop-1][0]){ @@ -5001,7 +5010,8 @@ case 209: if(strlen(LoopControlVariablesNameTab[ImbricatedLoop-1])){ TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1]; pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols); - pSymbol->val += LoopControlVariablesTab[ImbricatedLoop-1][2]; + *(double*)List_Pointer_Fast(pSymbol->val, 0) += + LoopControlVariablesTab[ImbricatedLoop-1][2] ; } fsetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]); @@ -5011,22 +5021,22 @@ case 209: } ; break;} -case 210: -#line 1848 "Gmsh.y" +case 217: +#line 1961 "Gmsh.y" { if(!FunctionManager::Instance()->leaveFunction(&yyin,yylineno)) vyyerror("Error while exiting function"); ; break;} -case 211: -#line 1853 "Gmsh.y" +case 218: +#line 1966 "Gmsh.y" { if(!FunctionManager::Instance()->enterFunction(yyvsp[-1].c,&yyin,yylineno)) vyyerror("Unknown Function %s",yyvsp[-1].c); ; break;} -case 212: -#line 1858 "Gmsh.y" +case 219: +#line 1971 "Gmsh.y" { // skip everything until return is found if(!FunctionManager::Instance()->createFunction(yyvsp[0].c,yyin,yylineno)) @@ -5034,82 +5044,82 @@ case 212: skip_until("Return"); ; break;} -case 213: -#line 1865 "Gmsh.y" +case 220: +#line 1978 "Gmsh.y" { if(!yyvsp[-1].d) skip_until("EndIf"); ; break;} -case 214: -#line 1869 "Gmsh.y" +case 221: +#line 1982 "Gmsh.y" { ; break;} -case 215: -#line 1880 "Gmsh.y" +case 222: +#line 1993 "Gmsh.y" { Curve *pc, *prc; Extrude_ProtudePoint(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,&pc,&prc,NULL); ; break;} -case 216: -#line 1885 "Gmsh.y" +case 223: +#line 1998 "Gmsh.y" { Curve *pc, *prc; Extrude_ProtudePoint(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d, &pc,&prc,NULL); ; break;} -case 217: -#line 1891 "Gmsh.y" +case 224: +#line 2004 "Gmsh.y" { Extrude_ProtudeCurve(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,NULL); ; break;} -case 218: -#line 1895 "Gmsh.y" +case 225: +#line 2008 "Gmsh.y" { Extrude_ProtudeCurve(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,NULL); ; break;} -case 219: -#line 1899 "Gmsh.y" +case 226: +#line 2012 "Gmsh.y" { Extrude_ProtudeSurface(1,(int)yyvsp[-4].d,yyvsp[-2].v[0],yyvsp[-2].v[1],yyvsp[-2].v[2],0.,0.,0.,0.,0,NULL); ; break;} -case 220: -#line 1903 "Gmsh.y" +case 227: +#line 2016 "Gmsh.y" { Extrude_ProtudeSurface(0,(int)yyvsp[-8].d,yyvsp[-6].v[0],yyvsp[-6].v[1],yyvsp[-6].v[2],yyvsp[-4].v[0],yyvsp[-4].v[1],yyvsp[-4].v[2],yyvsp[-2].d,0,NULL); ; break;} -case 221: -#line 1907 "Gmsh.y" +case 228: +#line 2020 "Gmsh.y" { int vol = NEWREG(); Extrude_ProtudeSurface(1,(int)yyvsp[-7].d,yyvsp[-5].v[0],yyvsp[-5].v[1],yyvsp[-5].v[2],0.,0.,0.,0.,vol,&extr); ; break;} -case 222: -#line 1912 "Gmsh.y" +case 229: +#line 2025 "Gmsh.y" { int vol = NEWREG(); Extrude_ProtudeSurface(0,(int)yyvsp[-11].d,yyvsp[-9].v[0],yyvsp[-9].v[1],yyvsp[-9].v[2],yyvsp[-7].v[0],yyvsp[-7].v[1],yyvsp[-7].v[2],yyvsp[-5].d,vol,&extr); ; break;} -case 223: -#line 1920 "Gmsh.y" +case 230: +#line 2033 "Gmsh.y" { ; break;} -case 224: -#line 1923 "Gmsh.y" +case 231: +#line 2036 "Gmsh.y" { ; break;} -case 225: -#line 1929 "Gmsh.y" +case 232: +#line 2042 "Gmsh.y" { double d; int j; @@ -5127,14 +5137,14 @@ case 225: } ; break;} -case 226: -#line 1946 "Gmsh.y" +case 233: +#line 2059 "Gmsh.y" { extr.mesh.Recombine = true; ; break;} -case 227: -#line 1957 "Gmsh.y" +case 234: +#line 2070 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ @@ -5152,8 +5162,8 @@ case 227: } ; break;} -case 228: -#line 1974 "Gmsh.y" +case 235: +#line 2087 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-6].l);i++){ @@ -5171,8 +5181,8 @@ case 228: } ; break;} -case 229: -#line 1991 "Gmsh.y" +case 236: +#line 2104 "Gmsh.y" { Curve *c; for(i=0;i<List_Nbr(yyvsp[-6].l);i++){ @@ -5190,8 +5200,8 @@ case 229: } ; break;} -case 230: -#line 2008 "Gmsh.y" +case 237: +#line 2121 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d,THEM); if(!s) @@ -5213,8 +5223,8 @@ case 230: } ; break;} -case 231: -#line 2029 "Gmsh.y" +case 238: +#line 2142 "Gmsh.y" { Surface *s = FindSurface((int)yyvsp[-4].d,THEM); if(!s) @@ -5235,8 +5245,8 @@ case 231: } ; break;} -case 232: -#line 2049 "Gmsh.y" +case 239: +#line 2162 "Gmsh.y" { Volume *v = FindVolume((int)yyvsp[-4].d,THEM); if(!v) @@ -5257,8 +5267,8 @@ case 232: } ; break;} -case 233: -#line 2069 "Gmsh.y" +case 240: +#line 2182 "Gmsh.y" { Surface *s; for(i=0;i<List_Nbr(yyvsp[-3].l);i++){ @@ -5276,8 +5286,8 @@ case 233: } ; break;} -case 234: -#line 2086 "Gmsh.y" +case 241: +#line 2199 "Gmsh.y" { Surface *s; for(i=0;i<List_Nbr(yyvsp[-1].l);i++){ @@ -5295,217 +5305,310 @@ case 234: } ; break;} -case 235: -#line 2111 "Gmsh.y" +case 242: +#line 2224 "Gmsh.y" { Coherence_PS(); ; break;} -case 236: -#line 2123 "Gmsh.y" +case 243: +#line 2236 "Gmsh.y" {yyval.i = 1;; break;} -case 237: -#line 2124 "Gmsh.y" +case 244: +#line 2237 "Gmsh.y" {yyval.i = 0;; break;} -case 238: -#line 2125 "Gmsh.y" +case 245: +#line 2238 "Gmsh.y" {yyval.i = -1;; break;} -case 239: -#line 2126 "Gmsh.y" +case 246: +#line 2239 "Gmsh.y" {yyval.i = -1;; break;} -case 240: -#line 2127 "Gmsh.y" +case 247: +#line 2240 "Gmsh.y" {yyval.i = -1;; break;} -case 241: -#line 2131 "Gmsh.y" +case 248: +#line 2244 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 242: -#line 2132 "Gmsh.y" +case 249: +#line 2245 "Gmsh.y" { yyval.d = yyvsp[-1].d ; ; break;} -case 243: -#line 2133 "Gmsh.y" +case 250: +#line 2246 "Gmsh.y" { yyval.d = -yyvsp[0].d ; ; break;} -case 244: -#line 2134 "Gmsh.y" +case 251: +#line 2247 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 245: -#line 2135 "Gmsh.y" +case 252: +#line 2248 "Gmsh.y" { yyval.d = !yyvsp[0].d ; ; break;} -case 246: -#line 2136 "Gmsh.y" +case 253: +#line 2249 "Gmsh.y" { yyval.d = yyvsp[-2].d - yyvsp[0].d ; ; break;} -case 247: -#line 2137 "Gmsh.y" +case 254: +#line 2250 "Gmsh.y" { yyval.d = yyvsp[-2].d + yyvsp[0].d ; ; break;} -case 248: -#line 2138 "Gmsh.y" +case 255: +#line 2251 "Gmsh.y" { yyval.d = yyvsp[-2].d * yyvsp[0].d ; ; break;} -case 249: -#line 2139 "Gmsh.y" -{ yyval.d = yyvsp[-2].d / yyvsp[0].d ; ; +case 256: +#line 2253 "Gmsh.y" +{ + if(!yyvsp[0].d) + vyyerror("Division by Zero in '%g / %g'", yyvsp[-2].d, yyvsp[0].d); + else + yyval.d = yyvsp[-2].d / yyvsp[0].d ; + ; break;} -case 250: -#line 2140 "Gmsh.y" +case 257: +#line 2259 "Gmsh.y" { yyval.d = (int)yyvsp[-2].d % (int)yyvsp[0].d ; ; break;} -case 251: -#line 2141 "Gmsh.y" +case 258: +#line 2260 "Gmsh.y" { yyval.d = pow(yyvsp[-2].d,yyvsp[0].d) ; ; break;} -case 252: -#line 2142 "Gmsh.y" +case 259: +#line 2261 "Gmsh.y" { yyval.d = yyvsp[-2].d < yyvsp[0].d ; ; break;} -case 253: -#line 2143 "Gmsh.y" +case 260: +#line 2262 "Gmsh.y" { yyval.d = yyvsp[-2].d > yyvsp[0].d ; ; break;} -case 254: -#line 2144 "Gmsh.y" +case 261: +#line 2263 "Gmsh.y" { yyval.d = yyvsp[-2].d <= yyvsp[0].d ; ; break;} -case 255: -#line 2145 "Gmsh.y" +case 262: +#line 2264 "Gmsh.y" { yyval.d = yyvsp[-2].d >= yyvsp[0].d ; ; break;} -case 256: -#line 2146 "Gmsh.y" +case 263: +#line 2265 "Gmsh.y" { yyval.d = yyvsp[-2].d == yyvsp[0].d ; ; break;} -case 257: -#line 2147 "Gmsh.y" +case 264: +#line 2266 "Gmsh.y" { yyval.d = yyvsp[-2].d != yyvsp[0].d ; ; break;} -case 258: -#line 2148 "Gmsh.y" +case 265: +#line 2267 "Gmsh.y" { yyval.d = yyvsp[-2].d && yyvsp[0].d ; ; break;} -case 259: -#line 2149 "Gmsh.y" +case 266: +#line 2268 "Gmsh.y" { yyval.d = yyvsp[-2].d || yyvsp[0].d ; ; break;} -case 260: -#line 2150 "Gmsh.y" +case 267: +#line 2269 "Gmsh.y" { yyval.d = yyvsp[-4].d? yyvsp[-2].d : yyvsp[0].d ; ; break;} -case 261: -#line 2151 "Gmsh.y" +case 268: +#line 2270 "Gmsh.y" { yyval.d = exp(yyvsp[-1].d); ; break;} -case 262: -#line 2152 "Gmsh.y" +case 269: +#line 2271 "Gmsh.y" { yyval.d = log(yyvsp[-1].d); ; break;} -case 263: -#line 2153 "Gmsh.y" +case 270: +#line 2272 "Gmsh.y" { yyval.d = log10(yyvsp[-1].d); ; break;} -case 264: -#line 2154 "Gmsh.y" +case 271: +#line 2273 "Gmsh.y" { yyval.d = sqrt(yyvsp[-1].d); ; break;} -case 265: -#line 2155 "Gmsh.y" +case 272: +#line 2274 "Gmsh.y" { yyval.d = sin(yyvsp[-1].d); ; break;} -case 266: -#line 2156 "Gmsh.y" +case 273: +#line 2275 "Gmsh.y" { yyval.d = asin(yyvsp[-1].d); ; break;} -case 267: -#line 2157 "Gmsh.y" +case 274: +#line 2276 "Gmsh.y" { yyval.d = cos(yyvsp[-1].d); ; break;} -case 268: -#line 2158 "Gmsh.y" +case 275: +#line 2277 "Gmsh.y" { yyval.d = acos(yyvsp[-1].d); ; break;} -case 269: -#line 2159 "Gmsh.y" +case 276: +#line 2278 "Gmsh.y" { yyval.d = tan(yyvsp[-1].d); ; break;} -case 270: -#line 2160 "Gmsh.y" +case 277: +#line 2279 "Gmsh.y" { yyval.d = atan(yyvsp[-1].d); ; break;} -case 271: -#line 2161 "Gmsh.y" +case 278: +#line 2280 "Gmsh.y" { yyval.d = atan2(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 272: -#line 2162 "Gmsh.y" +case 279: +#line 2281 "Gmsh.y" { yyval.d = sinh(yyvsp[-1].d); ; break;} -case 273: -#line 2163 "Gmsh.y" +case 280: +#line 2282 "Gmsh.y" { yyval.d = cosh(yyvsp[-1].d); ; break;} -case 274: -#line 2164 "Gmsh.y" +case 281: +#line 2283 "Gmsh.y" { yyval.d = tanh(yyvsp[-1].d); ; break;} -case 275: -#line 2165 "Gmsh.y" +case 282: +#line 2284 "Gmsh.y" { yyval.d = fabs(yyvsp[-1].d); ; break;} -case 276: -#line 2166 "Gmsh.y" +case 283: +#line 2285 "Gmsh.y" { yyval.d = floor(yyvsp[-1].d); ; break;} -case 277: -#line 2167 "Gmsh.y" +case 284: +#line 2286 "Gmsh.y" { yyval.d = ceil(yyvsp[-1].d); ; break;} -case 278: -#line 2168 "Gmsh.y" +case 285: +#line 2287 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 279: -#line 2169 "Gmsh.y" +case 286: +#line 2288 "Gmsh.y" { yyval.d = fmod(yyvsp[-3].d,yyvsp[-1].d); ; break;} -case 280: -#line 2170 "Gmsh.y" +case 287: +#line 2289 "Gmsh.y" { yyval.d = sqrt(yyvsp[-3].d*yyvsp[-3].d+yyvsp[-1].d*yyvsp[-1].d); ; break;} -case 281: -#line 2171 "Gmsh.y" +case 288: +#line 2290 "Gmsh.y" { yyval.d = yyvsp[-1].d*(double)rand()/(double)RAND_MAX; ; break;} -case 282: -#line 2175 "Gmsh.y" +case 289: +#line 2299 "Gmsh.y" { yyval.d = yyvsp[0].d; ; break;} -case 283: -#line 2176 "Gmsh.y" +case 290: +#line 2300 "Gmsh.y" { yyval.d = 3.141592653589793; ; break;} -case 284: -#line 2178 "Gmsh.y" +case 291: +#line 2305 "Gmsh.y" { TheSymbol.Name = yyvsp[0].c ; - if (!List_Query(Symbol_L, &TheSymbol, CompareSymbols)) { - vyyerror("Unknown Variable '%s'", yyvsp[0].c) ; yyval.d = 0. ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", yyvsp[0].c) ; + yyval.d = 0. ; + } + else{ + yyval.d = *(double*)List_Pointer_Fast(pSymbol->val, 0) ; } - else yyval.d = TheSymbol.val ; Free(yyvsp[0].c); ; break;} -case 285: -#line 2187 "Gmsh.y" +case 292: +#line 2317 "Gmsh.y" +{ + TheSymbol.Name = yyvsp[-3].c ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", yyvsp[-3].c) ; + yyval.d = 0. ; + } + else{ + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-1].d))) + yyval.d = *pd ; + else{ + vyyerror("Uninitialized Variable '%s[%d]'", yyvsp[-3].c, (int)yyvsp[-1].d) ; + yyval.d = 0. ; + } + } + Free(yyvsp[-3].c); + ; + break;} +case 293: +#line 2335 "Gmsh.y" +{ + TheSymbol.Name = yyvsp[-1].c ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", yyvsp[-1].c) ; + yyval.d = 0. ; + } + else{ + yyval.d = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += 1.0) ; + } + Free(yyvsp[-1].c); + ; + break;} +case 294: +#line 2347 "Gmsh.y" +{ + TheSymbol.Name = yyvsp[-4].c ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", yyvsp[-4].c) ; + yyval.d = 0. ; + } + else{ + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-2].d))) + yyval.d = (*pd += 1.0) ; + else{ + vyyerror("Uninitialized Variable '%s[%d]'", yyvsp[-4].c, (int)yyvsp[-2].d) ; + yyval.d = 0. ; + } + } + Free(yyvsp[-4].c); + ; + break;} +case 295: +#line 2365 "Gmsh.y" +{ + TheSymbol.Name = yyvsp[-1].c ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", yyvsp[-1].c) ; + yyval.d = 0. ; + } + else{ + yyval.d = (*(double*)List_Pointer_Fast(pSymbol->val, 0) -= 1.0) ; + } + Free(yyvsp[-1].c); + ; + break;} +case 296: +#line 2377 "Gmsh.y" +{ + TheSymbol.Name = yyvsp[-4].c ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", yyvsp[-4].c) ; + yyval.d = 0. ; + } + else{ + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)yyvsp[-2].d))) + yyval.d = (*pd -= 1.0) ; + else{ + vyyerror("Uninitialized Variable '%s[%d]'", yyvsp[-4].c, (int)yyvsp[-2].d) ; + yyval.d = 0. ; + } + } + Free(yyvsp[-4].c); + ; + break;} +case 297: +#line 2397 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-2].c))){ vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-2].c); @@ -5527,8 +5630,8 @@ case 285: } ; break;} -case 286: -#line 2208 "Gmsh.y" +case 298: +#line 2418 "Gmsh.y" { if(strcmp(yyvsp[-7].c, "PostProcessing")){ vyyerror("Unknown View Option Class '%s'", yyvsp[-7].c); @@ -5552,8 +5655,8 @@ case 286: } ; break;} -case 287: -#line 2232 "Gmsh.y" +case 299: +#line 2442 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){ vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-3].c); @@ -5575,8 +5678,8 @@ case 287: } ; break;} -case 288: -#line 2253 "Gmsh.y" +case 300: +#line 2463 "Gmsh.y" { if(strcmp(yyvsp[-8].c, "PostProcessing")){ vyyerror("Unknown View Option Class '%s'", yyvsp[-8].c); @@ -5600,8 +5703,8 @@ case 288: } ; break;} -case 289: -#line 2277 "Gmsh.y" +case 301: +#line 2487 "Gmsh.y" { if(!(pNumCat = Get_NumberOptionCategory(yyvsp[-3].c))){ vyyerror("Unknown Numeric Option Class '%s'", yyvsp[-3].c); @@ -5623,8 +5726,8 @@ case 289: } ; break;} -case 290: -#line 2298 "Gmsh.y" +case 302: +#line 2508 "Gmsh.y" { if(strcmp(yyvsp[-8].c, "PostProcessing")){ vyyerror("Unknown View Option Class '%s'", yyvsp[-8].c); @@ -5648,16 +5751,16 @@ case 290: } ; break;} -case 291: -#line 2324 "Gmsh.y" +case 303: +#line 2534 "Gmsh.y" { ListOfDouble2_L = List_Create(2,1,sizeof(double)) ; for(d=yyvsp[-2].d ; (yyvsp[-2].d<yyvsp[0].d)?(d<=yyvsp[0].d):(d>=yyvsp[0].d) ; (yyvsp[-2].d<yyvsp[0].d)?(d+=1.):(d-=1.)) List_Add(ListOfDouble2_L, &d) ; ; break;} -case 292: -#line 2330 "Gmsh.y" +case 304: +#line 2540 "Gmsh.y" { ListOfDouble2_L = List_Create(2,1,sizeof(double)) ; if(!yyvsp[0].d || (yyvsp[-4].d<yyvsp[-2].d && yyvsp[0].d<0) || (yyvsp[-4].d>yyvsp[-2].d && yyvsp[0].d>0)){ @@ -5669,64 +5772,64 @@ case 292: List_Add(ListOfDouble2_L, &d) ; ; break;} -case 293: -#line 2344 "Gmsh.y" +case 305: +#line 2554 "Gmsh.y" { memcpy(yyval.v, yyvsp[0].v, 5*sizeof(double)) ; //??? Avec ce qui suit, bison se plante sur DEC //for(i=0 ; i<5 ; i++) $$[i] = $1[i]; ; break;} -case 294: -#line 2350 "Gmsh.y" +case 306: +#line 2560 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = -yyvsp[0].v[i] ; ; break;} -case 295: -#line 2354 "Gmsh.y" +case 307: +#line 2564 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[0].v[i]; ; break;} -case 296: -#line 2358 "Gmsh.y" +case 308: +#line 2568 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] - yyvsp[0].v[i] ; ; break;} -case 297: -#line 2362 "Gmsh.y" +case 309: +#line 2572 "Gmsh.y" { for(i=0 ; i<5 ; i++) yyval.v[i] = yyvsp[-2].v[i] + yyvsp[0].v[i] ; ; break;} -case 298: -#line 2368 "Gmsh.y" +case 310: +#line 2578 "Gmsh.y" { yyval.v[0]=yyvsp[-9].d; yyval.v[1]=yyvsp[-7].d; yyval.v[2]=yyvsp[-5].d; yyval.v[3]=yyvsp[-3].d; yyval.v[4]=yyvsp[-1].d; ; break;} -case 299: -#line 2372 "Gmsh.y" +case 311: +#line 2582 "Gmsh.y" { yyval.v[0]=yyvsp[-7].d; yyval.v[1]=yyvsp[-5].d; yyval.v[2]=yyvsp[-3].d; yyval.v[3]=yyvsp[-1].d; yyval.v[4]=1.0; ; break;} -case 300: -#line 2376 "Gmsh.y" +case 312: +#line 2586 "Gmsh.y" { yyval.v[0]=yyvsp[-5].d; yyval.v[1]=yyvsp[-3].d; yyval.v[2]=yyvsp[-1].d; yyval.v[3]=0.0; yyval.v[4]=1.0; ; break;} -case 301: -#line 2380 "Gmsh.y" +case 313: +#line 2590 "Gmsh.y" { yyval.v[0]=yyvsp[-5].d; yyval.v[1]=yyvsp[-3].d; yyval.v[2]=yyvsp[-1].d; yyval.v[3]=0.0; yyval.v[4]=1.0; ; break;} -case 302: -#line 2384 "Gmsh.y" +case 314: +#line 2594 "Gmsh.y" { if(!(pArrCat = Get_ArrayOptionCategory(yyvsp[-2].c))){ vyyerror("Unknown Array Option Class '%s'", yyvsp[-2].c); @@ -5759,8 +5862,8 @@ case 302: } ; break;} -case 303: -#line 2416 "Gmsh.y" +case 315: +#line 2626 "Gmsh.y" { if(strcmp(yyvsp[-7].c, "PostProcessing")){ vyyerror("Unknown View Option Class '%s'", yyvsp[-7].c); @@ -5796,84 +5899,101 @@ case 303: } ; break;} -case 304: -#line 2454 "Gmsh.y" +case 316: +#line 2664 "Gmsh.y" { ; break;} -case 305: -#line 2457 "Gmsh.y" +case 317: +#line 2667 "Gmsh.y" { ; break;} -case 306: -#line 2463 "Gmsh.y" +case 318: +#line 2673 "Gmsh.y" { ; break;} -case 307: -#line 2466 "Gmsh.y" +case 319: +#line 2676 "Gmsh.y" { ; break;} -case 308: -#line 2472 "Gmsh.y" +case 320: +#line 2682 "Gmsh.y" { ; break;} -case 309: -#line 2475 "Gmsh.y" +case 321: +#line 2685 "Gmsh.y" { yyval.l=ListOfListOfDouble_L; ; break;} -case 310: -#line 2479 "Gmsh.y" +case 322: +#line 2689 "Gmsh.y" { yyval.l=ListOfListOfDouble_L; ; break;} -case 311: -#line 2486 "Gmsh.y" +case 323: +#line 2696 "Gmsh.y" { ListOfListOfDouble_L = List_Create(2,1,sizeof(List_T*)) ; List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ; ; break;} -case 312: -#line 2491 "Gmsh.y" +case 324: +#line 2701 "Gmsh.y" { List_Add(ListOfListOfDouble_L, &(yyvsp[0].l)) ; ; break;} -case 313: -#line 2498 "Gmsh.y" +case 325: +#line 2708 "Gmsh.y" { ; break;} -case 314: -#line 2501 "Gmsh.y" +case 326: +#line 2711 "Gmsh.y" { ListOfDouble_L = List_Create(2,1,sizeof(double)) ; List_Add(ListOfDouble_L, &(yyvsp[0].d)) ; yyval.l=ListOfDouble_L; ; break;} -case 315: -#line 2507 "Gmsh.y" +case 327: +#line 2717 "Gmsh.y" +{ + ListOfDouble_L = List_Create(2,1,sizeof(double)) ; + TheSymbol.Name = yyvsp[-2].c ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", yyvsp[-2].c) ; + d = 0.0 ; + List_Add(ListOfDouble_L, &d); + } + else{ + for(i = 0 ; i < List_Nbr(pSymbol->val) ; i++) + List_Add(ListOfDouble_L, (double*)List_Pointer_Fast(pSymbol->val, i)) ; + } + yyval.l=ListOfDouble_L; + ; + break;} +case 328: +#line 2732 "Gmsh.y" { yyval.l=ListOfDouble_L; ; break;} -case 316: -#line 2515 "Gmsh.y" +case 329: +#line 2740 "Gmsh.y" { ListOfDouble_L = List_Create(2,1,sizeof(double)) ; List_Add(ListOfDouble_L, &(yyvsp[0].d)) ; ; break;} -case 317: -#line 2520 "Gmsh.y" +case 330: +#line 2745 "Gmsh.y" { ListOfDouble_L = List_Create(2,1,sizeof(double)) ; for(i=0 ; i<List_Nbr(ListOfDouble2_L) ; i++){ @@ -5883,14 +6003,28 @@ case 317: List_Delete(ListOfDouble2_L); ; break;} -case 318: -#line 2529 "Gmsh.y" +case 331: +#line 2754 "Gmsh.y" +{ + ListOfDouble_L = List_Create(2,1,sizeof(double)) ; + TheSymbol.Name = yyvsp[-2].c ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", yyvsp[-2].c) ; + } + else{ + for(i = 0 ; i < List_Nbr(pSymbol->val) ; i++) + List_Add(ListOfDouble_L, (double*)List_Pointer_Fast(pSymbol->val, i)) ; + } + ; + break;} +case 332: +#line 2766 "Gmsh.y" { List_Add(ListOfDouble_L, &(yyvsp[0].d)) ; ; break;} -case 319: -#line 2533 "Gmsh.y" +case 333: +#line 2770 "Gmsh.y" { for(i=0 ; i<List_Nbr(ListOfDouble2_L) ; i++){ List_Read(ListOfDouble2_L, i, &d) ; @@ -5899,34 +6033,47 @@ case 319: List_Delete(ListOfDouble2_L); ; break;} -case 320: -#line 2544 "Gmsh.y" +case 334: +#line 2778 "Gmsh.y" +{ + TheSymbol.Name = yyvsp[-2].c ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", yyvsp[-2].c) ; + } + else{ + for(i = 0 ; i < List_Nbr(pSymbol->val) ; i++) + List_Add(ListOfDouble_L, (double*)List_Pointer_Fast(pSymbol->val, i)) ; + } + ; + break;} +case 335: +#line 2792 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-7].d, (int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d); ; break;} -case 321: -#line 2548 "Gmsh.y" +case 336: +#line 2796 "Gmsh.y" { yyval.u = PACK_COLOR((int)yyvsp[-5].d, (int)yyvsp[-3].d, (int)yyvsp[-1].d, 255); ; break;} -case 322: -#line 2552 "Gmsh.y" +case 337: +#line 2800 "Gmsh.y" { yyval.u = Get_ColorForString(ColorString, (int)yyvsp[-1].d, yyvsp[-3].c, &flag); if(flag) vyyerror("Unknown Color '%s'", yyvsp[-3].c); ; break;} -case 323: -#line 2557 "Gmsh.y" +case 338: +#line 2805 "Gmsh.y" { yyval.u = Get_ColorForString(ColorString, -1, yyvsp[0].c, &flag); if(flag) vyyerror("Unknown Color '%s'", yyvsp[0].c); ; break;} -case 324: -#line 2562 "Gmsh.y" +case 339: +#line 2810 "Gmsh.y" { if(!(pColCat = Get_ColorOptionCategory(yyvsp[-4].c))){ vyyerror("Unknown Color Option Class '%s'", yyvsp[-4].c); @@ -5943,14 +6090,14 @@ case 324: } ; break;} -case 325: -#line 2582 "Gmsh.y" +case 340: +#line 2830 "Gmsh.y" { yyval.l = ListOfColor_L; ; break;} -case 326: -#line 2586 "Gmsh.y" +case 341: +#line 2834 "Gmsh.y" { if(!ListOfColor_L) ListOfColor_L = List_Create(256,10,sizeof(unsigned int)) ; @@ -5970,8 +6117,8 @@ case 326: yyval.l = ListOfColor_L; ; break;} -case 327: -#line 2608 "Gmsh.y" +case 342: +#line 2856 "Gmsh.y" { if(!ListOfColor_L) ListOfColor_L = List_Create(256,10,sizeof(unsigned int)) ; @@ -5980,26 +6127,26 @@ case 327: List_Add(ListOfColor_L, &(yyvsp[0].u)) ; ; break;} -case 328: -#line 2616 "Gmsh.y" +case 343: +#line 2864 "Gmsh.y" { List_Add(ListOfColor_L, &(yyvsp[0].u)) ; ; break;} -case 329: -#line 2623 "Gmsh.y" +case 344: +#line 2871 "Gmsh.y" { yyval.c = yyvsp[0].c; ; break;} -case 330: -#line 2627 "Gmsh.y" +case 345: +#line 2875 "Gmsh.y" { yyval.c = yyvsp[-1].c; ; break;} -case 331: -#line 2631 "Gmsh.y" +case 346: +#line 2879 "Gmsh.y" { sprintf(tmpstring, yyvsp[-3].c, yyvsp[-1].d); yyval.c = (char*)Malloc(strlen(tmpstring)); @@ -6008,7 +6155,7 @@ case 331: break;} } /* the action file gets copied in in place of this dollarsign */ -#line 543 "/usr/lib/bison.simple" +#line 498 "/usr/local/share/bison.simple" yyvsp -= yylen; yyssp -= yylen; @@ -6203,32 +6350,8 @@ yyerrhandle: yystate = yyn; goto yynewstate; - - yyacceptlab: - /* YYACCEPT comes here. */ - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 0; - - yyabortlab: - /* YYABORT comes here. */ - if (yyfree_stacks) - { - free (yyss); - free (yyvs); -#ifdef YYLSP_NEEDED - free (yyls); -#endif - } - return 1; } -#line 2638 "Gmsh.y" +#line 2886 "Gmsh.y" void InitSymbols(void){ @@ -6236,6 +6359,9 @@ void InitSymbols(void){ } void DeleteSymbols(void){ + int i; + for(i = 0 ; i < List_Nbr(Symbol_L) ; i++) + List_Delete(((Symbol*)List_Pointer_Fast(Symbol_L,i))->val); List_Delete(Symbol_L); } diff --git a/Parser/Gmsh.tab.cpp.h b/Parser/Gmsh.tab.cpp.h index 4af43ae30d3184476027b7ec8495c0d718d5f19e..cbf95a15385bc908c0bbab1d7e79d3d734f33395 100644 --- a/Parser/Gmsh.tab.cpp.h +++ b/Parser/Gmsh.tab.cpp.h @@ -7,166 +7,166 @@ typedef union { Shape s; List_T *l; } YYSTYPE; -#define tDOUBLE 257 -#define tSTRING 258 -#define tBIGSTR 259 -#define tEND 260 -#define tAFFECT 261 -#define tDOTS 262 -#define tPi 263 -#define tExp 264 -#define tLog 265 -#define tLog10 266 -#define tSqrt 267 -#define tSin 268 -#define tAsin 269 -#define tCos 270 -#define tAcos 271 -#define tTan 272 -#define tRand 273 -#define tAtan 274 -#define tAtan2 275 -#define tSinh 276 -#define tCosh 277 -#define tTanh 278 -#define tFabs 279 -#define tFloor 280 -#define tCeil 281 -#define tFmod 282 -#define tModulo 283 -#define tHypot 284 -#define tPrintf 285 -#define tSprintf 286 -#define tDraw 287 -#define tPoint 288 -#define tCircle 289 -#define tEllipsis 290 -#define tLine 291 -#define tSurface 292 -#define tSpline 293 -#define tVolume 294 -#define tCharacteristic 295 -#define tLength 296 -#define tParametric 297 -#define tElliptic 298 -#define tPlane 299 -#define tRuled 300 -#define tTransfinite 301 -#define tComplex 302 -#define tPhysical 303 -#define tUsing 304 -#define tBump 305 -#define tProgression 306 -#define tRotate 307 -#define tTranslate 308 -#define tSymmetry 309 -#define tDilate 310 -#define tExtrude 311 -#define tDuplicata 312 -#define tLoop 313 -#define tRecombine 314 -#define tDelete 315 -#define tCoherence 316 -#define tView 317 -#define tAttractor 318 -#define tLayers 319 -#define tScalarTetrahedron 320 -#define tVectorTetrahedron 321 -#define tTensorTetrahedron 322 -#define tScalarTriangle 323 -#define tVectorTriangle 324 -#define tTensorTriangle 325 -#define tScalarLine 326 -#define tVectorLine 327 -#define tTensorLine 328 -#define tScalarPoint 329 -#define tVectorPoint 330 -#define tTensorPoint 331 -#define tBSpline 332 -#define tNurbs 333 -#define tOrder 334 -#define tWith 335 -#define tBounds 336 -#define tKnots 337 -#define tColor 338 -#define tFor 339 -#define tIn 340 -#define tEndFor 341 -#define tIf 342 -#define tEndIf 343 -#define tExit 344 -#define tMerge 345 -#define tReturn 346 -#define tCall 347 -#define tFunction 348 -#define tB_SPLINE_SURFACE_WITH_KNOTS 349 -#define tB_SPLINE_CURVE_WITH_KNOTS 350 -#define tCARTESIAN_POINT 351 -#define tTRUE 352 -#define tFALSE 353 -#define tUNSPECIFIED 354 -#define tU 355 -#define tV 356 -#define tEDGE_CURVE 357 -#define tVERTEX_POINT 358 -#define tORIENTED_EDGE 359 -#define tPLANE 360 -#define tFACE_OUTER_BOUND 361 -#define tEDGE_LOOP 362 -#define tADVANCED_FACE 363 -#define tVECTOR 364 -#define tDIRECTION 365 -#define tAXIS2_PLACEMENT_3D 366 -#define tISO 367 -#define tENDISO 368 -#define tENDSEC 369 -#define tDATA 370 -#define tHEADER 371 -#define tFILE_DESCRIPTION 372 -#define tFILE_SCHEMA 373 -#define tFILE_NAME 374 -#define tMANIFOLD_SOLID_BREP 375 -#define tCLOSED_SHELL 376 -#define tADVANCED_BREP_SHAPE_REPRESENTATION 377 -#define tFACE_BOUND 378 -#define tCYLINDRICAL_SURFACE 379 -#define tCONICAL_SURFACE 380 -#define tCIRCLE 381 -#define tTRIMMED_CURVE 382 -#define tGEOMETRIC_SET 383 -#define tCOMPOSITE_CURVE_SEGMENT 384 -#define tCONTINUOUS 385 -#define tCOMPOSITE_CURVE 386 -#define tTOROIDAL_SURFACE 387 -#define tPRODUCT_DEFINITION 388 -#define tPRODUCT_DEFINITION_SHAPE 389 -#define tSHAPE_DEFINITION_REPRESENTATION 390 -#define tELLIPSE 391 -#define tTrimmed 392 -#define tSolid 393 -#define tEndSolid 394 -#define tVertex 395 -#define tFacet 396 -#define tNormal 397 -#define tOuter 398 -#define tLoopSTL 399 -#define tEndLoop 400 -#define tEndFacet 401 -#define tAND 402 -#define tOR 403 -#define tNOTEQUAL 404 -#define tEQUAL 405 -#define tAPPROXEQUAL 406 -#define tAFFECTPLUS 407 -#define tAFFECTMINUS 408 -#define tAFFECTTIMES 409 -#define tAFFECTDIVIDE 410 -#define tLESSOREQUAL 411 -#define tGREATEROREQUAL 412 -#define tCROSSPRODUCT 413 -#define UNARYPREC 414 +#define tDOUBLE 258 +#define tSTRING 259 +#define tBIGSTR 260 +#define tEND 261 +#define tAFFECT 262 +#define tDOTS 263 +#define tPi 264 +#define tExp 265 +#define tLog 266 +#define tLog10 267 +#define tSqrt 268 +#define tSin 269 +#define tAsin 270 +#define tCos 271 +#define tAcos 272 +#define tTan 273 +#define tRand 274 +#define tAtan 275 +#define tAtan2 276 +#define tSinh 277 +#define tCosh 278 +#define tTanh 279 +#define tFabs 280 +#define tFloor 281 +#define tCeil 282 +#define tFmod 283 +#define tModulo 284 +#define tHypot 285 +#define tPrintf 286 +#define tSprintf 287 +#define tDraw 288 +#define tPoint 289 +#define tCircle 290 +#define tEllipsis 291 +#define tLine 292 +#define tSurface 293 +#define tSpline 294 +#define tVolume 295 +#define tCharacteristic 296 +#define tLength 297 +#define tParametric 298 +#define tElliptic 299 +#define tPlane 300 +#define tRuled 301 +#define tTransfinite 302 +#define tComplex 303 +#define tPhysical 304 +#define tUsing 305 +#define tBump 306 +#define tProgression 307 +#define tRotate 308 +#define tTranslate 309 +#define tSymmetry 310 +#define tDilate 311 +#define tExtrude 312 +#define tDuplicata 313 +#define tLoop 314 +#define tRecombine 315 +#define tDelete 316 +#define tCoherence 317 +#define tView 318 +#define tAttractor 319 +#define tLayers 320 +#define tScalarTetrahedron 321 +#define tVectorTetrahedron 322 +#define tTensorTetrahedron 323 +#define tScalarTriangle 324 +#define tVectorTriangle 325 +#define tTensorTriangle 326 +#define tScalarLine 327 +#define tVectorLine 328 +#define tTensorLine 329 +#define tScalarPoint 330 +#define tVectorPoint 331 +#define tTensorPoint 332 +#define tBSpline 333 +#define tNurbs 334 +#define tOrder 335 +#define tWith 336 +#define tBounds 337 +#define tKnots 338 +#define tColor 339 +#define tFor 340 +#define tIn 341 +#define tEndFor 342 +#define tIf 343 +#define tEndIf 344 +#define tExit 345 +#define tMerge 346 +#define tReturn 347 +#define tCall 348 +#define tFunction 349 +#define tB_SPLINE_SURFACE_WITH_KNOTS 350 +#define tB_SPLINE_CURVE_WITH_KNOTS 351 +#define tCARTESIAN_POINT 352 +#define tTRUE 353 +#define tFALSE 354 +#define tUNSPECIFIED 355 +#define tU 356 +#define tV 357 +#define tEDGE_CURVE 358 +#define tVERTEX_POINT 359 +#define tORIENTED_EDGE 360 +#define tPLANE 361 +#define tFACE_OUTER_BOUND 362 +#define tEDGE_LOOP 363 +#define tADVANCED_FACE 364 +#define tVECTOR 365 +#define tDIRECTION 366 +#define tAXIS2_PLACEMENT_3D 367 +#define tISO 368 +#define tENDISO 369 +#define tENDSEC 370 +#define tDATA 371 +#define tHEADER 372 +#define tFILE_DESCRIPTION 373 +#define tFILE_SCHEMA 374 +#define tFILE_NAME 375 +#define tMANIFOLD_SOLID_BREP 376 +#define tCLOSED_SHELL 377 +#define tADVANCED_BREP_SHAPE_REPRESENTATION 378 +#define tFACE_BOUND 379 +#define tCYLINDRICAL_SURFACE 380 +#define tCONICAL_SURFACE 381 +#define tCIRCLE 382 +#define tTRIMMED_CURVE 383 +#define tGEOMETRIC_SET 384 +#define tCOMPOSITE_CURVE_SEGMENT 385 +#define tCONTINUOUS 386 +#define tCOMPOSITE_CURVE 387 +#define tTOROIDAL_SURFACE 388 +#define tPRODUCT_DEFINITION 389 +#define tPRODUCT_DEFINITION_SHAPE 390 +#define tSHAPE_DEFINITION_REPRESENTATION 391 +#define tELLIPSE 392 +#define tTrimmed 393 +#define tSolid 394 +#define tEndSolid 395 +#define tVertex 396 +#define tFacet 397 +#define tNormal 398 +#define tOuter 399 +#define tLoopSTL 400 +#define tEndLoop 401 +#define tEndFacet 402 +#define tAFFECTPLUS 403 +#define tAFFECTMINUS 404 +#define tAFFECTTIMES 405 +#define tAFFECTDIVIDE 406 +#define tOR 407 +#define tAND 408 +#define tEQUAL 409 +#define tNOTEQUAL 410 +#define tAPPROXEQUAL 411 +#define tLESSOREQUAL 412 +#define tGREATEROREQUAL 413 +#define tCROSSPRODUCT 414 #define tPLUSPLUS 415 #define tMINUSMINUS 416 +#define UNARYPREC 417 extern YYSTYPE yylval; diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 7b93a02ed09f2541abb0d2cf3b8baa7de5d47b58..0feb6b21ff37d0dc268a8280af3bbfa09cffe9af 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -1,4 +1,4 @@ -%{ /* $Id: Gmsh.y,v 1.39 2000-12-11 00:14:04 geuzaine Exp $ */ +%{ /* $Id: Gmsh.y,v 1.40 2000-12-11 16:23:15 geuzaine Exp $ */ #include <stdarg.h> @@ -23,12 +23,12 @@ #include <alloca.h> #endif -int Force_ViewNumber = 0 ; -List_T *Symbol_L; +int Force_ViewNumber = 0 ; +List_T *Symbol_L; -extern Mesh *THEM; +extern Mesh *THEM; extern Post_View *ActualView; -extern char ThePathForIncludes[NAME_STR_L]; +extern char ThePathForIncludes[NAME_STR_L]; static FILE *yyinTab[MAX_OPEN_FILES]; static int yylinenoTab[MAX_OPEN_FILES]; @@ -42,7 +42,7 @@ static Surface *STL_Surf; static Shape TheShape; static int i,j,k,flag,RecursionLevel=0,ImbricatedLoop = 0; static int Last_NumberOfPoints = 0; -static double d; +static double d, *pd; static ExtrudeParams extr; static List_T *ListOfDouble_L,*ListOfDouble2_L; static List_T *ListOfListOfDouble_L, *ListOfColor_L=NULL; @@ -116,27 +116,25 @@ void skip_until (char *until); %type <l> ListOfStrings ListOfDouble ListOfListOfDouble ListOfColor %type <s> Shape -/* A VERFIFIER ! Je n'ai pas le bouquin sous les yeux */ - /* ------------------------------------------------------------------ */ -/* Operators (with ascending priority) : cf. C language */ +/* Operators (with ascending priority): cf. C language */ /* */ -/* Notes: - evaluation order (%left, %right) */ +/* Notes: - associativity (%left, %right) */ /* - UNARYPREC is a dummy terminal to resolve ambiguous cases */ /* for + and - (which exist in both unary and binary form) */ /* ------------------------------------------------------------------ */ -%left tAFFECT +%right tAFFECT tAFFECTPLUS tAFFECTMINUS tAFFECTTIMES tAFFECTDIVIDE %right '?' tDOTS -%left tAND tOR -%left tNOTEQUAL tEQUAL tAPPROXEQUAL -%left tAFFECTPLUS tAFFECTMINUS tAFFECTTIMES tAFFECTDIVIDE -%left '<' '>' tLESSOREQUAL tGREATEROREQUAL +%left tOR +%left tAND +%left tEQUAL tNOTEQUAL tAPPROXEQUAL +%left '<' tLESSOREQUAL '>' tGREATEROREQUAL %left '+' '-' -%left '*' '/' '%' -%left tCROSSPRODUCT -%left UNARYPREC '!' +%left '*' '/' '%' tCROSSPRODUCT +%right '!' tPLUSPLUS tMINUSMINUS UNARYPREC %right '^' -%left tPLUSPLUS tMINUSMINUS +%left '(' ')' '[' ']' '.' +/* ------------------------------------------------------------------ */ %start All @@ -719,16 +717,47 @@ Affectation : tSTRING tAFFECT FExpr tEND { TheSymbol.Name = $1; - TheSymbol.val = $3; - List_Replace(Symbol_L,&TheSymbol,CompareSymbols); + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + TheSymbol.val = List_Create(1,1,sizeof(double)); + List_Put(TheSymbol.val, 0, &$3); + List_Add(Symbol_L, &TheSymbol); + } + else{ + List_Write(pSymbol->val, 0, &$3); + } + } + | tSTRING '[' FExpr ']' tAFFECT FExpr tEND + { + TheSymbol.Name = $1; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + TheSymbol.val = List_Create(5,5,sizeof(double)); + List_Put(TheSymbol.val, (int)$3, &$6); + List_Add(Symbol_L, &TheSymbol); + } + else{ + List_Put(pSymbol->val, (int)$3, &$6); + } } | tSTRING tPLUSPLUS tEND { TheSymbol.Name = $1 ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) vyyerror("Unknown Variable '%s'", $1) ; - else - pSymbol->val += 1. ; + else{ + *(double*)List_Pointer_Fast(pSymbol->val, 0) += 1.0 ; + } + } + | tSTRING '[' FExpr ']' tPLUSPLUS tEND + { + TheSymbol.Name = $1 ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + vyyerror("Unknown Variable '%s'", $1) ; + else{ + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)$3))) + *pd += 1.0 ; + else + vyyerror("Uninitialized Variable '%s[%d]'", $1, (int)$3) ; + } } | tSTRING tMINUSMINUS tEND { @@ -736,7 +765,19 @@ Affectation : if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) vyyerror("Unknown Variable '%s'", $1) ; else - pSymbol->val -= 1. ; + *(double*)List_Pointer_Fast(pSymbol->val, 0) -= 1. ; + } + | tSTRING '[' FExpr ']' tMINUSMINUS tEND + { + TheSymbol.Name = $1 ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + vyyerror("Unknown Variable '%s'", $1) ; + else{ + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)$3))) + *pd -= 1.0 ; + else + vyyerror("Uninitialized Variable '%s[%d]'", $1, (int)$3) ; + } } | tSTRING tAFFECTPLUS FExpr tEND { @@ -744,7 +785,19 @@ Affectation : if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) vyyerror("Unknown Variable '%s'", $1) ; else - pSymbol->val += $3 ; + *(double*)List_Pointer_Fast(pSymbol->val, 0) += $3 ; + } + | tSTRING '[' FExpr ']' tAFFECTPLUS FExpr tEND + { + TheSymbol.Name = $1 ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + vyyerror("Unknown Variable '%s'", $1) ; + else{ + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)$3))) + *pd += $6 ; + else + vyyerror("Uninitialized Variable '%s[%d]'", $1, (int)$3) ; + } } | tSTRING tAFFECTMINUS FExpr tEND { @@ -752,7 +805,19 @@ Affectation : if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) vyyerror("Unknown Variable '%s'", $1) ; else - pSymbol->val -= $3 ; + *(double*)List_Pointer_Fast(pSymbol->val, 0) -= $3 ; + } + | tSTRING '[' FExpr ']' tAFFECTMINUS FExpr tEND + { + TheSymbol.Name = $1 ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + vyyerror("Unknown Variable '%s'", $1) ; + else{ + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)$3))) + *pd -= $6 ; + else + vyyerror("Uninitialized Variable '%s[%d]'", $1, (int)$3) ; + } } | tSTRING tAFFECTTIMES FExpr tEND { @@ -760,15 +825,47 @@ Affectation : if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) vyyerror("Unknown Variable '%s'", $1) ; else - pSymbol->val *= $3 ; + *(double*)List_Pointer_Fast(pSymbol->val, 0) *= $3 ; } - | tSTRING tAFFECTDIVIDE FExpr tEND + | tSTRING '[' FExpr ']' tAFFECTTIMES FExpr tEND { TheSymbol.Name = $1 ; if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) vyyerror("Unknown Variable '%s'", $1) ; - else - pSymbol->val /= $3 ; + else{ + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)$3))) + *pd *= $6 ; + else + vyyerror("Uninitialized Variable '%s[%d]'", $1, (int)$3) ; + } + } + | tSTRING tAFFECTDIVIDE FExpr tEND + { + if(!$3) + vyyerror("Division by Zero in '%s /= %g'", $1, $3); + else{ + TheSymbol.Name = $1 ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + vyyerror("Unknown Variable '%s'", $1) ; + else + *(double*)List_Pointer_Fast(pSymbol->val, 0) /= $3 ; + } + } + | tSTRING '[' FExpr ']' tAFFECTDIVIDE FExpr tEND + { + if(!$6) + vyyerror("Division by Zero in '%s[%d] /= %g'", $1, (int)$3, $6); + else{ + TheSymbol.Name = $1 ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) + vyyerror("Unknown Variable '%s'", $1) ; + else{ + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)$3))) + *pd /= $6 ; + else + vyyerror("Uninitialized Variable '%s[%d]'", $1, (int)$3) ; + } + } } /* -------- Option Strings -------- */ @@ -958,37 +1055,46 @@ Affectation : | tSTRING '.' tSTRING tAFFECTDIVIDE FExpr tEND { - if(!(pNumCat = Get_NumberOptionCategory($1))) - vyyerror("Unknown Numeric Option Class '%s'", $1); + if(!$5) + vyyerror("Division by Zero in '%s.%s /= %g'", $1, $3, $5); else{ - if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i))) - vyyerror("Unknown Numeric Option '%s.%s'", $1, $3); + if(!(pNumCat = Get_NumberOptionCategory($1))) + vyyerror("Unknown Numeric Option Class '%s'", $1); else{ - switch(i){ - case GMSH_DOUBLE : *(double*)pNumOpt /= $5 ; break ; - case GMSH_FLOAT : *(float*)pNumOpt /= (float)$5 ; break ; - case GMSH_LONG : *(long*)pNumOpt /= (long)$5 ; break ; - case GMSH_INT : *(int*)pNumOpt /= (int)$5 ; break ; + if(!(pNumOpt = Get_NumberOption($3, pNumCat, &i))) + vyyerror("Unknown Numeric Option '%s.%s'", $1, $3); + else{ + switch(i){ + case GMSH_DOUBLE : *(double*)pNumOpt /= $5 ; break ; + case GMSH_FLOAT : *(float*)pNumOpt /= (float)$5 ; break ; + case GMSH_LONG : *(long*)pNumOpt /= (long)$5 ; break ; + case GMSH_INT : *(int*)pNumOpt /= (int)$5 ; break ; + } } } } } | tSTRING '.' tView '[' FExpr ']' '.' tSTRING tAFFECTDIVIDE FExpr tEND { - if(strcmp($1, "PostProcessing")) - vyyerror("Unknown View Option Class '%s'", $1); + if(!$10) + vyyerror("Division by Zero in '%s.View[%d].%s /= %g'", + $1, (int)$5, $8, $10); else{ - if(!(pNumOpt = Get_NumberViewOption((int)$5, $8, &i))){ - if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5); - else vyyerror("Unknown Numeric Option '%s.View[%d].%s'", - $1, (int)$5, $8); - } + if(strcmp($1, "PostProcessing")) + vyyerror("Unknown View Option Class '%s'", $1); else{ - switch(i){ - case GMSH_DOUBLE : *(double*)pNumOpt /= $10 ; break ; - case GMSH_FLOAT : *(float*)pNumOpt /= (float)$10 ; break ; - case GMSH_LONG : *(long*)pNumOpt /= (long)$10 ; break ; - case GMSH_INT : *(int*)pNumOpt /= (int)$10 ; break ; + if(!(pNumOpt = Get_NumberViewOption((int)$5, $8, &i))){ + if(i < 0) vyyerror("PostProcessing View %d does not Exist", (int)$5); + else vyyerror("Unknown Numeric Option '%s.View[%d].%s'", + $1, (int)$5, $8); + } + else{ + switch(i){ + case GMSH_DOUBLE : *(double*)pNumOpt /= $10 ; break ; + case GMSH_FLOAT : *(float*)pNumOpt /= (float)$10 ; break ; + case GMSH_LONG : *(long*)pNumOpt /= (long)$10 ; break ; + case GMSH_INT : *(int*)pNumOpt /= (int)$10 ; break ; + } } } } @@ -1789,11 +1895,14 @@ Loop : LoopControlVariablesNameTab[ImbricatedLoop] = $2 ; TheSymbol.Name = $2; - TheSymbol.val = $5; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) - List_Add(Symbol_L,&TheSymbol); - else - pSymbol->val = $5; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + TheSymbol.val = List_Create(1,1,sizeof(double)); + List_Put(TheSymbol.val, 0, &$5); + List_Add(Symbol_L, &TheSymbol); + } + else{ + List_Write(pSymbol->val, 0, &$5); + } fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]); } @@ -1809,13 +1918,16 @@ Loop : LoopControlVariablesTab[ImbricatedLoop][1] = $7 ; LoopControlVariablesTab[ImbricatedLoop][2] = $9 ; LoopControlVariablesNameTab[ImbricatedLoop] = $2 ; - + TheSymbol.Name = $2; - TheSymbol.val = $5; - if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) - List_Add(Symbol_L,&TheSymbol); - else - pSymbol->val = $5; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))){ + TheSymbol.val = List_Create(1,1,sizeof(double)); + List_Put(TheSymbol.val, 0, &$5); + List_Add(Symbol_L, &TheSymbol); + } + else{ + List_Write(pSymbol->val, 0, &$5); + } fgetpos( ff, &yyposImbricatedLoopsTab[ImbricatedLoop++]); } @@ -1835,7 +1947,8 @@ Loop : if(strlen(LoopControlVariablesNameTab[ImbricatedLoop-1])){ TheSymbol.Name = LoopControlVariablesNameTab[ImbricatedLoop-1]; pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols); - pSymbol->val += LoopControlVariablesTab[ImbricatedLoop-1][2]; + *(double*)List_Pointer_Fast(pSymbol->val, 0) += + LoopControlVariablesTab[ImbricatedLoop-1][2] ; } fsetpos( yyin, &yyposImbricatedLoopsTab[ImbricatedLoop-1]); @@ -2136,7 +2249,13 @@ FExpr : | FExpr '-' FExpr { $$ = $1 - $3 ; } | FExpr '+' FExpr { $$ = $1 + $3 ; } | FExpr '*' FExpr { $$ = $1 * $3 ; } - | FExpr '/' FExpr { $$ = $1 / $3 ; } + | FExpr '/' FExpr + { + if(!$3) + vyyerror("Division by Zero in '%g / %g'", $1, $3); + else + $$ = $1 / $3 ; + } | FExpr '%' FExpr { $$ = (int)$1 % (int)$3 ; } | FExpr '^' FExpr { $$ = pow($1,$3) ; } | FExpr '<' FExpr { $$ = $1 < $3 ; } @@ -2171,18 +2290,109 @@ FExpr : | tRand '(' FExpr ')' { $$ = $3*(double)rand()/(double)RAND_MAX; } ; +/* Pour etre vraiment complet, il faudrait encore ajouter +=, -=, *= et /= */ + FExpr_Single : + + /* -------- Constants -------- */ + tDOUBLE { $$ = $1; } | tPi { $$ = 3.141592653589793; } + + /* -------- Variables -------- */ + | tSTRING { TheSymbol.Name = $1 ; - if (!List_Query(Symbol_L, &TheSymbol, CompareSymbols)) { - vyyerror("Unknown Variable '%s'", $1) ; $$ = 0. ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", $1) ; + $$ = 0. ; + } + else{ + $$ = *(double*)List_Pointer_Fast(pSymbol->val, 0) ; + } + Free($1); + } + | tSTRING '[' FExpr ']' + { + TheSymbol.Name = $1 ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", $1) ; + $$ = 0. ; + } + else{ + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)$3))) + $$ = *pd ; + else{ + vyyerror("Uninitialized Variable '%s[%d]'", $1, (int)$3) ; + $$ = 0. ; + } } - else $$ = TheSymbol.val ; Free($1); } + + | tSTRING tPLUSPLUS + { + TheSymbol.Name = $1 ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", $1) ; + $$ = 0. ; + } + else{ + $$ = (*(double*)List_Pointer_Fast(pSymbol->val, 0) += 1.0) ; + } + Free($1); + } + | tSTRING '[' FExpr ']' tPLUSPLUS + { + TheSymbol.Name = $1 ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", $1) ; + $$ = 0. ; + } + else{ + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)$3))) + $$ = (*pd += 1.0) ; + else{ + vyyerror("Uninitialized Variable '%s[%d]'", $1, (int)$3) ; + $$ = 0. ; + } + } + Free($1); + } + + | tSTRING tMINUSMINUS + { + TheSymbol.Name = $1 ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", $1) ; + $$ = 0. ; + } + else{ + $$ = (*(double*)List_Pointer_Fast(pSymbol->val, 0) -= 1.0) ; + } + Free($1); + } + | tSTRING '[' FExpr ']' tMINUSMINUS + { + TheSymbol.Name = $1 ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", $1) ; + $$ = 0. ; + } + else{ + if((pd = (double*)List_Pointer_Test(pSymbol->val, (int)$3))) + $$ = (*pd -= 1.0) ; + else{ + vyyerror("Uninitialized Variable '%s[%d]'", $1, (int)$3) ; + $$ = 0. ; + } + } + Free($1); + } + + /* -------- Option Strings -------- */ + | tSTRING '.' tSTRING { if(!(pNumCat = Get_NumberOptionCategory($1))){ @@ -2503,6 +2713,21 @@ ListOfDouble : List_Add(ListOfDouble_L, &($1)) ; $$=ListOfDouble_L; } + | tSTRING '[' ']' + { + ListOfDouble_L = List_Create(2,1,sizeof(double)) ; + TheSymbol.Name = $1 ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", $1) ; + d = 0.0 ; + List_Add(ListOfDouble_L, &d); + } + else{ + for(i = 0 ; i < List_Nbr(pSymbol->val) ; i++) + List_Add(ListOfDouble_L, (double*)List_Pointer_Fast(pSymbol->val, i)) ; + } + $$=ListOfDouble_L; + } | '{' RecursiveListOfDouble '}' { $$=ListOfDouble_L; @@ -2525,6 +2750,18 @@ RecursiveListOfDouble : } List_Delete(ListOfDouble2_L); } + | tSTRING '[' ']' + { + ListOfDouble_L = List_Create(2,1,sizeof(double)) ; + TheSymbol.Name = $1 ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", $1) ; + } + else{ + for(i = 0 ; i < List_Nbr(pSymbol->val) ; i++) + List_Add(ListOfDouble_L, (double*)List_Pointer_Fast(pSymbol->val, i)) ; + } + } | RecursiveListOfDouble ',' FExpr { List_Add(ListOfDouble_L, &($3)) ; @@ -2537,6 +2774,17 @@ RecursiveListOfDouble : } List_Delete(ListOfDouble2_L); } + | RecursiveListOfDouble ',' tSTRING '[' ']' + { + TheSymbol.Name = $3 ; + if (!(pSymbol = (Symbol*)List_PQuery(Symbol_L, &TheSymbol, CompareSymbols))) { + vyyerror("Unknown Variable '%s'", $3) ; + } + else{ + for(i = 0 ; i < List_Nbr(pSymbol->val) ; i++) + List_Add(ListOfDouble_L, (double*)List_Pointer_Fast(pSymbol->val, i)) ; + } + } ; ColorExpr : @@ -2642,6 +2890,9 @@ void InitSymbols(void){ } void DeleteSymbols(void){ + int i; + for(i = 0 ; i < List_Nbr(Symbol_L) ; i++) + List_Delete(((Symbol*)List_Pointer_Fast(Symbol_L,i))->val); List_Delete(Symbol_L); } diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp index 8f3e35479c39b54018ee22da0a9d55434b695265..b4abc69899b14f649680a6cc2e67b917ed52b6bb 100644 --- a/Parser/Gmsh.yy.cpp +++ b/Parser/Gmsh.yy.cpp @@ -2,7 +2,7 @@ /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.43 2000-12-11 00:14:04 geuzaine Exp $ + * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.44 2000-12-11 16:23:15 geuzaine Exp $ */ #define FLEX_SCANNER @@ -1160,7 +1160,7 @@ YY_MALLOC_DECL YY_DECL { register yy_state_type yy_current_state; - register char *yy_cp = NULL, *yy_bp = NULL; + register char *yy_cp, *yy_bp; register int yy_act; #line 60 "Gmsh.l" diff --git a/Parser/Parser.h b/Parser/Parser.h index 4d506c7543c907ce7f84922759cda04a56838b82..46cd44a339f9efc820c5a2016ce99ec4dffcf3b9 100644 --- a/Parser/Parser.h +++ b/Parser/Parser.h @@ -1,10 +1,10 @@ -/* $Id: Parser.h,v 1.3 2000-11-23 14:11:38 geuzaine Exp $ */ +/* $Id: Parser.h,v 1.4 2000-12-11 16:23:15 geuzaine Exp $ */ #ifndef _PARSER_H_ #define _PARSER_H_ typedef struct { char *Name; - double val; + List_T *val; } Symbol; void InitSymbols (void); diff --git a/tutorial/t5.geo b/tutorial/t5.geo index a450beb990097620ce47c6bb37059448286be927..01eec19642c9b3dcb7e602db8e9fec0b3acab1d0 100644 --- a/tutorial/t5.geo +++ b/tutorial/t5.geo @@ -2,7 +2,7 @@ * * Gmsh tutorial 5 * - * Characteristic lengths, Functions, Loops + * Characteristic lengths, Arrays of variables, Functions, Loops * *********************************************************************/ @@ -102,13 +102,21 @@ Function CheeseHole l7 = newreg; Line Loop(l7) = {c2,c7,c12}; Ruled Surface(newreg) = {l7}; l8 = newreg; Line Loop(l8) = {-c6,-c9,c2}; Ruled Surface(newreg) = {l8}; - l9 = newreg; Surface Loop(l9) = {l8+1, l5+1, l1+1, l2+1, -(l3+1), -(l7+1), l6+1, l4+1}; - thehole = newreg; Volume(thehole) = {l9}; +// Arrays of variables can be manipulated in the same way as classical +// variables. Warning: accessing an uninitialized element in an array +// will produce an unpredictable result. + + theloops[t] = newreg ; + + Surface Loop(theloops[t]) = {l8+1, l5+1, l1+1, l2+1, -(l3+1), -(l7+1), l6+1, l4+1}; + + thehole = newreg ; + Volume(thehole) = theloops[t] ; Return -x = 0; y = 0.75; z = 0; r = 0.09; +x = 0 ; y = 0.75 ; z = 0 ; r = 0.09 ; // A For loop is used to generate five holes in the cube: @@ -121,7 +129,7 @@ For t In {1:5} // defining a function, we could have define a file containing the // same code, and used the Include command to include this file. - Call CheeseHole; + Call CheeseHole ; // A physical volume is defined for each cheese hole @@ -130,18 +138,22 @@ For t In {1:5} // The Printf function permits to print the value of variables on the // terminal: - Printf("The cheese hole has number %g!", thehole); + Printf("The cheese hole has number %g!", thehole) ; EndFor // This is the surface loop for the exterior surface of the cube: -Surface Loop(185) = {35,31,29,37,33,23,39,25,27}; +theloops[0] = newreg ; + +Surface Loop(theloops[0]) = {35,31,29,37,33,23,39,25,27} ; // The volume of the cube, without the 5 cheese holes, is defined by 6 -// surface loops (the exterior surface and the five interior loops): +// surface loops (the exterior surface and the five interior loops). +// To reference an array of variables, its identifier is followed by +// '[]': -Volume(186) = {185,184,155,126,97,68}; +Volume(186) = {theloops[]} ; // This physical volume assigns the region number 10 to the tetrahedra // paving the cube (but not the holes, whose elements were tagged from